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 :
- Utilice
ogrinfo
para obtener todas las capas
- 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'\"");