13 votos

Pasar de un shapefile grande a un raster

Tengo un shapefile grande (1 gb) y necesito rasterizarlo. Ya he probado lo siguiente.

1.) Importarlo a GRASS mediante v.in.ogr esto falló con el mensaje de error: ERROR: G_realloc: unable to allocate 498240036 bytes at break_polygons.c:188

2.) Mi segunda idea fue utilizar PostGIS. Importar el shapefile, remuestrearlo en la ubicación x,y de la cuadrícula y luego exportar estos puntos y crear una cuadrícula a partir de xyz. Importé con éxito los shapefiles (polígonos y puntos) pero la intersección de 1 millón de polígonos con 300k puntos parece ser muy lenta. Utilicé el siguiente satemento de PostGIS, tal vez se pueda mejorar.

select polygons.land_id,grid.geom from grid,polygons where grid.geom && polygons.geom and within(grid.geom,polygons.geom)

3.) También intenté utilizar simplify() en PostGIS. Pero perdí demasiados polígonos pequeños (es decir, algunas áreas que estaban cubiertas sólo con polígonos pequeños se volvieron nulas).

Cualquier idea será muy apreciada.

14voto

Symmetric Puntos 158

Puedes probar gdal_rasterize Aunque no lo he utilizado con un shapefile tan grande, por lo que puede tener los mismos problemas que con GRASS. Creo que algo como lo siguiente debería funcionar (con GDAL >= 1.8.0):

gdal_rasterize -a AN_ATTRIB -l THE_LAYER -a_nodata -9999 -a_srs EPSG:27700 -co TILED=YES -tr 10 10 -ot Float32 src.shp dest.tif

Por supuesto, tendrá que jugar con algunas de las opciones dependiendo de su shapefile de origen. El parámetro más importante es -tr, que especifica la resolución de un píxel; sin él, puede encontrarse con una trama muy grande...

Si quiere seguir con GRASS, intente establecer una extensión menor para la rasterización, y divida el proceso en trozos manejables, luego haga un mosaico de los rásteres en uno solo.

3voto

eplawless Puntos 2076

En cuanto a su primera intención, podría intentar ejecutar v.in.ogr en una máquina que tenga más memoria RAM o espacio en el disco de intercambio?

Si no, puedes dividirlo en varios archivos y rasterizar cada uno de ellos antes de volver a fusionarlos.

1voto

Robert Höglund Puntos 5572

Si necesitas más control al hacer una rasterización, echa un vistazo a perrygeo's poly_density.py script que utiliza GDAL bajo el capó, pero puede utilizarse para superponer funciones o añadir evaluaciones condicionales más allá de las posibles con gdal_rasterize solo.

0voto

Pablo Puntos 6414

Como Jack el Destripador, hazlo por partes. De postgis exportar rebanadas de los datos de importación en la hierba y convertir.

0voto

Gary Peck Puntos 151

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X