Créer des arcs entre deux points dans ArcPy?


10

J'ai travaillé sur un script python automatisant la visualisation des données ponctuelles en direct. J'ai une table avec deux paires de coordonnées. Je voudrais connecter ces deux points avec un arc de cercle ou similaire (parabole ??).

J'ai pu relier les deux points avec une ligne droite, mais cela me donne un visuel ennuyeux.

L'un des principaux obstacles est mon niveau de licence: ArcView.

Quelqu'un a une idée de comment je peux générer un ensemble de points qui représentent le chemin d'une ligne entre ces deux points?

Je peux ensuite utiliser la commande points à polyligne.


5
Vous ne fournissez pas vraiment assez d'informations: "améliorer un visuel ennuyeux" n'est ni spécifique ni une bonne déclaration de problème. Mais vous obtiendrez peut-être quelques idées à partir d'un fil similaire sur gis.stackexchange.com/questions/5204/… .
whuber

1
Visualisez-vous simultanément plusieurs lignes, ou une seule (ou quelques-unes) à la fois?
Andy W

Le nombre de points peut être compris entre 2 et environ 50.
Pixel

Réponses:


27

Il semble que le problème le plus courant avec ces types de "cartes de flux" soit que lorsque de nombreuses lignes sont incluses, elles entrent en collision à un point tel qu'il est difficile de discerner un modèle non évident (lorsque les flux réciproques sont considérés, il arrive à encore plus). De plus, les longues lignes ont tendance à dominer le graphique, bien qu'il soit tout à fait possible que la distribution des flux se fasse principalement sur des espaces courts (par exemple, une multitude de distributions différentes entre les lieux ont tendance à être similaires aux vols de Levy ). Je suppose que ce n'est pas nécessairement une mauvaise chose (les longues lignes peuvent être plus intrinsèquement intéressantes que les courtes lignes pour de nombreux phénomènes), mais je ne pense pas que nous voulons perdre la forêt pour les arbres pour ainsi dire.

Bien que je ne doute pas d'avoir manqué certaines "solutions" potentielles qui ont été proposées, je vais essayer de résumer certaines des façons dont les individus ont essayé de résoudre le problème dans le travail que j'ai rencontré.

Déformer les lignes

Si vous parcourez certains des autres fils sur la vue, vous verrez quelques exemples de la façon dont les gens ont traité ce problème. En particulier, les lignes sont déformées de sorte qu'elles ne se chevauchent pas entre elles ou avec d'autres objets sur la carte. La réponse de Whuber à une autre question similaire (déjà mentionnée dans un commentaire) en est un exemple. Une présentation de certains chercheurs de Stanford illustre cette même idée (Phan et al., 2005). Merci pour cette présentation à dslamb pour cette réponse sur un autre fil (et toutes les réponses à ce fil seront également intéressantes pour votre question). Je trouve particulièrement intéressant que l'un des exemples cardinaux de cette situation soit l'ancienne carte de l'immigration de Minard qui soit un exemple de résultat souhaitable (vers 1864!).

Compte tenu de votre cas d'utilisation particulier (petit nombre de nœuds et de lignes), cela semble suffisant. Les autres "solutions" que je présente sont plus destinées à visualiser des données avec de nombreuses lignes et de nombreuses origines-destinations (bien que je suppose qu'elles seront des résumés utiles pour la communauté en général, alors je continue malgré tout).

Utilisation du mélange alpha, de la couleur et de la largeur / hauteur de ligne

Les cartes que j'ai énumérées dans le même fil précédemment noté, Représentation des flux réseau en sont des exemples. Les amis Facebook sont un bon exemple d'ajustement du niveau alpha des lignes, il faut donc beaucoup plus de flux pour représenter une connexion plus sombre (ou plus lumineuse dans ce cas) entre les deux endroits. Cela accentue également les lignes plus longues, car elles ont tendance à se produire plus rarement. Une logique similaire provient des cartes Value-by-Alpha pour les zones de polygones (Roth et al., 2010) qui ont déjà été mentionnées sur ce forum .

L'autre carte que je présente dans cette même réponse utilise la couleur et des lignes d'arc en perspective 3D non traditionnelles (Ratti et al., 2010). Les auteurs ont utilisé un critère de regroupement pour regrouper les zones homogènes et les coder par couleur (ainsi, par définition, les zones à l'intérieur de la couleur ont des modèles de flux plus similaires qu'entre les couleurs). Les critères de clustering en eux-mêmes pourraient être intéressants pour identifier les modèles dans les données, même si cela semble un problème probable, comme l'a mentionné Andrew Gelman , c'est qu'il vous dit à peu près ce que vous savez déjà, qui se rapproche les uns des autres ont tendance à avoir plus de connexions.

