Cerchi strumenti / moduli / componenti aggiuntivi di Python per GIS?


31

Con ArcGIS 10, Python è diventato il linguaggio di scripting di fatto per ESRI. Pur essendo leader del software Open source come QGIS, GeoServer, PostGIS supporta tutti Python. Quindi è diventato importante conoscere / imparare Python per gli sviluppatori GIS e per gli utenti.

Qualcuno può fare un elenco di tali strumenti / moduli / componenti aggiuntivi in ​​Python che sono cruciali in GIS?


10
Penso che questa domanda sia troppo ampia e dovrebbe essere limitata ai pacchetti Python che possono essere utilizzati in qualsiasi GIS con supporto Python.
underdark

4
ArcPy è un vero modulo Python?
Mapperz

2
@Mapperz è in realtà un pacchetto del sito. Il predecessore arcgisscriptingè un modulo. Vedi help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//…
blah238

3
@underdark - Penso che avere una bella domanda ampia possa essere utile. In questo caso fornisce una risorsa centrale che i motori di ricerca troveranno quando qualcuno inizierà a cercare su Google quale set di strumenti Python usare.
GIS-Jonathan,

2
+1 per troppo ampio. Le risposte più pertinenti alla domanda saranno trovate al termine di una [tag:python] + [tag:my-software]ricerca e ordinate tramite le schede dei voti e delle domande frequenti . Le risposte qui non possono mai sperare di eguagliarle.
matt wilkie,

Risposte:


38
  • NumPy : NumPy è il pacchetto fondamentale per l'elaborazione scientifica con Python. Contiene tra l'altro:

    • un potente oggetto array N-dimensionale
    • funzioni sofisticate (di trasmissione)
    • strumenti per l'integrazione di codice C / C ++ e Fortran
    • utile algebra lineare, trasformata di Fourier e capacità di numeri casuali

    Oltre ai suoi ovvi usi scientifici, NumPy può anche essere usato come un efficiente contenitore multidimensionale di dati generici. È possibile definire tipi di dati arbitrari. Ciò consente a NumPy di ​​integrarsi perfettamente e rapidamente con un'ampia varietà di database.

  • SciPy : SciPy (pronunciato "Sigh Pie") è un software open source per la matematica, la scienza e l'ingegneria. È anche il nome di una conferenza molto popolare sulla programmazione scientifica con Python. La libreria SciPy dipende da NumPy, che consente una pratica e rapida manipolazione dell'array N-dimensionale. La libreria SciPy è progettata per funzionare con gli array NumPy e fornisce molte routine numeriche efficienti ed intuitive come le routine per l'integrazione numerica e l'ottimizzazione. Insieme, funzionano su tutti i sistemi operativi più diffusi, sono veloci da installare e sono gratuiti. NumPy e SciPy sono facili da usare, ma abbastanza potenti da poter dipendere da alcuni dei più importanti scienziati e ingegneri del mondo. Se devi manipolare i numeri su un computer e visualizzare o pubblicare i risultati, prova SciPy!

  • Shapely : Shapely è un pacchetto Python con licenza BSD per la manipolazione e l'analisi di oggetti geometrici planari. Si basa sulle librerie GEOS ampiamente diffuse (il motore di PostGIS) e JTS (da cui viene portato GEOS). Questa dipendenza C viene scambiata per la capacità di eseguire con una velocità incredibile. Shapely non si occupa dei formati di dati o dei sistemi di coordinate, ma può essere facilmente integrato con i pacchetti che lo sono.

  • Binding GDAL Python : questo pacchetto ed estensioni Python sono una serie di strumenti per programmare e manipolare la libreria di astrazione dei dati geospaziali GDAL .

  • GeoDjango: GeoDjango intende essere un framework Web geografico di livello mondiale. Il suo obiettivo è rendere più semplice possibile la creazione di applicazioni Web GIS e sfruttare la potenza dei dati abilitati spazialmente.
  • PyProj
  • SpatialPython : repository github ben documentato.

Aggiungerei la biblioteca geopandas.org sviluppata attivamente per chiunque cerchi questa risposta più vecchia!
clifgray,

11

Per rispondere alla mia domanda ho appena trovato questo modulo Pythons. Anche se non l'ho ancora usato, sembra eccitante.

NetworkX è un pacchetto software in linguaggio Python per la creazione, la manipolazione e lo studio della struttura, della dinamica e delle funzioni di reti complesse.

E

rtree - indice spaziale per Python GIS


10

vai all'argomento :: Scientific / Engineering :: GIS e hai tutti i moduli Python per GIS (per lavorare con shapefile, raster, geocodifica KML, GML, GPX, ecc.)

I più importanti sono già stati citati ma consiglio anche a Fiona " Fiona fornisce un'interfaccia Python minima e semplice alla libreria di accesso ai geodati più affidabile della comunità GIS open source e si integra facilmente con altri pacchetti GIS Python come pyproj, Rtree e Shapely " .

