Suite

Trouver un doublon dans la distance tampon ?

Trouver un doublon dans la distance tampon ?


Je cherche désespérément une solution à un problème. J'ai un fichier de forme de point, je dois vérifier s'il y a des points en double à proximité (disons 10 mètres).

Je ne connais pas ArcObjects, existe-t-il un moyen de le faire en script Python.


Vous auriez besoin d'utiliser arcpy.Geometry pour obtenir les objets géométriques des polygones (points tamponnés - utilisez l'outil Buffer GP pour cela) et les points eux-mêmes ; puis découvrez si les polygones contiennent des points qui ont la même identité (vous choisissez le champ à comparer).

Un brouillon rapide est ci-dessous; cela vous donnera une idée de la façon de commencer. Selon la taille de votre jeu de données, vous devrez peut-être abandonner arcpy à un moment donné et faire simplement le calcul (problème de point dans le polygone). Si vous souhaitez rester avec arcpy avec des ensembles de données plus volumineux, l'utilisation de l'outil Spatial Join GP (éventuellement avec des index spatiaux) et de la sortie de post-traitement pour découvrir les doublons est une autre option.

import arcpy pnt_fc = r"C:Default.gdb\_PointDistanceFc" buff_fc = r"C:Default.gdb\_PointDistanceFc_Buffer" identifier_field = "identity" avec arcpy.da.SearchCursor(buff_fc,["[email protected]",identify_field, "PolyID"]) comme buff_cur : pour buff dans buff_cur : avec arcpy.da.SearchCursor(pnt_fc,["[email protected]",identify_field,"PntID"]) comme pnt_cur : pour pnt dans pnt_cur : si buff[0].contains (pnt[0]) et buff[1] == pnt[1] : print "polyID {0} contient un doublon".format(buff[2]), " pntID {0}".format(pnt[2])

J'utiliserais l'outil d'intégration (Data Management Tool-Feature Class).

  • Assurez-vous d'avoir une copie de sauvegarde et que les points ont un identifiant unique
  • Exécutez l'outil avec 1 couche et votre distance - 10 m. Les points dans la mémoire tampon s'effondreront en points qui se chevauchent.
  • Utilisez Supprimer l'identique pour supprimer les doublons spatiaux, ou utilisez la suggestion de Les étiquettes des points qui se chevauchent peuvent-elles être combinées/fusionnées en une seule étiquette ? pour les sélectionner.

Vous pouvez joindre la 2e table à l'original pour trouver des « doublons » dans l'original

Solution Qicker utilisant Spatial Join à lui-même, un à un, intersection, rayon de recherche = 10. La sortie aura Join_Count = 1 pour les points sans voisins, le reste sont vos "doublons"


Salut, j'ai pu atteindre m objectif en sélectionnant des points à proximité, en mettant toutes les valeurs de champ dans un tableau et en comptant l'occurrence du tableau et en collant les valeurs dans un autre champ

fc = r"C:Akhil_Office_1Python	estPATest1.shp" fields = ["FEATURE_ID", "ADDRESS"] avec arcpy.da.SearchCursor(fc, fields) comme curseur : pour la ligne dans le curseur : value=row [0] #get value champ "FEATURE_ID" - valeur unique ??? field="FEATURE_ID" exp=field + "='" +value+"'" point_lyr=arcpy.SelectLayerByAttribute_management(fc,"NEW_SELECTION",exp) arcpy.SelectLayerByLocation_management(point_lyr, chevauch_type="WITHIN_A_DISTANCE", select_features=point_lyr, search_distance= "25 mètres", selection_type="NEW_SELECTION") occurTwice = [] cursor = arcpy.da.SearchCursor ("PAtest2", ['ADDRESS']) pour la ligne dans le curseur : occurTwice.append (row[0]) del curseur curseur = arcpy.da.UpdateCursor ("PAtest2", ['ADDRESS', 'Dup']) pour la ligne dans le curseur : row[1] = happeningTwice.count(row[0]) cursor.updateRow(row) del curseur del point_lyr du curseur

cela fonctionne bien, mais c'est trop lent, cela prend une heure pour que 500 points soient parfois bloqués, et j'ai un énorme fichier de points, pas moins de 100000 points en un, donc ça ne vaut pas la peine.


Voir la vidéo: DB GLO Farm Medailles Beerus LR + Test Team Divine - Dokkan Battle