Suite

Entité linéaire la plus proche du point à l'aide d'ArcGIS for Desktop ?


Dans l'image ci-dessous, les lignes pleines s'affichent comme des éléments de route et les points s'affichent comme des données collectées pour ces segments de route. Je souhaite mettre à jour l'identifiant de l'élément de route dans le fichier de formes des points. L'outil "Proche" d'ArcMap a presque résolu ce problème, à l'exception des points situés dans la région rouge (marqués dans l'image) qui sont évidents selon l'algorithme de cet outil. Dans cette région rouge, l'outil "Near" met à jour l'identifiant de l'élément de route BE mais je souhaite mettre à jour l'identifiant des éléments de route AB et BC respectivement car ces points appartiennent aux éléments de route AB et BC.


Je suis d'accord avec PredatorX pour dire que c'est un peu une faiblesse de l'outil ; si vous avez accès à SQL Server 2008 ou supérieur, vous pouvez simplement faire une requête spatiale qui ferait exactement cela. L'exemple ci-dessous devrait vous donner une idée et il fonctionnera avec SQL Server Express qui est gratuit.

  1. sélectionnez PointID,
  2. (sélectionnez le premier ID de [routes]
  3. où points.geometry.STDistance([roads].[Geometry])<= 100
  4. trier par points.geometry.STDistance([roads].[Geometry])) comme [RoadID]
  5. à partir de points

La première ligne demande simplement l'ID du point. Les lignes 2 à 4 exécutent l'expression spatiale (STDistance) qui demande l'ID des routes (ligne 2) situées à moins de 100 m (ligne 3 - mes ensembles de données sont généralement en UTM).

Il y a d'autres choses que vous pouvez ajouter pour apporter plus d'informations ou, par exemple, tracer des lignes des points à la ligne en question afin que vous puissiez voir visuellement la relation, etc. Comme il ne s'agit que d'une requête SQL, elle sera automatiquement mettre à jour également, ce qui est bien au cas où quelqu'un commencerait à déplacer vos routes / points ou à en ajouter d'autres à l'un ou l'autre. Inclure le <=100 est une clé importante pour la performance. Sinon, les choses seront évaluées sur l'ensemble de l'ensemble plusieurs à plusieurs, ce qui peut prendre un certain temps en fonction de la taille de vos ensembles de données.


J'ai essayé les étapes suivantes et cela a fonctionné. Dites road.shp et route.shp.

  1. Convertissez le fichier de formes de polylignes de routes en fichiers de formes de points contenant tous les points aux sommets avec l'outil Sommets d'entités en points (gestion des données), disons ce fichier de formes de points sous le nom road_point.shp.
  2. Transférez l'identifiant de la route de road_point.shp à route.shp avec l'outil Near (Analysis).
  3. À l'aide de UpdateCursor, mettez à jour l'identifiant de la route dans tous les points d'itinéraire intermédiaires.

P.S. - Merci pour toutes les suggestions.


Voir la vidéo: Digitization by using Shapefile Method in ESRIs ArcGIS Desktop Software on SOI Toposheet (Octobre 2021).