Більше

Як створити найменш витратний шлях між двома багатокутниками за допомогою GRASS?

Як створити найменш витратний шлях між двома багатокутниками за допомогою GRASS?


Я повністю новачок у GRASS, але я хотів би використовувати його, щоб мати сукупну вартість пересування між двома багатокутниками. Точніше, я б хотів отримати найменшу вартість з будь-якої точки, розташованої на краю одного багатокутника (багатокутник A), до будь-якої точки, розташованої на краю іншого багатокутника (багатокутник B).

Дотепер я користувався функцієюВартість ВідстаньіШлях витратArcGIS приблизно так:

CostDistance ("start_polygon", "cost.tif", "", "outCostLink.tif") CostPath ("end_polygon", "outCostDist.tif", "outCostLink.tif", "EACH_ZONE", "FID")

Я хотів би зробити те саме з ТРАВОЮ. Я думаю, що функціяр. вартістьдозволяє це зробити. Але проблема в тому, що я не розумію, як вказати в параметрах два полігони в GRASS?

Я маю :

  • растр витрат, де кожна клітинка має собівартість.
  • файл форми для першого багатокутника
  • файл-шейп для другого багатокутника

У вас є приклад того, як користуватисяр. вартістьз двома багатокутниками?

Велике спасибі за вашу допомогу.


Я знаю, що це старе запитання, але тут є тріщина у відповіді. Мій підхід здається мені трохи заплутаним, але це найкраще, що я міг придумати. Я використовував ТРАВУ 6.4.

g.region s = 0 w = 0 e = 100 n = 100 res = 1 # встановити кілька багатокутників відлуння "B 4 10 10 10 20 20 10 10 10" | v.in.ascii -n input = - output = polygonA format = standard echo "B 4 90 90 90 80 80 90 90 90" | v.in.ascii -n input = - output = polygonB format = standard r.mapcalc cost = 1.0 # генерувати точки на краях полігонів # dmax, мабуть, має бути менше ніж ваша растрова роздільна здатність v.to.points -i input = polygonA output = polygonA_pts dmax = 1 v.to.points -i input = polygonB output = polygonB_pts dmax = 1 # обчислити шлях із найменшими витратами # це запускає lcp з центру багатокутника B, але, я думаю, lcp буде # пройти через межу багатокутника в точці, що призведе до lcp r.cost input = output output = cummulative_cost start_points = polygonA_pts stop_points = polygonB_pts v.centroids input = polygonB output = polygonB_cent v.to.points input = polygonB_cent output = polygonB_cent_only type = centroid r.drain input = cummulative_cost output = lcp voutput = lcp vector_points = polygonB_cent_only #, оскільки lcp починається в центрі багатокутника B, # розділіть lcp на краю багатокутника, щоб отримати нову вихідну точку на краю багатокутника B # тоді запустіть r.drain ще раз, щоб отримати кінцевий результат від краю багатокутника t o край багатокутника v.patch input = lcp, polygonB output = temp v.clean input = temp output = lcp_from_edge tool = break error = new_starting_point r.drain input = cummulative_cost output = lcp voutput = lcp vector_points = new_starting_point --o

Огляд аналізу шляхів найменших витрат

Аналіз шляху найменших витрат - це інструмент дистанційного аналізу в ГІС, який використовує шлях із найменшими витратами або шлях між двома місцями, який найменше коштує тим, хто подорожує по ньому, для визначення найбільш економічно ефективного маршруту між джерелом та пунктом призначення. Вартість може бути функцією часу, відстані чи інших критеріїв, які визначає користувач. При використанні аналізу шляхів із найменшими витратами в ГІС обчислюються вісім сусідів растрової комірки, і згенерований шлях рухається до комірок із найменшим накопиченим або вартісним значенням ("Аналіз відстані за допомогою ArcGIS"). Цей процес повторюється кілька разів, доки джерело та пункт призначення не з’єднаються. Завершений шлях - це найменша сума значень растрових комірок між двома точками, і він має найменшу вартість.

Аналіз найменших витрат є важливим інструментом для розуміння ГІС, оскільки він має безліч різних застосувань - і все це може допомогти бізнесу, містобудівникам та іншим користувачам заощадити час і гроші.


1 відповідь 1

Щодо 1):

nw: зважена відстань до повідомляє про помилку, якщо шлях не існує.

Як може не бути шляху, оскільки ваша мережа, здається, повністю підключена? Ну, проблема в тому, що ви маєте справу не лише з черепахами у вашій мережі: ви просите вовка попросити черепах-сюди знайти якийсь шлях. Але сам вовк входить до складу черепах-сюди, а вовк не підключений до мережі!

