GIS için Python araçları / modülleri / eklentileri mi arıyorsunuz?


31

ArcGIS 10 ile Python, ESRI için fiili betik dili haline geldi. QGIS, GeoServer, PostGIS gibi Açık kaynaklı yazılımların tümü Python'u desteklemektedir. Bu nedenle, CBS geliştiricileri için Python'u iyi bir kullanıcı olarak bilmek / öğrenmek önemli hale geldi.

Python’da GIS’de çok önemli olan bu tür araçlar / modüller / eklentiler listelenebilir mi?


10
Bu sorunun çok geniş olduğunu ve Python destekli herhangi bir GIS'de kullanılabilecek python paketleriyle sınırlı olması gerektiğini düşünüyorum.
underdark

4
ArcPy gerçek bir Python modülü mü?
Mapperz

2
@Mapperz aslında bir site paketi. Selefi arcgisscriptingbir modül. Bkz help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//...
blah238

3
@underdark - Güzel ve geniş bir soru sormanın faydalı olabileceğini düşünüyorum. Bu durumda, arama motorlarının, hangi piton araç setinin kullanılacağına googling yapmaya başladığında bulacağı merkezi bir kaynaktır.
GIS-Jonathan

2
+1 çok geniş. Soruya en uygun cevaplar [tag:python] + [tag:my-software]arama sonunda bulunacak ve oylar ve sss sekmeleri ile sıralanacak . Buradaki cevaplar asla buna uymayı ümit edemez.
matt wilkie

Yanıtlar:


38
  • NumPy : NumPy, Python ile bilimsel hesaplama için temel pakettir. Diğer şeylerin yanı sıra:

    • güçlü bir N boyutlu dizi nesnesi
    • karmaşık (yayın) fonksiyonlar
    • C / C ++ ve Fortran kodunu entegre etmek için araçlar
    • kullanışlı doğrusal cebir, Fourier dönüşümü ve rasgele sayı yetenekleri

    Belirgin bilimsel kullanımlarının yanı sıra, NumPy de çok boyutlu bir verimli veri kabı olarak kullanılabilir. Keyfi veri tipleri tanımlanabilir. Bu, NumPy'nin çok çeşitli veritabanlarıyla sorunsuz ve hızlı bir şekilde bütünleşmesini sağlar.

  • SciPy : SciPy ("Sigh Pie" olarak telaffuz edilir) matematik, fen ve mühendislik için açık kaynaklı bir yazılımdır. Aynı zamanda Python ile bilimsel programlama üzerine yapılan çok popüler bir konferansın adı . SciPy kütüphanesi NumPy'ye bağlıdır, uygun ve hızlı N boyutlu dizi manipülasyonu sağlar. SciPy kütüphanesi, NumPy dizileriyle çalışacak şekilde oluşturulmuştur ve sayısal entegrasyon ve optimizasyon için rutinler gibi kullanıcı dostu ve verimli sayısal rutinler sağlar. Birlikte, tüm popüler işletim sistemlerinde çalışırlar, hızlı kurulurlar ve ücretsizdirler. NumPy ve SciPy'nin kullanımı kolaydır, ancak dünyanın önde gelen bilim adamları ve mühendisleri tarafından güvenilecek kadar güçlüdür. Bir bilgisayardaki sayıları manipüle etmeniz ve sonuçları görüntülemeniz veya yayınlamanız gerekirse, SciPy'i deneyin!

  • Düzgün : Düzlemsel geometrik nesnelerin manipülasyonu ve analizi için, BSD lisanslı bir Python paketidir. Yaygın olarak kullanılan GEOS (PostGIS'in motoru) ve JTS (GEOS'un taşındığı) kütüphanelerine dayanmaktadır. Bu C bağımlılığı, cayır cayır yanma hızıyla çalışabilme kabiliyetine sahiptir. Şekiller veri formatları veya koordinat sistemleriyle ilgilenmez, ancak paketlerle kolayca entegre edilebilir.

  • GDAL Python ciltleri : Bu Python paketi ve uzantıları, GDAL Jeo Uzamsal Veri Soyutlama Kütüphanesini programlamak ve işlemek için kullanılan bir dizi araçtır .

  • GeoDjango: GeoDjango dünya standartlarında bir coğrafi Web çerçevesi olmayı hedeflemektedir. Amacı, GIS Web uygulamaları oluşturmayı mümkün olduğunca kolaylaştırmak ve mekansal olarak etkinleştirilmiş verilerin gücünden yararlanmaktır.
  • PyProj
  • Mekansal Python : Güzel belgelenmiş github deposu.

Bu eski cevabı arayanlar için aktif olarak geliştirilen geopandas.org kütüphanesini eklerdim !
clifgray

11

Kendi soruma cevap vermek için bu Pythons modülünü yeni buldum. Henüz kullanmamış olmama rağmen, heyecan verici görünüyor.

NetworkX , karmaşık ağların yapısını, dinamiklerini ve fonksiyonlarını oluşturma, değiştirme ve inceleme için bir Python dili yazılım paketidir.

Ve

rtree - Python GIS için konumsal dizin


10

Konuya git :: Bilimsel / Mühendislik :: GIS dnd GIS için tüm Python Modüllerine sahipsiniz (şekil dosyaları, rasterler, KML, GML, GPX coğrafi kodlama vb. ile çalışmak için).

Bunlardan en önemlileri çoktan alıntılanmış ancak Fiona'yı da tavsiye ediyorum " Fiona açık kaynaklı GIS topluluğunun en güvenilir coğrafi erişim kütüphanesine minimal, karmaşık bir Python arayüzü sağlıyor ve pyproj, Rtree ve Shapely gibi diğer Python GIS paketleriyle kolayca bütünleşiyor. "

