2 votos

¿Qué es más rápido para el geoprocesamiento (intersección) de grandes shapefiles?

Tengo archivos shapefiles de 200 Mb de polilíneas descargados de OSM . He estado trabajando con QGIS 2.0 en Ubuntu 64 Bit 8 Gb RAM para hacer algunas tareas de geoprocesamiento y está tardando 2 días en procesarse.

Una vez que tengo mi shapefile final, tengo que hacer más cálculos/scripts para hacer un modelo, y no tengo ese tiempo.

Así que, para acelerar el proceso he pensado en:

  • Exportar mis shapefiles a R
  • Convertirlos a SQL y procesarlos por spatialite
  • ¿Tal vez gdal en shell?

Pero no sé cuál es la opción más rápida/mejor, porque soy un principiante con big data y scripting, así que python todavía no es una opción para mí. Tengo algo de experiencia en R, pero no sé si es la mejor opción.


Tengo un base de datos para Brasil. Me interesan dos shapefiles: "landuse" y "roads". Tengo otro con el estado de São Paulo "sp". Por lo tanto, sólo necesito intersecar el landuse con sp = landuse_sp, roads con so = roads_sp, y posteriormente roads_sp con landuse_sp. Esto es para tener todas las carreteras del estado de São Paulo con el uso de la tierra. Luego interceptaré con los municipios y con otro conjunto de datos con el conteo de vehículos generaré un modelo para el conteo de vehículos.

Con este shapefile final, necesito realizar cálculos de casos añadiendo campos. Con la calculadora de campos, creando el campo "count" como ejemplo, sería algo así:

CASE WHEN roads IS 'primary' AND landuse IS 'residential' THEN exp(8 + 0.0033*2)

ELSE 0

END

Esto es sólo un ejemplo, pero es toda una idea

1voto

MANOJ Puntos 11

Tal vez pueda probar esto en GRASS.

La interfaz gráfica de usuario es quizás menos intuitiva que la de QGIS, y se necesitan pasos adicionales para importar (v.in.ogr), realizar el procesamiento y exportar (v.out.ogr) el archivo shape. Pero una vez superado el obstáculo inicial, es un gran complemento de QGIS, ya que permite abordar los problemas más difíciles con un enfoque alternativo.

Para procesar una sola vez, tampoco tendrás que ponerte a programar los comandos.

utilizar v.in.ogr para cada shapefile para importarlos al entorno de GRASS:

http://grass.osgeo.org/grass64/manuals/v.in.ogr.html

La mayoría de los recortes e intersecciones se pueden hacer a través del comando v.overlay con el operador 'and':

http://grass.osgeo.org/grass64/manuals/v.overlay.html

Para explorar esos comandos a través de la GUI:

Archivo -> Importar capa vectorial -> formatos comunes de importación [v.in.ogr]

Vector -> Superposición de mapas vectoriales [v.overlay]

Averiguar cómo ejecutar estos pasos no debería llevar demasiado tiempo, y le dará una buena idea de si GRASS es un enfoque útil para su conjunto de datos.

v.overlay debería ser capaz de manejar todo lo demás en su procesamiento hasta la 'calculadora de campo' - no estoy seguro de lo que GRASS tiene que ofrecer para este paso. En el peor de los casos podría exportar su producto de vuelta a shapefile usando v.out.ogr, y luego hacer el paso de la calculadora de campo en QGIS.

0voto

Michael Barker Puntos 8234

200Mb no son grandes datos. ¿Has considerado usar PostGIS para esto. dos tablas, X ventanas de consulta para ejecutar todas las consultas al mismo tiempo (cada consulta se ejecuta en su propio hilo). Sólo recuerda que algo así como 2G de RAM para la memoria compartida en PostGis y esas consultas deben tomar unos minutos. La carga de los datos tarda probablemente más que el procesamiento de los mismos

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