J'ai deux couches: une couche ponctuelle définissant les propriétés (95 objets) et une couche polygonale définissant les parcelles de terrain associées aux propriétés (211 objets). Chaque point concerne un ou plusieurs polygones. Ce que je voudrais produire, c'est un tableau des distances de chaque point à TOUS les polygones associés à ce point (le bord le plus proche ou le centroïde du polygone - l'un ou l'autre fera l'affaire). Calculer la distance la plus proche est relativement facile dans QGIS et ArcGIS, mais ces calculs omettent tous les polygones distants, au moins par les méthodes que j'ai utilisées. Idéalement, je voudrais une sortie de
Point_ID | distance to polygon 1 | distance to polygon 2 | distance to polygon 3 | etc.
Tous les pointeurs dans ArcGIS 10 ou QGIS 2.2+ seraient les plus utiles.
Réponses:
Vous pouvez utiliser la matrice de distance dans QGIS pour y parvenir. Vous devez d'abord convertir vos polygones en points centroïdes soit par vecteur > Outils de géométrie > Centroïdes polygonaux, soit via la version SAGA des centroïdes polygonaux. La raison en est que la fonction Distance Matrix ne peut analyser qu'entre 2 couches de points. De plus, la sortie serait comme ceci:
La sortie serait un fichier .csv afin que vous puissiez modifier manuellement la mise en page à l'aide d'un autre logiciel tel que Microsoft Excel.
la source
C'est assez simple à réaliser en utilisant QGIS (je pense que n'importe quelle version fera l'affaire) et une instruction SQL très simple dans le gestionnaire de bases de données. Mais pour cela, cela doit être dans une sorte de base de données spatiale (Postgis ou spatialite). Puisqu'il est plus accessible à la plupart des gens, je supposerai d'utiliser spatialite, mais les instructions SQL sont les mêmes pour Postgis.
Distance de tous les points à toutes les limites des polygones
Distance de tous les points aux limites des polygones associés (en supposant qu'il existe un champ commun)
Distance à tous les points des polygones centroïdes associés :
Notez que vous pouvez ajouter n'importe quel champ de vos calques au résultat:
Ou même tous les domaines:
la source
L' outil Générer une table proche dans ArcGIS fera ce que vous voulez, mais il nécessite une licence avancée et le fera pour tous les points / polygones - pas seulement ceux associés les uns aux autres. Cela signifie que pour chacun de vos 95 objets, vous obtiendrez la distance classée pour les 211 propriétés, donc 20 045 lignes dans le tableau. Vous devez soit filtrer la table résultante, soit comme le suggère Emil, automatiser la tâche pour créer des sélections basées sur l'association et l'exécuter uniquement sur ces groupes.
En ce qui concerne le filtrage, oui, une jointure (suivie d'une requête de définition ou d'une sélection) est tout ce dont vous avez besoin. Le résultat de l'outil vous donne IN_FID et NEAR_FID. Selon la façon dont vous exécutez l'outil (propriétés près du point ou propriété près du point), déterminez quel FID est lequel. Vous devez ensuite joindre vos tables de points et de propriétés (les deux) au résultat de l'outil en fonction du FID approprié.
Cela suppose que chacun de vos 211 enregistrements de propriété possède un attribut qui indique à lequel des 95 points ils appartiennent, car l'étape suivante consiste à sélectionner (ou à interroger la définition) tous les enregistrements des tables jointes où deux champs d'un enregistrement doivent champ de nom de point de correspondance = champ de nom de point associé à la propriété. Les cas où ils ne correspondent pas sont des polygones qui ne sont pas associés à ce point, vous ne vous souciez donc pas de leur distance par rapport à ce point.
la source