当点数很多时,如何有效地为一个点分配一个多边形的列值?
这是此处发现的问题的扩展(多对多版本):Check if a geopoint with latitude and longitude is within a shapefile
我有一组点(约 1.84 亿 x 2d numpy 数组)和一个包含 10 万个多边形的大型 shapefile(它们不重叠)。
在 R 中有一个 points %over% polygons
运算符,使得 SetSpatialFilter
返回一个长度为点的多边形数组,其中多边形是点所在的多边形或 NaN。 R 无法扩展、占用 RAM 并且速度很慢,因此不是一种选择。
问题是提到的相关问题中的解决方案很慢(1000分需要20秒)。如果不是更改 wkbMultiPoint
中的单点位置,而是先用点填充 CREATE TABLE [TABLE_1]
(
ID decimal(28,6) NULL,
S_DATE datetime NULL,
NR decimal(28,6) NULL,
);
INSERT INTO TABLE_1 (ID, S_DATE, NR)
VALUES (1, '2020-01-01', 1),
(1, '2020-01-01', 2),
(1, '2020-05-02', 3);
,2000 万个点(大多数在多边形外)只需要 13 分钟。
速度很好,但我无法知道哪个特征属于哪个点。我将 2000 万个点放入多点,但只得到 1608 个特征,我需要这些特征等于输入的长度或至少通过索引相关。
不必是地理空间计算,因为投影是以米为单位的东西方和北方。