Bir excel dosyasını x, y sütunlarıyla bir shapefile nasıl dönüştürebilirim?


26

Bir excel dosyasını x, y sütunları içeren bir nokta şekli dosyasına nasıl dönüştürebilirim?

Bir şekil dosyasının doğru oluşturulmasına ek olarak, bazı isteğe bağlı gereksinimler de vardır:

  1. Sütun türleri (Excel'in biçim belirleyicileri uyarınca) korunmalıdır (özellikle tarih türleri)
  2. Sütun adları başlıktan alınmalıdır
  3. Bunu komut satırından yapmak istiyorum
  4. Üçüncü sütundaki noktalara heterojen uzaysal referanslar ekleyebilirsem çok mutlu olurum :)

Yanıtlar:


24

GDAL kütüphanesinin bir parçası olan OGR / GDAL'yi kullanmanızı tavsiye ederim . OGR, bir XML dosyası aracılığıyla belirtime izin veren sanal bir formatı destekler . Excel çalışma sayfanızı bir CSV'ye dönüştürürseniz, verilere erişmek için bir VRT oluşturabilirsiniz.

Böyle bir şeyin olduğunu varsayarsak example.csv:

Lat,Long,Year,Name
34.0,-120.0,2010-05-01,Off Santa Rosa Island

VRT'yi example.vrtaşağıdaki gibi oluşturabilirsiniz :

<OGRVRTDataSource>
    <OGRVRTLayer name="example">
        <SrcDataSource>example.csv</SrcDataSource>
        <GeometryType>wkbPoint</GeometryType>
        <LayerSRS>WGS84</LayerSRS>
        <GeometryField encoding="PointFromColumns" x="Long" y="Lat"/>
    </OGRVRTLayer>
</OGRVRTDataSource>

GDAL 1.7'den başlayarak, <Field>içindeki öğeyi kullanarak, nitelik alanlarının veri türlerini ek olarak belirtebilirsiniz <OGRVRTLayer>:

    <Field name="date" src="Year" type="Date" />

Shapefiles dosyasının , veri türlerinde Excel'den daha az esnekliğe sahip olan DBASE IV biçimindeki depo özniteliklerini unutmayın . VRT dosyanızı belirttikten sonra, verileri bir Shapefile dosyasına dönüştürmek için normal OGR araç zincirini kullanabilirsiniz:

ogr2ogr -f "ESRI Shapefile" example.shp example.vrt

Maalesef, # 4 mümkün değil - şekil dosyası özelliği, tek bir çıkıntıya izin veriyor (burada example.prjson adımdan sonra görüntülenebilir ).


Bunun tek dezavantajı, <Field>etiketi yazmak için sütunların veri türlerini programlı olarak çözmem gerektiğidir . Sanırım kendi
başıma çözeceğim

Sağ. Otomatik bir çözüm istiyorsanız ve ArcGIS'e erişebiliyorsanız, bunu XY Koordinatlarını Ekle aracıyla tinyurl.com/38jm55k ile yapabilirsiniz, bunun için bu adımı yapmanız gerekir.
scw

Önemli bir husus, Excel dosyanızı önce ESRI şekil dosyasına uygun bir biçime sokmaktır - sütun adları, adların uzunluğu ve XY Ekle aracını ESRI'nin neden olabilecek alan türünü otomatik hale getirme biçimini kullanıyorsanız, kısıtlamalar vardır. sorunlar. webhelp.esri.com/arcgisdesktop/9.2/…
spg

3
Düzgün biçimlendirilmiş bir vrt
matt wilkie

9

