从MySQL Geometry列中检索坐标

Nyx*_*nyx 3 mysql sql google-maps geospatial

我刚开始使用MySQL Geospatial扩展,希望在我的500K点数据库中加速lat/lng范围搜索.将创建一个新GEOMETRYp.

问题:p&AsText(p)返回的值很简单(BLOB),不是十进制度数.没有返回任何值GeomFromText(p).因为我有冗余latlng列,我仍然设法得到我需要的lat lng值.但我正在考虑删除latlngcols,只是依靠p.

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

UPDATE listings SET p = GeomFromText('POINT(39.948177 -75.174324)') WHERE listing_id = '585221';
Run Code Online (Sandbox Code Playgroud)

尝试从GEOMTRY col中检索Lat Lng 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)
Run Code Online (Sandbox Code Playgroud)

Cra*_*ack 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)
Run Code Online (Sandbox Code Playgroud)

MySQL可能会返回AsTextBLOB的结果,因为它可能会变得非常复杂的对象.只是无论你用什么来显示结果都无法应对,但文本就在那里.