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