#1 Tue 27 June 2017 09:38
- mich
- Participant occasionnel
- Lieu: Grenoble
- Date d'inscription: 1 Aug 2007
- Messages: 35
GDAL/OGR: Partage d'automatisation
Lors d’une commande, nous devions fournir l’ensemble des données rasters et vecteurs comprises dans le périmètre de notre site.
Cela représentait plus d’une 100 aine de couches vecteurs et plus de 1500 dalles rasters. Au vue du nombre important d’information à transmettre, cette tâche ingrate devenait en plus chronophage…
Ce type de demande devant potentiellement se reproduire, nous nous sommes penchés sur la fabuleuse boîte à outils GDAL/OGR ;-) nous permettant ainsi d’automatiser au maximum ces tâches.
Rentrons dans le vif du sujet :
Outils : Shell OSGeo4W
Les vecteurs :
la méthode est connue mais je la remets :
Créer autant de nouvelles couches découpées en fonction de la zone d'étude pour chaque shape se trouvant dans votre répertoire de travail (celui que vous allez via le SHELL).
Via le shell OSGeo4W se placer dans le répertoire de travail, là où se trouve vos données et où vous devez avoir une couche nommée “site_etude.shp”.
Code:
FOR /r %Q IN (*.shp) DO ogr2ogr -t_srs EPSG:2154 -clipsrc site_etude.shp -f "ESRI Shapefile" "%~dpnQ_decoupe_site_etude.shp" "%Q"
Avant :
C:\REPERTOIRE_DE_TRAVAIL\site_etude.shp
C:\REPERTOIRE_DE_TRAVAIL\DOSSIER1\Zone1.shp
C:\REPERTOIRE_DE_TRAVAIL\DOSSIER2\Reserve.shp
C:\REPERTOIRE_DE_TRAVAIL\DOSSIER1\DOSSIER11\CENXX.shp
...
APRES la commande :
C:\site_etude.shp,
C:\REPERTOIRE_DE_TRAVAIL\DOSSIER1\Zone1.shp, Zone1_zone_etude.shp
C:\REPERTOIRE_DE_TRAVAIL\DOSSIER2\Reserve.shp, reserve_zone_etude.shp
C:\REPERTOIRE_DE_TRAVAIL\DOSSIER1\DOSSIER11\CENXX.shp, CENXX_site_etude.shp
...
Pour les rasters :
Récupérer les rasters (sous forme de tuiles) qui intersectent votre zone d’étude et les copier dans le répertoire nommé EXPORT.
Au préalable, vous devez disposer d’une couche reprenant le contour de votre site que j'ai nommé ici “site_etude.shp” et qui doit se trouver dans le même répertoire que vos rasters.
Ça se décompose en plusieurs étapes :
1/création d'un répertoire EXPORT :
MD EXPORT
2/Réaliser une grille d'assemblage des rasters (*.jp2) du répertoire (table attributaire avec le nom des rasters composant cette grille)
gdaltindex EXPORT\Grille_assemblage.shp *.jp2
3/Découper la grille d'assemblage en fonction du contour du site d'étude.
ogr2ogr -a_srs EPSG:2154 -t_srs EPSG:2154 -s_srs EPSG:2154 -clipsrc site_etude.shp EXPORT\Grille_assemblage_zone_etude.shp EXPORT\Grille_assemblage.shp
4/Récupérer l'ensemble des rasters (contenus dans la table attributaire) dans un fichier CSV
ogr2ogr -f CSV EXPORT\liste_fichier.csv EXPORT\Grille_assemblage_zone_etude.dbf -dialect sqlite -sql "SELECT replace(location,'.jp2','') as NOM_FICHIER FROM Grille_assemblage_zone_etude"
5/Convertir le CSV en TXT
REN EXPORT\liste_fichier.csv liste_fichier.txt
6/Copier les fichiers se trouvant dans le txt dans le dossier EXPORT
FOR /f "tokens=1-2 delims=," %Q IN ('type EXPORT\liste_fichier.txt') DO COPY "%~dpnQ.*" "%~dpQEXPORT"
Vous pouvez chaîner les différentes commandes avec le symbole “&”
ce qui donne :
Code:
MD EXPORT & gdaltindex EXPORT\Grille_assemblage.shp *.jp2 & ogr2ogr -a_srs EPSG:2154 -s_srs EPSG:2154 -clipsrc site_etude.shp EXPORT\Grille_assemblage_zone_etude.shp EXPORT\Grille_assemblage.shp & ogr2ogr -f CSV EXPORT\liste_fichier.csv EXPORT\Grille_assemblage_zone_etude.dbf -dialect sqlite -sql "SELECT replace(location,'.jp2','') as NOM_FICHIER FROM Grille_assemblage_zone_etude" & REN EXPORT\liste_fichier.csv liste_fichier.txt & FOR /f "tokens=1-2 delims=," %Q IN ('type EXPORT\liste_fichier.txt') DO COPY "%~dpnQ.*" "%~dpQEXPORT"
Création de la grille d'assemblage et de la gille d'assemblage du site.
[img]http://imagik.fr/images/2017/06/27/shema1.md.png[/img]
Contenu de la table attributaire
[img]http://imagik.fr/images/2017/06/27/shema2.png[/img]
Dernière modification par mich (Wed 28 June 2017 09:47)
Hors ligne