Gran archivo de forma a trama

13

Tengo un archivo shape grande (1 gb) y necesito rasterizarlo. Ya he intentado lo siguiente.

1.) Importarlo a GRASS usando v.in.ogresto falló con el mensaje de error: ERROR: G_realloc: incapaz de asignar 498240036 bytes en break_polygons.c: 188

2.) Mi segunda idea fue usar PostGIS. Importe el archivo de forma, vuelva a muestrearlo en la ubicación x, y de la cuadrícula y luego exporte estos puntos y cree una cuadrícula a partir de xyz. Importé con éxito los archivos de forma (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 comentario de PostGIS, tal vez haya margen de mejora.

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

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

Cualquier idea sería muy apreciada.

johannes
fuente
1
¿Qué versión de GRASS usaste? Debe ser al menos 6.4. Tenga en cuenta que en GRASS 7 el soporte de archivos grandes se implementa también para mapas vectoriales que deberían ayudar a superar el problema indicado (también es mucho más rápido).
markusN
Actualmente estoy usando GRASS 6.4. Actualizaré a 7 pronto, gracias por la pista.
johannes
Puede obtener los últimos archivos binarios de winGRASS 7 precompilados aquí: wingrass.fsv.cvut.cz/grass70
markusN el

Respuestas:

14

Puede probar gdal_rasterize , aunque no lo he usado con un archivo de forma tan grande, por lo que puede tener los mismos problemas que tuvo 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 archivo de forma fuente. 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 desea seguir con GRASS, intente configurar una extensión más pequeña para la rasterización, y divida el proceso en trozos manejables, luego mosaiquee los rasters en uno.

MerseyViking
fuente
1
gdal rasterize lo hizo todo en aproximadamente 5 minutos :). ¡Muchas gracias por eso!
johannes
¡Frio! Me alegra que haya funcionado.
MerseyViking
3

Con respecto a su primer intento, ¿podría intentar ejecutar el comando v.in.ogr en una máquina que tenga más RAM o espacio de disco de intercambio?

Si no, puede dividirlo en muchos archivos y rasterizar cada uno de ellos antes de fusionarlos nuevamente.

simo
fuente
1

Si necesita más control al hacer una rasterización, consulte el script poly_density.py de perrygeo que usa GDAL debajo del capó, pero puede usarse para superponer características o agregar evaluaciones condicionales más allá de las posibles gdal_rasterizesolo.

scw
fuente
0

Como Jack el Destripador, hazlo por partes. A partir de postgis, los segmentos de exportación de datos se importan en pasto y se convierten.

Pablo
fuente