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


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.