¿Crear arcos entre dos puntos en ArcPy?

10

He estado trabajando en un script de Python que automatiza la visualización de datos de puntos en vivo. Tengo una mesa con dos pares de coordenadas. Me gustaría conectar estos dos puntos con un arco de círculo o similar (parábola ??).

He podido conectar los dos puntos con una línea recta, pero me da una imagen aburrida.

Uno de los principales obstáculos es mi nivel de licencia: ArcView.

¿Alguien tiene alguna idea de cómo puedo generar un conjunto de puntos que representan la ruta de una línea entre estos dos puntos?

Entonces puedo usar el comando de puntos a polilínea.

Píxel
fuente
55
Realmente no proporciona suficiente información: "mejorar una imagen aburrida" no es específico ni es una buena declaración del problema. Pero quizás obtendrá algunas ideas de un hilo similar en gis.stackexchange.com/questions/5204/… .
whuber
1
¿Estás viendo simultáneamente muchas líneas, o solo una (o algunas) a la vez?
Andy W
El número de puntos podría ser de 2 a alrededor de 50.
Pixel

Respuestas:

27

Parece que el problema más común con este tipo de "mapas de flujo" es que cuando se incluyen muchas líneas, colisionan en tal medida que hace que sea difícil discernir cualquier patrón no obvio (cuando se consideran flujos recíprocos sucede) en mayor medida). Además, las líneas largas tienden a dominar el gráfico, aunque es bastante posible que la distribución de los flujos sea predominantemente en espacios cortos (por ejemplo, una gran cantidad de distribuciones diferentes entre lugares tienden a ser similares a los vuelos Levy ). Supongo que esto no es necesariamente algo malo (las líneas largas pueden ser más intrínsecamente interesantes que las líneas cortas para muchos fenómenos), pero no creo que queramos perder el bosque por los árboles, por así decirlo.

Aunque no dudo que me haya perdido algunas "soluciones" potenciales que se han propuesto, intentaré resumir algunas de las formas en que las personas han tratado de resolver el problema en el trabajo que he encontrado.

Distorsionando las líneas

Si examina algunos de los otros hilos a la vista, verá algunos ejemplos de cómo las personas han abordado este problema. En particular, las líneas están distorsionadas para que no se superpongan entre sí u otros objetos en el mapa. La respuesta de Whuber sobre otra pregunta similar (ya mencionada en un comentario) es un ejemplo de esto. Una presentación de algunos investigadores en Stanford demuestra esta misma idea (Phan et al., 2005). Gracias por esa presentación, vaya a dslamb por esta respuesta en otro hilo (y todas las respuestas a ese hilo también serán de interés para su pregunta). Particularmente me parece interesante que uno de los ejemplos cardinales de esto es que el viejo mapa de inmigración de Minard es un ejemplo de un resultado deseable (¡alrededor de 1864!).

Dado su caso de uso particular (pequeño número de nodos y líneas), esto parece suficiente. Las otras "soluciones" que presento están más destinadas a visualizar datos con muchas líneas y muchos orígenes-destinos (aunque supongo que serán resúmenes útiles para la comunidad en general, por lo que continúo independientemente).

Uso de fusión alfa, color y ancho / alto de línea

Los mapas que enumeré en el mismo hilo anteriormente mencionado, Representación de flujos de red son ejemplos de estos. Los amigos de Facebook son un buen caso para ajustar el nivel alfa de las líneas, por lo que se necesitan muchos más flujos para representar una conexión más oscura (o más brillante en ese caso) entre los dos lugares. Esto también enfatiza las líneas más largas porque tienden a ocurrir con menos frecuencia. Una lógica similar proviene de mapas Value-by-Alpha para áreas de polígonos (Roth et al., 2010) que se han mencionado en este foro anteriormente .

El otro mapa que presento en esa misma respuesta usa color y líneas de arco de perspectiva en 3D no tradicionales (Ratti et al., 2010). Los autores utilizaron un criterio de agrupamiento para agrupar áreas homogéneas y codificarlas por color (por lo que, por definición, las áreas dentro del color tienen patrones de flujo más similares que entre los colores). El criterio de agrupamiento en sí mismo podría ser interesante para identificar patrones en los datos, aunque parece que un problema probable con esto, como Andrew Gelman ha mencionado , es que le dice más o menos lo que ya sabe, lo que lo ubica más cerca el uno del otro tienden a tener más conexiones

