Eu pareço usar o pacote de sites Arcpy da ESRI para praticamente todo o meu geoprocessamento python. Para crédito da ESRI, esse é um conjunto incrível de ferramentas que podem ajudar a realizar muitas coisas. No entanto, também gostaria de criar scripts de geoprocessamento fora do domínio ESRI Arcpy. Por exemplo, se eu quiser recortar uma varredura em um polígono, começaria com o seguinte script da ESRI :
# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *
# Set environment settings
env.workspace = "C:/sapyexamples/data"
# Set local variables
inRaster = "elevation"
inMaskData = "mask.shp"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute ExtractByMask
outExtractByMask = ExtractByMask(inRaster, inMaskData)
# Save the output
outExtractByMask.save("C:/sapyexamples/output/extractmask")
Não tenho certeza de como realizaria a mesma tarefa programaticamente sem o Arcpy. Minhas perguntas para os programadores sérios: Que coleção de ferramentas python você usa para realizar tarefas que os usuários de ESRI realizariam com o pacote de sites do Arcpy? Por onde começo?
python
geoprocessing
Aaron
fonte
fonte
Respostas:
GDAL é a ferramenta a ser usada. De fato, toda a chamada é uma linha para gdal_rasterize:
se você soubesse o valor sem dados do dem
Para algum controle python:
onde suas variáveis podem ser definidas em python
Para python completo:
Eu apenas dei uma olhada rápida na sintaxe da API C, portanto minha sintaxe para python provavelmente está um pouco fora. Veja gdal_alg.h: http://gdal.org/gdal__alg_8h.html
fonte
Você encontrará várias outras perguntas semelhantes neste site que fazem a mesma pergunta básica e têm boas referências. O mais semelhante (e detalhado) é:
Outros incluem:
fonte
Um bom ponto de partida seria a Biblioteca de Abstração de Dados Geoespaciais . Na verdade, é composta de duas bibliotecas - GDAL para manipular dados raster geoespaciais e OGR para manipular dados vetoriais geoespaciais, mas as pessoas costumam chamá-lo de GDAL.
Há um geoprocessamento com Python usando o curso GIS de código aberto na Utah State University. Você pode querer dar uma olhada também.
fonte
Em muitas das minhas pesquisas acadêmicas, trabalho com dados LiDAR fazendo análises de superfície para geomorfologia. Eu rapidamente descobri que a realização de muitas operações usando o arcpy era muito lenta, especialmente em grandes conjuntos de dados. Como resultado, comecei a usar:
Eu também recomendaria o livro Modelagem Quantitativa dos Processos de Superfície da Terra para quem quiser aprender mais sobre a análise de superfícies raster. O livro vem com ótimos exemplos de código em C ++, que são muito mais eficientes do que as ferramentas do ArcGIS. Esses algoritmos também podem ser portados para o Python sem precisar de algo mais complexo que o numpy, embora sejam executados muito mais rapidamente no C ++.
fonte
Para pessoas que usam ESRI, acho que o GRASS seria um ambiente muito semelhante ao ambiente python da GUI e organizado em 'kits de ferramentas' separados para tarefas diferentes (raster, vetor, kits de ferramentas solares etc.). O script tem outras opções além do Python, mas é assim que eu o uso.
Definitivamente, confira este ótimo link que está atualizado (acredito): http://grass.osgeo.org/wiki/GRASS_and_Python
EDIT: outro link para pessoas com experiência em ESRI: http://grass.osgeo.org/wiki/GRASS_migration_hints
Também apóio a moção da GDAL. É inestimável e eu estaria perdido sem ele.
fonte
Eu acho que as respostas dadas até agora abrangem basicamente todo o pacote que vale a pena mencionar (especialmente GDAL, OGR, pyshp, NumPy)
Mas também há o GIS e o Python Software Laboratory , que hospeda alguns módulos interessantes. Eles são:
Pessoalmente, comecei a brincar com o GDAL / OGR recentemente e os achei muito impressionantes em relação à velocidade e cobertura das ferramentas de análise.
Aqui estão alguns exemplos de como usar os métodos (extraídos dessa excelente fonte, que é um excelente ponto de partida):
O bom dessas ferramentas é que você é muito flexível em como implementá-las. Escrevi, por exemplo, minha própria classe
CreateGeometry()
para criar facilmente arquivos vetoriais do zero. Se você estiver interessado, também posso postá-lo aqui, apesar de achar que está além do escopo da pergunta.fonte
Sei que sua pergunta é centrada em Python, mas R tem muitos métodos de análise estatística de valor, alguns dos quais podem ser usados para análise espacial.
@Whuber
tem uma boa resposta aqui ilustrando como recortar uma varredura em uma caixa em duas linhas.fonte
Minha solução, a solução rápida, é usar GDAL com Python.
Você precisa
(Da resposta aqui: Clipping raster com camada vetorial usando GDAL )
Obviamente, você deve conseguir isso usando Python puro, mas eu não precisei fazê-lo. E quase sempre tenho GDAL por perto! A flexibilidade do GDAL é fantástica, especialmente em um ambiente Linux. Ele lida com rasters enormes, pode ser vinculado a scripts Python ou Shell e existem funções para muitas coisas. Veja também OGR para ferramentas baseadas em vetores.
fonte
Se você não se importa de executar o PostGIS, ele pode fazer o processamento de dados espaciais para você.
Folha de dicas em PDF:
http://www.postgis.us/downloads/postgis20_cheatsheet.pdf
Ele se integra ao python:
https://publicwiki.deltares.nl/display/OET/Accessing+PostgreSQL+PostGIS+with+Python
Com ferramentas de suporte como SPIT no Quantum GIS ou pgAdmin, você está bem equipado para configurar o PostGIS. Você pode usar o python para controlar as operações do PostGIS em seus dados espaciais.
fonte
Eu tenho trabalhado em uma biblioteca de geoprocessamento de código aberto chamada WhiteboxTools que pode ser usada no lugar do ArcPy em muitos aplicativos. Atualmente, existem quase 300 ferramentas disponíveis para o processamento de dados de varredura, vetor e LiDAR (LAS), embora o plano seja eventualmente portar todas as mais de 400 ferramentas disponíveis no Whitebox GAT . Embora as ferramentas sejam desenvolvidas usando a linguagem de programação Rust (para maior eficiência), cada ferramenta pode ser acessada no Python, como no exemplo a seguir:
Informações mais detalhadas podem ser encontradas no manual do usuário do WhiteboxTools . A biblioteca é independente e não possui outras dependências. Você simplesmente precisa fazer o download do pequeno arquivo (<5Mb) localizado aqui . O arquivo de download contém o WhiteboxTools exe, o script whitebox_tools.py , que fornece a API do Python para a biblioteca (importada na linha superior do script acima) e o manual do usuário. Há também uma GUI tkinter (wb_runner.py) muito básica para interface com a biblioteca.
A licença permissiva do MIT tem como objetivo permitir que o WhiteboxTools seja integrado como back-end com outro GIS de código aberto; Alexander Bruy desenvolveu um plugin QGIS para o back-end do WhiteboxTools. Você também pode misturar e combinar ferramentas do WhiteboxTools e ArcPy em um único script, conforme necessário. A biblioteca ainda é um pouco experimental, desenvolvida pelo Grupo de Pesquisa em Geomorfometria e Hidrogeomática da Universidade de Guelph , e atualmente é uma versão anterior à 1.0, que deve ser levada em consideração no uso.
fonte
Usando Python para recortar uma varredura para um shapefile sem ArcPy: http://geospatialpython.com/2011/02/clip-raster-using-shapefile.html
fonte