Bagaimana saya bisa mengonversi file excel dengan kolom x, y ke shapefile?

26

Bagaimana saya bisa mengonversi file excel dengan kolom x, y ke titik shapefile?

Ada beberapa persyaratan yang agak opsional selain penciptaan shapefile yang benar:

  1. Jenis kolom (sesuai penentu format Excel) harus dipertahankan (terutama jenis tanggal)
  2. Nama kolom harus diambil dari tajuk
  3. Saya ingin melakukan ini dari command-line
  4. Jika saya dapat memasukkan referensi spasial heterogen untuk poin-poin di kolom ketiga saya akan sangat senang :)
fmark
sumber

Jawaban:

24

Saya akan merekomendasikan menggunakan OGR / GDAL , yang merupakan bagian dari perpustakaan GDAL . OGR mendukung format virtual yang memungkinkan spesifikasi melalui file XML. Jika Anda mengonversi lembar kerja Excel Anda menjadi CSV, Anda bisa membuat VRT untuk mengakses data.

Dengan asumsi Anda memiliki sesuatu seperti ini example.csv:

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

Anda dapat membuat VRT example.vrtsebagai berikut:

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

Mulai di GDAL 1.7, Anda juga dapat menentukan tipe data dari bidang atribut menggunakan <Field>elemen di dalamnya <OGRVRTLayer>, seperti:

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

Perlu diingat bahwa shapefile menyimpan atribut dalam format DBASE IV yang kurang fleksibel dalam tipe data dibandingkan Excel. Setelah Anda menentukan file VRT, Anda dapat menggunakan OGR toolchain normal untuk mengubah data menjadi Shapefile:

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

Sayangnya, # 4 tidak dimungkinkan - spesifikasi shapefile memungkinkan proyeksi tunggal (dapat dilihat di sini example.prjsetelah langkah terakhir).

scw
sumber
Satu-satunya kelemahan dari ini adalah saya harus mencari tahu tipe data kolom secara terprogram untuk menulis <Field>tag. Saya kira saya akan menemukan yang keluar sendiri :)
fmark
Kanan. Jika Anda menginginkan solusi otomatis dan memiliki akses ke ArcGIS, Anda dapat melakukan ini dengan alat Tambahkan Koordinat XY tinyurl.com/38jm55k sebagai gantinya, yang seharusnya melakukan langkah itu untuk Anda.
scw
Pertimbangan penting adalah memasukkan file Excel Anda ke dalam format yang cocok untuk ESRI shapefile pertama - ada batasan pada nama kolom, panjang nama dan jika Anda menggunakan alat Tambah XY cara ESRI mengotomatiskan jenis bidang yang dapat menyebabkan masalah. webhelp.esri.com/arcgisdesktop/9.2/…
spg
3
Layanan online untuk membantu membangun file vrt yang diformat dengan benar: vrtbuilder.appspot.com
matt wilkie
9

