Estoy teniendo verdaderos problemas para limpiar y reducir el tamaño de un Shapefile que es publicado por la Agencia de Medio Ambiente del Reino Unido .
Muestra las extensiones de los datos abiertos LiDAR que publican: cada polígono es un vuelo topográfico, y hay campos para la resolución, la fecha del vuelo, etc.
Eventualmente me gustaría terminar con un Shapefile disuelto (fusionando todas las características) y simplificado que sea mucho más pequeño en tamaño. Por el momento:
- El .shp ocupa 360,6 MB
- El .dbp ocupa 26,9 MB
- Hay 121.753 polígonos
Creo que una de las razones por las que el archivo es tan grande es que hay muchas pequeñas "motas" de datos (que no son importantes para mis fines):
Lo que he probado hasta ahora:
- Disolución con QGIS: esto parecía no progresar en un archivo tan grande así que lo cancelé después de un tiempo
- Disolución con OGR (
ogr2ogr dissolved.shp LIDAR_composite_extents_2015.shp -dialect sqlite -sql "SELECT ST_Union(geometry) AS geometry FROM LIDAR_composite_extents_2015"
): al cabo de unas horas me salía un error como el siguiente:GEOS error: TopologyException: Input geom 0 is invalid: Ring Self-intersection at or near point 221912.50000000093 50580.000000001863 at 221912.50000000093 50580.000000001863
- Supongo que este será el primero de muchos errores - Limpiando el Shapefile, primero con Check Geometry Validity de QGIS, luego con v.clean de GRASS (probé con bpol), pero el archivo limpiado sigue fallando al disolver (también probé agregando un buffer cero)
- Convirtiendo los polígonos de varias partes en partes individuales, añadiendo una columna de geometría y eliminando las características más pequeñas que un área determinada. Esto redujo el tamaño de los archivos en unos 100MB, pero no afectó a los "agujeros" dentro de los polígonos - para deshacerse de ellos intenté hacer una capa de diferencia, pero la operación de diferencia falla sistemáticamente (si compruebo que se ignora la geometría no válida, crea muchas características que son visibles en la tabla de atributos, pero no las muestra).
Al final simplificaré el archivo, pero no quiero hacerlo antes de la disolución por si introduzco astillas.
¿Debo utilizar una herramienta diferente dentro de v.clean?
Todavía no he intentado dividir el archivo en regiones y disolverlas, y luego disolver las regiones.
0 votos
Me pregunto qué quieres conseguir disolviendo esos polígonos. Por lo que tengo entendido, esta capa sólo te da información sobre dónde se tomaron los datos LIDAR, cuándo y a qué resolución, etc. Y, por supuesto, los polígonos se superponen porque la misma área fue sobrevolada en diferentes momentos.
0 votos
Sugiero simplificar las geometrías antes de disolverlas porque, de lo contrario, no tendrás límites vecinos entre los polígonos. Además, yo utilizaría una combinación de Simplificar las geometrías (primero) y Geometría suave (entonces) herramientas. Si puede utilizar scripts, también puede echar un vistazo aquí .
0 votos
@BerndV. Sí, estos datos son sólo las extensiones del LiDAR. El uso final es una aplicación web, que necesita ilustrar al usuario qué área está cubierta con los datos.
0 votos
@HowToInQGIS Gracias por el enlace tan útil. Cuando he utilizado simplificar en el pasado ha introducido astillas entre los polígonos (incluso cuando aquellos parecen compartir el mismo borde recto) por lo que no quería hacer eso antes de disolver. Sin embargo, podría estar equivocado en esto.