Saya menggunakan QGIS 2.0.1 dan terhubung ke database MS SQL Server yang diaktifkan secara spasial (bukan ESRI). Saya dapat terhubung ke layer dan memuatnya ke dalam TOC saya dengan baik. Saya telah menyembunyikan sejumlah bidang yang tidak penting demi visibilitas.
Sekarang saya ingin mengekspor data itu ke tipe data lain (kami akan menggunakan shapefile untuk contoh ini). Ketika saya klik kanan layer, pilih "Save As" dan tentukan file output, saya mendapatkan kesalahan berikut:
Gagal mengekspor ke file vektor. Kesalahan: jenis tidak didukung untuk bidang GlobalID
Catatan 1 : Jika saya mencentang "Lewati pembuatan atribut" di kotak dialog, shapefile dibuat tanpa kesalahan.
Catatan 2 : ArcGIS tidak memiliki masalah ini, hanya mengubah bidang GUID ke tipe "TEXT".
Melihat tabel, salah satu bidang yang saya sembunyikan adalah GUID tipe SQL < uniqueidentifier >, yang kemungkinan besar adalah pelakunya. Dalam upaya untuk menyelesaikan ini, saya membuat bidang "tersembunyi". Saya akan berasumsi bahwa karena bidangnya disembunyikan, QGIS tidak akan mencoba untuk mengekspor bidang ini, tetapi ternyata tidak demikian.
Bisakah Anda menentukan bidang yang ingin Anda ekspor dari QGIS?
Apakah mungkin bagi QGIS untuk mengekspor hanya bidang "Terlihat"? Atau adakah cara alternatif lain untuk melakukan ini dari QGIS (mungkin mendefinisikan bidang melalui kueri ogr2ogr)? Ini tampak seperti kekurangan QGIS jika saya tidak dapat menentukan bidang mana yang akan diekspor.
UPDATE: Saya melakukan tes menggunakan sampel shapefile untuk melihat apakah saya dapat membatasi bidang output. Baris perintah ogr2ogr berikut bekerja dan menghapus semua bidang kecuali untuk "nama":
ogr2ogr -f "ESRI Shapefile" test.shp city.shp -sql "select name from city"
tetapi menggunakan QGIS dan menambahkan:
-sql "select name from city"
ke bagian "lapisan" pada dialog "Simpan Sebagai" tidak menghasilkan shapefile hanya dengan satu bidang. Jadi saya tidak benar-benar melihat bagaimana saya bisa memanipulasi output file untuk menunjukkan hanya beberapa bidang terpilih. Bantuan apa pun dihargai.
sumber
-sql "select <fields> from <table>"
(tidak termasuk bidang GlobalID dari <fields>) ke bagian "Lapisan" dari dialog "Simpan Sebagai", tetapi kesalahan yang sama masih muncul. Apakah saya menyalahgunakan blok kode ini, atau ini bug?Jawaban:
Jika itu bekerja untuk Anda di baris perintah dengan ogr2ogr, saya pikir itu adalah solusi terbaik untuk menggunakannya. Anda dapat menulis file bat sederhana untuk membuat shapefile dari database MSSQL Anda. Jelas Anda tidak dapat mengedit data dan menyimpan kembali ke server dengan cara itu.
QGIS memiliki kotak input Sumber Data dan Lapisan, tetapi itu hanya untuk parameter -dsco dan -lco dari ogr2ogr. Driver OGR shapefile tidak memiliki dsco atau lco yang berguna untuk kebutuhan Anda:
http://www.gdal.org/ogr2ogr.html
http://www.gdal.org/ogr/drv_shapefile.html
Atau, mungkin untuk menulis plugin python yang meminta data dari server dengan perintah SQL SELECT sesuai kebutuhan Anda. Ini bahkan akan memungkinkan pengeditan data.
sumber
Saya akan menyarankan Anda untuk memeriksa tabel atribut untuk layer di TOC dan jika bidang GlobalID ada. Beralih ke mode edit, hapus kolom yang menciptakan masalah selama ekspor dan tutup jendela. Kemudian simpan sebagai shapefile atau format output apa pun yang Anda inginkan. Saya harap ini membantu.
sumber