Eu tenho um arquivo shapefile grande (1 GB) e preciso rasterizá-lo. Eu já tentei o seguinte.
1.) Importe-o para o GRASS usando v.in.ogr
isso falhou com a mensagem de erro: ERRO: G_realloc: não é possível alocar 498240036 bytes em break_polygons.c: 188
2.) Minha segunda idéia foi usar o PostGIS. Importe o shapefile, faça uma nova amostra no local x, y da grade e exporte esses pontos e crie uma grade a partir de xyz. Importei com sucesso os arquivos de forma (polígonos e pontos), mas a interseção de 1 milhão de polígonos com 300 mil pontos parece muito lenta. Eu usei o seguinte postGIS satement, talvez haja espaço para melhorias.
select polygons.land_id,grid.geom from grid,polygons where grid.geom && polygons.geom and within(grid.geom,polygons.geom)
3.) Eu também tentei usar simplify()
no PostGIS. Mas perdi para muitos polígonos pequenos (ou seja, algumas áreas cobertas apenas com polígonos pequenos tornaram-se nulas).
Qualquer idéia seria muito apreciada.
Respostas:
Você pode tentar o gdal_rasterize , embora eu não o tenha usado com um arquivo shapefile tão grande, portanto você pode ter os mesmos problemas que o GRASS. Eu acho que algo como o seguinte deve funcionar (com GDAL> = 1.8.0):
Obviamente, você terá que brincar com algumas das opções, dependendo do seu shapefile de origem. O parâmetro mais importante é -tr, que especifica a resolução de um pixel; sem ele, você pode encontrar uma varredura muito grande ...
Se você deseja manter o GRASS, tente definir uma extensão menor para a rasterização e divida o processo em pedaços gerenciáveis, depois faça o mosaico dos rasters em um.
fonte
Em relação à sua primeira intenção, você poderia tentar executar o comando v.in.ogr em uma máquina com mais RAM ou trocar espaço em disco?
Caso contrário, você pode dividi-lo em muitos arquivos e rasterizar cada um deles antes de mesclá-los novamente.
fonte
Se você precisar de mais controle ao fazer uma rasterização, consulte o script poly_density.py do perrygeo, que usa GDAL sob o capô, mas pode ser usado para sobrepor recursos ou adicionar avaliações condicionais além daquelas possíveis
gdal_rasterize
sozinho.fonte
Como Jack, o Estripador, faça-o em partes. Do postgis, exporte fatias dos dados importados na grama e converta.
fonte
Aqui está um guia sobre como rasterizar uma tabela vetorial no PostGIS ...
fonte