Dukungan pengkodean karakter dalam geodatabases dan shapefile

11

Saya punya beberapa geodatabases yang menyertakan kelas fitur dengan huruf Yunani di banyak atribut. Ketika saya mencoba mengekspor kelas fitur sebagai shapefile dari ArcCatalog, atribut dibantai dalam data shapefile, semacam masalah pengkodean karakter (mereka terlihat seperti ini dalam bentuk: ?? etr ?? e?). Hal yang sama terjadi ketika saya menggunakan ogr2ogr di FWtools untuk mengubah layer dari MDB ke KML, shp, dll.

Adakah yang punya pengalaman mencoba menangani format pengodean di seluruh format data GIS?

Tujuan sebenarnya di sini adalah untuk mendapatkan beberapa data dari geodatabases Esri ini ke dalam database Postgres / PostGIS, tetapi pengodean yang rusak tidak akan berfungsi. Saya akan mengekspor dari geoDBs ke shapefile, lalu memuatnya shp2pgsql. Apakah itu jalan termudah untuk sampai ke sana?

colemanm
sumber
2
Anda dapat menggunakan QGIS untuk mengimpor shapfile dengan opsi CP1256 dan mengekspornya dengan UTF8 untuk menghindari masalah non Unicode

Jawaban:

10

Saya pikir Anda bagian dari sana. Anda dapat menggunakan iconvuntuk mengonversi dari satu penyandian ke penyandian lainnya, dan Anda dapat menggunakan ini sebagai bagian dari shp2pgsqlproses. Sebagai contoh:

shp2pgsql *postgrestablename* | iconv -f *sourceencoding* -t *targetencoding* | psql -d *yourdatabase*

Jika Anda bekerja di lingkungan Linux maka iconvharus sudah diinstal. Untuk Windows saya menemukan LibIconv untuk Windows . Tapi saya tidak punya pengalaman menggunakan di iconvbawah Windows, jadi saya tidak bisa menjaminnya.

Semoga ini membantu!

Jo

Archaeogeek
sumber
Masalahnya terjadi sebelum shp2pgsql dapat diterapkan. Atribut di shapefile sudah rusak jika saya mengerti dengan benar.
underdark
underdark, Anda benar. Data buruk sebelum saya bisa sampai ke langkah shp2pgsql.
colemanm
Terima kasih, mwalker ... solusi untuk itu berhasil dengan sangat baik sejauh ini! Saya mengubah format CodePage ke UTF-8 dan data DBF shapefile menunjukkan karakter yang benar sekarang. Dan menggunakan loader shapefile PostGIS di QGIS, data dalam database PostGIS juga benar.
colemanm
6

Di bawah detail proses yang saya gunakan untuk mengonversi File GeoDataBase dengan bidang Arab menjadi shapefile dengan pengkodean UTF-8 yang terbuka dengan gembira di QGIS dan ArcMap yang menunjukkan bahasa Arab dan Inggris dengan benar (tanpa menggunakan ekstensi untuk mengekspor atau membaca):

  • Ide dasarnya adalah: dari ekspor FGDB, sebuah shapefile termasuk .dbf (dalam pengkodean yang salah), kemudian mengekspor Tabel Atribut pada lapisan yang sama dengan teks (dalam pengkodean yang benar, yaitu UTF-8), dan gunakan program lain untuk mengganti konten shapefile .dbf dengan bidang data UTF-8 yang tepat dan menyimpan .dbf dengan pengkodean UTF-8. Kemudian tambahkan file .cpg ke setiap shapefile untuk memberi tahu ArcGIS tentang penyandian baru .dbf. Langkah:

1) Tambahkan layer dari FGDB ke ArcMap (saya menggunakan 10.1, tetapi sama sekali tidak ada alasan untuk itu tidak bekerja di versi sebelumnya, karena bit encoding terjadi kemudian, di luar Arc). Untuk mengekspor, klik kanan layer dan pilih Data-> Ekspor Data, klik tombol folder dalam dialog ekspor untuk membuka dialog Simpan, dan pilih Shapefile sebagai format output.

1b) Metode alternatif ke atas: arahkan ke FGDB di ArcCatalog, klik kanan, pilih Ekspor -> Ke Shapefile (beberapa), dan ekspor seluruh FGCB sebagai folder yang penuh dengan shapefile dalam satu operasi tunggal).

2) Sekarang Anda memiliki seperangkat shapefile dengan omong kosong di mana aksara Arab seharusnya (pada mesin saya itu menampilkan tanda tanya di tempat karakter). Bagian .dbf dari shapefile itu sendiri, dibuka di Excel atau apa pun, memiliki omong kosong alih-alih bahasa Arab; ini bukan hanya masalah tampilan dalam program GIS, tetapi file .dbf itu sendiri tidak mengandung karakter Arab. Belum membantu dulu.

