【发布时间】:2014-02-08 03:06:03
【问题描述】:
我在 MySQL 数据库中有一个名为“flags”的表,它有 400,000 行。此表由代表英国各地不同位置的地理空间点组成。
我正在创建的应用程序使用 Google 地图。地图上有一个按钮,可以切换地图上的标志可见性。我现在的工作是创建一个 API,当通过边界框时,边界框内的所有标志都会返回(以便它们可以显示在地图上)。
传入的参数是视口当前位置的东北经纬度和西南纬度经度。
我现在需要执行一个 SQL 查询,该查询将返回这组坐标(视口)内的所有地理空间点。
理想情况下,需要优化解决方案,因为要搜索的行数很多。但是,该应用程序确实会强制您在用户显示标志之前放大到某个级别。
标志表:
- 身份证
- 坐标
- 姓名
示例行:
1 | [几何 - 25B] |坚韧AB
坐标字段也可以通过使用 AsText(coordinates) 转换为文字点。但是,X 和 Y 函数会为您执行此操作。
坐标列是数据类型:POINT
我知道要获得一个点的纬度/经度,您可以使用 X 和 Y 函数。例如,一个点的纬度可以这样检索:X(coordinates)
数据库管理系统:MySQL
DBMS 版本:5.6.14
【问题讨论】:
-
显示
flags表的定义将非常有帮助。您还可以显示该表的六个示例行。此外,由于英国跨越本初子午线,因此经度的符号 (+ -) 很重要。 -
@OllieJones 谢谢奥利,我已经用标志表结构编辑了问题
标签: mysql sql latitude-longitude geospatial