TU ANUNCIO / YOUR PUBLICITY

AQUÍ PODRÍA ESTAR TU ANUNCIO: / HERE COULD BE YOUR AD E-mail

martes, 30 de octubre de 2012

How to split a large file .las (LIDAR) into small squares

One way to tame a huge, or worse, a huge set of ".las" files is transformed them into a set of files to predefined limits.

Steps to follw:

  1. Knowing the structure of .las files.
  2. Adding to each file that corresponds information as the name of it.
  3. Transforming a group of files in grid.
To make this work we have created several programs one in Visual Basic.

Program to cut into squares from a .las file in  Several .xyz files (ASCII, formatted xyziRGB) (PlantaLasEje.exe)  

Preview set
Marking lines where it will cut
Notice announcing the time required by the program
During execution the progress will be displayed

Original 3D
Futures pieces
One of them
If you prefer linux: (txt210).

The result is a grid of files.

LIDAR data on Google Maps and obtaining measurements



On the left plant and up, perspective view of an element 10x10mm
(in downloads allowed)

How long does the processing?


Obviously depends on the size of the files. On 18/01/2013, to see the processing times, I have to work on a computer program for 4 cores and 2GB of RAM on a group of files which total 20GB. The result is a collection of 45,000 files. Xyz (squares) which total 40 GB. Processing at 13.50 hours.

Our old solution in C compiled with gcc under Linux (Ubuntu) took 3 hours on a computer with similar characteristics.

------------------------------------------------------------------------------------------------------------


Una de las formas de domar un enorme, o peor, un conjunto de enormes archivos .las, es transformarlos en un grupo de archivos con los límites predefinidos.

Se darán los siguientes pasos:
  1. Conocer la estructura las para poder leerlos
  2. Se irán añadiendo a cada archivo la información que le corresponde según el nombre de éste.
  3. Se obtendrá un grupo de archivos en cuadrícula.
Para hacer este trabajo se han creado varios programas uno de ellos en Visual Basic para aquellos a los que les guste el güindous.

Programa en Windows de partición en cuadrados desde un archivo .las a varios .xyz (de texto, con formato xyziRGB) (PlantaLasEje.exe) descárgatelo desde aquí En Linux, también funciona con wine.

Visualización previa del conjunto
Líneas por donde se cortará
Aviso anunciando el tiempo que necesitará el programa
Durante la ejecución se mostrará el avance

Original en 3D
Futuros trozos
Uno de los trozos (3D)
Si por el contrario prefieres linux desde un archivo xyz a otros manteniendo el formato  (txt210) descárgatelo desde aquí.

El resultado final será una retícula de archivos.

Planta LIDAR sobre Google Maps y realización de mediciones


A la izquierda, planta, y arriba, perspectiva, de una elemento de 10x10m
(en descargas permitidas)

¿Cuanto tarda el procesado? 

Lógicamente depende de la dimensión de los ficheros .las. El día 18/01/2013, para ver los tiempos de procesado, he puesto a trabajar el programa en un ordenador de 4 núcleos y 2GB de RAM sobre un grupo de archivos que suman 20GB en formato .las. El resultado es un conjunto de 45.000 archivos .xyz (cuadraditos) que suman 40 GB después de 13,50 horas de procesado.

Nuestra antigua solución en C compilada con gcc bajo Linux (Ubuntu) tardó 3 horas en un ordenador de similares características.

sábado, 20 de octubre de 2012

Adding extra documentation and the inventory / Añadiendo el inventario y documentación extra

Lo primero es recordar que estamos bajo una estructura de pseudo-bases de datos. Esto nos permite geolocalizar archivos en los planos/mapas georreferenciados ya que el propio dato del eje del trazado ya tiene liga el pk con las coordenadas.
The first thing to remember is that we are under a pseudo-structure databases. This allows us to geotag files planes / maps georeferenced data because the shaft itself is already plotting KP league with the coordinates.
Ejemplo en Bounded-Roads de detalle de inventario frente a documento geolocalizado (en este caso una fotografía)
Example in Bounded-Roadsinventory detail versus geo document (in this case a photograph)
Sólo tenemos que habilitar un directorio dentro de nuestro archivo maestro y en él situar los nuevos archivos. hay dos posibilidades
  1. Archivos de texto secuenciales con la información del pk en el propio nombre y la información dentro de éste.
  2. Archivo tipo tabla (una excel puede valer) donde uno de los campos sea el pk
