Procurando ferramentas / módulos / suplementos Python para GIS?


31

Com o ArcGIS 10, o Python se tornou a linguagem de script de fato para a ESRI. Enquanto líder em software de código aberto, como QGIS, GeoServer, PostGIS, todos suportam Python. Assim, tornou-se importante conhecer / aprender Python para desenvolvedores de GIS, bem como usuários.

Alguém pode fazer uma lista dessas ferramentas / módulos / suplementos em Python que são cruciais no GIS?


10
Eu acho que essa pergunta é muito ampla e deve se limitar aos pacotes python que podem ser usados ​​em qualquer GIS com suporte a Python.
Underdark

4
O ArcPy é um verdadeiro módulo Python?
Mapperz

2
@Mapperz é na verdade um pacote de sites. O antecessor arcgisscriptingé um módulo. Veja help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//…
blah238

3
@underdark - acho que ter uma boa pergunta ampla pode ser útil. Nesse caso, ele fornece um recurso central que os mecanismos de pesquisa encontrarão quando alguém começar a pesquisar no Google sobre qual conjunto de ferramentas python usar.
GIS-Jonathan

2
+1 por muito amplo. As respostas mais relevantes para a pergunta serão encontradas no final de uma [tag:python] + [tag:my-software]pesquisa e classificadas nas guias de votos e perguntas frequentes . As respostas aqui nunca podem esperar corresponder a isso.
Matt Wilkie

Respostas:


38
  • NumPy : NumPy é o pacote fundamental para computação científica com Python. Ele contém entre outras coisas:

    • um poderoso objeto de matriz N-dimensional
    • funções sofisticadas (transmissão)
    • ferramentas para integrar código C / C ++ e Fortran
    • recursos úteis de álgebra linear, transformação de Fourier e números aleatórios

    Além de seus óbvios usos científicos, o NumPy também pode ser usado como um eficiente recipiente multidimensional de dados genéricos. Tipos de dados arbitrários podem ser definidos. Isso permite que o NumPy se integre de maneira fácil e rápida a uma ampla variedade de bancos de dados.

  • SciPy : SciPy (pronuncia-se "Sigh Pie") é um software de código aberto para matemática, ciências e engenharia. É também o nome de uma conferência muito popular sobre programação científica com Python. A biblioteca SciPy depende do NumPy, que fornece manipulação de matriz N-dimensional conveniente e rápida. A biblioteca SciPy foi criada para funcionar com matrizes NumPy e fornece muitas rotinas numéricas eficientes e fáceis de usar, como rotinas para integração e otimização numéricas. Juntos, eles rodam em todos os sistemas operacionais populares, são rápidos de instalar e são gratuitos. O NumPy e o SciPy são fáceis de usar, mas poderosos o suficiente para serem confiáveis ​​por alguns dos principais cientistas e engenheiros do mundo. Se você precisar manipular números em um computador e exibir ou publicar os resultados, experimente o SciPy!

  • Shapely : Shapely é um pacote Python licenciado por BSD para manipulação e análise de objetos geométricos planares. Baseia-se nas bibliotecas GEOS amplamente implementadas (o mecanismo do PostGIS) e JTS (a partir do qual o GEOS é portado). Essa dependência C é negociada pela capacidade de executar com uma velocidade incrível. Shapely não está preocupado com formatos de dados ou sistemas de coordenadas, mas pode ser facilmente integrado aos pacotes que o são.

  • Ligações GDAL Python : Este pacote e extensões Python são várias ferramentas para programar e manipular a Biblioteca de Abstração de Dados Geoespaciais GDAL .

  • GeoDjango: O GeoDjango pretende ser uma estrutura da Web geográfica de classe mundial. Seu objetivo é facilitar ao máximo a criação de aplicativos GIS na Web e aproveitar o poder dos dados espacialmente ativados.
  • PyProj
  • SpatialPython : Repositório do Github bem documentado.

Eu adicionaria a biblioteca geopandas.org ativamente desenvolvida para qualquer pessoa que veja esta resposta mais antiga!
Clifgray

11

Para responder minha própria pergunta, encontrei este módulo Pythons. Embora eu ainda não o tenha usado, parece emocionante.

O NetworkX é um pacote de software da linguagem Python para a criação, manipulação e estudo da estrutura, dinâmica e funções de redes complexas.

E

rtree - índice espacial do Python GIS


10

vá para o Tópico :: Científico / Engenharia :: GIS e você possui todos os Módulos Python para GIS (para trabalhar com shapefiles, rasters, KML, GML, geocodificação por GPX, etc.)