ve NetworkX modülü ile shapefiles veya Esri Özellik Sınıfı ile ağ oluşturmak için Geometrik Ağ Geoprocessing : " Anlayabildiğim kadarıyla, ESRI Geometrik Ağları için herhangi bir coğrafi işlem aracı yayınlamamıştır " veya pgRouting veya Python'a Alternatifler : nasıl bir şekil dosyasını dönüştürmek (veya özellik sınıfı ESRI) topolojik bir ağda (grafik) (fransızca)

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

QGIS ve GRASS GIS'de Shapely, Fiona, GDAL / OGR, Pyshp, Networkx ve diğerlerini sorunsuz olarak kullanıyorum (ve etkileşimli grafikler için matplotlib veya descartes ile). Genellikle tedavi için kullanımı kolay algoritmalar vardır.

Bu modüllerin bazıları ArcPy'de de problemlerle kullanılabilir çünkü ArcPy, Numpy'nin 1.3 versiyonunu kullanır (eski sürüm 1.6.1 ...) ve ArcPy modülünü kırmadan güncelleyemezsiniz.



7

Listeye ekleme:

PySAL - "mekansal analiz fonksiyonlarının açık kaynaklı çapraz platform kütüphanesi"

http://code.google.com/p/pysal/ adresinden erişilebilir.

pyshp - bir python shapefile okuyucu ve saf python ile yazar

http://code.google.com/p/pyshp/ adresinden erişilebilir.

Düzenle:

Birisi bugün bana bu modülü gösterdi, insanlara karşı bazı isteksiz olabilir. Python kullanımı için örnek GIS vektörü ve raster verileri:

gisdata - http://pypi.python.org/pypi/gisdata/0.3.3


5

Belgeleri programlı olarak PDF formatında oluşturmak için Açık Kaynaklı PDF kitaplığı olan ReportLab Araç Takımı'nı kullanır ve öneririm . Sayfalarında ilan edildiği gibi, sağlam, esnek, zaman kanıtlanmış, sektörde güçlü bir çözümdür. Python'da yazılmış ücretsiz ve açık kaynaklı bir yazılımdır ancak sözdizimi şu ana kadar uğraştığım en kolay yazılım değil.

ArcGIS 10.0'da, özellik sınıflarından ve tablolardan PDF formatında raporlar yazmak paha biçilmezdir, ancak ArcGIS rapor yazıcısından PDF raporlarına erişim ArcPy'ye sunulduğunda, bu işlevlerden bazıları 10.1'de gerekli olmayabilir.


pdfgenPaketi kullanıyor musunuz platypus? Jpeg ve text içeren gen raporlarına ihtiyacım var.
Chad Cooper,

Ben ornitorenk kullanıyorum - ve sadece hücrelerinde metin içeren tabloların çıktısını alma gereksinimim vardı (görüntü yok).
PolyGeo


2

Daha fazlası var:

GRASS - GRASS'ı Python ile arayabilirsiniz.

FMEObjects - Bir FME lisansınız varsa, kendi serin trafolarından bazılarını aramanıza izin veren bir python modülü de vardır.


Gerçekten mi? FMEObjects, bildiğim kadarıyla transformatör çağırmak için Python bağlarına sahip değil. Gerçekten olmasını isterdim. Bunu yaptığını ve bu API’ye nasıl erişeceğinizi biliyorsanız, lütfen bize bildirin. Şu anda hayatımı çok daha kolaylaştıracaktı.
celticflute

1

Enthought Paketi Dağıtım bir sahip çok daha tutarlı bir platform haline yukarıda listelenen paketlenmiş paketlerin. ArcGIS'in python isteminden çalışmak için kolayca yapılandırılabildiğinden ve python isteminden arcpykullanılabildiğinden bile emin oldular . Bunu ofislerimizde kullanıyoruz. İç wiki'den:

ArcGIS ve EPD'yi bağlamanın en iyi yolu, her ikisini de kurmak ve .pth dosyalarını kullanarak bağlamaktır, böylece Python sys.path diğer sistemin modüllerini içerir. "ZzEPD.pth" dosyası ArcGIS Python'un EPD modüllerine erişmesine izin verir ve "zzArcGIS.pth", EPD Python'un arcpy'ye erişmesine izin verir. ("Zz" öneki, her iki Python kurulumunda var olan modüller için olası çakışmaları önlemek amacıyla "yabancı" paketlerin sys.path'da son kalmasını sağlamak için vardır.) ArcGIS çakışmalarına maruz kalırsanız dosyayı yeniden adlandırın. txt ("zzEPD.pth.txt") ve ArcGIS'i yeniden başlatın ve ArcGIS artık EPD modüllerini "görmeyecek" (sys.path içinde olmayacaklar).

* zzEPD.pth - \ Python27 \ Desktop10.1 \ lib \ site-Packages klasörüne yerleştirin *

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

* zzArcGIS.pth - \ Python27 \ epd32 \ lib \ site-Packages klasörüne yerleştirin *

# 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

1

CBS'ye özgü değil, ancak python hata ayıklama için IPDB, şaşırtıcı. https://pypi.python.org/pypi/ipdb

Kullanmak için aşağıdaki satırları kodunuza yerleştirmeniz yeterlidir:

import ipdb
ipdb.set_trace()

Daha sonra Python kabuğunuzda herhangi bir kod parçasına düşebilir ve o anki durumdaki tüm değişkenlerle etkileşime girebilirsiniz.

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.