We just need to enable a file directory within our master and he put the new files. there are two possibilities:
  1. Sequential text files KP information from in your own name and information within it.
  2. File type table (one can assert excel) where one of the fields is the kp
Caso de archivos secuenciales
If sequential files

El archivo debe incorporar en el nombre el pk. Por ejemplo: [1340] Resto_del_nombre.txt.  De esta manera nuestro programa del servidor pude buscar la información contenida entre corchetes, despues buscar las coordenadas de este pk en el eje y situarlo con las coordenadas correctas.

En el interior del archivo podemos colocar la siguiente información.

The file must include the name of the pk. For example: [1340] Resto_del_nombre.txt. In this way our server program could find the information contained in brackets, then find the coordinates of this pk in the shaft and place it in the correct coordinates.

Inside the place we file the following information.

SEÑALIZACIÓN VERTICAL
 - R-101, 4 UdS. (Prohibido el paso)
 - R-401a, 4 Uds. (Dirección obligatoria)
 - R-1, 4 Uds. (Ceda el paso)
 - Panel direccional 1
 - Hito kilométrico
[...]

SEÑALIZACIÓN HORIZONTAL
 - Laterales de 0,15 m.
 - Central: isleta y cebreado triangular
 - Ceda el paso (izda.)
 - Corte con dados (dcha.)
[...]

etc.

Si la información está suficientemente ordenada, [Tipo de señal],[nº unidades],[(Descipción)], siempre podrá leerse y compararse con la otros pks, y así, realizar cualquier operación típica de base de datos.

If the information is sufficiently orderly [Signal Type], [number units], [(Job Description)] can always be read and compared with other KPs, and so typical of performing any database.

Caso de tabla
If table

El archivo debe incorporar un campo con el nombre el pk. y el resto información suficientemente ordenada.


Está claro que esta tabla puede llegar a ser enorme. también podríamos hacer un conjunto de tablas. Incluso podríamos iniciar una base de datos tipos MySQL o PostgreSQL. Las opciones están abiertas.

The file must include a field with the name of the KP. and the rest ordered enough information.

Conclusión
Ending

Todas las anteriores opciones funcionan bastante bien. Sólo a partir de 10.000 archivos se nota la mejora de la velocidad de una base de datos y normalmente no se llega a ésta magnitud.

En el caso de querer incorporar cualquier otra información sería aconsejable guardarla en nuestro árbol de directorios con la pista del pk al que afecta y anidarla.

All of the above options work pretty well. Only from 10,000 files notice the speed improvement of a database and usually do not reach this magnitude.

In case you want to include any other information would be advisable to keep it in our directory tree with pk to track and nest it affects.

Adenda
Addendum


Otra de las facetas de este tipo de pseudo-bases de datos frente a las tradiciones es la posibilidad de migración entre unas y otras. Puede ser más fácil la introducción manual de datos en bloque, como texto o tabla y realizar la exportación manual o automáticamente con aplicaciones intermedias como es el caso de recutils. Un manual lo podemos descargar desde aquí.

Donde ésto es un archivo de datos:

Another aspect of this type of pseudo-databases traditions is the possibility of migration between each other. It may be easier manual entry of bulk data, such as text or table and to export manually or automatically with intermediate applications as is the case recutils. A manual :here.

This is a data file:


      # -*- mode: texto inventario -*-


       SEÑALIZACIÓN VERTICAL
        - R-102, (Prohibida la entrada a vehiculos a motor)
        - S-13, 2 uds. (Paso de peatones)

       SEÑALIZACIÓN HORIZONTAL
        - Laterales de 0,15 m.
        - Central: Continua de 0,10 m.


      # Fin de pk600.inv


Esto un archivo para recutils:
This is a file for recutils:

    # -*- mode: rec -*-
     
     SV: R-102, (Prohibida la entrada a vehiculos a motor)
     SV: S-13, 2 uds. (Paso de peatones)
     SH: Laterales de 0,15 m.
     SH: Central: Continua de 0,10 m.
# End of pk600.rec

(Está clara la simpleza de la conversión)

Y la migración con rec2csv, mdb2rec y otras utilidades varias queda cubiertas con las contrpuestas utilidades desde postgreSQL, mySQL, u otras.
(easy conversion)

And the migration rec2csv, mdb2rec and other utilities is covered with several utilities from postgreSQL, mySQL.

sábado, 6 de octubre de 2012

