He cargado con éxito un montón de shapefiles en una base de datos PostGIS. Me gustaría poder recuperar geometría y capas específicas como archivos dxf basados en consultas SQL.
Estoy usando PostGIS, GDAL, PostgreSQL y Python del paquete OSGeo4W en Windows.
Me imagino que debería usar ogr2ogr un poco como esto:
$ ogr2ogr -sql "SELECT * FROM some_table" -f "dxf" outputfile.dxf -overwrite "PG:dbname=mydb user=dbusername password=dbpassword"
pero cuando hago eso con los valores apropiados, obtengo una serie de errores como este:
ERROR 1: DXF layer does not support arbitrary field creation, field 'objectid' not created.
Resultando en un error para cada columna de atributo en la capa some_table
Pero obtengo un archivo dxf.
Si ya he creado un archivo .dxf y vuelvo a ejecutar el comando anterior (incluida la -overwrite
opción), aparece este error:
Layer sql_statement not found, and CreateLayer not supported by driver. ERROR 1: Terminating translation prematurely after failed translation from sql statement.
Ya lo he verificado para asegurarme de que la GDAL_DATA
variable ambiental esté configurada correctamente. (a C:\OSGeo4W\share\gdal
)
Ciertamente es posible que esté abordando esta tarea incorrectamente porque soy nuevo en todas estas herramientas, por lo que estoy abierto a cualquier sugerencia y consejo sobre cómo hacer archivos .dxf a partir de datos SIG almacenados en PostgreSQL basados en consultas SQL.
Respuestas:
Benjamín,
DXF (como lo supone OGR) no admite atributos GIS arbitrarios. Tiene un esquema fijo que se ve así:
y solo unos pocos de estos se examinan realmente en escritura. El recurso más simple es usar el método -skipfailures, aunque parece que la traducción continúa a pesar de los errores, incluso sin eso.
En cuanto a -overwrite, eso es aplicable para formatos que admiten la eliminación de capas que DXF no admite. Simplemente elimine previamente el archivo DXF existente antes de ejecutar ogr2ogr.
fuente
con la respuesta de Frank y la pista del "GIS-Kompetenzzentrum" de la ciudad de Uster (solo en alemán)
http://gis.uster.ch/dokumentation/datenkonvertierung/ogr
He descubierto que PostGIS a dxf se puede hacer así:
La instrucción sql, al final, creada para cada fila en $ COLUMN $ an Layer. Por lo tanto, será mejor seleccionar una ID similar a $ COLUMN $ o un nombre relevante.
Lo he intentado con una tabla de polígonos 2D. El archivo dxf no ha cerrado polilíneas. Quizás sea posible agregar algo como "$ polygon $ como Linetype" a la cadena sql.
Si desea todas las geometrías de su tabla en una capa, puede usar el código del "GIS-Kompetenzzentrum" de Uster
En ambas declaraciones puede agregar la siguiente opción:
si quieres una restricción espacial.
fuente
Lo que dijo Frank sería mi sugerencia.
Cree un dxf con sus nombres de capa ya en él y úselo como plantilla.
fuente