Enfin, dans cette catégorie, j'inclus des techniques qui pondèrent les lignes (similaires au mélange alpha) en utilisant soit la largeur de ligne, soit dans le cas de la hauteur de ligne en perspective 3D, pour transmettre le volume du flux. Voir la page sur la page du logiciel de mappage de flux de Tobler pour quelques exemples en 2D (et l'autre article que j'ai mentionné est un exemple en 3D utilisant des hauteurs de ligne). Sur cette page également, Tobler a un article très utile décrivant les problèmes de la cartographie des flux et leur application historique (Tobler, 1987).

Un autre exemple en 3D est cette réponse d'une mankoff sur ce site. Cet article sur le blog des images sociologiques montre un moyen utile dans un diagramme de flux pour faire la distinction entre les flux entrants et sortants (bien que cela fonctionne à nouveau parce que le nombre de nœuds et relativement petit, et les nœuds sur le réseau peuvent être disposés en une manière arbitraire de réduire le surplotage). Ces mêmes types de flèches (et quelques autres utilisant des hachages) se trouvent également dans (Tobler, 1987).

En fin de compte, bien que la largeur et la couleur des lignes ne résolvent pas vraiment le problème de sur-tracé. Les arcs en 3D aident quelque peu, bien qu'avec des modèles de flux plus compliqués, je pense qu'ils auront une utilité limitée. Le mélange alpha de l'OMI semble être le plus utile dans une grande variété de situations de ces trois, mais la couleur et la largeur de ligne pourraient / devraient être utilisées en conjonction avec la distorsion de ligne mentionnée ci-dessus.

Réduction de donnée

