Создание в QGIS регулярно расположенных, определенных точек в пределах многоугольника

12

Я использовал исследовательский инструмент «Обычные точки», чтобы создать определенное количество точек в многоугольнике, но он формирует прямоугольную сетку точек, а не только внутри формы многоугольника. Поскольку мне нужно определенное количество точек внутри многоугольника, есть ли способ сделать это без проб и ошибок?

Например, сейчас только 8 из 25 точек, которые я хочу, находятся в пределах многоугольника, но я хочу 25 точек, чтобы я мог увеличить их до 50 и посмотреть, сколько затем появится в пределах многоугольника.

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

латимерия
источник
Я также хочу создать в QGIS регулярно расположенные, определенные # точки в пределах многоугольника, существует ли какой-нибудь плагин для этого? Я мог бы сделать это с расширением Arcgis под названием ET GEOWIZARD (Унифицированные точки в многоугольниках), но мне нужно сделать это в QGIS !! Вы можете мне помочь?
Ана Мария

Ответы:

3

Что касается QGIS в терминах границы слоя, на самом деле это огибающая или ограничивающая рамка геометрии.

Я задокументировал решение, которое, вероятно, является наиболее близким к автоматизации этого процесса (если не считать запрос об ошибке / функции).

Процесс работает на основе соотношения между площадью двух объектов: геометрии объекта и его ограничительной рамки).

Проверьте следующие шаги ниже:

  1. Выберите слой, над которым вы хотите работать.

  2. Выберите функцию, над которой вы хотите работать. Убедитесь, что больше ничего не выбрано.

  3. Запустите следующий фрагмент в консоли Python.

    layer = qgis.utils.iface.activeLayer()
    features = layer.selectedFeatures()
    feature = features[0]
    geom = feature.geometry()
    env_rect = geom.boundingBox()
    env_geom = QgsGeometry.fromRect(env_rect)
    env_geom.area() / geom.area()
    

    Обязательно нажмите Enter, так как последняя строка не вернется автоматически.

  4. Запустите Regular Pointsинструмент еще раз, но введите желаемое количество точек в поле, умноженное на результат, полученный вашим сценарием.

В моем примере ниже, результат, который я получил от вывода, был значением ~ 2. Я попросил вывести 20 точек в процессе, где я на самом деле хотел только 10. Мне дали 8 взамен, что довольно близко. В зависимости от фактической формы вы используете результаты будут отличаться.

Если бы вы были так склонны, вы могли бы автоматизировать (рекурсивно) процесс Regular Points, изменяя переменные до тех пор, пока вы не получите желаемое число.

Образец

nagytech
источник
+1 Ваше предложение близко, но может не сойтись. Что вы хотите сделать, это (а) оценить интервал, который заставит желаемое количество точек попасть в многоугольник, и (б) выполнить итерацию со случайным смещением (показано на скриншоте).
whuber
Если я сделаю случайное смещение, то это больше не сетка, верно? Сетка в пределах многоугольника с определенным количеством точек - это то, что я хочу, чтобы выполнить выборку по всей области. Или, может быть, это не то, чего я хочу, потому что выбор одной начальной точки и оттуда не достаточно случайны?
коелакант
@coelacanth Возможно, вы не раскрываете достаточно информации о своей проблеме? Каким будет следующий шаг в вашем анализе? Могут быть и другие способы достижения вашей цели, кроме использования точечной сетки.
nagytech
Хммм, я новичок во всей области GPS / ГИС и дизайна съемки, поэтому, пожалуйста, дайте мне знать, если есть лучший способ сделать что-то Я хочу установить определенное количество областей выборки в пределах многоугольника (то есть часть леса) для выборки растительности. Я хочу, чтобы области были распределены по всему сайту, чтобы я получил представление всего сайта. Для чего я хочу использовать эту функцию, это установить местоположение этих областей выборки в пределах границы. Затем я бы перешел к этой точке с помощью GPS-модуля и собрал свои данные.
Келакант
0

Вы можете легко сделать это, просто вырезав: сгенерируйте регулярную сетку точек, как вы это делали, а затем используйте Vector> Инструменты геообработки> Clip, введите сгенерированную сетку точек и используйте эту функцию в качестве маски клипа.

Rodrigues
источник
-1

На скриншоте предложено упрощенное решение. Вы можете извлечь полигоны в новые слои Vector -> Data Managment Tools -> Split vector layer, импортировать их и затем выбрать слой с нужным объектом (ID) в качестве входного слоя для сэмплера «Обычные точки».

Если вам нужно сделать это только для нескольких полигонов, их поиск и экспорт по отдельности может быть более эффективным. После того, как вы выбрали один, щелкните правой кнопкой мыши на имени слоя и выберите Save Selection As ..., выберите shapefile, заполните остальные, а затем повторите, как раньше.

РЕДАКТИРОВАТЬ: Поскольку у вас уже есть одна особенность, я не могу придумать ничего более простого, кроме использования более плотной сетки, пересечения ее с многоугольником и, наконец, удаления всех точек экстранеуса (проще всего через таблицу атрибутов, поскольку вы получаете как простое центрирование, так и общее количество).

lynxlynxlynx
источник
В шейп-файле уже есть только один многоугольник.
Келакант
О, как это раздражает тогда (как факт, что он создал 20 вместо 25 очков). Я предлагаю вам открыть запрос объекта на hub.qgis.org/projects/quantum-gis/issues - я полагаю, у него должен быть дополнительный флажок для использования истинной границы слоя.
lynxlynxlynx
-2

Примените запрос определения к вашим полигонам (в 1.8 щелкните правой кнопкой мыши на слое и выберите Query). Затем запустите инструмент. Удалить запрос.

Джон
источник
Как это поможет Это то же самое, что делать выбор.
Натан W
Довольно много. Но это работает в QGIS прямо сейчас, тогда как выбор не работает, по крайней мере, на моих машинах.
Джон