Coğrafi veritabanlarında ve şekil dosyalarında karakter kodlama desteği


11

Birçok özellikte Yunanca harflerle özellik sınıfları içeren birkaç coğrafi veri tabanım var. Bir özellik sınıfını ArcCatalog'dan şekil dosyası olarak dışa aktarmaya çalıştığımda, öznitelikler şekil dosyası verilerinde, bir tür karakter kodlama probleminde (bunlar şu şekilde görünürler: ?? etr ?? e?). MDB'den KML'ye, shp'ye vb. Katmanları dönüştürmek için FWtools'ta ogr2ogr kullandığımda da aynı şey olur.

Herkes CBS veri formatlarında kodlama formatları ile uğraşmak için deneyime sahip mi?

Buradaki asıl amaç, bu Esri coğrafi veritabanlarından bazı verileri bir Postgres / PostGIS veritabanına almak, ancak bozuk kodlama işe yaramayacak. GeoDB'lerden şekil dosyalarına dışa aktaracaktım, sonra onları yükleyecektim shp2pgsql. Buraya ulaşmanın en kolay yolu bu mu?


2
Unpod olmayan sorunu önlemek için shapfile dosyasını CP1256 seçeneğiyle içe aktarmak ve UTF8 ile dışa aktarmak için QGIS kullanabilirsiniz

Yanıtlar:


10

Bence orada yarı yoldasın. Sen kullanabilirsiniz iconvbaşka bir kodlamadan dönüştürmek ve bir parçası olarak bu kullanabilirsiniz shp2pgsqlsüreç. Örneğin:

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

Bir Linux ortamında çalışıyorsanız, iconvönceden kurulmuş olmalıdır. Windows için LibIconv for Windows yazılımını buldum . Ancak iconvWindows altında kullanma deneyimim yok , bu yüzden kefil olamıyorum.

Bu yardımcı olur umarım!

Jo


Sorun shp2pgsql uygulanmadan önce oluşur. Doğru anladıysam şekil dosyasındaki özellikler zaten bozuk.
underdark


Altında, haklısın. Shp2pgsql adımına ulaşmadan önce veriler kötü.
colemanm

Teşekkürler, mwalker ... bu konudaki çözüm fevkalade çalıştı! CodePage biçimini UTF-8 olarak değiştirdim ve şekil dosyası DBF verileri şimdi doğru karakterleri gösteriyor. Ve QGIS'deki PostGIS şekil dosyası yükleyicisini kullanarak, PostGIS veritabanındaki veriler de doğrudur.
colemanm

6

Arapça alanlı bir dosya GeoDataBase dönüştürmek için kullandığım işlem ayrıntılarını aşağıda UTF-8 kodlama ile hem Arapça hem de İngilizce doğru şekilde gösteren (ihracat veya okumak için uzantıları kullanmadan) hem QGIS hem de ArcMap içinde mutlu bir şekilde açılan şekil dosyalarına dönüştürmek için kullandığım işlemin ayrıntılarının altında:

  • Temel fikir şudur: FGDB'den .dbf (yanlış kodlamada) içeren bir şekil dosyasını dışa aktarın, ardından aynı katmanın Öznitelik Tablosunu metinle (UTF-8 olan sağ kodlamada) dışa aktarın ve başka bir program kullanın şekil dosyası .dbf içeriğini uygun UTF-8 veri alanlarıyla değiştirmek ve .dbf'yi UTF-8 kodlamasıyla kaydetmek için. Daha sonra ArcGIS'i .dbf'nin yeni kodlaması hakkında bilgilendirmek için her şekil dosyasına bir .cpg dosyası ekleyin. Adımlar:

1) FGDB'den katmanları ArcMap'e ekleyin (10.1 kullandım, ancak önceki sürümlerde çalışmaması için kesinlikle hiçbir neden yok, çünkü kodlama biti daha sonra Arc'ın dışında gerçekleşiyor). Dışa aktarmak için bir katmanı sağ tıklayın ve Veri-> Verileri Dışa Aktar'ı seçin, dışa aktarma iletişim kutusundaki klasör düğmesini tıklayın ve Kaydet iletişim kutusunu açın ve çıktı biçimi olarak Şekil Dosyası'nı seçin.

1b) Yukarıdakine alternatif yöntem: ArcCatalog'da FGDB'ye gidin, sağ tıklayın, Dışa Aktar -> Şekil Dosyasına (çoklu) seçin ve tüm FGCB'yi tek bir işlemde şekil dosyalarıyla dolu bir klasör olarak dışa aktarın).

2) Şimdi Arapça komut dosyasının olması gereken anlamsız bir şekil dosyaları kümeniz var (makinemde karakter yerine soru işaretleri gösterdi). Şekil dosyalarının .dbf bölümlerinin kendileri, Excel'de açılmış veya her neyse, Arapça yerine anlamsız; sadece CBS programında bir görüntü sorunu değil, .dbf dosyalarının kendileri Arapça karakter içermiyor. Henüz yardımcı olmadı.

