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
- 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
-
$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.
-
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.
-
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@unal.edu.co” aruizro@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@unal.edu.co
Fecha: Martes, Noviembre 9, 2004 8:07 pm
Asunto: Re: problem menu.tclBuenos 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.
- 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.
- 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@asu.edu
Date: Saturday, November 6, 2004 10:06 pm
Subject: Re: problem menu.tclOn 11/6/04 10:33 AM, “aruizro@unal.edu.co”
aruizro@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
USAPhone: 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>