Шукаєте швидку функцію відстані з відкритим вихідним кодом для використання в коді


9

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

Моя конкретна мета - обчислити відстань витрат до однієї точки в центрі растру вартістю 1000 х 1000 на основі натискання користувача, тому швидке виконання дуже важливо.

Реалізація AC # була б ідеальною, але я перегляну все, що там є.

Хтось знає про бібліотеку з відкритим кодом, яка підтримує це? Спасибі за вашу допомогу!

Відповіді:


5

GRASS GIS має C-реалізацію r.cost( джерело , документація ), яка використовує міні-купу . Крім того, ви можете використовувати графічний пакет типу QuickGraph і Floyd-Warshall для обчислення вартості.

Останні зміни в GRASS 6.4 зробили r.cost значно швидшим , тому, можливо, продуктивність може бути достатньо хорошою: на моєму ноутбуці потрібно близько 3 секунд для 1М клітинної області, або 5 секунд з увімкненим ходом лицаря. GRASS - це додаток C, а не рішення, що випадає для кодової бази C #. Якщо ви все добре додаєте до свого стеку, ви можете використовувати PyWPS для здійснення дзвінків на GRASS, а потім використовувати результат в іншому місці вашої програми.


Я буду використовувати це у веб-додатку, тому моя мета - завершити операцію всього за кілька секунд. У мене колись буде лише одна цільова комірка і відносно обмежена максимальна відстань витрат (відстань від центральної цільової комірки до краю растрових витрат, якщо вважати пряму лінію з мінімальними витратами). Мої тести, що використовують ArcMap в цих умовах, змушують мене думати, що це можливо. Якісь поради чи досвід використання GRASS в C #?
— atogle

Я оновив своє запитання, щоб відповісти на ваші запитання, воно почалося як коментар, але отримало занадто довго. Сподіваюся, що це допомагає!
— scw

Дякую скажи! Це все чудова інформація, але насправді не привозить мене туди, де мені потрібно бути, якщо я не почну переносити код GRASS (що мені не хочеться робити). Можливо, там є якісь інші растрові вундерки з деякими порадами. Я продовжую розбиратися в цьому, і я опублікую рішення, на якому я вирішуся.
— atogle

Можливо, ви можете звернутися до свого колеги: azavea.com/research/staff-research-projects/map-algebra ;-) Я запропонував код GRASS, оскільки його міцна і швидка реалізація, C # є відносно новим для простору геообробки, тому існує реалізація може бути складною.
— scw

scw - саме звідси почалася моя подорож. Моя проблема полягає в тому, що його реалізація жертвує часом обробки для якісних розрахунків. Зараз ми працюємо над алгоритмом робити протилежне. GRASS - чудова пропозиція, я просто не маю можливості реально використовувати його. =)
— atogle


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.