Saya bertanya-tanya apakah mungkin untuk melihat isi dari suatu shapefile menggunakan Python tanpa memiliki dan lisensi ArcMap. Situasinya adalah Anda dapat membuat shapefile dari berbagai aplikasi, tidak hanya dari perangkat lunak ESRI. Saya ingin membuat skrip Python yang memeriksa referensi spasial, tipe fitur, nama atribut dan definisi, dan isi bidang dalam sebuah shapefile dan membandingkannya dengan seperangkat nilai yang dapat diterima. Saya ingin agar skrip ini berfungsi bahkan jika organisasi tidak memiliki lisensi ESRI. Untuk melakukan sesuatu seperti ini, apakah Anda harus menggunakan ArcPy atau dapatkah Anda menggali ke dalam shapefile tanpa menggunakan ArcPy?
40
Jawaban:
Saya akan merekomendasikan untuk menjadi terbiasa dengan API Python GDAL / OGR untuk bekerja dengan data vektor dan raster. Cara termudah untuk mulai menggunakan GDAL / OGR adalah melalui distribusi python seperti python (x, y) , Anaconda , atau OSGeo4W .
Rincian lebih lanjut tentang penggunaan GDAL untuk tugas spesifik Anda:
Selain itu, saya akan merekomendasikan tutorial berikut dari USU untuk membantu Anda memulai.
Meminjam dari contoh di atas, skrip berikut menggunakan alat FOSS untuk melakukan tindakan berikut:
sumber
inFeature = None
. Buku masak GDAL / OGR bukan bagian dari, atau ditulis oleh tim inti GDAL / OGR.Ada banyak modul untuk membaca shapefile dengan Python, lebih tua dari ArcPy, lihat pada Python Package Index (PyPi): shapefile . Ada juga banyak contoh di GIS SE (mencari [Python] Fiona , misalnya)
Semua dapat membaca geometri, bidang, dan proyeksi.
Tetapi modul-modul lain seperti PySAL: Python Spatial Analysis Library , Cartopy (yang menggunakan pyshp ) atau Matplotlib Basemap juga dapat membaca shapefile, antara lain.
Cara termudah untuk digunakan adalah Fiona , tetapi jika Anda hanya tahu ArcPy, gunakan pyshp , karena osgeo dan Fiona mengharuskan pustaka GDAL C / C ++ diinstal, GeoPandas membutuhkan modul Pandas dan PySAL terlalu besar (banyak, banyak perawatan lain)
Jika Anda hanya ingin membaca konten shapefile, Anda tidak perlu hal-hal yang kompleks, cukup gunakan protokol antarmuka geo (GeoJSON) juga diimplementasikan dalam ArcPy ( ArcPy: AsShape )
Dengan Fiona (sebagai kamus Python):
Dengan pyshp (seperti kamus Python)
Dengan osgeo / ogr (sebagai kamus Python)
Dengan GeoPandas (sebagai kerangka data Pandas)
* catatan di geopanda Anda harus menggunakan Fiona dan GDAL versi lama dengan itu atau itu tidak akan menginstal. GDAL: 1.11.2 Fiona: 1.6.0 Geopanda: 0.1.0.dev-
Ada banyak tutorial di Web dan bahkan buku-buku ( Pengembangan Geospasial Python , Belajar Analisis Geospasial dengan Python dan Geoprocessing dengan Python , sedang dicetak )
Lebih umum, jika Anda ingin menggunakan Python tanpa ArcPy, lihat pemetaan tematik sederhana dari shapefile menggunakan Python?
sumber
The kinds of data in GIS are roughly divided into rasters representing continuous scalar fields (land surface temperature or elevation, for example) and vectors representing discrete entities like roads and administrative boundaries. Fiona is concerned exclusively with the latter
Ada perpustakaan Python geospasial selain ArcPy yang akan memberi Anda kemampuan ini. Berikut adalah dua contoh:
Perpustakaan Python Shapefile (pyshp)
GeoPandas
Jika Anda tertarik pada pustaka lain, posting tentang pustaka Python Geospatial yang esensial ini adalah tempat yang baik untuk melihat.
sumber