Como faço para gerar imagens em miniatura a partir de muitos shapefiles?

9

Recentemente, um colega e eu lançamos um projeto de código-fonte aberto chamado Mapoteca, que é um conjunto de scripts Python que se integra à instalação do GDAL / FWTools, permitindo um detalhamento completo dos diretórios procurando dados espaciais e extraindo extensão, geometria, número de elementos, projeção e usuário gravá-lo em um arquivo csv. Estamos trabalhando na parte que descreve os arquivos DBF associados e queríamos gerar uma imagem em miniatura de cada shapefile. Você conhece uma maneira de gerar essas miniaturas em jpeg ou png usando Python?

jdeltoro1973
fonte

Respostas:

3

Você pode integrar o Mapnik para renderizar as imagens.

Sean
fonte
3

Eu havia postado uma pergunta sobre a criação de imagens a partir de dados vetoriais que você pode achar útil. A resposta aceita, a combinação de bem torneado, ogr, matplotlib e numpy parece que funcionaria bem para você.

user890
fonte
2

A maneira mais simples seria chamar gdal_rasterize usando subprocess.call (), mas eu suspeito que ele não faz nenhuma interpolação, por isso seria alias ao ponto de ilegibilidade se você gerasse uma imagem em miniatura diretamente dos dados. Portanto, você deve gerar uma imagem temporária "de tamanho razoável" * e usar a biblioteca de imagens Python para dimensioná-la para o tamanho desejado.

Mas espero que o maior problema esteja em quais atributos você baseará seu estilo? Os shapefiles não possuem informações de exibição inerentes, como tenho certeza de que você conhece, portanto, você precisará encontrar uma maneira de decidir quais cores usar. O gdal_rasterize oferece a capacidade de fazer isso, mas a escolha normalmente é baseada no conhecimento específico do domínio. Para ter uma ferramenta genérica, você precisará ter um esquema de estilo genérico.

* Isso também é algo para o qual você pode precisar criar algumas regras codificadas. Talvez comece com um tamanho de pixel ideal (digamos 10m por pixel) e aumente-o se a imagem resultante for muito grande para ser prática.

MerseyViking
fonte
1

Apenas por uma questão de completude - o mapserver também pode renderizar mapas de boa aparência a partir de uma variedade de dados de base, na linha de comando, usando o utilitário shp2img . Novamente, você precisará decidir sobre um estilo muito genérico e muito simples que atenda às suas finalidades.

relet
fonte