Пакет R
sf
имеет удивительный набор функций под названием «Геометрические двоичные предикаты», которые подробно описаны здесь .
Как указано в ссылке,функции рекурсивно применяются ко всем геометриям в одном и том же наборе данных , если предоставляется только один sf
-объект (см. пример ниже)
Если y отсутствует, st_predicate(x, x)
фактически вызывается, и квадратная матрица возвращается с диагональными элементами st_predicate(x[i], x[i])
.
Однако сейчас я создаю некоторые инструменты, где я привязан к arcpy
из ArcGIS.Какой быстрый способ получить квадратную матрицу всех объектов в одном наборе данных, указывающую, перекрываются ли соответствующие объекты или нет?
arcpy.SpatialJoin_analysis()
сравнивает только два набора данных и arcpy.GenerateNearTable_analysis()
, а также arcpy.Near_analysis()
вычислять только расстояния между объектами.
Вот как st_overlaps()
работает в R
:
library(sf)
#> Warning: Paket 'sf' wurde unter R Version 3.5.2 erstellt
#> Linking to GEOS 3.6.1, GDAL 2.2.3, PROJ 4.9.3
b0 = st_polygon(list(rbind(c(-1,-1), c(1,-1), c(1,1), c(-1,1), c(-1,-1))))
a0 = b0 * 0.8
a1 = a0 * 0.5 + c(2, 0.7)
a2 = a0 + 1
a3 = b0 * 0.5 + c(2, -0.5)
y = st_sfc(a0,a1,a2,a3)
plot(y)
st_overlaps(y,sparse = F)
#> [,1] [,2] [,3] [,4]
#> [1,] FALSE FALSE TRUE FALSE
#> [2,] FALSE FALSE TRUE FALSE
#> [3,] TRUE TRUE FALSE FALSE
#> [4,] FALSE FALSE FALSE FALSE
Создано в2019-04-16 по представлению пакета (v0.2.1)