Adding the GPR and / or geology / Añadiendo el georradar y/o la geología

Geología + Láser escáner terrestre (Geo+LST)
Geology + Laser scanner terrestrial (Geo + LST)
Otro tipo de datos que se puede añadir a nuestro GIS de carreteras en láser-escáner es el perfil del georradar.
Another type of data that can be added to our GIS road in laser-scanner is the GPR profile.
Georradar + Láser escáner terrerstre (GPR+LST)
GPR + LST
¿Qué es y cómo se obtiene el perfil del georradar?
What is it and how to obtain the GPR profile?

Una buena explicación la tiene la wikipedia:
A good explanation is held by the wikipedia:

http://es.wikipedia.org/wiki/Georradar

O estos artículos:
Or these items:

http://webs.uvigo.es/grupotf1/research/IWAGPR2005.pdf
http://webs.uvigo.es/grupotf1/research/rial_et_al_bruges.pdf

En esencia es la toma de reflexiones de ondas electromagnéticas que dependiendo de su longitud de onda profundizarán más o menos en el terreno. Cuanta más profundidad más vaga será la información o más nítida si el alcance resultara menor.

El aparato de emisión y lectura de señal suelen ser así:


In summary is taking reflections of electromagnetic waves depending on its wavelength deepen more or less on the ground. More would be more ambiguous information or if the range sharper lower result.

The emission device and signal reading usually as follows:

Georradares de 1GHz, 800MHz y 500MHz
GPR of 1GHz, 800MHz and 500MHz
Y las señales que reciben son:
And the signals they receive are:

Si le añadimos un remolque no metálico homologado de georradar de la empresa Enmacosa
If we add a trailer approved nonmetallic company GPR Enmacosa

Fuente Enmacosa: Remolque homologado no metálico para  GPR
Entonces tendremos un perfil muy largo del que tendremos que extraer el trozo que nos interese:
Then we will have a very long profile we have to extract the piece that interests us:
En la figura superior se aprecia un perfil muy largo correspondiente a la lectura de una carretera con el remolque anteriormente citado. En cada pk determinado tendremos que extraer un trozo del perfil correspondiente a nuestro pk y su entorno.
In the figure above shows very long profile corresponding to the reading of a road with the aforementioned trailer. In each particular KP have to remove a piece of the profile corresponding to our station and its surroundings.

¿Cómo se extrae el pk que estamos buscando?
How do I extract the KP we are looking for?

Hay dos formas:

1ª Desde los archivos fuente
2ª Desde el destino final


There are two ways:

From 1st source files
2nd Since the final destination 


1ª Desde los archivos fuente
From 1st source files

Los archivos fuente suelen ser una pareja de archivos. Un archivo de texto .rad:
The source files are usually a couple of files. A text file .rad:

SAMPLES:1024
FREQUENCY:24081.298464
FREQUENCY STEPS:18
SIGNAL POSITION:-0.031867
RAW SIGNAL POSITION:46580
DISTANCE FLAG:0
TIME FLAG:1
PROGRAM FLAG:0
EXTERNAL FLAG:0
TIME INTERVAL:0.100000
DISTANCE INTERVAL:0.000000
OPERATOR:
CUSTOMER:
SITE:
ANTENNAS:1000 MHz shielded
ANTENNA ORIENTATION:NOT VALID FIELD
ANTENNA SEPARATION:0.100000
COMMENT:
TIMEWINDOW:42.522624
STACKS:16
STACK EXPONENT:4
STACKING TIME:0.163840
LAST TRACE:2803
STOP POSITION:280.300000
SYSTEM CALIBRATION:0.0000023070
START POSITION:0.0000000000
SHORT FLAG:1
INTERMEDIATE FLAG:0
LONG FLAG:0
PREPROCESSING:0
HIGH:0
LOW:0
FIXED INCREMENT:0.0000000000
FIXED MOVES UP:0
FIXED MOVES DOWN:1
FIXED POSITION:0.0000000000
WHEEL CALIBRATION:2490.9000000000
POSITIVE DIRECTION:1

Con la información concerniete al tipo de antena y a la forma de guardar datos. Y un archivo binario .rd3. para leer este primero hay que leer el anterior. El primer dato SAMPLES nos dice que cada lectura (columna) tiene 1024 valores de tipo entero (2 bytes). Si leyéramos estos valores como columna y los pusiéramos uno tras otro en fila y a cada valor le hiciéramos corresponder un pixel en gris (dividiendo el valor entero por 256) tendríamos la típica gráfica del georradar.

