Mencari alat / modul / tambahan Python untuk GIS?

31

Dengan ArcGIS 10, Python telah menjadi bahasa skrip de-facto untuk ESRI. Sementara perangkat lunak sumber terbuka terkemuka seperti QGIS, GeoServer, PostGIS semua mendukung Python. Oleh karena itu menjadi penting untuk mengetahui / mempelajari Python untuk pengembang SIG serta pengguna.

Adakah yang bisa membuat daftar alat / modul / add-in tersebut dengan Python yang sangat penting dalam GIS?

thelastray
sumber
10
Saya pikir pertanyaan ini terlalu luas dan harus dibatasi untuk paket python yang dapat digunakan dalam GIS dengan dukungan Python.
underdark
4
Apakah ArcPy modul Python sejati?
Mapperz
2
@Mapperz sebenarnya adalah paket situs. Pendahulu arcgisscriptingadalah modul. Lihat help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//…
blah238
3
@underdark - Saya pikir memiliki pertanyaan luas yang bagus bisa bermanfaat. Dalam hal ini memberikan sumber daya pusat bahwa mesin pencari akan menemukan ketika seseorang mulai googling untuk toolset python yang digunakan.
GIS-Jonathan
2
+1 terlalu luas. Jawaban yang paling relevan untuk pertanyaan akan ditemukan di akhir [tag:python] + [tag:my-software]pencarian dan disortir melalui tab suara dan faq . Jawaban di sini tidak pernah bisa berharap untuk mencocokkan itu.
matt wilkie

Jawaban:

38
  • NumPy : NumPy adalah paket mendasar untuk komputasi ilmiah dengan Python. Ini berisi antara lain:

    • objek array N-dimensi yang kuat
    • fungsi canggih (penyiaran)
    • alat untuk mengintegrasikan kode C / C ++ dan Fortran
    • aljabar linier yang berguna, transformasi Fourier, dan kemampuan angka acak

    Selain penggunaan ilmiah yang jelas, NumPy juga dapat digunakan sebagai wadah multi-dimensi data generik yang efisien. Tipe data sewenang-wenang dapat didefinisikan. Ini memungkinkan NumPy untuk berintegrasi dengan cepat dan cepat dengan berbagai macam basis data.

  • SciPy : SciPy (dilafalkan "Sigh Pie") adalah perangkat lunak sumber terbuka untuk matematika, sains, dan teknik. Itu juga nama konferensi yang sangat populer tentang pemrograman ilmiah dengan Python. Perpustakaan SciPy tergantung pada NumPy, yang menyediakan manipulasi array N-dimensional yang nyaman dan cepat. Perpustakaan SciPy dibangun untuk bekerja dengan array NumPy, dan menyediakan banyak rutinitas numerik yang ramah pengguna dan efisien seperti rutinitas untuk integrasi dan optimalisasi numerik. Bersama-sama, mereka berjalan pada semua sistem operasi populer, cepat untuk menginstal, dan bebas biaya. NumPy dan SciPy mudah digunakan, tetapi cukup kuat untuk diandalkan oleh beberapa ilmuwan dan insinyur terkemuka dunia. Jika Anda perlu memanipulasi angka di komputer dan menampilkan atau mempublikasikan hasilnya, cobalah SciPy!

  • Shapely : Shapely adalah paket Python berlisensi BSD untuk manipulasi dan analisis objek geometris planar. Ini didasarkan pada GEOS yang digunakan secara luas (mesin PostGIS) dan JTS (dari mana GEOS porting) perpustakaan. Ketergantungan C ini diperdagangkan untuk kemampuan mengeksekusi dengan kecepatan sangat tinggi. Shapely tidak peduli dengan format data atau sistem koordinat, tetapi dapat dengan mudah diintegrasikan dengan paket-paket yang ada.

  • Ikatan GDAL Python : Paket dan ekstensi Python ini adalah sejumlah alat untuk pemrograman dan memanipulasi Perpustakaan Abstraksi Data Geospasial GDAL .

  • GeoDjango: GeoDjango bermaksud untuk menjadi kerangka Web geografis kelas dunia. Tujuannya adalah untuk membuatnya semudah mungkin untuk membangun aplikasi Web GIS dan memanfaatkan kekuatan data yang diaktifkan secara spasial.
  • PyProj
  • SpatialPython : Repositori github yang didokumentasikan dengan baik.