Os mais importantes já foram citados, mas eu recomendo também Fiona "O Fiona fornece uma interface Python mínima e descomplicada para a biblioteca de acesso geodata mais confiável da comunidade GIS de código aberto e integra-se prontamente com outros pacotes GIS Python, como pyproj, Rtree e Shapely. "

e para redes com shapefiles ou Esri Feature Class com módulo Networkx Geoprocessamento de rede geométrica : " Até onde eu sei, a ESRI não lançou nenhuma ferramenta de geoprocessamento para sua rede geométrica " ou alternativas ao pgRouting ou Python: como transformar um shapefile (ou classe de recurso ESRI) em uma rede topológica (gráfico) (em francês)

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 outros no QGIS e GRASS GIS sem problemas (e com matplotlib ou descartes para gráficos interativos). Eles geralmente têm algoritmos mais fáceis de usar para o tratamento.

Alguns desses módulos também podem ser usados ​​no ArcPy com problemas, pois o ArcPy usa a versão 1.3 do Numpy, desatualizada (agora versão 1.6.1 ...) e você não pode atualizá-lo sem interromper o módulo ArcPy.



7

Adicionando à lista:

PySAL - "biblioteca multiplataforma de código aberto de funções de análise espacial"

disponível em: http://code.google.com/p/pysal/

pyshp - um leitor e escritor de shapefile em python em python puro

disponível em: http://code.google.com/p/pyshp/

Editar:

Alguém me mostrou esse módulo hoje, pode ser de algum interesse para as pessoas. Amostra de dados vetoriais e raster GIS para uso em python:

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


5

Uso e recomendo o ReportLab Toolkit , a biblioteca de PDF de código aberto para criar programaticamente documentos em formato PDF. Conforme anunciado em suas páginas, é uma solução robusta, flexível, comprovada pelo tempo e com força de mercado. É um software de código aberto gratuito escrito em Python, mas sua sintaxe não é a mais fácil com a qual já lidei :-)

No ArcGIS 10.0, é inestimável a gravação de relatórios em formato PDF a partir de classes e tabelas de recursos, embora algumas dessas funcionalidades possam não ser tão necessárias na versão 10.1 quando o acesso aos relatórios em PDF do gravador de relatórios do ArcGIS estiver disponível para o ArcPy.


Você usa o pdfgenpacote ou platypus? Preciso gerar relatórios com JPEG e texto, nada muito chique.
Chad Cooper

Eu uso ornitorrinco - e só tive requisitos para gerar tabelas com texto em suas células (sem imagens).
PolyGeo


2

Existem ainda mais:

GRASS - Você pode chamar GRASS com Python.

FMEObjects - Se você possui uma licença FME, eles também possuem um módulo python, que permite chamar alguns de seus transformadores legais.


Sério? FMEObjects que eu saiba não tem ligações Python para chamar transformadores. Eu realmente gostaria que sim. Se você souber e acessar essa API, informe-nos. Isso tornaria minha vida muito mais fácil no momento.
Celticflute #

1

O Enthought Package Distribution possui muitos dos pacotes listados acima agrupados em uma plataforma coesa. Eles até garantiram que ele pode ser facilmente configurado para funcionar no prompt python do ArcGIS e que arcpypode ser usado no prompt python. Usamos isso em nossos escritórios. Do nosso wiki interno:

A melhor maneira de conectar o ArcGIS e o EPD é instalar os dois e vinculá-los usando arquivos .pth, para que o Python sys.path inclua os outros módulos do sistema. O arquivo "zzEPD.pth" permite que o ArcGIS Python acesse os módulos EPD, e "zzArcGIS.pth" permite que o EPD Python acesse o arcpy. (O prefixo "zz" existe para garantir que os pacotes "estrangeiros" sejam os últimos no sys.path para evitar possíveis conflitos de módulos existentes nas duas instalações do Python.) Se você tiver conflitos no ArcGIS, simplesmente renomeie o arquivo para. txt ("zzEPD.pth.txt") e reinicie o ArcGIS e o ArcGIS não "verá" mais módulos EPD (eles não estarão no sys.path).

* zzEPD.pth - coloque na pasta \ Python27 \ Desktop10.1 \ lib \ site-packages *

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

* zzArcGIS.pth - coloque na pasta \ Python27 \ epd32 \ lib \ site-packages *

# 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

Não específico ao GIS, mas para depuração de python, IPDBé incrível. https://pypi.python.org/pypi/ipdb

Para usá-lo, basta colocar as seguintes linhas no seu código:

import ipdb
ipdb.set_trace()

Então, no seu shell Python, você pode inserir qualquer parte do código e interagir com todas as variáveis ​​nesse estado atual.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.