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

State Of The Map 2024

#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: 983

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

 

Pied de page des forums

Powered by FluxBB