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

时间:2015-11-26 20:32:58

标签: mysql gis

我有一个超出我所知的专家情况。 我有一个名为geom的多边形表和列,它包含数百万个带有polygon数据类型的多边形坐标。当我发送lat,lang时,我想选择右边的多边形包含这些坐标。我查找了很多答案并没有找到正确的结果。我的db版本是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

此致

1 个答案:

答案 0 :(得分:2)

返回结果:

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

请参阅此fiddle,其中有两个表polygon(使用您提供的一个值),location有两个记录,其中一个记录包含您提供的点,以及另一个在给定多边形之外的点。

小提琴SQL发现第一个点在多边形内:

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