我刚刚开始使用MySQL地理空间扩展,希望在我的500K点数据库中加速lat / lng范围搜索。创建了新的GEOMETRY
列p
。
问题: p
&返回的AsText(p)
值只是(BLOB)
,而不是十进制度。 GeomFromText(p)
不返回任何值。因为我有多余的lat
和lng
列,所以我仍然设法获得我需要的lat lng值。但我想删除lat
和lng
列,只依靠p
。
将现有的Lat / Lng值转换为Points
UPDATE listings SET p = GeomFromText('POINT(39.948177 -75.174324)') WHERE listing_id = '585221';
尝试从GEOMTRY col p
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)
答案 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返回,因为它对于复杂对象来说可能会非常长。只是无论你用什么来显示结果都无法应对,但文本就在那里。