Знайдіть максимальний радіус кола, який поміститься в межах неправильного багатокутника?


9

У мене є проблема, яку, на мою думку, можна було б вирішити за допомогою інструмента Zonal Geometry в панелі інструментів ArcGIS Spatial Analyst. Однак у мене немає ліцензії на Spatial Analyst, тому я шукаю альтернативу; можливо, використовуючи QGIS.

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

Зверніть увагу, що багатокутник може бути або опуклим, або увігнутим корпусом (як показано нижче), і рішення має стосуватися обох.


Я спробував рішення Джозефа, але, на жаль, результат не той, що я шукав.

По-перше, у мене дуже неправильні багатокутники на кшталт цього:

мій Полігон

Якщо я дотримуюся опису Йосифа, результат виглядає приблизно так:

результат

Це напевно результат після рішення, але це не відповідь на моє запитання.

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

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


1
Ласкаво просимо до GIS: SE! Ви шукаєте щось на зразок зональної статистики ?
Йосип

2
Можливо, я трохи сліпий, але не можу знайти відповідь на своє запитання. Посилання вгорі цієї сторінки "як обчислити растрову статистику для багатокутників", на мою думку, не підходить до мого питання. Так ще кілька ідей, можливо ??
Крістіан

Відповіді:


6

Якщо ви хочете знати мінімальний радіус для кола всередині багатокутника, як ви згадали (а не використовувати растри, що, напевно, ви можете зробити з Zonal Statistic s), то знадобиться кілька кроків:

  • Візьміть ваш шар багатокутника (показаний на дуже простому прикладі) та використовуйте вектор > Інструменти геометрії > центроїди полігону . Ми будемо використовувати цей вихід "центральної точки" для цього пізніше.

Простий багатокутник

  • Потім скористайтеся функцією SAGA Перетворити багатокутники на рядки з Панелі обробки інструментів
  • Візьміть рівень виведення рядка і використовуйте Перетворити лінії в точки , знову ж таки, від SAGA (зменшіть відстань точок для отримання більшої кількості очок; це може допомогти дати точніший результат в кінці).

Проаналізовано багатокутник

  • Тепер ми можемо використовувати функцію Відстань до найближчого концентратора з панелі інструментів. Виберіть шар, який ви перетворили з рядків у пункти, як шар джерельних точок ; і виберіть шар « Центровий пункт» як ваш шар « Пункти призначення» . Після цього ви повинні отримати вихідний шар, який містить відстані від кожної точки периметра до центральної точки:

Відстань до пунктів і від них

Атрибути відстані

Мінімальна відстань має бути мінімальним радіусом вашого кола в межах цього многокутника. Ми можемо перевірити це, створивши буфер ( Вектор > Інструменти геопроцедури > Буфер ) на центральному точковому шарі та скопіювавши / вставивши мінімальну відстань від таблиці атрибутів у параметр " Відстань буфера ":

Буфер


2
Дуже красиво зроблено!
WhiteboxDev

2
Виявив це під час дослідження нещодавнього питання, яке прагне зробити в основному те саме. Хоча спочатку я думав, що це може вирішити їх проблему, але при перегляді ваших кроків виявляється суттєвий недолік, коли процес працюватиме лише для багатокутників, які є опуклими корпусами, а не увігнутими корпусами. Це продемонстровано в очевидній редакції запитання. Центроїд такої форми не обов'язково потраплятиме в неї, і навіть якби це було, ви можете бачити, що більший круг розташовуватиметься на будь-якому кінці, ніж посередині (де буде відстань міні-концентратора) прикладу форми.
Chris W

@ChrisW - Дякую приятелю за те, що ти згадав про це, і ти маєш рацію, ця публікація не відповідає повністю на питання. Сподіваємось, існує метод вирішення як опуклих, так і увігнутих корпусів або принаймні один у процесі виготовлення!
Йосип

2
Якщо ви їх ще не бачили, схоже, що у ET Geowizards є інструмент саме для цього, і інший користувач написав сценарій, який це зробить. Їх можна знайти у зв’язаному питанні gis.stackexchange.com/questions/147790
Chris W

@ChrisW - Дивовижний, не бачив цього посту так багато спасибі за те, що згадували про нього!
Йосип

3

Трохи запізнювався, але я намагався знайти те саме, тому я знайшов це, зараз у QGIS 3x (я не знаю, чи можуть це впоратися з попередніми версіями) в інструменті процесу є інструмент, який на іспанській мові називається "polo de inacesibilidad" полюсом недоступності.

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

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

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

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

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

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


2
  1. Знайдіть кола центральних точок
  2. Підключіть центральні точки
  3. Знайдіть середину між з’єднаними колами
  4. Побудуйте гіперболи, використовуючи центри як точки фокусування, а середні точки як точки на гіперболі
  5. Знайдіть точки перетину гіпербол
  6. З'єднайте гіперболу перехрестя з центром кола
  7. Знайдіть перетин на периметровому колі.
  8. Побудуйте коло.

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

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