我创建了一个如下表:
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 上搜索过但没有找到答案。
我已经尝试过这些答案:
一个相当简单的方法是计算从示例点到某个方向的光线投射,并计算与多边形边缘的交点数量。如果光线投射相交奇数次,则示例点位于多边形内,如果相交偶数次,则示例点位于多边形外。 详细的解释和Python示例代码可以在这里找到:https://www.youtube.com/watch?v=RSXM9bgqxJM
一个边缘情况:如果相交正好位于多边形的边缘上,您必须决定它是在内部还是在外部,并在代码中反映这种情况。