Як створити випадкові точки поза полігонами?


11

Інструмент Create Random Point здатний генерувати певну кількість точок у полігонах. Мені цікаво, з огляду на обмежувальний ящик, чи є можливість створити випадкові точки поза цим полігоном?

Відповіді:


13

Особисто мені не подобається алгоритм випадкової точки в ArcGIS. Крім того, використовуйте функцію навколишнього середовища геопросторового моделювання (GME) genrandompnts. Ви зможете ідентифікувати конкретні багатокутники, де випадкові точки будуть виключені (див. Виділену область у додатку .jpg). Найкраще це програмне забезпечення є безкоштовним.

GME надає вам набір інструментів для аналізу та моделювання, починаючи від невеликих "будівельних блоків", які можна використовувати для побудови складного робочого потоку, до повністю автономних програм аналізу. Він також використовує надзвичайно потужне програмне забезпечення з відкритим кодом R як статистичний двигун для управління деякими інструментами аналізу. Однією з багатьох сильних сторін R є те, що він є відкритим кодом, повністю прозорим і добре задокументованим: важливі характеристики будь-якого наукового аналітичного програмного забезпечення.

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


1
Чи можете ви надати додаткову інформацію про те, чому вам не подобається алгоритм випадкових точок за замовчуванням і чому GME є більш оптимальним?
Стівен Ведучий

@Aaron Приємний! Я не пробував цього, оскільки це були інструменти моделювання Хоута - мені доведеться завантажити його і дати йому тріщину!
om_henners

3
@Stephen Протягом останнього місяця я генерував випадкові бали у чотирьох класах. У мене виникли декілька питань: 1) ArcGIS створив кілька точок поза моїми вхідними багатокутниками. 2) Дузі було важко розібратися з ділянками, занадто малими для моїх вхідних параметрів (наприклад, мінімально допустима відстань = 50 м і бали = 50), тоді як GME обробляла їх проблеми, створюючи випадкові точки до тих пір, поки правила не порушуються, а потім відображається попереджувальне повідомлення 3) RPG Arc повільніше, ніж GME, можливо, через використання локальної пам'яті R.
Аарон

Хороший! У нього є обмеження пітона, щоб я міг зробити деяку пакетну обробку @Aaron?
Відвідано

2
@Seen перевірити розділ автоматизації та пакетної обробки (p10) у документі підтримки: spatialecology.com/gme/images/SpatialEcologyGME.pdf
Aaron

4

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


Просто додаток: з ліцензією ArcInfo ви можете це зробити за допомогою інструмента " Стерти"
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.

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