1 votos

extraer capas por nombre desde un archivo DXF a varios archivos de destino mediante la línea de comandos ogr2ogr

¿Es posible extraer capas de un archivo DXF en varios archivos mediante la línea de comandos ogr2ogr?

Digamos que mi archivo DXF consta de 2 capas : CAMINO y CASA.

Quiero que mi salida sean algunos archivos kml.

Así que ejecuto el siguiente comando :

ogr2ogr -f "KML" plan.kml plan.dxf -s_srs EPSG:27562 -t_srs EPSG:4326

Que funciona muy bien.

PREGUNTA

Pero, ¿cómo puedo especificar que quiero varios archivos de salida? ¿O debo programar esto utilizando un bucle y extraer cada capa individualmente?

1voto

Andrew Webb Puntos 1002

Para abordar esta cuestión, ogr2ogr no proporciona una función para crear rápidamente múltiples salidas (para cada capa) para el archivo de entrada.

SOLUCIÓN

Se me ocurrió una solución (usando PHP en mi caso) que se divide en 2 pasos :

  1. Utilice ogrinfo para obtener todas las capas
  2. Recuperar todas las capas, y para cada capa utilizar ogr2ogr

DETALLE

Primero lanzo ogrinfo plan.dxf -sql "SELECT DISTINCT Layer FROM entities" (todos mis archivos dxf empiezan por entities ). Usted tendrá que extraer sólo el nombre de las capas (en php, para cada línea, he utilizado la siguiente regex : /=\s([\w|\s]+)$/u , u porque a veces los nombres de mis capas pueden contener acentos).

Luego, una vez que tengo mi matriz de capas, para cada capa aplico este comando : ogr2ogr -f "KML" <layer_name>-fond.kml fond.dxf -s_srs EPSG:27562 EPSG:4326 -where "Layer='<layer_name>'" con <layer_name> que se sustituirá por el nombre de la capa actual en su bucle.

Para inyectar el nombre de la capa, he utilizado PHP string injection :

exec("ogr2ogr -f \"KML\" $layerName-fond.kml fond.dxf -s_srs EPSG:27562 -t_srs EPSG:4326 -where \"Layer='$layerName'\"");

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X