[GRASSLIST:4871] Re: problema programacion

Michael Barton michael.barton at asu.edu
Wed Nov 17 23:18:36 EST 2004


Aruizro,

Sorry I didn¹t get your previous message. Possibly caught by my spam filter.
I am answering in English this time because it is quicker and perhaps I can
explain better. It helps to know that you are running GRASS 5.3

1. When you compile a module in GRASS, it¹s binary needs to go into a
directory that can be recognized by a script running in GRASS. Normally,
this is either $GISBASE/bin or $GISBASE/scripts. From within tcltkgrass, a
program can also be run from $GISBASE/tcltkgrass/module,
$GISBASE/tcltkgrass/main, or $GISBASE/tcltkgrass/script. Anything in your
system path can also be run. If you are using bash, you can type $PATH from
the terminal window to see what is in your system path. To run anything that
is not in your system (or GRASS or tcltkgrass) path, you must explicitly
supply the path name to it. For example to run the module Œmyprogram¹ from
inside GRASS (i.e., from the GRASS terminal prompt) you can simply type

>myprogram

If my program is located in $GISBASE/bin

However, if myprogram is located in a new directory $GISBASE/mystuff/ you
would have to type

>$GISBASE/mystuff/myprogram for it to run

2. $GISBASE is the string substitution for a variable (GISBASE) that holds
the path to your GRASS installation. In your case, yes  it is
/usr/local/grass53. This variable is set automatically by GRASS, but you can
change it in your ~/.grassrc5 file.

3. tcltk is a (from my perspective at least) scripting language that is used
in GRASS to build a user interface for GRASS commands. In essence, when you
select a menu item tcltkgrass, it activates a tcltk script (or a line of a
script to be more precise) that calls that program just like you would if
you run it manually in the terminal. In GRASS 5.3, you need to do 2 things
to 1) create a module for your program (see examples in
$GISBASE/tcltkgrass/module) and 2) create an entry in menu.tcl to run your
module. There is pretty good documentation for  how to do this in the header
of the $GISBASE/tcltkgrass/main/gui.tcl file and in the documentation files
in $GISBASE/tcltkgrass/docs. Read these and look at some that exist.

4. If you create a new module in GRASS, it must be compiled. When compiled,
it produces a binary. I was under the assumption that binaries automatically
end up in $GISBASE/bin. If not, I¹m not sure where they end up. I do know
that all the GRASS modules called by tcltkgrass are located in $GISBASE/bib,
scripts called are located in $GISBASE/scripts; special shellscripts and
tcltk script files are located in$GISBASE/tcltkgrass/module,
$GISBASE/tcltkgrass/main, or $GISBASE/tcltkgrass/script. My guess is that
your module needs to end up in $GISBASE/bin in order to run from tcltkgrass.
(though stuff in $GISBASE/etc might also run; I¹d need to recheck the path
setting in init.sh)

Espero que eso explica mejor las respuestas a tus preguntas.

Un saludo
Michael



On 11/17/04 8:30 AM, "aruizro at unal.edu.co" <aruizro at unal.edu.co> wrote:

