Message posté par : Nicolas Ribot
----------------------------------------
Sinon ce qui marche très vite pour récuperer des valeurs dans un raster à partir de
vecteurs, c'est d'utiliser gdallocationinfo sur le raster direct: ca peut choper
des centaines de milliers de valeurs par seconde et les stocker dans postgis.
J'ai pas mal joué avec ca ces temps-ci et ca permet de faire des croisements massifs
entre vecteurs et raster (style des linéaires sur des pays entiers vs des rasters a 30m de
réso).
Le principe est :
• de créer une grille virtuelle correspondant au raster (un pg de la grille = 1 pixel du
raster) UNIQUEMENT sous les geometries à traiter (les batiments par ex). Ca va vite en
général, sauf pour des super gros volumes, style batiments de france vs raster a 1m par
ex.
Pour les ~ 110 000 batiments Paris sur une grille 30m, ca prend qq secondes de faire cette
grille.
• de prendre les centroids de cette grille, de les passer a gdallocationinfo qui renvoie
les valeurs dans pg direct (ultra rapide). C'est faisable en une passe avec un peu de
shell, style:
-----------------
Code :
psql -c "select x, y from gridtable order by row_id" | gdallocationinfo -valonly
-geoloc dem.tif | psql -c "COPY gridtableval(val) from STDIN"
-----------------
gridtableval est la table de résultat à créer avant qui permet de stocker la sortie de
gdallocationinfo.
En ajoutant une pk generated always as identity, on peut lier cette table de résultat sur
la table gridtable pour avoir la valeur raster de chaque pixel de la grille
• de faire le SQL qui donne la synthèse par batiment (ici le max d'alti pour pixels de
chaque batiment).
• S'il faut faire des analyses plus poussées, par ex prendre en compte la partie de
pixel qui intersecte la geom, on travaille sur ces pixels uniquement et pas tous les
pixels du raster.
Avec cette méthode, des process qui prenaient des heures prennent qq minutes maintenant.
Nico
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=362993#p362993
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net