Creazione di archi tra due punti in ArcPy?


10

Ho lavorato su uno script Python per automatizzare la visualizzazione di dati in tempo reale. Ho una tabella con due coppie di coordinate. Vorrei collegare questi due punti con un arco di un cerchio o simile (parabola ??).

Sono stato in grado di collegare i due punti con una linea retta, ma mi dà una visione noiosa.

Uno dei maggiori ostacoli è il mio livello di licenza: ArcView.

Qualcuno ha idea di come posso generare un insieme di punti che rappresentano il percorso di una linea tra questi due punti?

Posso quindi usare il comando punti per polilinea.


5
In realtà non fornisci abbastanza informazioni: "migliorare una visione noiosa" non è né un'affermazione specifica né un buon problema. Ma forse otterrai alcune idee da un thread simile su gis.stackexchange.com/questions/5204/… .
whuber

1
Stai visualizzando contemporaneamente più righe o solo una (o poche) alla volta?
Andy W,

Il numero del punto potrebbe essere compreso tra 2 e circa 50.
Pixel

Risposte:


27

Sembra che il problema più comune con questi tipi di "mappe di flusso" sia che quando molte linee sono incluse, si scontrano così tanto da rendere difficile discernere qualsiasi modello non ovvio (quando si considerano flussi reciproci, succede ancora maggiore). Anche le linee lunghe tendono a dominare il grafico, anche se è del tutto possibile che la distribuzione dei flussi sia prevalentemente su spazi brevi (ad esempio una serie di diverse distribuzioni tra i luoghi tendono ad essere simili ai voli Levy ). Suppongo che questa non sia necessariamente una cosa negativa (le lunghe file potrebbero essere più intrinsecamente interessanti delle brevi per molti fenomeni), ma non credo che vogliamo perdere la foresta per gli alberi per così dire.

Anche se non dubito di aver perso alcune potenziali "soluzioni" che sono state proposte, cercherò di riassumere alcuni dei modi in cui le persone hanno cercato di risolvere il problema nel lavoro che mi sono imbattuto.

Distorsione delle linee

Se osservi alcuni degli altri thread sulla vista, vedrai alcuni esempi di come le persone hanno affrontato questo problema. In particolare, le linee sono distorte in modo che non si sovrappongano tra loro o con altri oggetti sulla mappa. La risposta di Whuber su un'altra domanda simile (già menzionata in un commento) ne è un esempio. Una presentazione di alcuni ricercatori di Stanford dimostra questa stessa idea (Phan et al., 2005). Grazie per quella presentazione vai a dslamb per questa risposta su un altro thread (e tutte le risposte a quel thread saranno anche interessanti per la tua domanda). Trovo particolarmente interessante che uno degli esempi cardinali di questo sia la vecchia mappa dell'immigrazione di Minard sia un esempio di risultato desiderabile (intorno al 1864!).

Dato il tuo caso d'uso particolare (piccolo numero di nodi e linee), questo sembra sufficiente. Le altre "soluzioni" che presento sono più destinate a visualizzare dati con molte linee e molte destinazioni di origine (anche se presumo che saranno utili riassunti per la comunità in generale, quindi continuo a prescindere).

Utilizzo di Alpha Blending, Color e Line Width / Height

Le mappe che ho elencato nello stesso thread precedentemente annotato, Rappresentazione dei flussi di rete ne sono esempi. Gli amici di Facebook sono un buon caso di regolazione del livello alfa delle linee, quindi ci vogliono molti più flussi per rappresentare una connessione più scura (o più luminosa in quel caso) tra i due punti. Ciò inoltre accentua le linee più lunghe perché tendono ad accadere più raramente. Una logica simile viene dalle mappe Value-by-Alpha per le aree poligonali (Roth et al., 2010) che sono state menzionate in precedenza su questo forum .

L'altra mappa che presento in quella stessa risposta usa il colore e una non tradizionale linee di arco in prospettiva 3D (Ratti et al., 2010). Gli autori hanno utilizzato un criterio di raggruppamento per raggruppare le aree omogenee e codificarle per colore (quindi per definizione le aree all'interno del colore hanno schemi di flusso più simili che tra i colori). I criteri di raggruppamento in sé e per sé potrebbero essere interessanti per identificare modelli nei dati, sebbene sembri un probabile problema con questo, come ha detto Andrew Gelman , è che ti dice praticamente quello che già sai, che si avvicina l'uno all'altro tendono ad avere più connessioni.