Je regroupe ici deux types de techniques, 1) en utilisant de petites cartes multiples (c'est-à-dire de nombreuses cartes avec intrinsèquement moins d'objets à visualiser, donc le surplacement est réduit), ou 2) d'autres représentations graphiques, qui ne sont pas des lignes, mais représentent certains des flux via la densité ou des cartes choroplèthes. Des exemples de ceux-ci peuvent être trouvés dans (Corcoran et al., 2009; Rae, 2009; Wood et al., 2010) (merci à iant pour la référence Rae). Celles-ci ont tendance à réduire la quantité d'informations visuelles présentées en présentant soit une série de petites cartes multiples (ou juste une zone plus petite), soit en utilisant un schéma de cartographie choroplèth pour représenter certaines statistiques (des exemples pourraient être le nombre d'entrées, le nombre de sorties) , direction des flux, distance moyenne des flux). Si vous disposez de données au niveau des points, vous pouvez représenter ces statistiques via des cartes raster de densité kernale, ou les agréger en quadrats.

Lorsque les informations sont réduites de cette façon, le surplotage n'est pas autant un problème. Un exemple interactif en ligne très cool est cette carte de migration par le magazine Forbes . Vous ne pouvez voir qu'un seul comté à la fois, mais la réduction des informations facilite beaucoup l'analyse des lignes (et la différence entre les entrées et les sorties). Un article récent sur le blog de cartographie ESRI utilise également une technique similaire avec les petits multiples (ils choisissent également une projection particulière pour que la carte du monde ait des lignes "jolies" et utilise bien la couleur pour mettre davantage en évidence différentes origines internationales). Dans cet exemple, cela fonctionne plutôt bien car la destination finale est la même pour tous les flux, mais si les flux pouvaient être réciproques, cela ne fonctionnerait probablement pas aussi bien.

Utilisation d'autres représentations non cartographiques de flux

D'autres sur ce site ont suggéré d'utiliser des diagrammes alternatifs à la carte réelle pour représenter les flux (en cartographiant simplement les origines et les destinations d'une autre manière que leur emplacement géographique réel). Ces exemples sont soit des visualisations particulières (telles que celles produites par Circos ), des diagrammes d'arc (voir cet exemple sur Protovis, également appelés kriskogrammes (Xiao et Chun, 2009)), soit des cartes thermiques matricielles ( voici un autre exemple de la Site Web de Protovis). Une autre option consisterait à utiliser un certain type de disposition de réseau automatisée pour identifier les modèles dans les flux (comme celui capable par Graphviz ). Outre Graphviz, il semble que Gephi, la bibliothèque python NetworkX et certaines bibliothèques R soient également des outils populaires (voircette réponse sur le site de statistiques).

Les bibliothèques que je cite sont assez cool car elles ont également développé des visualisations interactives. Voici un exemple avec un style similaire aux graphiques circulaires (mais pas circulaire!). Voici une autre visualisation interactive utilisant certaines des techniques de distorsion de ligne discutées précédemment, le placement du réseau (qui semble similaire aux cartogrammes Dorling circulaires) ainsi que d'autres résumés statistiques utiles (j'ai vu ces deux exemples à l'origine sur le blog de l'esthétique de l' information ).


Je pense que d'autres ressources utiles sont les logiciels et les articles provenant du laboratoire d'exploration de données spatiales et d'analyse visuelle . De plus, la modélisation de la demande de voyages criminels dans le programme CrimeStat est une introduction en douceur aux techniques de régression applicables à ces données de flux. L'un ou l'autre de ces outils peut vous permettre d'identifier des corrélations intéressantes dans les modèles de flux avec d'autres informations géographiques. Un autre endroit pour recevoir peut-être une inspiration utile pour afficher graphiquement les données ou l'analyse statistique serait un récent numéro du Journal of Computational and Graphical Statistics, Volume 20 Issue 2, sur l'examen des statistiques d'arrivée et de départ des vols pour les transporteurs commerciaux aux États-Unis de 1987 à 2008 (si vous êtes intéressé par le traitement des mégadonnées, cela vaut également la peine d'être examiné). Tous les articles sont gratuits et ils ont des affiches associées à chaque article.

En fin de compte, les données et le support dicteront l'efficacité de certaines de ces techniques pour réduire l'encombrement visuel qui accompagne les données de flux. J'espère cependant que c'est un endroit utile pour trouver des idées sur la façon de traiter ce problème de visualisation. Si vous affinez davantage votre question en ce que vous voulez accomplir, d'autres peuvent donner des commentaires utiles sur les implémentations programmatiques réelles (si quelque chose n'est pas déjà disponible).


Citations

* note, des liens vers des documents pdf non fermés sont inclus lorsque je pourrais en trouver un


2
J'ai actuellement omis tous les graphiques, mais si demandé, je peux en inclure si les gens veulent voir des exemples sans avoir à suivre les liens.
Andy W

Wow !! ... Complet avec des citations! Si je pouvais voter deux fois, je le ferais! Réponse géniale, mec :)
R Thiede

J'ai actuellement trouvé une autre visualisation interactive assez cool utilisant la réduction des données (et de grandes lignes de cercle), Découvrez quelle ville américaine est la plus populaire parmi les chasseurs de maisons internationaux via le blog Trulia Insights.
Andy W

5

Il y a une belle procédure ici , par notre propre équipe.

Fondamentalement, la procédure se déroule comme suit: - reprojetez les points que vous souhaitez que la ligne soit entre, - obtenez une ligne droite tracée entre eux, - subdivisez cette ligne en x quantité de pièces, et enfin - projetez la ligne subdivisée en arrière vers votre original projection.

J'ai en quelque sorte cessé d'utiliser Arc car cela coûte de l'argent, mais pour que cette procédure fonctionne, je ne pense pas que vous ayez besoin de payer à ESRI des pots-de-vin supplémentaires pour vous offrir des fonctionnalités de base. Je veux dire, je ne pense pas que vous ayez besoin d'acheter des "extensions". Cependant, je parle sous correction, car je ne suis pas sûr que la subdivision d'une ligne fasse partie de Spatial Analyst. Peut-être que certains des plus enclins à l'ESRIcally peuvent m'aider ici? :)


1
Auparavant, vous ne pouviez pas faire de vraies courbes avec ArcView, mais ArcView est capable de faire de vraies courbes depuis la version 9 maintenant.
blord-castillo


2

Vous pouvez créer des polylignes visuellement attrayantes à partir de deux points sur une carte en utilisant la méthode du grand cercle. Consultez http://www.esri.com/software/arcgis/defense-solutions/military-analyst.html - Analyste militaire. Devrait avoir ce que vous cherchez!


Je ne suis plus tout à fait au courant sur Arc, mais n'est-il pas possible de le faire avec quelques reprojections? Parce que l'analyste militaire va probablement vous coûter de l'argent ...
R Thiede

Je ne pense pas que cette solution fonctionnerait de toute façon, car l'étendue de ma carte sera d'environ 40 miles de diamètre. Je pense que cela pourrait fonctionner si c'était à l'échelle d'un continent.
Pixel

Military Analyst is free @RThiede Oui, cela fonctionnerait mieux dans une plus large mesure. Cependant, vous pourrez peut-être modifier les lignes après leur création pour vous donner ce que vous voulez (car elles utilisent des courbes plus sombres pour produire des centaines de points le long des polylignes pour créer la courbe)
Michael Markieta

Je pourrais facilement éditer des lignes pour obtenir les arcs que je veux, mais comme mon article l'a indiqué, j'utilise Python pour automatiser ce processus. Merci pour les commentaires!
Pixel
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.