3) ArcMap'te, FGDB'den bir katmanın Özellik Tablosunu açın. Tablo hem İngilizce hem de Arapça düzgün bir şekilde gösterilerek açılır (bu yüzden FGDB ilk etapta kullanıldı). Öznitelik Tablosu penceresinin Tablo Seçenekleri menüsünde Dışa Aktar'ı seçin ve Verileri Dışa Aktar iletişim kutusunda çıktı türü olarak Metin Dosyası'nı seçtiğiniz Veri Kaydetme iletişim kutusuna erişmek için çıktı klasörü düğmesine tıklayın. Artık Notepad'de UTF-8 olarak kodlanmış, hem İngilizce hem de Arapça düzgün şekilde kodlanmış virgül sınırlayıcılarla açılacak bir metin dosyanız var (Arapça bu noktada Not Defteri'nde düzgün görüntülenmelidir).

Şimdi bu bilgileri şekil dosyalarının .dbf bölümlerine almak için!

4) Bir şekil dosyasının .dbf dosyasını açmak için .dbf dosyalarını kolayca açan, işleyen ve kaydeden ücretsiz ve açık kaynaklı bir Excel klonu olan LibreOffice Calc'i açın.

Bu arada, bu durumda ideolojik nedenlerle MS Office yerine LibreOffice kullanmıyorum, ancak Excel'in Calc'de kolay olan bir .dbf dosyasını nasıl kaydedeceğini anlayamadığım için, aslında Calc'da bir .dbf dosyasını açıp değiştirdikten sonra Kaydet'e basarken varsayılan seçenek, Excel aslında dosyanın "geçerli biçimde kaydedilemediğini" ve "en son biçim olarak kaydetmeyi" önerdiğini belirtir. (.dbf seçeneği yoktur). Excel için işi yapacağını iddia eden uzantılar / eklentiler vardır (

Calc'taki .dbf dosyası hala Arapça yerine anlamsızlık gösteriyor. Bunun yanında, aynı diyalog dosyasının nitelik tablosundan dışa aktardığınız .csv dosyasını açın ve açılış iletişim kutusunda UTF-8'i kodlama (ve ayırıcılar olarak virgül) olarak belirttiğinizden emin olun. Metin dosyaları, Arapça doğru görüntülenecek şekilde ikinci bir Calc elektronik tablosunda açılmalı ve başlangıçta .dbf artı bir OBJECTID sütunu ile aynı sütunları içermelidir. Uygun Arapça içeren .csv'deki sütunları .dbf'ye kopyalayıp yapıştırın. LibreOffice'te değiştirilmiş .dbf'de Save'e basın (gerçekten .dbf gibi garip bir format kullanmak isteyip istemediğinizi soracaktır; evet, yaparsınız).

Tüm anlamsız sütunları Arapça dizelerle değiştirerek, FGDB'deki şekil dosyalarının tüm .dbf bileşenleri için bu işlemi tekrarlayın.

5) Arap sütunları yapıştırılmış olarak .dbf bölümlerini yeniden kaydettiğinizde, QFIS'deki şekil dosyalarını açabilir ve İçe Aktarma Vektöründeki kodlama olarak UTF-8'i belirtmeniz şartıyla her iki dilde de düzgün çalışacaklardır. Dosya iletişim kutusu. Ancak, ArcGIS'te (veya en azından tüm sürümlerde) düzgün şekilde çalışmazlar, çünkü ArcGIS kodlamayı otomatik olarak tanımaz veya bir projeye şekil dosyası eklediğinizde seçmenize izin verir. Arc, hangi kodlamanın okunacağını bildirmek için şekil dosyasına Kod Sayfası Dönüştürme (.cpg) dosyası adı verilen ayrı bir bileşene ihtiyaç duyar.

6) Yalnızca beş karakteri "UTF-8" içeren bir metin dosyası oluşturmak için bir metin düzenleyicisi (not defteri, nano veya başka bir şey, ancak Word veya başka bir kelime işlemci değil) kullanın. Şekil dosyasının her biri için .cpg olarak kaydedin (Farklı Kaydet iletişim kutusunda şekil dosyasının bir parçasını tıklattım, sonra uzantıyı silin ve .cpg ekleyin), şekil dosyasıyla aynı klasörde (temelde başka bir çok parçalı şekil dosyası). .Cpg uzantısı Arc'a bunun .dbf dosyasının kodlanması hakkında bilgi içeren bir dosya olduğunu söyler; bir kez aynı-isim-ama-farklı-uzatma kardeşleri ile birlikte şekil dosyasına paketlendiğinde, şekil dosyasının kodlaması artık ArcGIS tarafından otomatik olarak tanınır.

7) Voila. Şimdi, orijinal File GeoDataBase'de oldukları gibi anlayabildiğim kadarıyla hem İngilizce hem de Arapça dizeler içeren şekil dosyalarınız var. Hem ArcMap hem de QGIS kurulumlarımda açılıyorlar ve her iki durumda da her iki dildeki dizeler harita etiketleri de dahil olmak üzere doğru bir şekilde görüntüleniyor.

