Voici une illustration du flux de travail que j'ai mentionné dans le commentaire ci-dessus, et bien que je ne connaisse aucune routine simple pré-programmée pour ce faire, j'ai joint une feuille de calcul Excel selon laquelle on peut importer un ensemble de coordonnées origine-destination et la feuille crée ensuite un ensemble ou des coordonnées de ligne circulaire (feuille de calcul ici ). Il a des formules configurées, il est donc assez facile d'importer de nouvelles coordonnées OD et d'étendre les formules pour remplir les résultats, mais je passerai en revue la logique du processus plus explicitement cependant, et d'autres peuvent donner des conseils sur la façon de l'écrire entièrement dans ArcMap (ou autre).
En bref, je pense que cela est raisonnable pour visualiser les données OD principalement pour la même raison que les grandes lignes de cercle sont populaires, elles fournissent une distinction visuelle plus entre les lignes. L'approche que je suggère a également un avantage sur les grands cercles, en ce sens que la direction du flux est codée dans le demi-cercle. Dans cette autre réponse sur le site, je donne une vue d'ensemble plus générale des techniques de visualisation pour la cartographie des flux, et bon nombre de ces mêmes techniques peuvent être appliquées en plus de créer des arcs comme celui-ci.
Donc, pour détailler comment on dessine des lignes comme je le suggère, essentiellement, je n'ai que 3 étapes pour le processus, 1) trouver l'orientation du flux, 2) trouver le point médian et la distance du flux, 3) traiter le au milieu comme centre d'un cercle, puis dessinez l'arc (un demi-cercle de l'origine à la destination). Pour être clair, je commence avec une paire de coordonnées d'origine projetée (x1,y1)
et de coordonnées de destination (x2,y2)
.
Donc 1) trouver l'orientation du flux. On utilise d'abord la formule ATAN((y2 - y1)/(x2 - x1))
, puis en fonction de la direction attribue une orientation selon que la direction est vers l'est ou vers l'ouest. Un exemple de pseudocode ci-dessous (j'attribue des points OD qui sont tous les deux aux mêmes coordonnées une orientation de zéro). Ici, le varaible or_rad
est censé être un raccourci pour «orientation en radians» et pi
fait référence à la valeur de pi.
#tan_or = ATAN((y2 - y1)/(x2 - x1)).
Do If x2 = x1 and y1 <= y2.
compute or_rad = 0.
Else if x2 = x1 and y1 > y2.
compute or_rad = pi.
Else if x1 > x2.
compute or_rad = 270/180*pi - #tan_or.
Else if x1 < x2.
compute or_rad = 90/180*pi - #tan_or.
End If.
2) Trouvez le point médian et la distance du flux. C'est très simple, pour un seul ensemble de coordonnées appariées, le point médian en coordonnées (x, y) sera (x1+x2/2,y1+y2/2)
. Permet donc de définir mid_x = (x1 + x2)/2
et mid_y = (y1 + y2)/2
pour la partie suivante. La distance utilisant le théorème de Pythagore est simple distance = SQRT((x1 - x2)^2 + (y1 - y2)^2)
.
3) Puis, compte tenu de ces informations, tracez le cercle donné sur un nombre de degrés prédéfini et un rayon (qui est la moitié de la distance entre les deux points). Par exemple, disons que nous commençons avec un ensemble de paires de coordonnées OD à (1,3):(3,2)
. L'orientation en degrés sera ~ 116 (et en radians ~ 2), le milieu x, y sera (2,2.5)
et la distance entre les deux points sera d'environ 2,2.
Disons donc que nous voulons dessiner le demi-cercle autour de 180 degrés. En pseduo-code (en utilisant les variables que j'ai déjà définies), les itérations ressembleront à quelque chose;
for i in (0 to 180 degrees)
rad_i = i/180*pi. /*converts i from degrees to radians
step_or = pi - rad_i /*for clarity, this makes the circle go from origin to destination
radius = distance/2
Arc_X = mid_x + sin(or_rad - step_or)*radius.
Arc_Y = mid_y + cos(or_rad - step_or)*radius.
Inséré ci-dessous est un diagramme des coordonnées originales que j'ai spécifiées ci-dessus. Commencer à zéro et se terminer à 180 garantit que les points d'être et de fin sont aux mêmes emplacements. Ajuster la boucle pour avoir plus d'étapes (arc plus détaillé) ou moins (arc moins détaillé) devrait être assez évident.
À noter, d'autres discussions sur le site discutent de la création de lignes à partir de données ponctuelles (voir la balise de création de polyligne ). J'ai un exemple dans la feuille de calcul xls ci-jointe, et j'ai utilisé l' outil arcmap ET Geo-wizards pour convertir les coordonnées de la feuille de calcul en lignes de fichier de formes. Les arcs dans les données d'exemple dans la feuille de calcul ci-jointe ressemblent ensuite à ceci;
Une mise à jour simple mais potentiellement utile de cette configuration actuelle serait de mettre à jour les formules pour permettre une quantité prédéfinie d'excentricité en arc, même si je ne savais pas trop comment faire cela dans mes quelques tentatives jusqu'à présent. J'attends avec impatience les suggestions et les commentaires de la communauté ici sur mes conseils.