Можливо, ви могли б уникнути, запитавши інших черепах-сюди, але вам слід було б бути впевненим, що на тому самому плямі немає жодного іншого вовка.

Найрозумніша річ - це, мабуть, створити окрему породу для вузлів у вашій мережі. Якби у вас була порода під назвою вузли, ви могли б сказати запитати вузли - тут, і це добре вирішило б вашу проблему.

Щодо 2):

Ваш код, як ви його опублікували, не компілюється, оскільки ви намагаєтеся вказати my-cost-of-path -1 у верхній частині вашого репортера з найменшими витратами, але my-cost-of-path - це вже змінна wolf. Ваш код мене бентежить, тому я не можу дати вам повного рішення.

Ваш репортер із найменшими витратами повинен працювати з локальною змінною чи змінною wolf? Якщо вам потрібна локальна змінна, вона повинна мати іншу назву. З іншого боку, якщо ви хочете оперувати безпосередньо своєю змінною wolf, мабуть, немає особливого сенсу для того, щоб шлях з найменшими витратами був репортером (і ви, звичайно, не можете повідомити про мою вартість шляху на його кінець). Ймовірно, вам потрібно трохи перебудувати справи.


Призначити вартість шляху полігонам у буфері

Я хотів би побудувати найдешевші шляхи між багатокутником (наприклад, багатокутником А), де є вовк, та всіма багатокутниками, розташованими в радіусі 3 км навколо вовка, та знайти полігон, який має найнижчу вартість (див. Також Як я можу збільшити пришвидшення моделювання моєї моделі шляху з найменшими витратами. Потім вовк рухається до цього багатокутника (наприклад, до багатокутника B). Процес повторюється з багатокутника B тощо.

1) З багатокутника A код працює, оскільки лише полігони в буфері мають вартість шляху. Але з багатокутником B є проблема. Код знаходить полігон, який має найнижчу вартість серед багатокутників, які знаходяться в буфері багатокутника A та в буфері багатокутника B. Код повинен знайти лише той багатокутник, який має найнижчу вартість серед багатокутників у буфері багатокутника B Як я можу вирішити цю проблему? Чи потрібно мені скидати змінну стану “path-cost” для кожного патча багатокутника, перш ніж розрахувати вартість шляху з полігону B?

2) Якщо в буфер обох трьох вовків включений один і той же багатокутник, як вартість шляху буде присвоєна змінній стану "path-cost" для кожного полігона патча, тобто чи можна мати 3-кратне значення вартості для одного і того ж багатокутника?

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


ПРИКЛАДИ

Перетворити р. вододіл перетікає вихід карти на векторну карту

Встановіть іншу таблицю кольорів для карти накопичення:

Створіть більш детальну карту потоку, використовуючи карту накопичення, і перетворіть її у векторну вихідну карту. Обмеження накопичення, а отже, і фрактальна розмірність, є довільним у цьому прикладі, ми використовуємо середню кількість карт водозбірних осередків на карті (обчислене у наведеному вище прикладі р.унівар) як граничне значення. Це працює лише з SFD, а не з MFD.

Створіть карту водозбірних басейнів і перетворіть у векторну карту багатокутників

Відобразити висновок у приємній формі


Генетика

У цьому дослідженні ми використовували попарно Fвул матриця, оцінена у Fresia et al. 2011. (повний текст доступний за запитом) як генетичну відстань між зразками з усіх пар місцезнаходжень. Всього було виявлено 227 мітохондріальних гаплотипів у 282 особин, зібраних з 29 місць по всій Південній Америці та згрупованих у дві "географічні групи". З матриці ці пари з Fвул= 0 (генетично однакові зразки) було збережено для подальшої роботи. Це ФвулЗначення = 0 було обрано на основі можливості розпорошення NWS і може бути скориговано в будь-якому конкретному випадку.


Висновки

У цій роботі розроблено алгоритм пошуку найкоротшого шляху на зменшених графіках. Експериментальні результати показують, що запропонований алгоритм є більш ефективним, ніж алгоритм Дейкстри на великих графіках. Крім того, можна зробити наступне:

Запропонований підхід особливо застосовний до ГІС завдяки способу, за допомогою якого користувачі виконують найкоротший шлях пошуку в таких системах. Це дозволяє нам розширювати вершини, уникаючи впливу часу, використаного в цій операції, на пошук найкоротшого шляху.

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

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

Ми доводимо, що запропонований алгоритм дозволяє отримати оптимальний шлях у зменшеному графіку. Вартість отриманого шляху дорівнює вартості шляху, знайденого за допомогою алгоритму Дейкстри на вихідному графіку.

