Створення карти радіального потоку, що показує вигнуті лінії на невеликих відстанях (20 км) за допомогою ArcGIS for Desktop?


10

Есрі надав інструкції, як зробити карту радіального потоку, але я думаю, що вигнуті лінії будуть вироблятися лише на великій відстані, як на половині земної кулі.

На коротких відстанях (20 км) геодезична лінія, ймовірно, буде виглядати досить прямо. Щоб продовжувати використовувати цей процес для карти радіального потоку на невеликих відстанях, тоді я думав, що ми можемо відредагувати параметри дат, щоб земля була меншою, отже, ви отримаєте гарну вигнуту лінію на невеликій відстані. Хтось знає, як це зробити?

Як варіант, чи є ще один інструмент у ArcGIS Desktop 10.0, який можна використовувати для виготовлення вигнутих ліній? У мене є 90 балів, які мені потрібно підключити до 54 балів, було б добре автоматизувати це, а не потрібно малювати лінії вручну.


2
Ваше запитання було задано на gis.stackexchange.com/questions/5204/… в не-ArcGIS контексті. Ви можете знайти відповіді, що цікавлять вас.
whuber

1
У мене була інша ідея, коли він є, але його, можливо, краще, враховуючи ваші цілі. Я просто думав, що можна додати до дуги довільну кількість вигину, аналогічно тому, що робиться на діаграмах дуги . Потім можна змінити напрямок вершини залежно від напрямку потоку. По суті, робочий процес буде таким самим великим колам, розбийте рядок рядків на багато менших прямих сегментів. Довільний вигин, хоча міг би вмістити будь-яку локальну проекцію.
Енді Ш

@AndyW, ваша пропозиція звучить для мене більш корисною (хоча не ображатись на помах, який робить чудові пропозиції для більш досвідчених користувачів). Я не в змозі зрозуміти чи реалізувати пропозицію Уюбера. Я після простого рішення "поза коробкою", бажано розширення ArcGIS. Я переглянув діаграми дуги, є кілька дивовижних прикладів. Я не бачу рішення просту статичну карту, яка показує багато-багато (але, як правило, один на багато) взаємозв'язок між, у моєму випадку, сайтами виселення та сайтами переселення.
ndthl

Відповіді:


5

Ось ілюстрація робочого процесу, про який я згадував у коментарі вище, і хоча я не знаю жодної простої попередньо консервованої програми для цього, я додав таблицю Excel, яка дозволяє імпортувати набір координат вихідного місця призначення та Потім на аркуші робиться набір або координати кругової лінії (таблиця тут ). У ньому встановлені формули, тому досить легко імпортувати нові координати OD і розширити формули для заповнення результатів, але я детальніше пройду логіку процесу, але інші можуть дати поради, як його повністю скриптувати в межах ArcMap (або що завгодно).

Якщо коротко, я вважаю, що це доцільно для візуалізації даних OD в основному з тієї ж причини, що популярні великі кола кола, вони забезпечують більш візуальне розрізнення між лініями. Підхід, який я пропоную, також має одну перевагу перед великими лініями кола в тому, що напрямок потоку кодується півколом. У цій іншій відповіді на сайті я даю більш загальний огляд методів візуалізації для картографування потоків, і багато тих самих прийомів можна застосувати на додаток до виготовлення подібних дуг.

Отже, для деталізації того, як можна малювати лінії, як я пропоную, по суті, у мене є лише 3 етапи процесу, 1) знайти орієнтацію потоку, 2) знайти середину та відстань потоку, 3) обробити середина точки як центр кола, а потім намалюйте дугу (півкола від початку до пункту призначення). Щоб було зрозуміло, я починаю з заданої пари проектованих координат початку (x1,y1)та координати призначення (x2,y2).

Отже 1) знайти орієнтацію потоку. Перший використовує формулу, ATAN((y2 - y1)/(x2 - x1))а потім, залежно від напрямку, призначає орієнтацію залежно від того, напрямок є на схід чи на захід. Приклад псевдокоду нижче (я присвоюю точки OD, які обидва мають однакові координати, орієнтовані на нуль). Тут змінний or_radмається на увазі як скорочення для "орієнтації в радіанах" і piвідноситься до значення 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) Знайдіть середню точку та відстань потоку. Це дуже просто, лише для одного набору парних координат буде середина в (x, y) координатах (x1+x2/2,y1+y2/2). Тож давайте визначимось mid_x = (x1 + x2)/2і mid_y = (y1 + y2)/2для наступної частини. Відстань з використанням теореї піфагора просто distance = SQRT((x1 - x2)^2 + (y1 - y2)^2).

3) Потім, враховуючи цю інформацію, намалюйте коло, задане за попередньо заданою кількістю градусів і радіусом (що становить половину відстані між двома точками). Наприклад, скажімо, що ми починаємо з набору пар координат OD у (1,3):(3,2). Орієнтація в градусах буде ~ 116 (а в радіанах ~ 2), середня точка x, y буде, (2,2.5)а відстань між двома точками - приблизно 2,2.

Тож скажемо, що ми хочемо намалювати півкруга приблизно на 180 градусів. У pseduo-коді (використовуючи я вже визначені змінні) ітерації виглядатимуть приблизно так;

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.

Внизу наведена схема вихідних координат, зазначених вище. Починаючи з нуля і закінчуючи 180, гарантує, що істота і кінцеві точки знаходяться в одних і тих же місцях. Регулювання циклу, щоб мати більше кроків (більш детальна дуга) або менше (менш деталізована дуга), повинно бути досить очевидним.

введіть тут опис зображення

Для зауваження, інші потоки на сайті обговорюють створення ліній із даних точок (див. Тег ). У мене є приклад прикладеної таблиці xls, і я використав інструмент arcmap ET Geo-wizards для перетворення координат електронних таблиць у рядки shapefile. Дуги в прикладних даних у доданій таблиці згодом виглядають приблизно так;

введіть тут опис зображення

Одним простим, але потенційно корисним оновленням цього поточного налаштування було б оновлення формул, щоб забезпечити заздалегідь задану кількість ексцентриситету в дузі, хоча я не був зовсім впевнений, як це зробити в кількох своїх спробах досі. Я з нетерпінням чекаю пропозицій та відгуків громади тут щодо моїх порад.


1
це справді фантастична відповідь! хоча я не розумію, як кодувати, я думаю, що у мене є щось добре, що я можу обговорити з другом. Мені відомий інструмент et geowizards для з'єднання двох точок прямою лінією - мене цікавлять лише вигнуті лінії для цілей картографії.
ndthl
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.