Uyarılar:

  • ArcGIS'in tüm kopyaları, öznitelik tablosunu düzgün şekilde doldurulmuş bir metin dosyası olarak dışa aktarmıyor gibi görünmüyor (en az bir bilgisayarda, öznitelik tablosunu bir metin dosyasına aktarmaya çalışmak, veri satırlarında değil, yalnızca üstbilgilere sahip bir dosyayla sonuçlanır. Arc'ın düzgün davranışı DEĞİL (elbette Öznitelik Tablolarını metin olarak dışa aktarabiliyordu), ancak bazı kullanıcılar için gelebilir.Bu, geri kalan adımları imkansız hale getirir.

  • ArcGIS, UTF-8 kodlamasıyla yeni şekil dosyalarını kaydedecek gibi görünmüyor. Bu, yalnızca verileri görüntülemek, değiştirmek ve harita yapmak için kullanmak isteyen kişileri değil, verilerden yeni şekil dosyaları oluşturmak isteyen kullanıcıları etkiler. Geçici çözüm, Windows kayıt defterinde ayrıntılı olarak açıklandığı gibi karışıklık içeriyor gibi görünüyor: ( http://support.esri.com/cn/knowledgebase/techarticles/detail/21106 ). Bununla başa çıkmak zorunda kalmadım çünkü ArcGIS ve QGIS'im, yukarıdaki işlemi kullanarak kaydettiğim şekil dosyalarını mutlu bir şekilde tanımıyor gibi görünüyor ve geometri ve tablo girişlerini değiştirebilir veya hatta herhangi bir sorun olmadan daha fazla Arapça metin içeren yeni çokgenler ekleyebilirim ( Arc UTF-8 kodlamasıyla yeni şekil dosyalarını kaydetmek istemiyor olsa da, bunları güncellemeye / yeniden kaydetmeye istekli görünüyor).

  • LibreOffice'in işlevselliğinin Windows'ta bilgisayarımdakiyle aynı olduğunu varsayıyorum. İşimin çoğu için GNU / Linux kullanıyorum ve sadece bir görev veya başka bir şey için ArcGIS veya Autocad kullanmam gerekiyorsa Windows'a önyükleme yapıyorum, bu yüzden Fedora'da çalışan Libreoffice'de .dbf dosyasının değiştirilmesini yaptım. Windows'da da aynı şekilde çalıştığını varsayıyorum, ancak Windows bölümüme LibreOffice'i yüklemeden test edemiyorum ve mevcut İnternet bağlantım gereksiz yüklemeler için biraz yavaş. Excel için .dbf dosyalarını seçili bir kodlamaya (örneğin exceltodbf.sourceforge.net/) kaydetmenize izin veren eklentiler vardır, ancak bunları denemedim. .Dbf'yi manipüle etmek ve kaydetmek için tamamen başka yollar olabilir, ancak LibreOffice ile yapmanın oldukça kolay bir yolunu bulduktan sonra bunlara bakmadım.

  • ArcGIS'te, bu sayfaya göre FGDB'leri UTF-8 kodlamasıyla doğrudan şekil dosyalarına dönüştürmenize izin veren Üretim Eşleme uzantısı için ödeme yaparsanız, tüm sorun önlenebilir gibi görünüyor: http://resources.arcgis.com/tr/help /main/10.1/index.html#//0103000001m1000000 . Neden bu oldukça temel işlevsellik (Unicode bir süredir var ve İngilizce dışında birçok dil var) sadece ekstra ödeme yapan müşteriler ESRI için bir sorudur.


0

Öncelikle, giriş verilerini hangi kodlamanın içerdiğini anlamanız gerekir, böylece araçlarınıza verileri uygun bir kodlamaya nasıl dönüştüreceğinizi söyleyebilirsiniz. Access'iniz varsa, tabloyu doğrudan MDB'den metne aktarmayı ve çıkış kodlamasını UTF8 olarak ayarlamayı denerim. Dışa aktarılan şekil dosyasını ArcGIS'de açarsanız kodlama doğru ayarlanmış mı? DBF kod sayfalarını destekler ve OGR'nin dönüşüm için doğru olanı almaması mümkündür.

Giriş akışını açıkça ayarlamak için MDBtools'u (OGR sürücüsünün bir parçası olarak kullanılır) zorlamanın yolları da vardır , ancak önce diğer yaklaşımları denerdim.


0

ArcGIS yoluna gitmeyi tercih ederim. Buradan gelen talimatları izleyerek ArcGIS'de kodlamayı UTF-8 olarak ayarlayın . Bundan sonra özellik sınıflarını ShapeFile'a aktarın. Artık her katmanla birlikte ekstra bir CPG (kod sayfası dosyası) dosyası alacaksınız. Bu yalnızca içinde "UTF-8" dizesi bulunan bir metin dosyasıdır ve tüm verileriniz otomatik olarak UTF-8'e kodlanır.

Başka kodlama kullanmak istiyorsanız sadece talimatlara bakın.

Önemli olan bu atamayı bitirdikten sonra, bu değeri örneğin "UTF-8" olarak saklıyorsanız, bu ayarı varsayılan değere değiştirmeniz gerekir, daha sonra ArcGIS "UTF-8" kodlamasını kullanarak tüm ShapeFiles'ı dışa aktarır.

Umarım bu sana yardımcı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.