Infine, in questa categoria includo tecniche che pesano le linee (simili alla fusione alfa) usando la larghezza della linea, o nel caso dell'altezza della linea prospettica 3d, per trasmettere il volume del flusso. Vedi la pagina sulla pagina del software di mappatura del flusso di Tobler per alcuni esempi in 2d (e l'altro articolo che ho citato è un esempio in 3d che utilizza le altezze di linea). Sempre su quella pagina Tobler ha un articolo molto utile che descrive i problemi con il flowmapping e la loro applicazione storica (Tobler, 1987).

Un altro esempio in 3d è questa risposta di un mankoff su questo sito. Questo post sul blog di Immagini sociologiche mostra un modo utile in un diagramma di flusso per distinguere tra flussi in entrata e in uscita (anche se di nuovo funziona perché il numero di nodi e relativamente piccolo, e i nodi sulla rete possono essere disposti in un modo arbitrario per ridurre la sovrapposizione). Gli stessi tipi di frecce (e alcuni altri che usano hash) sono presenti anche in (Tobler, 1987).

Alla fine però la larghezza e il colore della linea non risolvono davvero il problema di sovrastampa. Gli archi in 3d aiutano in qualche modo, anche se con schemi di flusso più complicati penso che avranno un'utilità limitata. La miscelazione alfa IMO sembra essere la più utile in un'ampia varietà di situazioni di questi tre, ma il colore e la larghezza della linea potrebbero / dovrebbero essere usati insieme alla distorsione della linea sopra menzionata.

Riduzione dei dati

Raggruppo due tipi di tecniche qui, 1) usando piccole mappe multiple (cioè molte mappe con intrinsecamente meno oggetti da visualizzare in modo da ridurre la sovraincisione), o 2) altre rappresentazioni grafiche, che non sono linee, ma rappresentano alcuni dei flussi attraverso la densità o mappe coropletiche. Esempi di questi possono essere trovati in (Corcoran et al., 2009; Rae, 2009; Wood et al., 2010) (grazie a iant per il riferimento Rae). Questi tendono a ridurre la quantità di informazioni visive presentate presentando una serie di piccole mappe multiple (o solo un'area più piccola), oppure utilizzano uno schema di mappatura coropletica per rappresentare alcune statistiche (esempi potrebbero essere il numero di flussi in entrata, il numero di deflussi , direzione dei flussi, distanza media dei flussi). Se si dispone di dati a livello di punto, è possibile rappresentare queste statistiche tramite mappe raster di densità kernale o aggregarle in quadrat.

Quando le informazioni vengono ridotte in questo modo, la sovrastampa non è un problema. Un esempio online interattivo molto interessante è questa mappa di migrazione della rivista Forbes . Puoi vedere solo una contea alla volta, ma la riduzione delle informazioni rende molto più semplice analizzare le linee (e la differenza tra flussi in entrata e in uscita). Un recente post sul blog di mappatura ESRI utilizza anche una tecnica simile con i piccoli multipli (scelgono anche una particolare proiezione per la mappa del mondo per avere linee "carine" e fanno buon uso del colore per evidenziare ulteriormente le diverse origini internazionali). In questo esempio funziona abbastanza bene perché la destinazione finale è la stessa per tutti i flussi, ma se i flussi potrebbero essere reciproci probabilmente non funzionerebbe altrettanto bene.

Utilizzo di altre rappresentazioni di flussi non mappate

Altri su questo sito hanno suggerito di utilizzare diagrammi alternativi alla mappa effettiva per rappresentare i flussi (semplicemente mappando le origini e le destinazioni in qualche modo diverso dalla loro effettiva posizione geografica). Esempi di questi sono visualizzazioni cicliche (come quella prodotta da Circos ), diagrammi ad arco (vedi questo esempio su Protovis, questi sono anche chiamati kriskograms (Xiao & Chun, 2009)) o mappe di calore a matrice ( ecco un altro esempio dal Sito web Protovis). Un'altra opzione sarebbe quella di utilizzare un qualche tipo di layout di rete automatizzato per identificare i modelli nei flussi (come quello abilitato da Graphviz ). Oltre a Graphviz appare Gephi, la libreria python di NetworkX, e alcune librerie R sono anche strumenti popolari (vediquesta risposta sul sito delle statistiche).

Le librerie che cito sono piuttosto interessanti in quanto hanno sviluppato anche visualizzazioni interattive. Ecco un esempio con uno stile simile alla grafica circolare (sebbene non circolare!). Ecco un'altra visualizzazione interattiva che utilizza alcune delle tecniche di distorsione della linea discusse in precedenza, il posizionamento della rete (che appare simile ai cartogrammi circolari di Dorling) e altri utili riassunti statistici (ho visto entrambi quegli esempi originariamente sul blog di estetica delle informazioni ).


Alcune altre risorse che ritengo utili sono il software e gli articoli provenienti dallo Spatial Data Mining e dal Visual Analytics Lab . Anche la modellizzazione della domanda di viaggi criminali nel programma CrimeStat è una dolce introduzione alle tecniche di regressione applicabili per tali dati di flusso. Entrambi questi strumenti possono consentire di identificare correlazioni interessanti nei modelli di flusso con altre informazioni geografiche. Un altro posto in cui forse ricevere qualche utile ispirazione per visualizzare graficamente i dati o l'analisi statistica sarebbe un recente numero di Journal of Computational and Graphical Statistics, Volume 20 Numero 2, sull'esame delle statistiche di arrivo / partenza di voli per vettori commerciali negli Stati Uniti dal 1987 al 2008 (se sei interessato a gestire i big data, vale la pena esaminare anche questo). Tutti gli articoli sono gratuiti e hanno poster associati ad ogni articolo.

Alla fine, i dati e il supporto determineranno il modo in cui alcune di queste tecniche funzionano nel ridurre il disordine visivo che accompagna i dati di flusso. Spero che questo sia un posto utile per trovare idee su come affrontare questo problema di visualizzazione. Se raffini ulteriormente la tua domanda su ciò che desideri realizzare, gli altri possono fornire un feedback utile su implementazioni programmatiche effettive (se qualcosa non è già disponibile).


citazioni

* nota, quando sono riuscito a trovarne uno sono inclusi collegamenti a documenti pdf non associati


2
Al momento ho omesso qualsiasi elemento grafico, ma se richiesto posso includerne qualsiasi se le persone vogliono vedere esempi senza dover seguire i collegamenti.
Andy W,

Wow !! ... Completo di citazioni! Se potessi votare due volte, lo farei! Ottima risposta, amico :)
R Thiede,