blah238
sumber
Saya akan menambahkan perpustakaan geopandas.org yang dikembangkan secara aktif untuk siapa pun yang melihat jawaban yang lebih lama ini!
clifgray
11

Untuk menjawab pertanyaan saya sendiri, saya baru saja menemukan modul Python ini. Meskipun saya belum menggunakannya, itu terlihat menarik.

NetworkX adalah paket perangkat lunak bahasa Python untuk pembuatan, manipulasi, dan studi tentang struktur, dinamika, dan fungsi jaringan yang kompleks.

Dan

rtree - indeks spasial untuk Python GIS

rayray
sumber
10

pergi ke Topik :: Ilmiah / Teknik :: GIS dan Anda memiliki semua Modul Python untuk GIS (untuk bekerja dengan shapefile, raster, KML, GML, geocoding GPX, dll.)

Yang paling penting telah dikutip tetapi saya sarankan juga Fiona " Fiona menyediakan antarmuka Python minimal, tidak rumit ke perpustakaan open source geodata yang paling dipercaya komunitas GIS dan terintegrasi dengan mudah dengan paket GIS Python lain seperti pyproj, Rtree, dan Shapely. "

dan untuk jaringan dengan shapefile atau Esri Feature Class dengan modul Networkx Geometric Network Geoprocessing : " Sejauh yang saya tahu, ESRI belum merilis alat geoprocessing untuk Jaringan Geometrik mereka " atau Alternatif untuk pgRouting atau Python: cara mengubah shapefile (atau kelas fitur ESRI) dalam jaringan topologi (grafik) (dalam bahasa Prancis)

import networkx as nx
G = nx.read_shp('pointshapefile.shp')
print(G.nodes())
# result [(1.0, 2.0), (3.0, 2.0), (0.0, 0.0), (3.0, 1.0), (4.0, 4.0), (2.0, 1.0), (2.0, 4.0), (1.0, 3.0), (2.0, 3.0), (1.0, 4.0), (4.0, 3.0), (4.0, 2.0), (3.0, 4.0), (1.0, 1.0)]
print(G.edges())
# result [((1.0, 2.0), (1.0, 1.0)), ((3.0, 2.0), (2.0, 1.0)), ((3.0, 1.0), (2.0, 1.0)), ((4.0, 4.0), (3.0, 4.0)), ((2.0, 1.0), (1.0, 1.0)), ((2.0, 4.0), (2.0, 3.0)), ((1.0, 3.0), (1.0, 2.0)), ((2.0, 3.0), (1.0, 2.0)), ((1.0, 4.0), (1.0, 3.0)), ((4.0, 3.0), (4.0, 2.0)), ((4.0, 2.0), (3.0, 2.0)), ((3.0, 4.0), (2.0, 3.0)), ((1.0, 1.0), (0.0, 0.0))]

# shortest path
print(nx.astar_path(H,(1.0, 4.0),(4.0, 2.0),dist))
# result [(1.0, 4.0), (1.0, 3.0), (1.0, 2.0), (2.0, 3.0), (3.0, 2.0), (4.0, 2.0)]

# and so with all the algorithms of Networkx module
# you can also export the results in shapefile format

Saya menggunakan Shapely, Fiona, GDAL / OGR, Pyshp, Networkx dan yang lainnya di QGIS dan GRASS GIS tanpa masalah (dan dengan matplotlib atau descartes untuk grafik interaktif). Mereka sering memiliki algoritma yang lebih mudah digunakan untuk perawatan.

Beberapa modul ini juga dapat digunakan di ArcPy dengan masalah karena ArcPy menggunakan versi 1.3 dari Numpy, ketinggalan jaman (sekarang versi 1.6.1 ...) dan Anda tidak dapat memperbaruinya tanpa merusak modul ArcPy.

gen
sumber
5

