【发布时间】:2011-09-18 11:54:24
【问题描述】:
我正在开发一个 MYSQL/PHP 系统,其中有以下内容:
-- 一组经纬度,以(lat,lng) 形式存储为文本格式:(lat1,lng1)#(lat2,lng2)#(lat3,lng3) 等,基本上是一个多边形绘制通过存储在数据库中的 googlemap 实例。
-- 存储在字段中的表格 - 点的坐标 P(plat,plng),基本上是设备所在的点
我需要从第一个表中计算出有多少多边形在距离 P 点 X 公里的范围内,主要是使用 MYSQL。
我已经遇到过很多关于这个的谷歌地图库,但我打算用最快的方法解决这个问题——我假设是通过 MYSQL 查询。
有人可以请您对此有所了解吗?
到目前为止,我已经查阅了一些关于地理空间查询的示例 - 并提出了这个:
SELECT user_id, latitude, longitude,
GeomFromText( "POINT(CONCAT_WS(' ',latitude,longitude))" ) AS point,
Contains( GeomFromText( 'POLYGON(-26.167918065075458 28.10680389404297,
- 26.187020810321858 28.091354370117188, -26.199805575765794 28.125,-26.181937320958628 28.150405883789062, -26.160676690299308 28.13220977783203, -26.167918065075458 28.10680389404297)' ) ,
GEOMFromText( "POINT(CONCAT_WS(' ',latitude,longitude))" ) )
FROM user_location
但问题是它显示了一个 lat: -26.136230, long: 28.338850 的记录,这与多边形的边界相距甚远。谁能指导一下?
【问题讨论】:
-
请注意,地球上的“多边形”并不是真正形成多边形,而是将地球分为两部分。哪个是“内”,哪个是“外”?如果您将 Lat-Long 视为笛卡尔坐标系,如果您的多边形覆盖 N 极或 S 极会发生什么?
标签: mysql google-maps geospatial