Ми розробили метод, здатний виконувати найкоротший пошук шляху за час виконання, подібний до алгоритму A * (з h = 0 і h = евклідова відстань).


Чи можна створити полігони Тіссена в рамках ГІС-програмного забезпечення, але зважених відповідно до ЦМР?

В основному те, що я шукаю, - це алгоритм або розширення, подібне до аналізу найменших витрат, але замість того, щоб використовувати точки над DEM для створення шляху (лінійного вектора) між точками, я хочу створити Thiessen (Voronoi) багатокутники (з центром у точках), просторові межі яких визначатимуться DEM.

Так, наприклад, межа між 2-ма багатокутниками буде визначена шляхом аналізу найменших витрат між центральними точками 2-х багатокутників. Тоді метою було б замість того, щоб отримати набір полігонів Тіссена з прямими стрілками межами (як на малюнку), створити набір полігонів, межі яких визначатимуться за допомогою DEM (рельєфу). Начебто як вододіл з центром в одній точці.

До речі, було б чудово, якби в QGIS було рішення, застосовне.


Найменший бар’єр шляху (R) (відстань)

Я намагаюся створити бар'єр (річки), який неможливо пройти шляхом найменших витрат.

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

Вартість растрового та перехідного рівня Як бачимо, навколо бар'єру в перехідному шарі є "буфер".

Будь-які ідеї щодо того, як створити дискретну межу? переважно з бар'єром як значенням 1000, де б ні було іншим значенням 1.

код: бібліотека (gdistance) ## Створити поверхню витрат там, де "земля" існує в середній вартості & lt- растр (nrow = 100, ncol = 100, xmn = 0, xmx = 100, ymn = 0, ymx = 100, crs = "+ proj = utm") вартість [] & lt- 10 вартість [cellFromRowColCombine (вартість, 50: 55,20: 80)] & lt- 1000 costf & lt- asFactor (вартість & lt 100) ## Виготовити матриці переходів, і виправити, оскільки 8 напрямки trCost & lt- перехід (costf, "області", напрямки = 16) trCost1 & lt- geoCorrection (trCost [[2]], type = "c") графік (вартість) графік (растр (trCost [[1]])))


Розширена модель топологічних відносин між просторовими об'єктами в геоінформаційних системах

У цій роботі представлена ​​розширена модель опису топологічних зв'язків між двома сукупностями (об'єктами) в геоінформаційних системах (ГІС). По-перше, виходячи з визначення топологічних відношень між двома об’єктами, ми розкриваємо послідовність топологічних відношень між двома опуклими множинами.

По-друге, на основі нового визначення пропонується розширена модель топологічних відношень між двома множинами. Топологічні відношення між двома опуклими множинами виражаються у вигляді послідовності матриць 4 × 4, які є топологічними властивостями A o ∩ B o, A o B, B o A, ∂A ∩ ∂B. Модель також розширена для обробки властивостей топологічних відношень між двома неопуклими множинами, де до A ∪ B додається множник першої фундаментальної групи для обробки цих складних відносин.

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


Векторний підхід до моделювання ландшафтних коридорів та зв’язку з середовищем існування

Ландшафтний зв’язок є важливим фактором розуміння та міркування щодо екологічних систем. Дві особливості ландшафту можна розглядати як пов’язані, коли між ними існує шлях. У багатьох додатках доречність потенційного шляху оцінюється щодо вартості або стійкості, яку він представляє до обходу. Як правило, найменш витратні шляхи між ландшафтними об’єктами використовуються для наближення потенціалу зв’язку. Однак обхід ландшафту між двома місцями може не обов'язково відповідати шляху з найменшими витратами. Більше того, останні дослідження почали викликати певні сумніви щодо того, як різні типи ландшафтних особливостей можуть впливати на рух. Таким чином, важливо враховувати географічні межі руху ширше. Постійні (тобто растрові) та дискретні (тобто векторні) подання зв’язку зазвичай використовуються для моделювання просторових зв’язків між ландшафтними об’єктами. Хоча існуючі підходи можуть пролити значущі уявлення про топологію системи та підключення, вони все ще обмежені у своїй здатності представляти певні типи рухів, і на них сильно впливає масштаб одиниць площі та спосіб визначення вартості обходу ландшафту. Для кращого вирішення цих питань у цій роботі пропонується новий підхід, що базується на векторі, для визначення географічного масштабу коридорів та оцінки зв’язку між ландшафтними особливостями. Розроблений підхід застосовується для оцінки зв’язку середовищ існування для саламандр, щоб підкреслити переваги цього підходу до моделювання.

Це попередній перегляд вмісту передплати, доступ через вашу установу.


Перегляньте відео: Установка гріючого мата електричної теплої підлоги Uponor Comfort E