> 
> 
> 
>> > Un saludo Michael, yo te envie un correo la semana pasada y pues
>> > no he recibido una respuesta, realmente necesito que me ayudes.
>> > Pues la cosa es de urgencia. Que pena tanta molestia, envio a
>> > continuación una copia del mensaje.
>> > 
>> > 
>> > Muchas Gracias
>> > Alejandro 
>> > 
>> > ----- Mensaje original -----
>> > De: <aruizro at unal.edu.co>
>> > Fecha: Martes, Noviembre 9, 2004 8:07 pm
>> > Asunto: Re: problem menu.tcl
>> > 
>>> > > Buenos Dias Michael.
>>> > > 
>>> > > Gracias por tu respuesta.
>>> > > La versión de Grass que utilizo es 5.3.0.
>>> > > 
>>> > > Hay algo que todavia no entiendo y que creo que no me has entendido.
>>> > > 
>>> > > Yo ya tengo mi modulo desarrollado y compilado con su Makefile,
>>> > > que ademas esta funcionando como yo quiero, desde la terminal.
>> > Que 
>>> > > esta guardado en la carpeta /src.contrib. Que lo hice
>> > modificando 
>>> > > otro programa C, de un modulo, y que le adicione mi modelo
>> > tambien 
>>> > > hecho en C.
>>> > > Ademas ya modifique el archivo menu.tcl de la carpeta main del
>>> > > tcltkgrass, y por lo tanto tengo mi interfaz hecha con los
>> > mismos 
>>> > > datos que me exige el modulo en la terminal.
>>> > > El problema es que el modulo r.suelos no se ejecuta bien desde
>>> > > esta interfaz.
>>> > > Tengo varias dudas que todavia no entiendo de GRASS.
>>> > > 
>>> > > 1. Que es el PATH. y su senda.???
>>> > > 
>>> > > 2 .La $GISBASE, es la ruta de donde esta compilado el GRASS, es
>>> > > decir mi $GISBASE, se refiere a mi ruta /usr/local/grass53 ??? o
>>> > > las carpetas donde por defecto se guarda grass
>>> > > /opt/src/grass53sources/grass-5.3.0.
>>> > > 
>>> > > 3. Tu me dices que el script no puede encontrar mi modulo
>>> > > r.suelos. Cual script? y si es el script de tcltk, como hago
>> > para 
>>> > > que encuentre mi modulo. Como especificamente modifico ese
>> > script, 
>>> > > para que encuentre mi modulo.
>>> > > 
>>> > > 4.Ahora, que es lo que debo colocar en las carpetas que tu me
>>> > > referencias ($GISBASE/bin o $GISBASE/scripts), pues estuve
>> > viendo 
>>> > > y por ejemplo en la carpeta bin aparecen archivos de los
>>> > > modulos,(con sus nombres propios), que son binarios y que no se
>>> > > como se crean y se ponen a funcionar.
>>> > > 
>>> > > Que pena tanta molestia, pero no me gusta que mi trabajo no lo
>>> > > haya podido concluir por esto, creo que no es dificil, pero
>> > estoy 
>>> > > confundido en la situacion.
>>> > > 
>>> > > Realmente agradezco tu ayuda
>>> > > 
>>> > > Hasta luego
>>> > > 
>>> > > Alejandro Ruiz Romero.
>>> > > Estudiante de Ingenieria  Agrícola
>>> > > Monitor becario sala SIG.
>>> > > Departamento de Ingenieria Civil y Agrícola
>>> > > Universidad Nacional de Colombia - Sede Bogotá.
>>> > > Tel. 3165000 ext. 16605.
>>> > > 
>>> > > 
>>> > > ----- Original Message -----
>>> > > From: Michael Barton <michael.barton at asu.edu>
>>> > > Date: Saturday, November 6, 2004 10:06 pm
>>> > > Subject: Re: problem menu.tcl
>>> > > 
>>>> > > > 
>>>> > > > 
>>>> > > > 
>>>> > > > On 11/6/04 10:33 AM, "aruizro at unal.edu.co"
>> > <aruizro at unal.edu.co>
>>>> > > > wrote: 
>>>>> > > > > Gracias por la respuesta, pero no entiendo algo de lo que me
>>>> > > > dice, dentro del
>>>>> > > > > script  "init.sh" estan la inicializacion del grass como
>> > tal, 
>>> > > o 
>>>> > > > eso es lo que
>>>>> > > > > entiendo.
>>>> > > > 
>>>> > > > Es un script que aparece bastante complicado pero el major
>> > parte 
>>> > > solo> averigüa la sistema, la existencia de las carpetas
>> > corectas, 
>>> > > etc.> 
>>>> > > > Para empezar un menu de tcltk, seria mas ayudoso mirar el
>> > script 
>>>> > > > tcltkgrassque mencioné.
>>>> > > > 
>>>>> > > > > Eso me sirve, pero es que no he podido entender, es como
>>> > > teniendo 
>>>> > > > yo mi 
>>>>> > > > > interface, con mis menus y submenus, y mi modulo (r.suelos),
>>> > > que 
>>>> > > > tiene unos
>>>>> > > > > datos de entrada, que este caso son mapas raster. Puede
>> > hacer 
>>> > > que 
>>>> > > > lo mismo que
>>>>> > > > > me hace desde una terminal (xterm), lo pueda hacer desde
>> > esta 
>>>> > > > interfaz, cuando
>>>>> > > > > yo le doy los datos de entrada y salida , y le doy ejecutar
>> > me 
>>>> > > > sale un error
>>>>> > > > > "Couldn't execute "r.suelos":no such file or directory".
>>>> > > > 
>>>> > > > El problema aqui es que el script (de tcltk supongo) no puede
>>>> > > > encontrar el
>>>> > > > modulo r.suelos. Hay que estar en la senda ("PATH"). Si va
>> > bien 
>>> > > los 
>>>> > > > otrosmodulos, pongalo en la carpeta de $GISBASE/bin o
>>>> > > > $GISBASE/scripts. Esas
>>>> > > > carpetas estan en la senda de iniciación.
>>>> > > > 
>>>>> > > > > Mas o menos lo que
>>>>> > > > > pregunto seria algo asi como un subtitulo en un tutorial.
>>> > > "Pasos 
>>>> > > > para generar
>>>>> > > > > un modulo en grass, con ejecucion desde terminal e interfaz
>>> > > grafica"> >
>>>>> > > > > Yo creia que se hacia desde la programacion de menu.tcl pero
>>> > > no 
>>>> > > > me sale bien,
>>>>> > > > > pueda que este haciendo algo mal.
>>>> > > > 
>>>> > > > Creo que la mejora manera de empezar es solo editar el
>> > menu.tcl 
>>> > > que ya 
>>>> > > > existe y funciona bien. Copia una linea que ya existe y
>>> > > cambiarla para
>>>> > > > iniciar su módulo al mismo menu.tcl para una pueba. Si va
>> > bien, 
>>> > > puedas> cambiar algo mas. Opino que es mejor que hacer un
>> > interfaz 
>>> > > de nuevo. 
>>>> > > > 
>>>> > > > Una pregunta. ¿Qual version de GRASS usas?
>>>> > > > 
>>>> > > > Michael 
>>>> > > > 
>>>>> > > > > 
>>>>> > > > > Agradezco su atencion y tiempo.
>>>>> > > > > 
>>>>> > > > > 
>>>>> > > > > Alejandro Ruiz Romero.
>>>>> > > > > Estudiante de Ingenieria  Agrícola
>>>>> > > > > Monitor becario sala SIG.
>>>>> > > > > Departamento de Ingenieria Civil y Agrícola
>>>>> > > > > Universidad Nacional de Colombia - Sede Bogotá.
>>>>> > > > > Tel. 3165000 ext. 16605.
>>>> > > > 
>>>> > > > ____________________
>>>> > > > C. Michael Barton, Professor of Anthropology
>>>> > > > School of Human, Cultural, and Social Change
>>>> > > > PO Box 872402
>>>> > > > Arizona State University
>>>> > > > Tempe, AZ  85287-2402
>>>> > > > USA 
>>>> > > > 
>>>> > > > Phone: 480-965-6262
>>>> > > > Fax: 480-965-7671
>>>> > > > www: <www.public.asu.edu/~cmbarton>
>>>> > > > 
>>>> > > > 
>>> > > 
>> > 
>> > 
> 


____________________
C. Michael Barton, Professor of Anthropology
School of Human Evolution and Social Change
PO Box 872402
Arizona State University
Tempe, AZ  85287-2402
USA

Phone: 480-965-6262
Fax: 480-965-7671
www: <www.public.asu.edu/~cmbarton>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/grass-user/attachments/20041117/bcea781f/attachment.html


More information about the grass-user mailing list