Uso de programas open-source en el trabajo geometalúrgico (Parte 1)
Es común en las actividades relacionadas a la Geometalurgia, encontrarse con archivos que contienen información con coordenadas espaciales respecto a un volumen (avances de minado, expansiones), superficies (topografías), o vectores (caminos, trazados de tuberías, líneas eléctricas). Por lo que lograr extraer información valiosa respecto a este tipo de archivos, es crucial para dar un contexto de temporalidad y espacialidad al conocimiento geometalúrgico.
En esta línea, el tema que revisaremos hoy muestra una alternativa para extraer la información de coordenadas espaciales desde archivos dxf (Drawing Exchange Format) que representan un volumen dentro del pit. Para esto, utilizaremos la alternativa de rápida implementación que nos ofrece R/R-Studio. Cabe destacar que existen otras alternativas para realizar esta tarea, tales como librerías especializadas en Python, Softwares de modelamiento Geológico, etc.
Para interpretar la información que contiene el archivo, es necesario entender cómo están guardadas las características espaciales de cada triángulo. En el caso del ejemplo mostrado en la figura 1, cada triángulo se compone de información de 3 vértices los que se rescatan en sentido antihorario. El primer vértice es guardado al principio y al final, por lo que el archivo guardará la información para ese triángulo en una matriz de 4x3 con coordenadas x,y,z.
Figura 1: Representación esquemática de coordenadas guardadas en un triángulo.
Una vez entendido esto, procedemos a revisar el caso del ejemplo del día de hoy. Utilizaremos la librería “simple features” en R (https://r-spatial.github.io/sf/), que nos permite trabajar con datos espaciales simplificados. Para llamarla en R:
install.packages(“sf”)
library(“sf”)
Ahora, para leer el archivo dxf, se utiliza la función st_read, que nos permite importar como un data frame la información que necesitamos ordenar.
dxf <- st_read(“ruta”)
En el caso del archivo utilizado de ejemplo, observamos que contiene 2938 registros para 7 variables.
dim(dxf)
[1] 2938 7
En nuestro caso, los 2938 registros corresponden a la información de los triángulos que componen este sólido. Recordemos que cada uno de estos registros corresponde a una matriz de 4x3 conteniendo la información de ubicación espacial de cada vértice.
El data frame importado tiene información del nombre de la layer, las propiedades del entity, además de las coordenadas de cada vértice (guardado como lista dentro de la variable geometry).
También, es posible tener una primera visualización (simple) de este avance:
plot(dxf)
Figura 2: Vista de planta sólido importado
Para rescatar las coordenadas (x,y,z), debemos generar una rutina que permita:
Identificar cuántos triángulos componen la layer
Generar un data frame inicial para copiar todas las coordenadas espaciales de los vértices de cada triángulo.
Para cada triángulo, capturar las coordenadas de los vértices y traspasar esa información a una nueva variable
Apilar estas coordenadas hasta obtener todos los vértices de los triángulos que componen la layer.
Esta rutina puede ser implementada tanto en R/R-Studio como en cualquier otro lenguaje que permita la manipulación de este tipo de archivos.
De esta forma, para nuestro ejemplo, se generó un data frame con 8814 puntos en el espacio, los cuales pueden ser utilizados para análisis posteriores. La Figura 3 muestra una vista planta de los puntos rescatados de este ejemplo.
Figura 3: Vista de planta puntos vértices de la layer importada
Por último, cabe mencionar que este flujo puede ser replicado para importar múltiples layers, capturando por ejemplo el nombre de la layer y/o estableciendo filtros para identificar puntos con coordenadas erróneas.
Si te interesa evaluar cómo adaptar herramientas open-source a tu flujo de trabajo, contáctanos en contacto@m2p.cl