查找多边形内的点

问题描述 投票:0回答:1

我创建了一个如下表:

CREATE TABLE `geo` (
  `id` int DEFAULT NULL,
  `geometry` text,
  `spatialdata` geometry DEFAULT NULL
) ENGINE=InnoDB`

我插入数据:

INSERT INTO `geo` (`id`, `geometry`, `spatialdata`) VALUES('2','POLYGON
((-118.282067 34.067679, -118.281555 34.067458, -118.281467 34.067419,
-118.280624 34.067055, -118.279672 34.066689, -118.279376 34.066558,
-118.279233 34.066489, -118.279098 34.066409, -118.278879 34.066251,
-118.278047 34.065631, -118.276573 34.067943, -118.276505 34.06805,
-118.275848 34.069081, -118.275294 34.069984, -118.274929 34.070554,
-118.273876 34.072198, -118.27485 34.072519, -118.2753 34.072711,
-118.275707 34.072889, -118.276615 34.073286, -118.27752 34.073681,
-118.277735 34.073343, -118.277791 34.073256, -118.278056 34.072844,
-118.278522 34.072117, -118.278988 34.071389, -118.279463 34.070648,
-118.280081 34.070915, -118.280249 34.070772, -118.281158 34.06934,
-118.282183 34.06773, -118.282067 34.067679))',NULL);

现在我想检查下面的示例点是否在多边形内部。

例如:

-118.282194 34.06773

我在 Stack Overflow 上搜索过但没有找到答案。

我已经尝试过这些答案:

mysql geometry geospatial
1个回答
0
投票

一个相当简单的方法是计算从示例点到某个方向的光线投射,并计算与多边形边缘的交点数量。如果光线投射相交奇数次,则示例点位于多边形内,如果相交偶数次,则示例点位于多边形外。 详细的解释和Python示例代码可以在这里找到:https://www.youtube.com/watch?v=RSXM9bgqxJM

一个边缘情况:如果相交正好位于多边形的边缘上,您必须决定它是在内部还是在外部,并在代码中反映这种情况。

© www.soinside.com 2019 - 2024. All rights reserved.