With the information concerning the type of antenna and how to save data. And a binary file. Rd3. to read this first you have to read the last. The first data, SAMPLES, tells us that each reading (column) has 1024 integer values ​​(2 bytes). If we read these values ​​as column and we put one after another in a row and each value did you map a gray pixel (integer value dividing by 256) would the typical plot of GPR.


La forma de seleccionar un trozo sería muy sencilla si conocemos el pk de inicio de la lectura y el pk final. una simple regla de 3 nos colocaría en el punto exacto del pk buscado. Por ejemplo, supongamos que el tramo dibujado fuera el tramo entre el pk 0+000 al pk 0+100 y tiene 1.000 columnas de datos. Si queremos tener desde el pk 0+030 al 0+040 tendríamos que leer el archivo desde la posición 1024x2x300 a la 1024x2x400:

How to select a piece would be very simple if you know the home KP and KP reading end. a simple rule of three would put us in the exact point of pk sought. For example, suppose that the section drawn out the stretch between KP 0 KP 0 +000 to +100 and has 1,000 columns of data. If we want from KP 0 +030 to 0 +040 would have to read the file from position 1024x2x400 1024x2x300 to:


Un caso particular consiste en tener además el archivo de coordenada de la captación de datos desde GPS. El archivo .cor tiene este formato:
A particular case is also have coordinate file uptake from GPS. The .cor has this format:

1,2013-5-31,13:36:23,78:01:00.50 NN,33:58:52.89 WW,2097.699219M,1.459554
2,2013-5-31,13:36:23,78:01:00.50 NN,33:58:52.89 WW,2097.699219M,1.459554
3,2013-5-31,13:36:23,78:01:00.50 NN,33:58:52.89 WW,2097.699219M,1.459554
4,2013-5-31,13:36:23,78:01:00.50 NN,33:58:52.89 WW,2097.699219M,1.459554
5,2013-5-31,13:36:23,78:01:00.50 NN,33:58:52.89 WW,2097.699219M,1.459554
6,2013-5-31,13:36:23,78:01:00.50 NN,33:58:52.89 WW,2097.699219M,1.459554
7,2013-5-31,13:36:23,78:01:00.50 NN,33:58:52.89 WW,2097.699219M,1.459554
8,2013-5-31,13:36:24,78:01:00.50 NN,33:58:52.88 WW,2097.699219M,1.459554
[...]


A partir de él se puede colocar cada columna de datos en un plano/mapa georreferenciado.
From it you can place each column of data in a plane / georeferenced map.

2ª Desde el destino final
2nd Since the final destination


Puede que nos interese aplicar filtros y obtener un resultado deducido de los programas de tratamiento de archivos de georradar. En ese caso hay que trabajar con el resultado que suele ser la imagen tratada. el sistema es el mismo sólo que en lugar de conseguir el extracto de un archivo hay que jugar con píxeles. La técnica es la misma pero no el medio. Es aconsejable usar ImageImagick o su mezcla son PHP.
It can be required to apply filters and get a result deduced from processing programs for GPR files. In that case you have to work with the result that the image is usually treated. the system is the same except that instead of getting the extract of a file you have to play with pixels. The technique is the same but not the medium. It is advisable to use ImageImagick or their mixture are PHP.

¿Qué es y cómo se obtiene el perfil geológico?
What is it and how to obtain the geological profile?

Sencillamente, con una máquina de sondeos, sus laborantes, un geólogo, un delineante (en algunos casos coinciden las personas) y sobre todo conocimiento, trabajo y paciencia.

A partir de:


Simply a polling machine, their laboring, a geologist, a draftsman (in some cases match people) and all knowledge, work and patience.

Starting from:

Se crea:

(No olvidar utilizar experiencia y esfuerzo. Esta parte no la puede hacer una máquina.)

It is created:

(Do not forget to use experience and effort. This part can not be done by a machine.)


Resultados de incorporar el georradar:

GPR results incorporate:

Fuente: http://sitegi.enmacosa.com. Visualizando el georradar
From: http://sitegi.enmacosa.com. Visualizando el georradar

Resultados de incorporar la geología:


Results of incorporating the geology:


Fuente: http://sitegi.enmacosa.com, Añadiendo la geología
From: http://sitegi.enmacosa.com, "Añadiendo la geología"