Saya telah berhasil memuat sekelompok shapefile ke dalam database PostGIS. Saya ingin dapat mengambil geometri dan lapisan tertentu sebagai file DXF berdasarkan query SQL.
Saya menggunakan PostGIS, GDAL, PostgreSQL, dan Python dari suite OSGeo4W di Windows.
Saya membayangkan bahwa saya harus menggunakan ogr2ogr sedikit seperti ini:
$ ogr2ogr -sql "SELECT * FROM some_table" -f "dxf" outputfile.dxf -overwrite "PG:dbname=mydb user=dbusername password=dbpassword"
tetapi ketika saya melakukannya dengan nilai-nilai yang sesuai, saya mendapatkan serangkaian kesalahan seperti ini:
ERROR 1: DXF layer does not support arbitrary field creation, field 'objectid' not created.
Menghasilkan kesalahan untuk setiap kolom atribut di layer some_table
Tapi saya mendapatkan file dxf.
Jika saya sudah membuat file .dxf, dan saya menjalankan kembali perintah di atas (termasuk -overwrite
opsi), saya mendapatkan kesalahan ini sebagai gantinya:
Layer sql_statement not found, and CreateLayer not supported by driver. ERROR 1: Terminating translation prematurely after failed translation from sql statement.
Saya sudah memeriksa untuk memastikan bahwa GDAL_DATA
variabel lingkungan diatur dengan benar. (untuk C:\OSGeo4W\share\gdal
)
Tentunya mungkin bahwa saya mendekati tugas ini secara tidak benar karena saya baru mengenal semua alat ini, jadi saya terbuka untuk segala saran dan kiat tentang cara membuat file .dxf dari data GIS yang disimpan dalam PostgreSQL berdasarkan pada query SQL.
Jawaban:
Benjamin,
DXF (seperti yang seharusnya oleh OGR) tidak mendukung atribut GIS yang berubah-ubah. Ini memiliki skema tetap yang terlihat seperti:
dan hanya beberapa di antaranya yang benar-benar diperiksa secara tertulis. Cara paling sederhana adalah dengan menggunakan metode -skipfailures meskipun terjemahan sepertinya sedang berjalan meskipun ada kesalahan bahkan tanpa itu.
Seperti untuk -overwrite - itu berlaku untuk format yang mendukung penghapusan lapisan yang tidak DXF. Pra-hapus file DXF yang ada sebelum menjalankan ogr2ogr.
sumber
dengan jawaban dari Frank dan petunjuk dari "GIS-Kompetenzzentrum" dari kota Uster (hanya dalam bahasa Jerman)
http://gis.uster.ch/dokumentation/datenkonvertierung/ogr
Saya telah mengetahui bahwa PostGIS ke dxf dapat dilakukan seperti ini:
Pernyataan sql, pada akhirnya, dibuat untuk setiap baris dalam $ COLUMN $ an Layer. Jadi yang terbaik adalah memilih ID seperti $ COLUMN $ atau nama yang relevan.
Saya sudah mencobanya dengan 2D Polygon-Table. File dxf belum menutup polyline. Mungkin dimungkinkan untuk menambahkan sesuatu seperti "$ polygon $ as Linetype" ke sql-string.
Jika Anda ingin semua geometri dari tabel Anda pada satu layer maka Anda dapat menggunakan kode dari "GIS-Kompetenzzentrum" dari Uster
Di kedua pernyataan, Anda dapat menambahkan opsi berikut:
jika Anda menginginkan batasan spasial.
sumber
Apa yang dikatakan Frank akan menjadi saran saya.
Buat dxf dengan nama layer Anda yang sudah ada di dalamnya dan gunakan itu sebagai templat.
sumber