Exemplos industriais do uso do ArcPy em Python para geoprocessamento?

12

Alguns alunos me perguntaram recentemente que tipos de operações o GIS Analyst / Developer geralmente tentam automatizar usando Python com geoprocessamento no pacote de sites ArcGIS e ArcPy. Eu acho que pode ser útil saber ao procurar alguns exercícios para ter certeza de que o que você cria é relevante para o setor e pode ser reutilizado mais tarde já no local de trabalho.

A resposta mais fácil seria "leia a ajuda da Esri e analise as amostras", mas eu estava procurando cenários mais específicos e mais comuns de implementar. Assim, compartilhando fluxos de trabalho sush como "estamos obtendo um arquivo .zip com shapefiles, usamos o Python para descompactá-lo, projetamos todos no sistema de coordenadas X, carregamos em um geodatabase ArcSDE, concedemos aos usuários acesso a esses dados" são bem-vindos. Sinta-se à vontade para fornecer uma descrição concisa do fluxo de trabalho; não são necessários detalhes extremos.

Alex Tereshenkov
fonte

Respostas:

10

Para mim, como sugere sua pergunta, eu uso muito o Python para automatizar o processamento em lote em particular, mas também para criar cálculos especializados repetíveis. Atualmente, não uso o ArcPy porque não posso pagar as licenças ESRI como consultor freelancer de GIS. Eu uso muito GDAL / OGR, Shapely, PostGIS, Numpy e SciPy, embora tudo na minha lista possa ser feito com o ArcPy (e alguns deles eram). Exemplos incluem:

  1. Derivando Estatísticas Zonais para todo o Reino Unido que primeiro exige mosaicos de blocos raster de 20 km de dois tipos de dados diferentes, executando alguns "mapematics" nessas rasters, mesclando a área equivalente de blocos de polígonos vetoriais de 10 km, calculando as estatísticas zonais do resultado do mapematics de varredura e unindo a tabela de estatísticas aos dados vetoriais originais antes de enviar para shapefiles em uma estrutura de diretórios lógicos e gravar em CD para o cliente.
  2. Execução de cálculos de visibilidade seqüencial a cada 100m ao longo de uma estrada ou pista e, em seguida, atribuindo os resultados do cálculo como valores M de volta aos dados da rota.
  3. Processo automatizado para a criação de modelos de paisagem 3D, através do mosaicamento / mesclagem de blocos de dados rasterizados e vetoriais, recortando a área necessária e convertendo-os em um formato 3D proprietário (não GIS). Eu uso muito a pequena biblioteca Python que desenvolvi para isso em meu trabalho freelance.
  4. Um grande projeto em que trabalhei em uma equipe usou o ArcPy para criar processos em lote para converter ou derivar novos dados de dados GIS em um formato com recursos que poderiam ser consumidos por um gerador de procedimentos de jogos de computador. Os scripts de geoprocessamento foram chamados por um 'slave-driver' de processamento em lote, também escrito em Python e rodando no Django.
  5. O Python é muito útil mesmo para pequenas tarefas, principalmente onde há repetição (por exemplo, recurso por processamento de recurso). O Model Builder do ArcGIS foi muito aprimorado com os controles de fluxo que vieram na versão 10, mas mesmo assim, ainda não é possível fornecer o controle necessário e / ou é mais rápido e fácil escrever o processo no ArcPy do que tentar fazê-lo. coagir o Model Builder.
  6. Eu criei uma ferramenta em Python para executar análises de varredura (para calcular se um veículo muito longo pode seguir uma determinada rota e onde o trailer provavelmente ficará preso em curvas apertadas entre edifícios.Este é outro especialista que é freelancer arsenal.
  7. Gerando saída do Mapnik
  8. Antes que o ArcGIS se tornasse multithread, usei o Python para me permitir gerar subprocessos que às vezes aceleram cálculos longos e lentos, sem a sobrecarga do ArcMap sobrecarregando a memória.

O Python no geoprocessamento comercial é ótimo porque você tem toda a velocidade e brevidade dos scripts que o Python fornece e a velocidade de processamento do código compilado em estilo C, porque, enquanto o Python é interpretado, ele geralmente chama código compilado em estilo C sob o capô. O Python fornece a cola que pode manter várias tarefas seqüenciais de geoprocessamento juntas, e a lista acima é apenas um pequeno instantâneo de algumas das coisas para as quais eu pessoalmente a uso. Nos 'Bons Velhos Dias', configuraríamos um arquivo Watch e o ArcInfo gravaria nossa entrada de linha de comando e limparia a AML (que se lembra da Arc Macro Language!) Para fazer um processo reutilizável de chamadas de geoprocessamento coladas com a AML. Hoje em dia não é tão diferente, exceto pelo fato de usarmos Python ou C # como cola.

MappaGnosis
fonte
1
Curiosamente, acabei de responder a esta pergunta ( gis.stackexchange.com/questions/52478/… ) - que dá outro exemplo de uso do Python como um método de derrotar vazamentos de memória do ArcGIS!
MappaGnosis
+1, eu gostaria especialmente de ver um tópico do blog GIS.SE no # 4.
precisa saber é o seguinte
1
Embora a empresa agora esteja extinta e eu tenha saído há algum tempo, outra empresa comprou o IP, então não sei o quão explícito eu poderia ser. De qualquer forma, você pode obter algumas pistas sobre o lado do multiprocessamento na minha resposta no link no meu comentário acima. Acho que posso acrescentar que nosso farm de geoprocessamento possuía uma máquina de 16 núcleos, dois servidores de 8 núcleos e cerca de uma dúzia de PCs dual core aposentados, todos executados pelo driver escravo. A ESRI até enviou alguns caras para dar uma olhada no que havíamos feito porque não estávamos usando o ArcServer para isso. Operamos as máquinas com tanta força que dois pegaram fogo!
MappaGnosis
7

Por onde começar ... Sou um grande defensor do Python na empresa, embora agora trabalhe no governo de nível superior. Aqui estão alguns exemplos de tarefas para as quais eu usei o Python:

  1. Movendo dados. Tarefas bastante simples, como mover dados rotineiramente, podem ser automatizadas com muita facilidade com o Python, especialmente com o shutilmódulo pronto para uso.
  2. Exportando classes de recursos de um banco de dados ArcSDE e em shapefiles para consumo por outros pacotes de software. O ArcSDE (ou algum outro banco de dados relacional) geralmente é o registro mestre em uma organização, mas nem todo pacote de software pode se conectar a um banco de dados. Muitos pacotes ainda consomem bons shapefiles e, usando arcpy, é fácil exportá-los todas as noites para que seus usuários possam ter dados atualizados.
  3. Criando conjuntos de dados espaciais a partir de conjuntos de dados diferentes. Todos na empresa usam (e geralmente usam mal) o Excel para armazenar seus dados. Com arcpy(ou outros métodos Pythonic), é fácil pegar esses dados tabulares que possuem um componente espacial e criar rapidamente um conjunto de dados espaciais a partir dele. O mesmo vale para arquivos de texto. Recentemente, criei uma ferramenta ArcToolbox para um cliente que lê arquivos de texto em um formato proprietário XYZ e cria polilinhas habilitadas para ZM (não é possível compartilhar muito mais do que isso).
  4. Traduzir dados GIS para que possam ser inseridos em softwares que não têm idéia do que é "espacial". No momento, estou escrevendo ferramentas que pegam conjuntos de dados GIS (rasters, vetores) e enviam os dados para um programa de modelagem 3D por meio da API Python. Este pacote 3D não pode funcionar com formatos de dados espaciais, mas pode funcionar com os valores e atributos de texto por trás dos dados espaciais. Para isso, estou usando arcpyas informações do geodatabase e enviá-las para arquivos de texto ou para um arquivo de configuração XML.
  5. Buscando dados. Tem um site com tabelas de dados que você precisa? Use beautifulsouppara extraí-lo. Tem um site FTP com centenas ou milhares de arquivos que você precisa buscar? Use urllib2ou faça o ftplibdownload deles facilmente.

São apenas alguns exemplos. O melhor do Python na empresa é que, mesmo sem direitos totais de administrador para sua máquina, o que geralmente acontece, você ainda pode realizar um pouco. Combine isso com a suave curva de aprendizado e a legibilidade do Python, e você terá uma excelente ferramenta de automação para o GIS Tech / Analyst que não possui muita experiência em programação.

Chad Cooper
fonte
6

Eu trabalho para um município, e a gangue GIS fornece suporte aos nossos vários departamentos (engenharia, inspeções de edifícios, estatuto, parques, incêndio, etc.).

  1. Atualizando informações de encomendas e endereços cívicos. Temos scripts bastante longos que manipulam dados espaciais e de atributos, o que envolve o uso de várias ferramentas de geoprocessamento para executar tarefas espaciais, bem como conectar-se a bancos de dados relacionais para obter informações que são então agregadas aos nossos dados espaciais.
  2. Ferramentas personalizadas. Criamos ferramentas personalizadas usando o novo Assistente de Suplemento do Python para alguns de nossos funcionários que não são de GIS. Alguns de nossos funcionários precisam ler dados espaciais e executar algumas manipulações básicas. Projetamos barras de ferramentas que permitem que eles façam o que precisam sem entrar no ambiente do ArcGIS.

Como outros já declararam, estes são apenas alguns exemplos.

dchaboya
fonte