Ecco un'illustrazione del flusso di lavoro che ho citato nel commento sopra, e anche se non conosco alcuna semplice routine pre-inscatolata per farlo, ho allegato un foglio di calcolo Excel che si può importare un insieme di coordinate origine-destinazione e il foglio crea quindi un insieme o coordinate di linea circolare (foglio di calcolo qui ). Ha formule impostate, quindi è abbastanza facile importare nuove coordinate OD ed estendere le formule per compilare i risultati, ma esaminerò la logica del processo in modo più esplicito, tuttavia, e altri possono dare consigli su come scriverlo interamente all'interno ArcMap (o qualsiasi altra cosa).
In breve, penso che questo sia ragionevole per visualizzare i dati OD principalmente per lo stesso motivo per cui sono popolari le grandi linee circolari, che forniscono una maggiore distinzione visiva tra le linee. L'approccio che suggerisco ha anche un vantaggio rispetto alle grandi linee circolari, in quanto la direzione del flusso è codificata nel semicerchio. In questa altra risposta sul sito fornisco una panoramica più generale delle tecniche di visualizzazione per la mappatura del flusso e molte di quelle stesse tecniche possono essere applicate oltre a creare archi come questo.
Quindi, per dettagliare come si disegnano le linee come io sono un suggerimento, essenzialmente ho solo 3 passaggi per il processo, 1) trovare l'orientamento del flusso, 2) trovare il punto medio e la distanza del flusso, 3) trattare il punto medio come centro di un cerchio, quindi disegna l'arco (un semicerchio dall'origine alla destinazione). Per essere chiari, sto iniziando con una coppia di coordinate di origine proiettate (x1,y1)
e coordinate di destinazione (x2,y2)
.
Quindi 1) trova l'orientamento del flusso. Uno prima usa la formula ATAN((y2 - y1)/(x2 - x1))
e poi a seconda della direzione assegna un orientamento a seconda che la direzione sia verso est o verso ovest. Un esempio di pseudocodice di seguito (assegno punti OD che hanno entrambi alle stesse coordinate un orientamento pari a zero). Qui la variabile or_rad
è intesa come abbreviazione di "orientamento in radianti" e si pi
riferisce al valore di 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) Trova il punto medio e la distanza del flusso. Questo è molto semplice, per un solo set di coordinate accoppiate sarà il punto medio in coordinate (x, y) (x1+x2/2,y1+y2/2)
. Quindi definiamo mid_x = (x1 + x2)/2
e mid_y = (y1 + y2)/2
per la parte successiva. La distanza usando il teoria del pitagoro è semplicemente distance = SQRT((x1 - x2)^2 + (y1 - y2)^2)
.
3) Quindi, date queste informazioni, disegna il cerchio dato su un numero predefinito di gradi e un raggio (che è metà della distanza tra i due punti). Ad esempio, supponiamo di iniziare con un insieme di coppie di coordinate OD in (1,3):(3,2)
. L'orientamento in gradi sarà ~ 116 (e in radianti ~ 2), il punto medio x, y sarà (2,2.5)
e la distanza tra i due punti è di circa 2,2.
Diciamo quindi che vogliamo disegnare il semicerchio di 180 gradi. Nel codice pseduo (usando le variabili che ho già definito) le iterazioni avranno un aspetto simile;
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.
Di seguito è inserito un diagramma delle coordinate originali che ho specificato sopra. Iniziare da zero e terminare a 180 si assicura che i punti essere e fine siano nelle stesse posizioni. La regolazione del loop per avere più passaggi (arco più dettagliato) o meno (arco meno dettagliato) dovrebbe essere abbastanza ovvia.
Da notare, altri thread sul sito discutono sulla creazione di linee da dati puntuali (vedere il tag di creazione della polilinea ). Ho un esempio nel foglio di calcolo allegato xls e ho utilizzato lo strumento arcmap ET Geo-wizards per convertire le coordinate del foglio di calcolo in linee di file di forma. Gli archi nei dati di esempio nel foglio di calcolo allegato si presentano in questo modo;
Un aggiornamento semplice ma potenzialmente utile a questa configurazione attuale sarebbe quello di aggiornare le formule per consentire una quantità pre-specificata di eccentricità in arco, anche se finora non sono stato del tutto sicuro di come farlo nei miei pochi tentativi. Attendo con ansia suggerimenti e feedback dalla community qui sui miei consigli.