Carreguei com sucesso um monte de shapefiles em um banco de dados PostGIS. Eu gostaria de poder recuperar geometria e camadas específicas como arquivos dxf com base em consultas SQL.
Estou usando PostGIS, GDAL, PostgreSQL e Python da suíte OSGeo4W no Windows.
Estou imaginando que eu deveria estar usando ogr2ogr um pouco assim:
$ ogr2ogr -sql "SELECT * FROM some_table" -f "dxf" outputfile.dxf -overwrite "PG:dbname=mydb user=dbusername password=dbpassword"
mas quando faço isso com os valores apropriados, recebo uma série de erros como este:
ERROR 1: DXF layer does not support arbitrary field creation, field 'objectid' not created.
Resultando em um erro para cada coluna de atributo na camada some_table
Mas recebo um arquivo dxf.
Se já criei um arquivo .dxf e execute novamente o comando acima (incluindo a -overwrite
opção), recebo este erro:
Layer sql_statement not found, and CreateLayer not supported by driver. ERROR 1: Terminating translation prematurely after failed translation from sql statement.
Eu já verifiquei para garantir que a GDAL_DATA
variável ambiental esteja definida corretamente. (para C:\OSGeo4W\share\gdal
)
Certamente é possível que eu esteja abordando essa tarefa incorretamente porque sou novo em todas essas ferramentas, por isso estou aberto a sugestões e dicas sobre como criar arquivos .dxf a partir de dados GIS armazenados no PostgreSQL com base em consultas SQL.
Respostas:
Benjamin,
O DXF (como suposto pelo OGR) não suporta atributos GIS arbitrários. Ele tem um esquema fixo que se parece com:
e apenas alguns deles são realmente examinados na gravação. O expediente mais simples é apenas usar o método -skipfailures, embora pareça que a tradução esteja prosseguindo, apesar dos erros, mesmo sem isso.
Quanto a - overwrite - é aplicável a formatos que suportam exclusão de camada que o DXF não suporta. Apenas pré-exclua o arquivo DXF existente antes de executar ogr2ogr.
fonte
com a resposta de Frank e a dica do "GIS-Kompetenzzentrum" da cidade de Uster (somente em alemão)
http://gis.uster.ch/dokumentation/datenkonvertierung/ogr
Eu descobri que o PostGIS to dxf pode ser feito da seguinte maneira:
A instrução sql, no final, criada para cada linha em $ COLUMN $ an Layer. Portanto, será melhor selecionar um ID semelhante a $ COLUMN $ ou um nome relevante.
Eu tentei com uma tabela de polígonos 2D. O arquivo dxf não fechou polilinhas. Talvez seja possível adicionar algo como "$ polygon $ as Linetype" à string sql.
Se você quiser todas as geometrias da sua tabela em uma camada, poderá usar o código do "GIS-Kompetenzzentrum" do Uster
Nas duas instruções, você pode adicionar a seguinte opção:
se você deseja uma restrição espacial.
fonte
O que Frank disse seria minha sugestão.
Crie um dxf com os nomes das camadas já existentes e use-o como modelo.
fonte