从MySQL Geometry列中检索坐标

时间:2012-04-06 13:06:17

标签: mysql sql google-maps geospatial

我刚刚开始使用MySQL地理空间扩展,希望在我的500K点数据库中加速lat / lng范围搜索。创建了新的GEOMETRYp

问题: p&返回的AsText(p)值只是(BLOB),而不是十进制度。 GeomFromText(p)不返回任何值。因为我有多余的latlng列,所以我仍然设法获得我需要的lat lng值。但我想删除latlng列,只依靠p

将现有的Lat / Lng值转换为Points

UPDATE listings SET p = GeomFromText('POINT(39.948177 -75.174324)') WHERE listing_id = '585221';

尝试从GEOMTRY col p

中检索Lat Lng
SELECT listing_id, lat, lng, GeomFromText(p), AsText(p), p from listings WHERE MBRContains( GeomFromText('Polygon((39 -76, 40 -76, 40 -74, 39 -74, 39 -76))'), p)

1 个答案:

答案 0 :(得分:5)

如果您使用AsText,您将获得WKT格式的对象。要提取点坐标,请使用:

SELECT listing_id X(p), Y(p)
FROM listings
WHERE MBRContains( GeomFromText('Polygon((39 -76, 40 -76, 40 -74, 39 -74, 39 -76))'), p)

MySQL可能会将AsText的结果作为BLOB返回,因为它对于复杂对象来说可能会非常长。只是无论你用什么来显示结果都无法应对,但文本就在那里。