Найти максимальный радиус круга, который будет вмещаться в неправильный многоугольник?

9

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

Как мне найти максимальный радиус круга, который будет вмещаться в неправильный многоугольник?

Обратите внимание, что многоугольник может быть выпуклым или вогнутым корпусом (как показано ниже), и решение должно учитывать оба варианта.


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

Во-первых, у меня есть очень неправильные многоугольники, подобные этому:

мой полигон

Если я последую описанию Джозефа, результат будет выглядеть так:

результат

Это наверняка результат, следующий за этим решением, но это не ответ на мой вопрос.

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

Например, на севере многоугольника гораздо больше места, поэтому можно разместить гораздо больший круг, чем на юге многоугольника. Но насколько большим может быть этот круг?

Кристиан
источник
1
Добро пожаловать в ГИС: SE! Вы ищете что-то вроде зональной статистики ?
Иосиф
2
Возможно, я немного слеп, но не могу найти уже существующий ответ на мой вопрос. Ссылка вверху этой страницы "как рассчитать растровую статистику для полигонов" по моему мнению не подходит под мой вопрос. Так что, может быть, еще несколько идей?
Кристиан

Ответы:

6

Если вы хотите знать минимальный радиус для круга внутри многоугольника, как вы упомянули (и не использовать растры, что вы, вероятно, можете сделать с помощью зональной статистики ), тогда потребуется несколько шагов:

  • Возьмите слой многоугольника (показан в очень простом примере) и используйте Вектор > Инструменты геометрии > Центроиды многоугольника . Мы будем использовать этот вывод «центральной точки» для этого позже.

Простой многоугольник

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

Полигон проанализирован

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

Расстояние до и от точек

Атрибуты расстояния

Минимальное расстояние должно быть минимальным радиусом вашего круга в этом многоугольнике. Мы можем проверить это, создав буфер ( Vector > Инструменты геообработки > Buffer ) в слое центральной точки и скопировав / вставив минимальное расстояние от таблицы атрибутов в опцию Buffer Distance :

буфер

Джозеф
источник
2
Очень красиво сделано!
WhiteboxDev
2
Обнаружил это во время исследования недавнего вопроса о том, чтобы сделать то же самое. Хотя сначала я думал, что это может решить их проблему, при чтении ваших шагов есть существенный недостаток, когда процесс будет работать только для полигонов, которые являются выпуклыми, а не вогнутыми корпусами. Это продемонстрировано в очевидном вопросе редактирования. Центроид такой формы не обязательно попадет в нее, и даже если он это сделает, вы увидите, что больший круг поместится на любом конце, чем середина (где будет минимальное расстояние втулки) примерной формы.
Крис У
@ChrisW - Спасибо, приятель, что упомянул это, и ты прав, этот пост не отвечает на вопрос полностью. Надеемся, что есть метод для решения как выпуклых, так и вогнутых корпусов или, по крайней мере, один в процессе создания!
Джозеф
2
Если вы их еще не видели, похоже, у ET Geowizards есть инструмент только для этого, и другой пользователь написал скрипт, который сделает это. Их можно найти по связанному вопросу gis.stackexchange.com/questions/147790
Крис У,
@ChrisW - Удивительно, я не видел этот пост, так что спасибо, что упомянули его!
Иосиф
3

Немного поздно, но я пытался найти то же самое, поэтому я нашел это, теперь в QGIS 3x, (я не знаю, могут ли предыдущие версии справиться с этим) в инструменте процесса, есть инструмент, который на испанском языке назван "Поло де недоступность" полюс недоступности.

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

Используйте его, чтобы создать слой точек, которые расположены на самом дальнем расстоянии внутри многоугольника. Это максимальное расстояние было добавлено в качестве атрибута введите описание изображения здесь

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

Затем просто используйте инструмент буфера, чтобы нарисовать круги, используя это расстояние над слоем точек, и вы получите самый большой круг внутри многоугольника.

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

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

Джона Бит
источник
2
  1. Найти круги центра
  2. Соедините центральные точки
  3. Найти середину между связными кругами
  4. Построить гиперболы, используя центры в качестве точек фокусировки и середины в качестве точки на гиперболе
  5. Найти точки пересечения гипербол
  6. Соединить гиперболу пересечения с центром круга
  7. Найти пересечение по периметру окружности.
  8. Построить круг.

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

Fedde Нидерланды
источник