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?

Respostas:




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.



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.


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.