[GRASS-ES] v.in.ascii era v.in.xyz

Agustin Diez Castillo Agustin.Diez en uv.es
Sab Feb 21 06:33:25 EST 2009


Hola Jhon,

> 
> 
> Hola Roberto y todos los de la lista..
> 
> Retomando un problema que había puesto en un "post" hace un par de meses, y que en su
momento
> lo solucione sin interpolar, pero ahora si necesito trabajar en el, si alguien me puede
dar pautas
> de como proceder?  Gracias!!
> 
> 
> > 3. Re: Como construir un DEM a partir de un archivo importado
> > con r.in.xyz? ( Roberto Antolín )
> 
> > Message: 3
> > Date: Thu, 11 Dec 2008 16:30:56 +0100
> > From: " Roberto Antolín " <rantolin.geo en gmail.com>
> > Subject: Re: [GRASS-ES] Como construir un DEM a partir de un archivo importado
conr.in.xyz?
> >
> > Hola Jhon y todos:
> >
> > 2008/12/11 Jhon Ortiz <eljhonjhon en hotmail.com>:
> > > Roberto, estoy utilizando el modulo r.in.xyz que se que le has trabajado
> > > duro. Este modulo me funciona muy bien, no estoy trabajando con datos LIDAR,
> > > si no con datos X,Y,Z proporcionados por adquisición sísmica del fondo
> > > marino. Mi objetivo es reconstruir la superficie del fondo marino en un DEM,
> > > para realizar análisis topográficos (geomorfometria).
> >
> > Unos más densos que otros, pero son puntos igualmente ;-)
> >
> > > Lo que hago es
> > >
> > > r.in.xyz input="/home/john/Desktop/Superficies/sea_floor_profundidad.txt"
> > > output=r_seafloor_res10m fs="|" x=2 y=3 z=4
> > >
> > > y agregando la opcion meth=n, en una region con resolucion de 10m, obtengo
> > > la figura que adjunte en el correo anterior.
> > >
> > > Ahora lo que creo que debo hacer, es a partir de estos datos interpolar
> > > y generar la superficie, adjunte la figura para ilustrar la geometria del
> > > area de trabajo y poder explicar, que deseo interpolar solo el
> > > rectangulo donde estan los datos y no toda la region de GRASS.
> > >
> > > Alguna idea de como delimitar la zona que deseo interpolar?
> >
> > Es una cuestión difícil, en el sentido de que tu zona de interés está
> > girada con respecto a los ejes XY. Entonces creo que lo que mejor
> > puedes hacer es considerar una máscara para trabajar con raster. Por
> > normal general, los módulos r.* deberían respetarlas, pero los v.* no
> > tienen por qué hacerlo.
> >
> > Lo que te preguntaría ahora es... ¿cómo quieres interpolar los datos?
> > Lo primero que me viene a la cabeza es considerar v.surf.rst o
> > v.surf.bspline utilizando splines en formato vectorial, v.surf.idw o
> > r.surf.idw con el inverso de la distancia (para vectorial y raster); o
> > r.surf.nnbathy (add-ons) utilizando el formato raster y el método de
> > vecino más próximo.
> 
> quisiera usar r.surf.idw o v.surf.rst y probar r.surf.nnbathy.. 
> 
> > Para el caso vectorial y como es un rectángulo bastante regular
> > podrías hacer la máscara así:
> >
> > $ v.in.xyz input="/home/john/Desktop/Superficies/sea_floor_profundidad.txt"
> > output=v_seafloor_res10m fs="|" x=2 y=3 z=4 -ztb
> 
> En este paso creo que hay un pequeño error, v.in.xyz no existe?
> creo que te refieres a v.in.ascii?
> 
> entonces ejecute:
> v.in.ascii -zr input="/home/john/Desktop/Superficies/sea_floor_profundidad.txt"
> output=v_seafloor_res10m skip=1 x=2 y=1 z=3
> 
> > $ v.hull in=v_seafloor_res10m out=v_seafloor_res10m_HULL
> 
> el comando anterior con todos los datos (90000 puntos) y res=10m me genera el error
> 
>     Reading 3D vertices:
>      100%
>      Constructing 3D hull:    ##  llega al 5% y sale el siguiente error
>      Segmentation fault
> 
> ("Entonces hice una "location" con solo 500 puntos y resolución 50m, para probar
> el comando v.hull y me funciono, pero esto lo hice solo como una solución temporal,
> probar el comando y luego pasar a crear la mascara)
> 
> > $ v.to.rast in=v_seafloor_res10m_HULL out=MASK
> 
> al correr el comando v.to.rast con la "location" de 500 puntos el resultado que obtengo es:
> 
>          "ERROR: Column parameter missing (or use value parameter)"
> 
> Revise el manual de este comando, y no logro entenderlo? revise las opciones de parámetros
> a adicionar que me podían servir y probé con "use=z " y después con "use=cat" ejecutando:
> 
> v.to.rast in=v_seafloor_res10m_HULL out=MASK use=cat (también probe con use=z) 
> y para los dos obtuve el siguiente resultado:
>  
>    Loading data...
>    Reading features...
>    %
>    Writing raster map...
>    100%
>    Converted areas: 0 of 0
>    Converted points/lines: 0 of 0
>    v.to.rast complete.
>    [Raster MASK present]
> 
> No me crea ninguna área?, y al desplegar MASK, no ha generado nada??
Yo lo haría en dos pasos,
v.to.rast in=v_seafloor_res10m_HULL out=mascara col=z
r.mask input=mascara
Eso te creará la mascara. De esta forma puedes comprobar si "mascara" es lo que tu quieres.
> 
> 
> > No lo he probado pero debería funcionar :-P. Si no te funciona o o si
> > el resultado de v.hull te sale un churro vuelve a escribir para ver
> > cómo podemos crear una máscara mejor. Ahora deberías utilizar el
> > vectorial que has importado con v.in.xyz para crear la máscara
> > anterior. Si no recuerdo mal v.surf.rst sí que respeta las máscaras,
> > en el caso de v.surf.bspline NO las respeta. Por ejemplo, para el caso
> > de v.surf.bspline (que es el que he programado yo :-P):
> >
> > $ v.surf.bspline in=v_seafloor_res10m raster=r_seafloor_res10m sie=50 sin=50
> >
> > NOTA: Deja el paso de spline bastante grande. Vista tu imágen y
> > conociendo la resolución de tu región (10m) te aconsejaría que
> > escogieras un paso de spline al menos dos veces la resolución o algo
> > así. Si no el programa se eternizará.
> >
> > Si quieres interpolar partiendo de raster, que lo que supongo que hace
> > es rellenar las celdas con valor NULL, lo que yo haría sería una
> > primera máscara para importar los datos de la misma manera que has
> > creado el anterior (pero sin 'meth='), y después interpolar con la
> > máscara creada para el caso vectorial. Es decir:
> >
> > # Crear la primera máscara
> > $ r.mapcalc MASK="if(v_seafloor_res10m=0,null(),v_seafloor_res10m)"
> > $ r.in.xyz input="/home/john/Desktop/Superficies/sea_floor_profundidad.txt"
> > output=r_seafloor_res10m fs="|" x=2 y=3 z=4
> 
> Tambien intente este procedimiento y hasta aca todo va bien, pero como tengo problemas
> para crear la mascara vectorial, no puedo ejecutar el siguiente paso que es cambiar la
mascara
>  
> > # Cambiar de máscara:
> > $ g.remove MASK #eliminar la anterior
> > $ v.to.rast in=v_seafloor_res10m_HULL out=MASK # crear la nueva
> > máscara con el procedimiento descrito más arriba
> >
> > # Interpolar:
> > $ r.surf.* ....
> >
> > Espero no haber liado a nadie y que sea correcto todo lo que he
> > puesto, jejejeje. Por cierto, queremos "feedback" ;-)
> >
> 
> Espero que con esta respuesta, no enrede mucho el asunto y desde luego que el "feedback"
> lo reenviare a la lista, cuando tenga la solución..
> 
> Gracias Roberto por tu anterior respuesta y si tu, o alguien de la lista me puedes
ayudar a aclarar
> mis dudas?   de antemano Gracias!
> 
> Estoy trabajando con la versión GRASS 6.4.0RC2 en Ubuntu 8.04
> 
> Gracias!!
> 
> 
> John Ortiz
> Bioestratigrafia - ICP
> Bogota - Colombia
> 
> _________________________________________________________________
> Anímate y disfruta con los mejores juegos de Messenger, ¡descúbrelos!
> http://www.vivelive.com/juegos/  


--
******************************************************
Dr. Agustín Diez Castillo
Departament de Prehistòria i Arqueologia
Phone:   +34 963 86 42 42
Avda. Blasco Ibañez, 28   Fax:      +34 963 86 42 34
València 46010
******************************************************





Más información sobre la lista de distribución grass-es