Şekil dosyalarında 10 karakterlik alan adı atlanıyor mu?


42

Oracle veritabanından ekli metin özniteliklerine sahip geometriyi Java ve Geotools kütüphanesi ile esri shapefile formatına (.shp) gönderiyorum.

Veritabanımızdaki öznitelik sütunlarında 10'dan fazla karakter olan isimler ve bunları kesmek için Geotools kuvvetleri bulunur. Bunun, .shp veya .dbf dosyalarının belirtiminden kaynaklandığını biliyorum.

"Shrtname" = "Tam ve uzun ad" ile basit bir txt dosyası oluşturarak bu sorunu çözebilirim, ancak açıkçası bizimkinden başka bir yazılım tarafından anlaşılmayacak ve alınmayacaktır.

Kısa alan adlarından uzun tam metin adlarına kadar haritalamanın resmi bir yolu var mı?

Örneğin, diğer tüm .shp .dbf .shx dosyalarının yanındaki xml dosyası.

Yanıtlar:


53

Üzgünüm, cevap hayır. Kendi alan haritanızı çıkarmanız gerekir ve yalnızca haritanızı kullanan yazılımlar onu anlayacaktır. Ancak bu sınırlamaya sahip olmayan diğer formatları kullanabilirsiniz (örneğin, dosya geodatabase, spatialite, vs.).


Kişisel deneyimden kaynaklanan geçici çözümler hakkında bir kaç tavsiye.

İnsanlar biçim biçimlerini seçtikleri (ve üzerinde ısrar ettikleri) ana biçimleri olarak seçtikleri zaman, genellikle birlikte çalışabilirlik için seçilirler - bir belirtime bağlı kalarak düşünün. Kendi alan haritalayıcınızı yuvarlamayı seçerseniz, temelde tam tersini yapıyorsunuzdur - bir spekülasyonun dışında bir şey yaptığınız için - "genişletilmiş spesifikasyonunuzu" yaratmışsınızdır.

Bunu geçmişte yaptım mı? Evet. Ve kesinlikle her zaman bir sorunu çözmekten çok daha fazla bir acıya dönüşür çünkü şekil dosyalarını her zaman şekil dosyalarını okuyabilen / yazabilen herhangi bir şeye açmaya çalıştığınızda, anlaşılması zor alanlardan oluşan bir masa ortaya çıkarırsınız. .

Bu noktada, size şunu sorardım, neden şekil dosyaları kullanıyorsunuz? Ya shapefile spec ve sınırlamalarına bağlı kalan bir iş akışı çözümü ya da dosya formatlarını değiştirin. Diğer her şey sadece baş ağrıları için bir reçetedir.


Maalesef, müşterimiz şekil dosyalarına ihtiyaç duyar: /
denu

o zaman başka seçenek yok :(
Ragi Yaser Burhum,

1
Diğer seçenekler, bazıları aşağıda önerilmiş olan geçici çözümlerdir.

Müşteriniz sadece şekil dosyaları isterken çalışma ortamlarının neden kötü bir fikir olduğunu açıklamak için yukarıdaki cevabımı güncelledim.
Ragi Yaser Burhum

6
Bir danışman olarak, benim deneyimim, bir müşteriye yardım etmenin bir yolunu bulmanın, "yapılabilecek bir yol yok" demekten neredeyse her zaman tercih edilebildiği olmuştur. Neden şekil dosyalarına ihtiyaç duyduklarını bulmak iyi bir başlangıçtır ve bir alternatif üzerinde hemfikir olabilirsiniz, ancak bu her zaman böyle olmaz. Bu arada, geçici çözümler için fikir edinmenin en iyi yollarından biri Web’de “başka seçenek yok” diyen bir bildirim yayınlamaktır. :-)
whuber

16

