HOW TO: Unir mucho shapefiles en un solo shapefile con GDAL en Windows

Si trabajas con cartografía es normal que te den un montón de shapefiles como respuesta a “necesito el vectorial de una zona”, y en algunos casos (en el mío) no es manejable cuando su número es mayor de 1000 ficheros.

Para unir todos los ficheros, y de paso borrando las geometrías repetidas, podemos usar la fabulosa herramienta ogr2ogr del paquete GDAL, que puedes obtener desde el instalador de la OSGeo4W que nos permite instalar de manera sencilla GDAL compilado para Windows. Creo que esta parte es suficientemente sencilla como para explicarla, pero si hay dudas, deja un comentario.

Una vez instalado, entramos en “Inicio > OSGeo4W > OSGeo4W Shell”, y vamos a la ruta donde tenemos la montonera de shapefiles. Y creamos el siguiente fichero “.bat” dentro del mismo directorio:

@echo off
mkdir merged
set counter=0

setlocal ENABLEDELAYEDEXPANSION

for %%f in (*.shp) do (
	if not exist merged\mergedFilter.shp (
		echo Uniendo %%f
		ogr2ogr -f "ESRI Shapefile" merged\mergedFilter.shp %%f
	) else (
		echo Uniendo %%f - Iteracion !counter!
		ogr2ogr -f "ESRI Shapefile" -update -append merged\mergedFilter.shp %%f  
		if !counter! GTR 500 (
			echo Simplificando %%f
			ogr2ogr -f "ESRI Shapefile" merged\mergedFilterAux.shp merged\mergedFilter.shp -sql "SELECT * FROM mergedFilter GROUP BY id_parcela" -dialect sqlite
			del merged\mergedFilter.*
			ren merged\mergedFilterAux.* mergedFilter.*
			set counter=0
		)
	)
	set /A counter=counter+1
)

Este código tendrás que adaptarlo a tus necesidades, por ejemplo lo nombres de los fichero y demas, pero te cuento lo que hace:

  • Va leyendo todos los fichero del directorio donde se ejecuta
  • Une el fichero con un fichero que se va creando dentro de “merge/mergedFilter.shp”
  • Cada 500 uniones, borra todas las features que tengan el mismo “id” (en tu caso puede que sea diferente y tengas que usarlo comprobando la geometria).

Le das unas horas, y al final tendrás un fichero Shapefile gigante… pero al menos uno.

Please follow and like us:

Como usar “shapelib.dll” para entornos x64 de Windows

Vaya follón… y vaya trabajo. Encontrar una “shapelib.dll” en x64 para un proyecto en Windows.

Si queréis usar esta magnifica librería (si no sabes que hace, casi seguro que no la necesitas) en vuestros proyectos en sistemas operativos de Windows os tocará recompilar el código ya que no hay un binario directamente publicado en ningún sitio (en linux si está… en Windows son mas vagos 😛 ).

Os voy a solucionar el problema, y os pasaré el binario compilado, para equipos con entornos x64 de Windows.

[Shapelib 1.2.10 para Win x64]

Un saludo.

Please follow and like us: