2008-12-23 9 views
0

J'ai une liste de points, et une route qu'un fournisseur externe a généré à travers ces points.ArcGIS Server - comparer les routes

Je voudrais générer un itinéraire en utilisant ce même point avec mon propre réseau routier.

Ensuite, je veux être en mesure de détecter s'il existe une différence significative entre les deux routes.

Une suggestion est que pour les 2 routes, nous découvrons les segments de route qu'elles parcourent et comparons la liste des segments de route.

Est-ce une approche valide? Comment pouvons-nous obtenir la liste des tronçons de route ayant un itinéraire? J'utilise le serveur ArcGis 9.3 avec Java 5 et Oracle 10g. J'utilise les fonctions ST et NetworkAnalyst via l'API Java.

Merci.

Répondre

1

Calculez l'itinéraire en utilisant vos points et votre réseau routier. Puis tamponnez la route résultante dans un polygone (le rayon du tampon devrait être votre "tolérance"). Ensuite, coupez l'itinéraire externe en utilisant votre polygone. Si la polyline résultante n'est pas vide, il y a un écart en dehors de votre tolérance.

Cette méthode ne prend pas en compte les écarts «significatifs» tels que le retour arrière, les demi-tours ou la prise d'une route parallèle à proximité. Alternativement, vous pouvez comparer les "directions" résultantes et vérifier les écarts là-bas - en particulier en utilisant les noms de rue. Cela vous évite de vérifier chaque segment de route. Si vous avez des écarts dans les noms de route, vérifiez les segments de route individuels de chaque section.

0

Je viens de mettre en œuvre quelque chose de similaire dans mon application. J'ai une liste de coordonnées lat/long à partir d'un appareil GPS et nécessaire pour créer un itinéraire basé sur ces données.

J'ai commencé par faire correspondre chaque position GPS avec un nœud de mon réseau routier. J'ai ensuite supprimé les noeuds consécutivement dupliqués pour filtrer les positions consécutives qui se trouvent sur le même noeud. Ensuite, j'ai commencé à 'marcher' à travers mon réseau de rue, en commençant au premier noeud. J'ai vérifié le premier nœud et le deuxième nœud et vérifié un segment de rue commun. Si j'en ai trouvé un, génial. Sinon, je crée un chemin le plus court entre les deux nœuds et j'utilise ces routes à la place. Je continue à faire cela jusqu'à ce que j'ai examiné tous les nœuds. À la fin de ce processus, j'ai une liste de segments de route que le véhicule a parcourus et l'ordre dans lequel ils ont été parcourus. Malheureusement, j'utilise une autre carte, un langage de programmation différent et une base de données différente. En tant que tel, le partage du code ne vous sera d'aucune utilité. J'espère que le processus que j'ai décrit ci-dessus sera assez d'aide pour que vous accomplissiez votre tâche.