Müşterileriniz bundan tamamen memnun olmasa da, bununla başa çıkmanın standart bir yolu var: iki dosyayı, bir biçim dosyasını ve bir veri dosyasını yazılımlarını okuyabilecek biçimde dışa aktarıyorsunuz. Shapefile, nitelikler için sadece benzersiz bir tanımlayıcıya [Id] sahiptir. Veri dosyasının birkaç özelliği vardır: [Id] şekliyle eşleştirmek, [Alan] alan adını sağlamak için, [Tür] türünü belirtmek için ve değeri depolamak için her olası veri türünün bir niteliğini. Orijinal dosyadaki her alan bu veri dosyasında bir kayıt olarak saklanır.

Örneğin, şuna benzeyen bir kaynak tablosu:

[Shape] [Id] [Name]     [Population2010]
shape1  A1   California         37253956
shape2  A2   Texas              25145561
shape3  A3   Wyoming              563626

karşılık gelen bir veri dosyasına sahip olur

[Id] [Field]        [Type]  [Text]     [Integer]
A1   Name           Text    California    <Null>
A1   Population2010 Integer <Null>      37253956
A2   Name           Text    Texas         <Null>
A2   Population2010 Integer <Null>      25145561
A3   Name           Text    Wyoming       <Null>
A3   Population2010 Integer <Null>        563262

Bu verilerin herhangi bir RDBMS'de nasıl kullanılacağı ve iki format arasında nasıl ileri geri dönüştürüleceği açık olmalıdır.


7

Müşteriniz ArcGIS kullanıyorsa, alan takma adlarını toplu olarak atamak için bir komut dosyası sağlayabilirsiniz . Bu onlara verileri kullanırken uzun alan adlarının görünümünü verir.

Benzer komut dosyaları, diğer GIS paketlerinde de takma adlar sağlamak için işe yarayabilir.


4
Elbette cevaplarımdan birinin saygı duyduğunu görmek beni çok mutlu ediyor, ancak bu cevap jeo veri tabanlarına değil şekil dosyalarına da uygulanıyor. Takma adları tutamazlar, ancak Arcgis'de takma adı hatırlayan bir katman dosyası kaydedilebilir.
matt wilkie

Kaydetti ve açıklama için teşekkürler. Ayrıca takma adların da bir MXD ile kaydedilebileceğini unutmayın. Senaryoların müşteriye sunulması gerektiğini düşündüm, çünkü form dosyaları yeni bir haritaya eklendiğinde tekrar çalıştırılmaları gerekiyordu.

2

Alınması en kolay rota SADECE geometrinizi bir şekil dosyası olarak saklamaktır, birçok CBS uygulamasında mevcut olan mükemmel geometri düzenleme yetenekleri için YET, tüm saha verilerinizi (veya bunların birçoğunu) sqlite içinde tablo olarak saklar. Alan verilerinizi araştırmak için gerektiği şekilde onlara katılın.

AMA Eğer mekansal sorgular yaparken ya da QGIS'deki shapefile özelliklerini seçerken tabloları düzenlemeniz gerekiyorsa, seçenek olarak [sqlite tablolara eklenen shapefiles] seçeneğini unutmanız ve her şeyi Spatialite'e aktarmanız gerekir. Qspatialite ve Spatialite_GUI kullanmayı öğrenin (her ikisi de diğer özelliklerin eksik olduğu birçok özellik ile birbirlerine ücretsizdir - SQLITE ile birçok şey yaparsanız gerek ve kullanmanız gerekir)

Bu tabloların (shapefile ile birleştirilen) birleştirme ile aynı anda düzenlenemeyeceğini akılda tutmak önemlidir. Ve böylece Spatialite'e göç etmek, şekil dosyalarına mükemmel bir alternatif olacaktır. PostgreSQL'in karmaşıklığı olmadan, SQL veritabanının erdemlerinin çoğunu sunarken, şekil dosyalarının sadeliği ve taşınabilirliği ile de uyumludur.


-2

Geçici düzeltme, en fazla 31 karakterden oluşan sütun adlarına sahip olan SEKME dosyası olarak kaydedilebilir.


1
Bunun gerçekten soruyu yanıtladığından emin değilim
nmtoken 25:18
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.