Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#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

 

#2 Tue 27 June 2017 15:37

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1220
Site web

Re: GDAL/OGR: Partage d'automatisation

Merci pour le partage David.


Mathieu BOSSAERT
Association GeoRezo

Hors ligne

 

#3 Tue 27 June 2017 17:55

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: GDAL/OGR: Partage d'automatisation

Très sympa de partager la méthodo, merci. A tester

Hors ligne

 

Pied de page des forums

Powered by FluxBB