Ceci est spécifique à ArcGIS.
J'ai 2 fichiers de formes de points A
et B
, le premier ( A
) est un seul point qui contient un lat long, le second ( B
) est une multitude de points (plus de 12k) qui contiennent chacun leur lat et long. Ce que j'essaie de faire, c'est d'automatiser la sélection de 75% des B
points du fichier de formes en fonction de la distance par rapport au fichier de formes A
. En d'autres termes, je veux sélectionner les 75% de B
points de shapefile les plus proches d'un point de shapefile A
.
arcgis-10.0
spatial-statistics
Furlong
la source
la source
Réponses:
Vous pouvez créer un tampon en anneau multiple sur le fichier de formes A, puis faire une jointure spatiale du tampon vers le fichier de formes B. Lorsque vous effectuez une jointure spatiale de polygones et de points, vous obtenez un compte du nombre de points de chaque polygone de l'attribut table de la jointure. Ensuite, en examinant le nombre total de points dans les tampons, vous pouvez obtenir 75% des points dans le fichier de formes B.
Une approche légèrement différente serait de l'écrire en Python et de vérifier les 75% dans une boucle, mais s'il s'agit d'un calcul unique, vous n'en aurez peut-être pas besoin.
la source
Pour 1200 points (ou même jusqu'à 12 millions de points?), Je les mettrais simplement en mémoire en tant que collection générique - dans ce cas, une liste triée de listes . Cela pourrait être simplifié en sautant simplement des points lorsque vous rencontrez une situation avec plusieurs points qui sont à la même distance du point d'origine. De plus, pour des performances, pensez à utiliser une table de hachage au lieu d'une SortedList et à trier une fois après avoir inséré toutes les distances. Cela prendrait encore quelques lignes de code (?).
Je n'ai pas eu le temps de tester cela, mais ce c # pourrait vous aider à démarrer:
la source
Un script de géotraitement Python est un choix évident:
la source
J'ai eu ce problème il y a quelques années. J'ai trouvé plus facile de garder les données en tant que `` données plates '', de parcourir toutes les données et de calculer manuellement la distance, puis de prendre les 75% supérieurs (j'ai en fait conservé les 10% supérieurs). J'ai ensuite fait la même chose dans ArcIMS en utilisant leurs calculs de distance et cela a pris beaucoup plus de temps.
La mise en mémoire tampon est un énorme frais généraux, mais les calculs mathématiques sont un point fort. Si vous mettez en mémoire tampon 12k points, je pense que vous allez avoir des problèmes de performances.
la source