Как создать случайные точки вне полигонов?

11

Инструмент Создать случайную точку способен генерировать определенное количество точек внутри полигонов. Мне интересно, учитывая ограничивающий прямоугольник, есть ли способ, которым я могу генерировать случайные точки за пределами этого многоугольника?

Видели
источник

Ответы:

13

Лично мне не нравится алгоритм случайных точек в ArcGIS. В качестве альтернативы используйте функцию Geospatial Modeling Environment (GME) genrandompnts. Вы сможете идентифицировать определенные полигоны, где случайные точки будут исключены (см. Выделенную область в прикрепленном .jpg). Лучше всего это программное обеспечение бесплатно.

GME предоставляет вам набор инструментов для анализа и моделирования, начиная от небольших «строительных блоков», которые вы можете использовать для создания сложного рабочего процесса, до полностью автономных программ анализа. Он также использует чрезвычайно мощное программное обеспечение с открытым исходным кодом R в качестве статистического механизма для управления некоторыми инструментами анализа. Одной из сильных сторон R является то, что она имеет открытый исходный код, полностью прозрачна и хорошо документирована: важные характеристики для любого научно-аналитического программного обеспечения.

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

Аарон
источник
1
Можете ли вы дать дополнительную информацию о том, почему вам не нравится алгоритм случайных точек по умолчанию и почему GME более оптимален?
Стивен Lead
@ Аарон Хороший! Я не пробовал это, так как это были инструменты моделирования Hawth - мне придется скачать его и дать трещину!
om_henners
3
@ Stefhen В течение последнего месяца я генерировал случайные точки в четырех классах. Я столкнулся с несколькими проблемами: 1) ArcGIS создал несколько точек за пределами моих входных полигонов 2) Arc было трудно работать с областями, слишком маленькими для моих входных параметров (например, минимально допустимое расстояние = 50 м и точек = 50), тогда как GME обрабатывал их проблемы, возникающие из-за появления случайных точек до тех пор, пока правила не были нарушены, и затем не появилось предупреждающее сообщение. 3) RPG Arc медленнее, чем у GME, вероятно, из-за использования R локальной памяти.
Аарон
Хороший! Имеет ли он границы Python, чтобы я мог выполнить некоторую пакетную обработку @Aaron?
увидено
2
@ Изучите раздел автоматизации и пакетной обработки (p10) в документе поддержки: spatialecology.com/gme/images/SpatialEcologyGME.pdf
Аарон
4

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


источник
Просто дополнение: с лицензией ArcInfo вы можете сделать это с помощью инструмента Erase
om_henners
3

Извините, я просто не могу устоять. Поскольку всегда полезно знать, что происходит под капотом с чем-то вроде GME, вот решение в реальном коде R.

require(sp)
require(rgeos)

# Create example polygon data
x <- readWKT("POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))")
y <- readWKT("POLYGON ((3 3, 7 3, 7 7, 3 7, 3 3))")

# Calculate difference in polygon geometries to create null polygon
d <- gDifference(x,y)

# Create random sample in non-null polygon
rs <- spsample(d, 20, type="random")  

# Plot results  
plot(d, col="red")
  plot(rs,pch=19,col="black",add=TRUE)

Этот подход, вероятно, сильно отличается от того, как это делает GME, но использует собственные пространственные классы R sp и довольно новую библиотеку топологий, что делает код очень эффективным. Это также дает пример, который можно легко обернуть в цикл for.

Джеффри Эванс
источник