Saya menggunakan dan merekomendasikan ReportLab Toolkit , pustaka Open Source PDF untuk membuat dokumen secara terprogram dalam format PDF. Seperti yang diiklankan di halamannya, ini adalah solusi yang kuat, fleksibel, terbukti dari waktu ke waktu, kekuatan industri. Ini gratis, perangkat lunak sumber terbuka ditulis dengan Python tetapi sintaksnya bukan yang termudah yang pernah saya tangani :-)

Di ArcGIS 10.0 sangat berharga untuk menulis laporan dalam format PDF dari kelas fitur dan tabel meskipun beberapa fungsi ini mungkin tidak begitu diperlukan pada 10.1 ketika akses ke laporan PDF dari laporan ArcGIS penulis tersedia untuk ArcPy.

PolyGeo
sumber
Apakah Anda menggunakan pdfgenpaket atau platypus? Saya perlu membuat laporan dengan jpeg dan teks, tidak ada yang terlalu mewah.
Chad Cooper
Saya menggunakan platypus - dan hanya memiliki persyaratan untuk menampilkan tabel dengan teks dalam sel mereka (tidak ada gambar).
PolyGeo
4

Di dunia Django:

  • format vektor (untuk menampilkan geojson kami sebagai geodjango tidak mendukungnya secara asli);
  • Geraldo (untuk pelaporan, gunakan ReportLab);
George Silva
sumber
2

Masih ada lagi:

GRASS - Anda dapat memanggil GRASS dengan Python.

FMEObjects - Jika Anda memiliki lisensi FME mereka memiliki modul python juga yang memungkinkan Anda untuk memanggil beberapa transformer keren mereka.

GIS-Jonathan
sumber
Sangat? FMEObjects sepengetahuan saya tidak memiliki binding Python untuk memanggil transformer. Saya benar-benar berharap itu terjadi. Jika Anda tahu itu benar dan tahu cara mengakses API itu, beri tahu kami. Itu akan membuat hidup saya jauh lebih mudah pada saat ini.
celticflute
1

Distribusi Paket Enthought memiliki banyak paket yang terdaftar di atas yang dibundel ke dalam platform yang kohesif. Mereka bahkan memastikan bahwa itu dapat dengan mudah dikonfigurasi untuk bekerja dari python prompt ArcGIS dan yang arcpydapat digunakan dari python prompt itu. Kami menggunakan ini di kantor kami. Dari wiki internal kami:

Cara terbaik menghubungkan ArcGIS dan EPD adalah dengan menginstal keduanya dan menautkannya menggunakan file .pth sehingga Python sys.path menyertakan modul sistem lainnya. File "zzEPD.pth" memungkinkan ArcGIS Python untuk mengakses modul EPD, dan "zzArcGIS.pth" memungkinkan EPD Python untuk mengakses arcpy. (Awalan "zz" ada di sana untuk memastikan bahwa paket "asing" adalah yang terakhir di sys.path untuk menghindari potensi konflik untuk modul yang ada di kedua instalasi Python.) Jika Anda mengalami konflik ArcGIS, cukup ganti nama filenya. txt ("zzEPD.pth.txt") dan restart ArcGIS dan ArcGIS tidak akan lagi "melihat" modul EPD (mereka tidak akan berada di sys.path).

* zzEPD.pth - tempat di folder \ Python27 \ Desktop10.1 \ lib \ situs-paket *

# zzEPD.pth 
# Path to Enthought modules
C:\Python27\epd32\lib\site-packages

* zzArcGIS.pth - tempat dalam folder \ Python27 \ epd32 \ lib \ situs-paket *

# zzArcGIS.pth 
# copy of \Python27\Desktop10.1\lib\site-packages\ArcGIS.pth
C:\ArcGIS\Desktop10.1\bin
C:\ArcGIS\Desktop10.1\arcpy
C:\ArcGIS\Desktop10.1\ArcToolbox\Scripts
Roland
sumber
1

Tidak khusus untuk GIS, tetapi untuk debugging python, IPDBluar biasa. https://pypi.python.org/pypi/ipdb

Untuk menggunakannya, cukup tempatkan baris berikut dalam kode Anda:

import ipdb
ipdb.set_trace()

Kemudian di shell Python Anda, Anda dapat masuk ke bagian kode apa saja dan berinteraksi dengan semua variabel pada kondisi saat itu.

djq
sumber