#1 Fri 26 November 2021 15:08
- MaCo
- Juste Inscrit !
- Date d'inscription: 26 Nov 2021
- Messages: 1
QGIS: Calcul de distance conditionnelle
Bonjour,
Sur QGIS, je voudrais calculer la distance moyenne (et pourquoi pas minimale et maximale aussi) entre le centroïd et les frontières du département auquel il appartient.
J'ai un fichier shp de points avec les centroids, un autre fichier shp avec la carte de la France et ses départements.
La matrice des distances ne fonctionne qu'entre des couches de points, je pourrais convertir mon polygone des départements en points, mais la matrice de distance calculerait la distance entre chaque centroids et l'entièreté des points des frontières des départements (sur tous le pays), alors que je n'ai besoin que de la distance entre le centroids et les frontières de son département... Autre problème avec cette méthodologie, les frontières des départements, par définition, séparent plusieurs département, or si on transforme le polygone en une série de points (ou en ligne), le point prendrait le nom de seulement un département, donc le calcul de la distance moyenne entre le centroids d'un département et ses frontières seraitt incomplet...
j'espère que je suis suffisamment claire dans mes explications.
Avez vous des idées ou suggestions de méthodologie ?
Merci d'avance, Martin
Hors ligne
#2 Fri 26 November 2021 17:08
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
Re: QGIS: Calcul de distance conditionnelle
si on transforme le polygone en une série de points (ou en ligne), le point prendrait le nom de seulement un département
Ca dépend des outils que vous utilisez, mais la plupart des outils vont créer des points pour chaque noeud de département, et donc une majorité de points en double, voire triple (ou plus) dans le cas de noeuds commun à plus de départements.
Du coup, moi je le ferais en SQL en faisant une jointure entre les points de centroïdes ("centro" dans mon SQL ci-dessous) et les points de frontières (pt_frontiere), et en calculant les statistiques (AVG, MIN, MAX) de distances via ce genre de requête :
Code:
SELECT centro.num_dep, avg(st_distance(centro.geom, pt_frontiere.geom)) as dist_moyenne, min(st_distance(centro.geom, pt_frontiere.geom)) as dist_min, max(st_distance(centro.geom, pt_frontiere.geom)) as dist_max FROM centro JOIN pt_frontiere ON centro.num_dep = pt_frontiere.num_dep GROUP BY centro.num_dep ;
[Edit] Remplacer "geom" par "geometry" si vous travaillez avec les couches virtuelles du Gestionnaire de Bases de données de QGis, qui permet de travailler directement sur des Shapefiles, sans passer par une BDD Spatialite ou PostGis
Dernière modification par Sylvain M. (Fri 26 November 2021 17:13)
Sylvain M.
Hors ligne