从PostgreSQL中获取dxf文件


10

我已经成功地将一堆shapefile加载到PostGIS数据库中。我希望能够基于SQL查询以dxf文件的形式检索特定的几何图形和图层。

我正在使用Windows上OSGeo4W套件中的PostGIS,GDAL,PostgreSQL和Python。

我在想应该像这样使用ogr2​​ogr:

$ ogr2ogr -sql "SELECT * FROM some_table" -f "dxf" outputfile.dxf -overwrite "PG:dbname=mydb user=dbusername password=dbpassword"

但是当我使用适当的值执行此操作时,会出现一系列如下错误:

ERROR 1: DXF layer does not support arbitrary field creation, field 'objectid' not created. 

导致该层中每个属性列都出错,some_table但是我确实得到了dxf文件。

如果已经创建了.dxf文件,并且重新运行了上面的命令(包括该-overwrite选项),则会收到此错误:

Layer sql_statement not found, and CreateLayer not supported by driver. ERROR 1: Terminating translation prematurely after failed translation from sql statement.

我已经检查确保GDAL_DATA环境变量设置正确。(到C:\OSGeo4W\share\gdal

我可能不正确地完成此任务,因为我是所有这些工具的新手,因此我愿意接受有关如何根据SQL查询从PostgreSQL中存储的GIS数据制作.dxf文件的任何建议和技巧。


Answers:


9

本杰明

DXF(由OGR假定)不支持任意GIS属性。它具有一个固定的架构,如下所示:

图层:字符串(0.0)
子类:字符串(0.0)
ExtendedEntity:字符串(0.0)
线型:字符串(0.0)
EntityHandle:字符串(0.0)

实际上只有少数几个在写入时进行了检查。最简单的权宜之计就是使用-skipfailures方法,尽管即使有错误,但似乎翻译仍在进行中。

至于-overwrite-适用于支持DXF不支持的图层删除的格式。只需在运行ogr2ogr之前预先删除现有DXF文件即可。


到目前为止,这可能是最好的答案,但是对我来说,这类似于OGR的dxf导出功能不会导出dxfs。我希望得到一个答案,该答案实际上使我可以使用带有属性数据的dxfs,而不是很多错误。我将看看我是否可以帮助改善OGR出口。
BenjaminGolder

2

弗兰克(Frank)的回答和乌斯特(Uster)镇的“ GIS-Kompetenzzentrum”提示(仅德语)

http://gis.uster.ch/dokumentation/datenkonvertierung/ogr

我发现可以将PostGIS转换为dxf,如下所示:

ogr2ogr -f DXF $TITLE$.dxf PG:"dbname='$DBNAME$' host='$HOST$' port='$PORT$' user='$USER$' password='$PASSWORD$'" -sql "select $COLUMN$ as Layer, the_geom from $TABLE$"

最后,为$ COLUMN $图层中的每一行创建sql语句。因此,最好选择$ COLUMN $之类的ID或相关名称。

我已经尝试过使用2D多边形表。dxf文件尚未关闭折线。也许可以在sql字符串中添加类似“ $ polygon $ as Linetype”的内容。

如果要将表格中的所有几何图形都放在一层上,则可以使用Uster的“ GIS-Kompetenzzentrum”中的代码

ogr2ogr -select '' -f DXF DXF $TITLE$.dxf PG:"dbname='$DBNAME$' host='$HOST$' port='$PORT$' user='$USER$' password='$PASSWORD$' schemas=$SCHEMA$ tables=$TABLE$(the_geom)"

在这两个语句上,您都可以添加以下选项:

-spat xmin ymin xmax ymax

如果您想要空间限制。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.