Metin dosyasını yüklemek ve ardından bir şekil dosyası olarak kaydetmek için QGIS (http://qgis.org ) ile birlikte gelen Sınırlandırılmış Metin eklentisini kullanabilirsiniz .


Sık sık bu aracı kullanarak ayrıştırıcı hatalarıyla uğraşıyorum. Herhangi bir tavsiye?
fmark

1
Özel örnekleriniz var mı?
gsherman

@fmark - Ben de bu hataları almak ve onun genellikle nedeniyle MS Excel CSV taşıma için
dassouki

6

Komut satırından olmasa da, bunu ArcGIS App içerisinde yapabilirsiniz. 9.3.1'den beri, XLS'i doğrudan ArcMap'e eklemeniz yeterli. XLS'den bir XY Olay Katmanı hazırlayın (yani, X, Y Sütunlarını seçin ve konumsal referansı ayarlayın) Ardından, bu XY Olay Katmanını yeni bir .shp dosyasına aktarın. . Daha fazla bilgiye ihtiyaç duyarsanız bu temel iş akışında yardımcı olmaktan memnuniyet duyarız.


1
Python kullanıyorsanız, bir coğrafi işlem aracını komut satırından çalıştırabilirsiniz.
jswise

6

Web yardımında XY Verilerini Göster ile ilgili bir yardım sayfası bulamadım ancak bulamadım ancak işlem çok basit.

  1. Çalışma sayfanıza (e-tablo içinde) göz atmak ve haritanıza eklemek için Veri Ekle'yi kullanın (veya Katalog penceresinden sürükleyip bırakın).
  2. Etkinlik katmanı eklemek için XY Verilerini Görüntüle'yi seçmek ve kullanmak için sağ tıklayın
  3. Yeni oluşturulan etkinlik katmanına sağ tıklayın ve bir şekil dosyası oluşturmak için Veri | Verileri Dışa Aktar'ı kullanın

Bunu yapmak için yalnızca ArcGIS (for) Desktop’ın ArcView (Basic) lisans seviyesine ihtiyacınız var.


Verilerin bir parçası olmayan üst sütunlarla herhangi bir şey yapmam gerekir mi?
Zoran

Hangi iki sütun verilerinizin bir parçası değil? Tanımladığım prosedür, nokta geometrilerini oluşturmak için seçtiğiniz hangi uzun / lat sütunları kullanmalı ve daha sonra, sanırım geri kalanını, bunların öznitelikleri olarak depolamalı. En iyisi denemek ve sonuç beklendiği gibi değilse, gözlemlediğinizden beklenenleri tanımlayın.
PolyGeo

Sanırım iki kişi için yanlış okudum - ve üst satırın (başlıklar) demek istediğinizi farz ediyorum. Veri Ekledikten sonra yalnızca alan adları haline gelmeleri gerekir.
PolyGeo

Halen böyle olup olmadığından emin değilim, ancak Excel dosyasındaki başlık adlarındaki boşluklar, XY Add için gerçek bir baş ağrısıydı.
Chad Cooper

1
Excel dosyalarını doğrudan ArcGIS'e yüklemek, iyi çalışmaz - çalışmadığı zamanlar dışında! İzlenecek şeyler: tarihler karışık, sayılar kesildi. İlk sorun giderme adımı, her zaman metin olarak tanımlanan tüm sütunlarla CSV'ye dışa aktarmak ve sorun devam edenleri görmek için yüklemek olacaktır. Bir kenara it. X / Y olarak görüntüleme çok iyi çalışıyor.
matt wilkie

4

Her zaman maceracı seçenek var. Şekil dosyasını kendin yazabilirsin. ESRI burada okuyabileceğiniz shapefile ilişkin belirtimi yayınlar:

http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf

Ayrıca bir DBF dosyası yazmanız gerekir. Formatı buradan okuyabilirsiniz:

http://www.clicketyclick.dk/databases/xbase/format/dbf.html#DBF_STRUCT

Bu hiç şüphesiz abartılmamış, ancak size tüm süreç üzerinde kontrol sahibi olmanın avantajını verecektir.


Aslında ben bu şekilde eğilimliyim - yine de şekil dosyasını doğrudan yazmak yerine OGR kullanacağım!
fmark

2
Excel, DBF'leri doğrudan yazabilir, ancak bu DBF'leri bir shapefile'nin DBF bileşeni olarak kullanarak farklı seviyelerde başarı elde ettim.
mwalker

Excel dbf dosyalarını dışarı yazmaz.
user30184

3

Kişisel olarak FME'yi Güvenli Yazılımdan (http://www.safe.com) kullanmayı tercih ediyorum, bu yalnızca XY değerlerinden noktaları çizmeme izin vermiyor, aynı zamanda çizimleri yapmadan önce koordinatları bir projeksiyondan diğerine dönüştürme esnekliği sağlıyor. sınırlayıcı türünü, başlangıç ​​satırını (metin dosyasının başlık bilgisine sahip olması durumunda), metin dosyasının X, Y, nokta verisi için Özellik bilgisine sahip olması durumunda özellikleri ekleyin. Bu verileri Google Earth’te görselleştirmek isterseniz, KML nokta stilini belirlerken bunları KML biçiminde yazabilirsiniz. ~ SRG


2

Eğer x, y verileri üzerinde başka bir işlem yapmak istiyorsanız, verileri postgrese yükleyebilir, geometri veri türü oluşturmak için geomfromtext komutunu kullanarak bir geometri veri türü oluşturabilir ve ardından şekillendirmek için dışa aktarmak için pgsql2shp kullanabilirsiniz. Bu yaklaşım aynı zamanda heterojen uzaysal referans sistemi verilerini başka bir sütunda tutmanıza olanak tanır, bu sayede tüm puanlarınızı db içinde biçimlendirmeden önce ortak bir referans sistemine dönüştürmek için kullanabilirsiniz. Bunun, ogr / gdal'dan daha fazla adım içerdiğini biliyorum, ancak size daha fazla esneklik sağlayacaktır.


Bu yaklaşımı geçmişte kullandım ve bu iyi bir yaklaşım. Benim tutarlı tökezleyen blok benim excel veri türlerini güvenilir bir şekilde tespit ediyor düşünüyorum ....
fmark

1
Sanırım ilk önce sütunlarınızı yeniden düzenlemek için excel vba'da bir şeyler yazabilirsiniz, böylece o tarih, x, y her zaman ilk 3 sütundu. Bazı sütun isimlendirme kuralları olmadan, aklınızdakileri tamamen otomatik hale getirmenin zor olacağını düşünüyorum.
John Powell,

1

CSV dosyalarınızı spatiallite yüklemek ve daha sonra bir shapefile dışa aktarmak için OGR veya QGIS kullanmak hakkında.

http://www.gaia-gis.it/spatialite-2.2/index.html

Spatialite'den direkt olarak bir shapefile verebilirsiniz.

http://www.gaia-gis.it/spatialite-2.2/spatialite-2.2_tutorial.html#t3.1


Spatialite, eski .xls biçimindeyse, Excel dosyalarını doğrudan içe aktarabilir (Excel 97-2003). X ve Y koordinatları ilk içe aktarma işleminden sonra SQL ile etkileşimli geometrilere dönüştürülmelidir.
user30184

Java kullanmaktan çekinmiyorsanız, POI projesini excel dosyalarını parçalamak için kullanabilir ve ardından GeoTools'u kullanarak yeni shapefile yazabilirsiniz
TheSteve0

0

Daha temel bir dönüşüm için, FME 2013'te 2Dpointreplacer transformatörünü kullanabilirsiniz. X ve Y değerlerinin hangi sütunlarda bulunduğunu ve sonra FME'nin bu değerleri noktalara sahip bir şekil dosyasına dönüştüreceğini belirtmeniz gerekir.
Sütun adları ve türleri gerektiği gibi ayarlanabilir

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.