3

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

问题:p &AsText(p)返回的值只是(BLOB),而不是十进制度。不返回任何值GeomFromText(p)。因为我有冗余latlng列,所以我仍然设法获得我需要的 lat lng 值。但我正在考虑删除latand lngcols 并仅依赖p.

将现有 Lat/Lng 值转换为点

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

尝试从 GEOMTRY col 检索 Lat Lngp

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)
4

1 回答 1

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 可能会返回AsTextBLOB 的结果,因为它对于复杂对象可能会变得很长。只是你用来显示结果的任何东西都无法应付,但文本就在那里。

于 2012-04-06T13:50:32.320 回答