3) Di ArcMap, buka Tabel Atribut lapisan dari FGDB. Tabel dibuka dengan bahasa Inggris dan Arab ditampilkan dengan benar (itu sebabnya FGDB digunakan di tempat pertama). Di menu Opsi Tabel dari jendela Tabel Atribut, pilih Ekspor, dan dalam dialog Ekspor Data klik tombol folder keluaran untuk sampai ke dialog Menyimpan Data di mana Anda memilih File Teks sebagai tipe output. Sekarang Anda memiliki file teks yang akan terbuka di Notepad dengan pembatas koma, dikodekan sebagai UTF-8, dengan bahasa Inggris dan Arab yang dikodekan dengan benar (bahasa Arab, pada saat ini, harus ditampilkan dengan benar di Notepad).

Sekarang untuk mendapatkan informasi itu ke bagian .dbf dari shapefile!

4) Buka LibreOffice Calc, klon Excel sumber terbuka dan gratis yang membuka, memanipulasi, dan menyimpan file .dbf dengan mudah, untuk membuka file .dbf dari shapefile.

Ngomong-ngomong, dalam hal ini saya tidak menggunakan LibreOffice, bukan MS Office karena alasan ideologis, tetapi hanya karena saya tidak tahu cara membuat Excel menyimpan file .dbf, yang mudah di Calc, sebenarnya itu adalah opsi default ketika menekan Simpan setelah membuka dan memodifikasi file .dbf di Calc, sedangkan Excel sebenarnya menyatakan bahwa file "tidak dapat disimpan dalam format saat ini" dan tidak begitu membantu menawarkan untuk "menyimpannya sebagai format terbaru" (tidak ada opsi untuk .dbf muncul). Ada ekstensi / plugin untuk Excel yang dimaksudkan untuk melakukan pekerjaan itu (

File .dbf di Calc masih menunjukkan omong kosong sebagai ganti bahasa Arab. Di samping itu, buka .csv yang Anda ekspor dari tabel atribut dari shapefile yang sama, pastikan Anda menentukan UTF-8 sebagai encoding (dan koma sebagai pembatas) dalam dialog pembukaan. File teks harus dibuka dalam spreadsheet Calc kedua dengan bahasa Arab ditampilkan dengan benar, dan mereka harus berisi kolom yang sama dengan .dbf ditambah kolom OBJECTID di awal. Salin-tempel kolom dari .csv yang berisi bahasa Arab ke dalam .dbf (sebenarnya saya hanya menyalin-tempelkan seluruh tabel dengan pengecualian kolom ID paling kiri untuk menghemat waktu; informasinya tetap identik). Tekan Simpan di .dbf yang dimodifikasi di LibreOffice (itu akan menanyakan apakah Anda benar-benar ingin menggunakan format aneh seperti .dbf; ya, Anda lakukan).

Ulangi proses ini untuk semua komponen .dbf dari shapefile dari FGDB, menggantikan semua kolom omong kosong dengan string Arab.

5) Segera setelah Anda menyimpan kembali bagian .dbf dengan kolom Arab yang disisipkan di, Anda dapat membuka shapefile di QGIS dan mereka akan berfungsi dengan baik dalam kedua bahasa, asalkan Anda menentukan UTF-8 sebagai pengkodean dalam vektor impor Dialog file. Namun, mereka masih tidak akan berfungsi dengan baik di ArcGIS (atau setidaknya tidak di semua versi) karena ArcGIS tidak secara otomatis mengenali pengkodean atau membiarkan Anda memilihnya ketika Anda menambahkan shapefile ke proyek. Arc memerlukan komponen terpisah ke shapefile, yang disebut file Code Page Conversion (.cpg), untuk menginstruksikannya untuk membaca pengkodean mana.

6) Gunakan editor teks (notepad, nano, atau apa pun, tetapi bukan Word atau pengolah kata lainnya) untuk membuat file teks yang hanya berisi lima karakter "UTF-8". Simpan sebagai .cpg untuk masing-masing shapefile (saya cukup klik pada bagian dari shapefile di dialog Save As, kemudian hapus ekstensi dan tambahkan .cpg), di folder yang sama dengan shapefile (pada dasarnya menjadi bagian lain dari Hi multi-bagian shapefile). Ekstensi .cpg memberi tahu Arc bahwa ini adalah file yang berisi informasi tentang penyandian file .dbf; setelah itu dibundel ke dalam shapefile bersama dengan saudara kandungnya yang memiliki nama yang sama tetapi berbeda, pengkodean dari shapefile sekarang secara otomatis dikenali oleh ArcGIS.

7) Voila. Sekarang Anda memiliki shapefile yang berisi string bahasa Inggris dan Arab, sejauh yang saya tahu persis seperti yang ada di File GeoDataBase asli. Mereka membuka instalasi ArcMap dan QGIS saya, dan dalam kedua kasus string dalam kedua bahasa ditampilkan dengan benar termasuk dalam label peta.

