Suite

Fusionner Ordnance Survey VectorMap District à partir de différents dossiers


J'ai quatre dossiers différents avec Ordnance Survey-Shapefiles de différentes régions.

Je souhaite fusionner tous ces fichiers thème par thème (par exemple tous les bâtiments en un seul fichier de formes). Le problème est que ce sont des tas de fichiers de formes et tous ont des noms différents comme SS-Bâtiments.shp, ST_Buildings.shp et ainsi de suite.

Quelqu'un d'autre a-t-il déjà réussi à fusionner automatiquement ces fichiers de différentes régions (ogr2ogr / processing-toolbox ?) ?

Toutes les idées sont les bienvenues.

Ce que j'ai trouvé jusqu'à présent, c'est cette question : fusion par lots de fichiers de formes de différents dossiers, différents sous-dossiers

Le problème avec les fichiers du système d'exploitation est que les différents fichiers de formes d'un sujet comme "Bâtiments" n'ont pas le même nom :

(Ici, j'ai rassemblé manuellement tous les fichiers de forme "bâtiments" dans un dossier)

Je dois donc trouver un moyen de fusionner les fichiers en ignorant les trois premiers caractères du nom de fichier et en les fusionnant à partir de différents sous-dossiers… semble être assez difficile


Utilisez simplement une boucle For récursive dans un fichier batch. Coupez les trois premiers caractères du nom de fichier et fusionnez-les :

@echo off set OSGEO4W_ROOT=C:OSGeo4W64 call "%OSGEO4W_ROOT%ino4w_env.bat" SETLOCAL ENABLEDELAYEDEXPANSION rem placez votre dossier qui contient les shapefiles et changez dans ce dossier : set verzeichnis=C:YourShapefileFolderzeichnis% cd rem recursive for loop FOR /R %%b IN (*.shp) DO ( rem get filename without path set var=%%~nxb rem coupe les trois premiers caractères et fusionne les fichiers ensemble echo fusion now: !var! to !var:~3! s'il n'existe PAS "!var:~3!" (ogr2ogr -f "ESRI Shapefile" "!var:~3!" "%%~fnxb") sinon (ogr2ogr -append -update -f " Esri Shapefile" "!var:~3!" "%%~fb" ) ) Echo ------------------------------ ------- Fusion d'échos terminée ! Écho ------------------------------------- PAUSE

Je viens de l'essayer et cela fonctionne sur mon ordinateur portable Win7.

https://gist.github.com/neogis-de/6fcca708020dda4a5fca


Sur une machine Linux, vous pouvez procéder comme suit pour extraire et fusionner le système d'exploitation VectorMap District

for i in *.zip do x="echo $i | sed"s/^vmdvec_//;s/.zip$//"unzip -n -d $x $i '*/data/*' (cd $ x;mv OS VectorMap District (ESRI Shape File) */data/* .) terminé

Qui extrait le répertoire de données du fichier zip et déplace les fichiers de formes dans un répertoire sans espaces pour vous faciliter la vie.

Ensuite, pour chaque fichier de formes dans le premier répertoire (hp dans mon cas, mais n'importe lequel d'entre eux fera l'affaire), ajoutez tous les fichiers qui partagent son nom dans les sous-dossiers.

pour i dans hp/HP_*.shp do a=${i##*/HP_} pour k in */*_$a do ogr2ogr -append $a $k done done

Pour être complet, je note ici que cela échoue pour l'ensemble du pays car il dépasse le nombre maximal d'enregistrements pour un fichier de formes, auquel cas vous voudrez faire :

pour i dans hp/HP_*.shp faire a=${i##*/HP_} b=${a%.shp} pour k dans */*_$a faire ogr2ogr -t_srs epsg:27700 -a_srs epsg : 27700 -append -f "PostgreSQL" PG:"host=localhost user=ian dbname=vectormapdistrict schemas=vecmapdist" -nlt PROMOTE_TO_MULTI -lco spatialindex=off -nln $b $k done done