Por último, en esta categoría incluyo técnicas que ponderan las líneas (similar a la combinación alfa) utilizando el ancho de línea o, en el caso de la altura de la línea de perspectiva en 3D, para transmitir el volumen del flujo. Vea la página en la página del software de mapeo de flujo de Tobler para ver algunos ejemplos en 2d (y el otro artículo que mencioné es un ejemplo en 3d usando alturas de línea). También en esa página, Tobler tiene un artículo muy útil que describe los problemas con el diagrama de flujo y su aplicación histórica (Tobler, 1987).

Otro ejemplo en 3d es esta respuesta de un mankoff en este sitio. Esta publicación en el blog de imágenes sociológicas muestra una forma útil en un diagrama de flujo para distinguir entre flujos entrantes y salientes (aunque de nuevo funciona porque el número de nodos y relativamente pequeños, y los nodos en la red se pueden distribuir en Una forma arbitraria de reducir la sobreparcelación). Esos mismos tipos de flechas (y algunos otros que usan hashings) también están en (Tobler, 1987).

Al final, aunque el ancho y el color de la línea realmente no resuelven el problema de trazado excesivo. Los arcos en 3d ayudan un poco, aunque con patrones de flujo más complicados creo que tendrán una utilidad limitada. La combinación alfa IMO parece ser la más útil en una amplia variedad de situaciones de estos tres, pero el color y el ancho de línea podrían / ​​deberían usarse junto con la distorsión de línea mencionada anteriormente.

Reducción de datos

Agrupo dos tipos de técnicas aquí, 1) usando pequeños mapas múltiples (es decir, muchos mapas con inherentemente menos objetos para visualizar de modo que se reduzca la sobreplotación), o 2) otras representaciones gráficas, que no son líneas, pero representan algunos de los flujos a través de la densidad o mapas coropléticos. Se pueden encontrar ejemplos de estos en (Corcoran et al., 2009; Rae, 2009; Wood et al., 2010) (gracias a iant por la referencia de Rae). Estos tienden a reducir la cantidad de información visual presentada al presentar una serie de pequeños mapas múltiples (o solo un área más pequeña), o utilizar un esquema de mapeo coroplético para representar alguna estadística (los ejemplos podrían ser la cantidad de entradas, la cantidad de salidas , dirección de los flujos, distancia media de los flujos). Si tiene datos de nivel de punto, podría representar estas estadísticas a través de mapas ráster de densidad kernal, o agregarlos en cuadrantes.

Cuando la información se reduce de esta manera, la sobreplotación no es tanto un problema. Un ejemplo interactivo en línea muy interesante es este mapa de migración de la revista Forbes . Solo puede ver un condado a la vez, pero la reducción de la información hace que sea mucho más fácil analizar las líneas (y la diferencia entre flujos entrantes y salientes). Una publicación reciente en el blog de mapeo de ESRI también utiliza una técnica similar con los pequeños múltiplos (también eligen una proyección particular para que el mapa mundial tenga líneas "bonitas" y hagan un buen uso del color para resaltar aún más los diferentes orígenes internacionales). En ese ejemplo, funciona bastante bien porque el destino final es el mismo para todos los flujos, pero si los flujos pudieran ser recíprocos, probablemente no funcionaría tan bien.

Uso de otras representaciones de flujos que no son del mapa

Otros en este sitio han sugerido usar diagramas alternativos al mapa real para representar los flujos (simplemente mapeando los orígenes y destinos de alguna otra manera que no sea su ubicación geográfica real). Ejemplos de estos son visualizaciones ciculares (como la producida por Circos ), diagramas de arco (vea este ejemplo en Protovis, también se llaman kriskogramas (Xiao y Chun, 2009)), o mapas de calor de matriz ( aquí hay otro ejemplo del Sitio web de Protovis). Otra opción sería utilizar algún tipo de diseño de red automatizado para identificar patrones en los flujos (como el que Graphviz puede ). Además de Graphviz, parece Gephi, la biblioteca Python de NetworkX, y algunas bibliotecas R también son herramientas populares (veresta respuesta en el sitio de estadísticas).

Las bibliotecas que cito son geniales, ya que también han desarrollado visualizaciones interactivas. Aquí hay un ejemplo con un estilo similar a los gráficos circulares (¡aunque no circular!). Aquí hay otra visualización interactiva que usa algunas de las técnicas de distorsión de línea discutidas anteriormente, la ubicación de la red (que parece similar a los cartogramas circulares de Dorling), así como otros resúmenes estadísticos útiles (vi ambos ejemplos originalmente en el blog de estética de la información ).