Peringatan:

  • Tidak semua salinan ArcGIS tampaknya mengekspor tabel atribut sebagai file teks yang diisi dengan benar (pada setidaknya satu komputer, mencoba untuk mengekspor tabel atribut ke file teks menghasilkan file dengan hanya header, bukan baris data. Ini adalah BUKAN perilaku Arc yang tepat (tentu saja seharusnya bisa mengekspor Tabel Atribut sebagai teks), tetapi mungkin muncul untuk beberapa pengguna. Ini membuat langkah-langkah selanjutnya menjadi mustahil.

  • Sepertinya ArcGIS tidak akan menyimpan shapefile baru dengan pengkodean UTF-8. Ini hanya akan memengaruhi pengguna yang ingin membuat shapefile baru dari data, bukan orang yang hanya ingin menampilkan, memodifikasi, dan menggunakannya untuk membuat peta. Solusi tampaknya melibatkan mengacaukan dengan registri Windows Anda sebagaimana dirinci di sini: ( http://support.esri.com/cn/knowledgebase/techarticles/detail/21106 ). Saya belum harus mengatasinya karena ArcGIS dan QGIS saya keduanya dengan senang hati mengenali shapefile yang saya simpan menggunakan proses di atas, dan saya dapat memodifikasi entri geometri dan tabel atau bahkan menambahkan poligon baru dengan lebih banyak teks Arab tanpa masalah yang jelas ( meskipun Arc tampaknya tidak ingin menyimpan shapefile baru dengan pengkodean UTF-8, sepertinya bersedia untuk memperbarui / menyimpannya).

  • Saya berasumsi bahwa fungsi LibreOffice sama di Windows seperti di komputer saya. Saya menggunakan GNU / Linux untuk sebagian besar pekerjaan saya, dan hanya boot ke Windows jika saya perlu menggunakan ArcGIS atau Autocad untuk beberapa tugas atau yang lain, jadi saya melakukan modifikasi file .dbf di Libreoffice yang berjalan di Fedora. Saya menganggap itu bekerja dengan cara yang sama pada Windows, tetapi saya tidak dapat mengujinya tanpa menginstal LibreOffice pada partisi Windows saya dan koneksi internet saya saat ini agak lambat untuk unduhan yang tidak perlu. Ada plugin untuk Excel yang memungkinkan Anda untuk menyimpan file .dbf dalam pengkodean yang dipilih (exceltodbf.sourceforge.net/, misalnya), tapi saya belum mencobanya. Mungkin ada cara lain untuk memanipulasi dan menyimpan .dbf, tapi saya belum melihat mereka setelah menemukan cara yang cukup mudah untuk melakukannya dengan LibreOffice.

  • Seluruh masalah tampaknya dapat dihindari jika Anda membayar untuk ekstensi Pemetaan Produksi di ArcGIS, yang memungkinkan Anda untuk secara langsung mengkonversi FGDB ke shapefile dengan pengkodean UTF-8 sesuai dengan halaman ini: http://resources.arcgis.com/en/help /main/10.1/index.html#//0103000001m1000000 . Mengapa fungsi ini agak mendasar (Unicode telah ada untuk sementara waktu sekarang, dan ada banyak bahasa selain bahasa Inggris di luar sana) hanya tersedia untuk pelanggan yang membayar ekstra adalah pertanyaan untuk ESRI.

Ivan Gayton
sumber
0

Anda harus terlebih dahulu mencari tahu apa pengkodean data input, sehingga Anda dapat memberi tahu alat Anda bagaimana mengkonversi data menjadi pengkodean yang sesuai. Jika Anda memiliki Access, saya akan mencoba mengekspor tabel ke teks langsung dari MDB dan mengatur output encoding ke UTF8. Jika Anda membuka shapefile yang diekspor di ArcGIS, apakah penyandiannya diatur dengan benar? DBF mendukung halaman kode , dan kemungkinan OGR tidak mengambil yang benar untuk konversi.

Ada juga cara memaksa MDBtools (digunakan sebagai bagian dari driver OGR) untuk secara eksplisit mengatur input stream, tetapi saya akan mencoba pendekatan lain terlebih dahulu.

scw
sumber
0

Saya lebih suka pergi ke cara ArcGIS. Atur saja pengkodean ke UTF-8 di ArcGIS dengan mengikuti instruksi dari sini . Setelah ini baru saja mengekspor kelas fitur ke ShapeFile. Sekarang Anda akan mendapatkan file CPG (file halaman kode) tambahan dengan setiap layer. Ini hanya file teks dengan string "UTF-8" di dalamnya dan semua data Anda dikodekan ke dalam UTF-8 secara otomatis.

Jika Anda tertarik untuk menggunakan pengkodean lainnya, lihat saja instruksinya.

Yang penting adalah setelah menyelesaikan tugas ini Anda harus mengubah pengaturan ini ke nilai default karena jika Anda mempertahankan nilai ini misalnya "UTF-8" maka di masa depan ArcGIS akan mengekspor semua ShapeFiles menggunakan pengkodean "UTF-8".

Semoga itu bisa membantu Anda.

iRfAn
sumber