Anda bisa menggunakan plugin Teks Dibatasi yang disertakan dengan QGIS (http://qgis.org ) untuk memuat file teks dan kemudian menyimpannya sebagai shapefile.

tuan
sumber
Saya sering diganggu oleh kesalahan parser menggunakan alat ini. Ada saran?
fmark
1
Apakah Anda memiliki contoh spesifik?
gsherman
@ tanda - Saya mendapatkan kesalahan ini juga, dan biasanya karena MS Excel menangani csv
dassouki
6

Meskipun bukan dari baris perintah, Anda bisa melakukan ini di dalam Aplikasi ArcGIS. Sejak 9.3.1, cukup tambahkan XLS langsung ke ArcMap. Membuat XY Event Layer dari XLS (yaitu memilih X, Y Kolom dan mengatur referensi spasial Anda) Kemudian ekspor XY Event Layer ini ke .shp ini dapat dengan mudah diotomatisasi dengan skrip python / VBA sederhana atau model dalam modelbuilder . Senang membantu alur kerja dasar ini jika Anda memerlukan info lebih lanjut.

Simon
sumber
1
Jika Anda menggunakan Python, Anda bisa menjalankan alat geoprocessing dari baris perintah.
jswise
6

Saya mencari tetapi tidak dapat menemukan halaman bantuan pada Display XY Data dalam bantuan web tetapi prosesnya sederhana.

  1. Gunakan Tambah Data (atau seret dan lepas dari jendela Katalog) untuk meramban lembar kerja Anda (dalam spreadsheet) dan menambahkannya ke peta Anda
  2. Klik kanan untuk memilih dan menggunakan Display XY Data untuk menambahkan lapisan peristiwa
  3. Klik kanan pada layer peristiwa yang baru saja dibuat dan gunakan Data | Ekspor Data untuk membuat shapefile

Anda hanya perlu ArcView (dasar) tingkat lisensi ArcGIS (untuk) Desktop untuk melakukan ini.

PolyGeo
sumber
Apakah saya perlu melakukan sesuatu dengan kolom atas yang bukan bagian dari data?
Zoran
Dua kolom mana yang bukan bagian dari data Anda? Prosedur yang saya jelaskan harus menggunakan kolom panjang / lat yang Anda pilih untuk menghasilkan geometri titik dan kemudian, saya pikir, menyimpan sisanya sebagai atribut dari mereka. Hal terbaik adalah mencobanya dan jika hasilnya tidak seperti yang diharapkan, maka jelaskan pengamatan Anda vs yang diharapkan.
PolyGeo
Rasanya saya salah membaca bagian atas untuk dua - dan saya berasumsi maksud Anda adalah baris teratas (judul). Mereka seharusnya hanya menjadi nama bidang setelah Add Data.
PolyGeo
Tidak yakin apakah ini masih terjadi, tetapi spasi dalam nama-nama tajuk dalam file Excel digunakan untuk menjadi sakit kepala nyata untuk Add XY.
Chad Cooper
1
Memuat file Excel langsung ke ArcGIS berfungsi sangat baik - kecuali jika tidak! Hal-hal yang harus diperhatikan: kurma hancur, angka terpotong. Langkah pemecahan masalah pertama adalah selalu mengekspor ke CSV dengan semua kolom didefinisikan sebagai teks dan memuat itu sebagai gantinya untuk melihat masalah tetap ada. Peringatan itu disamping. Tampilan sebagai X / Y bekerja dengan sangat baik.
matt wilkie
4

Selalu ada opsi petualang. Anda bisa menulis file bentuk sendiri. ESRI menerbitkan spesifikasi untuk shapefile, yang dapat Anda baca di sini:

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

Anda mungkin perlu menulis file DBF. Anda dapat membaca tentang format di sini:

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

Ini tidak diragukan lagi berlebihan, tetapi itu akan memberi Anda keuntungan memiliki kendali atas seluruh proses.

Scott Wisniewski
sumber
Saya sebenarnya cenderung seperti itu - saya akan menggunakan OGR daripada menulis shapefile secara langsung sekalipun!
fmark
2
Excel mungkin dapat menulis DBF secara langsung, meskipun saya sudah memiliki berbagai tingkat keberhasilan menggunakan DBF tersebut sebagai komponen DBF dari sebuah shapefile.
mwalker
Excel tidak menulis file dbf.
user30184
3

Saya pribadi lebih suka menggunakan FME dari Safe Software (http://www.safe.com), yang tidak hanya memungkinkan saya memplot poin dari nilai XY, tetapi juga memberi saya fleksibilitas untuk mengubah koordinat dari satu proyeksi ke proyeksi lain sebelum merencanakan, tentukan jenis pembatas, garis awal (jika file teks memiliki informasi header), lampirkan atribut jika file teks memiliki X, Y, Informasi atribut untuk data titik. Jika Anda ingin memvisualisasikan data ini di Google Earth, Anda dapat menuliskannya dalam format KML sembari menentukan gaya titik KML juga. ~ SRG

SRG
sumber
2

Jika Anda ingin melakukan pemrosesan lain pada data x, y, Anda dapat memuat data ke postgres, gunakan geomfromtext dengan concatenation untuk membuat tipe data geometri dan kemudian menggunakan pgsql2shp untuk mengekspor ke bentuk. Pendekatan ini juga akan memungkinkan Anda untuk menyimpan data sistem referensi spasial heterogen di kolom lain, yang kemudian dapat Anda gunakan untuk mengubah semua poin Anda menjadi sistem referensi umum dalam db sebelum mengekspor ke bentuk. Saya menyadari bahwa ini melibatkan lebih banyak langkah daripada ogr / gdal tetapi itu akan memberi Anda lebih banyak fleksibilitas.

John Powell
sumber
Saya telah menggunakan pendekatan ini di masa lalu, dan itu bagus. Saya pikir batu sandungan saya yang konsisten di sini adalah mendeteksi tipe data excel andal ....
fmark
1
Saya kira Anda bisa menulis sesuatu di excel vba untuk mengatur ulang kolom Anda terlebih dahulu sehingga tanggal, x, y selalu menjadi 3 kolom pertama. Tanpa semacam konvensi penamaan kolom, saya pikir akan sulit untuk mengotomatisasi sepenuhnya apa yang ada dalam pikiran Anda.
John Powell
1

Bagaimana dengan memuat file CSV Anda ke dalam spatiallite dan kemudian menggunakan OGR atau QGIS untuk mengekspor ke shapefile.

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

Anda bahkan dapat mengekspor dari spasial ke shapefile secara langsung.

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

TheSteve0
sumber
Spatialite dapat mengimpor file Excel secara langsung jika formatnya adalah .xls (Excel 97-2003). Koordinat X dan Y harus dikonversi menjadi geometri dengan SQL setelah impor awal.
user30184
Jika Anda tidak keberatan menggunakan Java, Anda bisa menggunakan proyek POI untuk merobek file excel dan kemudian menggunakan GeoTools untuk menulis shapefile baru
TheSteve0
0

Untuk transformasi yang lebih mendasar, Anda dapat menggunakan transformator 2Dpointreplacer di FME 2013. Anda perlu menunjukkan di kolom mana nilai X dan Y berada dan kemudian FME akan mentransformasikan nilai-nilai ini menjadi misalnya file bentuk dengan titik.
Nama dan tipe kolom dapat diatur sesuai kebutuhan

Membekukan
sumber