Algunos otros recursos que creo que son útiles son el software y los artículos que provienen del Laboratorio de Análisis de Datos Espaciales y Minería de Datos . Además, el modelo de demanda de viajes por delitos en el programa CrimeStat es una introducción suave a las técnicas de regresión aplicables para dichos datos de flujo. Cualquiera de estas herramientas puede permitirle identificar correlaciones interesantes en los patrones de flujo con otra información geográfica. Otro lugar para recibir alguna inspiración útil para mostrar gráficamente los datos o el análisis estadístico sería un número reciente en el Journal of Computational and Graphical Statistics, Volumen 20 Número 2, sobre el examen de las estadísticas de llegada / salida de vuelos para transportistas comerciales en los EE. UU. desde 1987 hasta 2008 (si está interesado en manejar grandes datos, también valdría la pena examinarlo). Todos los artículos son gratuitos y tienen carteles asociados con cada artículo.

Al final, los datos y el medio dictarán qué tan bien funcionan algunas de estas técnicas para reducir el desorden visual que viene junto con los datos de flujo. Sin embargo, espero que este sea un lugar útil para encontrar ideas sobre cómo lidiar con este problema de visualización. Si refina aún más su pregunta en lo que quiere lograr, entonces otros pueden brindar comentarios útiles sobre implementaciones programáticas reales (si algo no está disponible).


Citas

* nota, se incluyen enlaces a documentos PDF no delegados cuando pude encontrar uno

Andy W
fuente
2
Actualmente he omitido cualquier gráfico, pero si lo solicito, puedo incluir alguno si la gente quiere ver ejemplos sin tener que seguir los enlaces.
Andy W
¡Guau! ... ¡Completa con citas! ¡Si pudiera votar dos veces, lo haría! Impresionante respuesta, hombre :)
R Thiede
Actualmente he encontrado otra visualización interactiva bastante interesante utilizando la reducción de datos (y grandes líneas circulares). Averigüe qué ciudad de EE. UU. Es la más popular entre los cazadores de casas internacionales a través del blog Trulia Insights.
Andy W
5

Hay un buen procedimiento aquí , por nuestra propia oscuridad.

Básicamente, el procedimiento es el siguiente: - reproyecte los puntos entre los que desea que esté la línea, - dibuje una línea recta entre ellos, - subdivida esa línea en x cantidad de piezas y, finalmente, proyecte la línea subdividida de nuevo a su línea original proyección.

Dejé de usar Arc porque cuesta dinero, pero para que este procedimiento funcione, no creo que deba pagarle a ESRI ningún soborno adicional para darle una funcionalidad básica. Quiero decir, no creo que necesites comprar ninguna "extensión". Sin embargo, estoy hablando bajo corrección, porque no estoy seguro de si subdividir una línea es parte de Spatial Analyst. ¿Quizás algunos de los más inclinados hacia ESRI pueden ayudarme aquí? :)

R Thiede
fuente
1
Antes no podía hacer curvas verdaderas con ArcView, pero ArcView ha podido hacer curvas verdaderas desde la versión 9 ahora.
blord-castillo
2

Puede crear polilíneas visualmente atractivas desde dos puntos en un mapa utilizando el método de gran círculo. Visite http://www.esri.com/software/arcgis/defense-solutions/military-analyst.html - Analista militar. ¡Debe tener lo que está buscando!

Michael Markieta
fuente
Ya no estoy a la altura de Arc, pero ¿no es posible hacer esto con algunas reproyecciones? Porque el analista militar probablemente le costará dinero ...
R Thiede
No creo que esta solución funcione de todos modos, ya que la extensión de mi mapa será de aproximadamente 40 millas de ancho. Creo que esto puede funcionar si fuera a la escala de un continente.
Pixel
Military Analyst es gratis @RThiede Sí, funcionaría mejor en mayor medida. Sin embargo, es posible que pueda editar las líneas después de crearlas para obtener lo que desea (ya que usan curvas más brillantes para producir cientos de puntos a lo largo de las polilíneas para crear la curva)
Michael Markieta
Podría editar fácilmente líneas para obtener los arcos que quiero, pero como mi publicación indicó, estoy usando Python para automatizar este proceso. ¡Gracias por la respuesta!
Pixel