Suite

Créer et trouver le chemin le plus court


Dans mon projet, j'ai besoin de calculer la distance de chaque village le long d'un itinéraire jusqu'à un port maritime.

Cependant, comme vous pouvez le voir sur l'image (maintenant supprimé pour l'espace), tous les villages ne sont pas déjà connectés aux routes, donc, tout d'abord, je veux demander comment créer le chemin le plus court de chaque village à la route. Comme il existe plus de 400 villages de ce type, je recherche un moyen automatique de faire ce travail.

Ma deuxième question est de savoir comment trouver le chemin le plus court et la base de distance sur le réseau. Je recherche un moyen automatique comme exécuter certaines fonctions python pour le faire aussi.


J'ai fait le premier en utilisant l'outil "Near" dans "Analysis" et le "XY to Line". "Near" génère les coordonnées les plus proches sur la route et "XY to Line" peut tracer des lignes des villages aux coordonnées les plus proches.

Je suis toujours frustré par la deuxième partie.

J'ai essayé d'utiliser la méthode suggérée par user3338197 dans la première réponse. J'ai fusionné les routes existantes et les routes que j'ai créées dans un fichier de formes et j'ai construit un réseau sur cette base et je suis resté le paramètre par défaut inchangé (j'utilise 10.3). Cependant, il montre toujours

Avertissement : Aucune « Destinations » trouvée pour « Lieu 1 » dans « Origines »

ou alors

Avertissement : Aucune « installation » trouvée pour « Lieu 1 » dans « Incidents »

J'ai essayé de comprendre quel est le problème, j'ai donc rencontré un problème de "Nouvelle route", et j'ai obtenu un résultat comme celui-ci :

[![capture d'écran2][2]][2]

[1] : http://i.stack.imgur.com/mg1uF.jpg">http://i.stack.imgur.com/XTl7y.png">


Le premier commentaire sur la fusion des points avec les lignes vous mènera à la route la plus proche, mais cela ne prendra pas en compte le coût du terrain (c'est-à-dire traverser une forêt ou gravir une montagne peut être une distance plus courte mais prendra beaucoup plus de temps qu'une distance plus longue mais itinéraire clair parcouru plus facile) Pour faire cela comme le dit le commentaire, il s'agit simplement d'un problème de trig de distance euclidienne entre vos paires de coordonnées (c'est-à-dire le début de la route, où vous avez fusionné votre point avec la route la plus proche, [x, y], et le centre du village [a,b]) http://www.cut-the-knot.org/pythagoras/DistanceFormula.shtml

Pour résoudre la partie réseau, vous devrez créer un jeu de données réseau à partir des routes. Une fois que vous avez fait cela, vous résoudrez simplement un problème d'installation la plus proche. Pour ce faire, vous créez votre installation, qui est votre point de départ. Vous chargez ensuite vos incidents, qui sont vos points d'arrivée (où vous vous rendez, c'est-à-dire les installations portuaires). Votre accumulation, que vous configurerez (elle peut être en miles, en mètres, peu importe) qui sera votre distance totale le long de la route.

Ce tutoriel devrait vous aider à l'expliquer - http://help.arcgis.com/en/arcgisdesktop/10.0/pdf/network-analyst-tutorial.pdf si vous avez d'autres questions, n'hésitez pas à les poser.


Pour répondre à la deuxième partie de cette question, je ne savais pas s'il était approprié de modifier ma première réponse ou d'en commencer une autre, donc si je me trompe, déplacez-vous au bon endroit, de toute façon, une fois la barre d'outils d'analyste de réseau chargée, vous créerez une installation la plus proche problème. (référez-vous à ce tutoriel que j'ai posté plus tôt pour savoir comment faire cela si vous en avez besoin) maintenant votre incident sera le village

Si vous voulez qu'il y ait une route du village à la route la plus proche, vous devrez modifier la classe d'entités routières et étendre la route ou en créer une nouvelle, puis vous devrez recréer le réseau et utiliser la nouvelle entité réseau. classer. Si vous faites cela, votre incident se produira en fait dans le village d'où vous souhaitez partir.

Assurez-vous de définir vos tolérances afin qu'il trouve la route la plus proche, disons à moins de 300 m ou quoi que ce soit au cas où votre installation ne se trouve pas exactement sur la route.

Une fois que vous aurez choisi le lieu de votre incident, vous choisirez vos installations qui seront tous les ports maritimes. Alors déposez une icône d'installation à la fin de chaque route au port. Donc, vous regardez un incident (le village) et de multiples installations les ports maritimes.

Vous pouvez modifier les paramètres de l'analyste et définir votre accumulation en mètres ou en km ou autre. Vous pouvez également définir le coût, etc. ici.

Ensuite, résolvez le problème de réseau. Cela ne résoudra que pour un village à la fois, vous devrez créer un nouvel incident pour chaque exécution du programme. Ensuite, ouvrez les attributs sur l'itinéraire résolu dans votre table des matières et vous verrez un champ indiquant votre accumulation de distance.

Voici un bon tuto https://www.youtube.com/watch?v=Sh6Nb_Yaigw