找到正确的多边形包含特定点

Find the right polygon contains specific Point

我有一个超出我知识范围的专家情况。 我有一个多边形 table 和名为 geom 的列,其中包含数百万个具有多边形数据类型的多边形坐标。当我发送经纬度时,我想 select 右多边形包含这些坐标。我查找了很多答案,但没有找到正确的结果。我的数据库版本是 5.6。希望各位高手帮忙解决这个问题

这是我名为 geom 的专栏的结果之一,

'POLYGON((32.832677661456 39.604395901764,32.835512741784 39.604451520825,32.835457628151 39.604632934478,32.83542524568 39.604933725003,32.835590964324 39.605704952638,32.834519250891 39.605843434172,32.834339561944 39.605868865521,32.833763769865 39.605950014069,32.833486350914 39.606015654716,32.833173277993 39.606086197256,32.832114796112 39.606214593239,32.832301872536 39.605240473323,32.832677661456 39.604395901764))',0

我需要得到这个多边形 当我用这个点搜索时 32.832677661456 39.604395901764

此致

这returns个结果:

select AsText(polygon.geom)
from   polygon
where  Contains(polygon.geom, 
           PointFromText('POINT(32.832677661456 39.604395901764)'));

查看此 fiddle,它有两个表,polygon(具有您提供的一个值)和 location 有两个记录,其中一个具有您提供的点,另一个点位于给定多边形之外。

fiddleSQL发现第一个点在多边形内:

select AsText(polygon.geom), AsText(location.geom)
from   polygon, location
where  Contains(polygon.geom, location.geom);