e per il networking con shapefile o Esri Feature Class con modulo Networkx Geometric Process Geoprocessing : " Per quanto posso dire, ESRI non ha rilasciato alcun strumento di geoprocessing per la sua rete geometrica " o Alternative a pgRouting o Python: come trasformare un shapefile (o classe caratteristica ESRI) in una rete topologica (grafico) (in francese)

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

Uso Shapely, Fiona, GDAL / OGR, Pyshp, Networkx e altri in QGIS e GRASS GIS senza problemi (e con matplotlib o descartes per la rappresentazione grafica interattiva). Spesso hanno algoritmi più facili da usare per il trattamento.

Alcuni di questi moduli possono anche essere utilizzati in ArcPy con problemi perché ArcPy utilizza la versione 1.3 di Numpy, obsoleta (ora versione 1.6.1 ...) e non è possibile aggiornarla senza interrompere il modulo ArcPy.



7

Aggiunta all'elenco:

PySAL - "libreria open source multipiattaforma di funzioni di analisi spaziale"

disponibile da: http://code.google.com/p/pysal/

pyshp - un lettore e scrittore di file di forma in pitone in puro pitone

disponibile da: http://code.google.com/p/pyshp/

Modificare:

Qualcuno mi ha mostrato questo modulo oggi, potrebbe essere di qualche interesse per le persone. Esempi di dati vettoriali e raster GIS per l'utilizzo di Python:

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


5

Uso e raccomando ReportLab Toolkit , la libreria PDF Open Source per la creazione programmatica di documenti in formato PDF. Come pubblicizzato sulle sue pagine, è una soluzione robusta, flessibile, comprovata e solida. È un software open source gratuito scritto in Python ma la sua sintassi non è la più semplice che abbia mai affrontato :-)

In ArcGIS 10.0 è prezioso per la scrittura di report in formato PDF da classi e tabelle di funzionalità, sebbene alcune di queste funzionalità potrebbero non essere così necessarie in 10.1 quando l'accesso ai report PDF dal writer di report ArcGIS diventa disponibile per ArcPy.


Usi il pdfgenpacchetto o platypus? Ho bisogno di rapporti gen con jpeg e testo, niente di troppo elaborato.
Chad Cooper,

Uso l'ornitorinco - e ho avuto solo i requisiti per produrre tabelle con testo nelle loro celle (nessuna immagine).
PolyGeo


2

Ce ne sono ancora:

GRASS - Puoi chiamare GRASS con Python.

FMEObjects - Se hai una licenza FME hanno anche un modulo Python che ti consente di chiamare alcuni dei loro trasformatori interessanti.


Veramente? FMEObject per quanto ne so non ha collegamenti Python per chiamare trasformatori. Vorrei davvero averlo fatto. Se sai che è così e sai come accedere a quell'API, faccelo sapere. Mi renderebbe la vita molto più semplice al momento.
celticflute,

1

La distribuzione dei pacchetti Enthought ha molti pacchetti elencati sopra raggruppati in una piattaforma coesiva. Hanno anche assicurato che può essere facilmente configurato per funzionare dal prompt di Python di ArcGIS e che arcpypuò essere utilizzato dal suo prompt di Python. Lo usiamo nei nostri uffici. Dal nostro wiki interno:

Il modo migliore per connettere ArcGIS e EPD è installare entrambi e collegarli usando i file .pth in modo che Python sys.path includa i moduli dell'altro sistema. Il file "zzEPD.pth" consente ad ArcGIS Python di accedere ai moduli EPD e "zzArcGIS.pth" consente ad EPD Python di accedere ad arcpy. (Il prefisso "zz" è lì per garantire che i pacchetti "esterni" siano gli ultimi nel percorso sys.path per evitare potenziali conflitti per i moduli che esistono in entrambe le installazioni di Python.) Se si verificano conflitti ArcGIS, è sufficiente rinominare il file in. txt ("zzEPD.pth.txt") e riavvia ArcGIS e ArcGIS non "vedranno più" i moduli EPD (non saranno nel percorso sys.path).

* zzEPD.pth - posiziona nella cartella \ Python27 \ Desktop10.1 \ lib \ site-pacchetti *

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

* zzArcGIS.pth - posiziona nella cartella \ Python27 \ epd32 \ lib \ site-pacchetti *

# 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

Non specifico per GIS, ma per il debug di Python, IPDBè sorprendente. https://pypi.python.org/pypi/ipdb

Per usarlo, basta inserire le seguenti righe nel codice:

import ipdb
ipdb.set_trace()

Quindi nella tua shell Python puoi passare a qualsiasi codice e interagire con tutte le variabili in quello stato attuale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.