Al momento ho trovato un'altra visualizzazione interattiva piuttosto interessante usando la riduzione dei dati (e grandi linee circolari), Scopri quale città degli Stati Uniti è più popolare tra i cacciatori di case internazionali tramite il blog Trulia Insights.
Andy W,

5

C'è una bella procedura qui , per conto nostro.

Fondamentalmente, la procedura procede in questo modo: - riproiettare i punti tra cui si desidera che la linea si trovi, - ottenere una linea retta disegnata tra di loro, - suddividere quella linea in x quantità di pezzi, e infine - proiettare la linea suddivisa al proprio originale proiezione.

Ho smesso di usare Arc perché costa denaro, ma per far funzionare questa procedura, non penso che sia necessario pagare all'ESRI eventuali tangenti extra per darti funzionalità di base. Voglio dire, non penso che tu abbia bisogno di comprare "estensioni". Sto parlando sotto correzione, però, perché non sono sicuro che la suddivisione di una linea sia parte dell'analista spaziale. Forse alcuni dei più inclini a ESRI possono aiutarmi qui? :)


1
In passato non era possibile eseguire curve vere con ArcView, ma ArcView è stato in grado di eseguire curve vere sin dalla versione 9.
blord-castillo,


2

Puoi creare polilinee visivamente attraenti da due punti su una mappa usando il metodo del grande cerchio. Dai un'occhiata a http://www.esri.com/software/arcgis/defense-solutions/military-analyst.html - Analista militare. Dovrebbe avere quello che stai cercando!


Non sono più abbastanza veloce su Arc, ma non è possibile farlo con alcune riproiezioni? Perché l'analista militare probabilmente ti costerà denaro ...
R Thiede,

Non credo che questa soluzione funzionerebbe comunque, poiché l'estensione della mia mappa sarà di circa 40 miglia di larghezza. Credo che questo potrebbe funzionare se fosse alla portata di un continente.
Pixel

L'analista militare è gratuito @RThiede Sì, funzionerebbe meglio in misura maggiore. Tuttavia, potresti essere in grado di modificare le linee dopo che sono state create per darti quello che vuoi (poiché usano curve più bezzier per produrre centinaia di punti lungo le polilinee per creare la curva)
Michael Markieta,

Potrei facilmente modificare le linee per ottenere gli archi che desidero, ma come indicato dal mio post sto usando Python per automatizzare questo processo. Grazie per il feedback!
Pixel
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.