MySQL纬度和经度表设置
我想将位置的纬度和经度值存储在mysql数据库表中。考虑到未来,我将希望能够在特定位置的特定半径内找到这些位置。话虽如此,我应该将纬度和经度值存储在哪些数据类型中?请给我提供一个用于创建列的创建表脚本,如下所示:
place_id | lat | long
上表中是否可能缺少我会为我提供当前可能看不到的其他信息的列?
谢谢你的帮助。
回答:
您应将这些点存储在数据类型的单列中,Point
该列可以用索引建立SPATIAL
索引(如果表类型为MyISAM
):
CREATE SPATIAL INDEX sx_place_location ON place (location)SELECT *
FROM mytable
WHERE MBRContains
(
LineString
(
Point($x - $radius, $y - $radius),
Point($x + $radius, $y + $radius)
)
location
)
AND Distance(Point($x, $y), location) <= $radius
这将大大提高查询的速度,例如“在给定半径内查找所有对象”。
请注意,最好使用简单的TM
公制坐标(东和北),而不是极坐标(纬度和经度)。对于小半径,它们足够精确,并且计算也大大简化了。如果您所有的点都在一个半身中并且远离极点,则可以使用单个中央子午线。
当然,您仍然可以使用极坐标,但是用于计算MBR
和的公式将更加复杂。
以上是 MySQL纬度和经度表设置 的全部内容, 来源链接: utcz.com/qa/431753.html