Пошук полюса недоступності відносно кількох точок без використання растрових


9

Я хочу знайти «точку недоступності» з низки пунктів, що представляють міста та села Шотландії. Використання інструментів FISS GIS (QGIS, SAGA, GRASS, Postgres / PostGIS ...).

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

Існує растровий підхід, який працює - фільтр близькості GDAL .

Чи існує спосіб, який базується на ВЕКТОРІ ? Той, що не потребує растеризації?

Ось моя спроба з растрами ...

  • Почніть з точкового шару у відповідній проекції в метрах (я використовую OSGB, 27700)
  • Додайте поле під назвою "один" і встановіть ціле число з постійним значенням 1.
  • Вектор до растрових, редагуючи команду для використання -a та використання GEO, а не пікселя. Переконайтесь, що пікселі квадратні!
  • Створіть контури на близькому растрі (у цьому випадку шириною 1 км)

Ось як це виглядає. Я намалював кілька кандидатських балів вручну ;-)

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

Я думав, що розчинення повторних буферів (за допомогою додатка Multi ring buffer ) може спрацювати, але я підозрюю, що у мене недостатньо пам'яті для цього.

Відповіді:


7

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

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

Досить відпарити ті, які знаходяться поза трикутниками, і визначити чемпіона, тобто №3 на малюнку.

ОНОВЛЕННЯ, ЗАВДАННЕ СТИВНЕМИ ЗНАЙНЕННЯ:

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

Результат вище, на відміну від першого рішення, отриманого в ArcGIS без сценаріїв (але з розширеною ліцензією), і воно працює! Однак це може дати сумнівні результати на краях досліджуваної області, наприклад, точка № 1, тобто друга віддалена точка, знайдена ...


1
Нічого, дякую, поділившись цим! Я спробував слідкувати за вашим робочим процесом у QGIS шляхом (1) Окуляри до Делоне ( Vector | Delaunay Triangulation), (2) Виберіть трикутник (обчислений $areaу таблиці атрибутів полігонів Делоне) і зберег найбільший як новий шар (3) Знайдіть центрометр ( Processing | GRASS | Vector | v.voronoi.skeletonна трикутник чемпіона). Чи вважаєте ви цей метод правильним?
Kazuhito

Перший крок правильний. Я обчислив центри випромінювання для ВСІХ трикутників. Щоб знайти центр, я побудував всередину перпендикуляр для середини всіх трьох сторін і знайшов перетин (комбінація 3,2).
FelixIP

Обведене коло трикутника, а не викреслення.
FelixIP

Дуже дякую! (і спасибі за гарну картину теж. Чим більше я схиляюсь до цього фону, тим більше він стає захоплюючим.)
Kazuhito

1
Приємного спостереження! Я перевірю його і оновлю відповідь. На відміну від першого рішення, воно не потребуватиме сценаріїв принаймні в Аркгізі.
FelixIP

5

Ось наступні заходи. Дякуємо @FelixIP за те, що вказав на мене в правильному напрямку!

Використовуючи дані OSM з Австралії, мені вдалося знайти "точку недоступності" на материковому материку Австралії - я роблю це приблизно в 260 км на відстань від Акарненехе, Бедурі та гори Даре, в пункті (137.234888 -24.966466)

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

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

Момент "а-ха" настав із того, щоб помітити це

Усі максимуми падають на триточки на вороной сітці - точки, де зустрічаються сусідні трійки вороних полігонів.

Підхід був такий:

  • робота в метровій проекції. Я використовував 3857, не ідеально, але мої дані OSM були у такому форматі :)
  • отримати шар, що відображає місця, що цікавлять місця ("місто", "село", "місто", "хутір")
  • створити сітку voronoi з цього шару
  • використовуйте витяжні вузли, щоб отримати трипоінт
  • створити растр близькості (як показано в запитанні)
  • відведіть растр до контуру пейзажу, так що морські пікселі встановлені на 0.
  • використовувати інструмент точкового відбору проби на витягнутих вузлах проти растру

Потім використовуйте Db Manager і Virtual Layers, щоб знайти вузол з найбільшим значенням відстані на растрі.

select 
    rowid,
    name,
    proximity2,
    st_astext(st_transform(geometry,4326)) as pt, 
    st_buffer(geometry, proximity2) as geometry
from 
    "samples" 
order by 
    proximity2 desc 
limit 1;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.