当前位置: 首页 > 面试题库 >

在MySQL中获取接近纬度的多边形

徐阳炎
2023-03-14
问题内容

有谁知道一种从点到给定距离内获取MySQL数据库中所有多边形的方法?实际距离不是那么重要,因为它是稍后为找到的每个多边形计算的,但是对“接近”的多边形进行该计算将是一个巨大的优化。

我已经看过MBR并包含函数,但是问题是某些多边形不包含在围绕该点绘制的边界框中,因为它们很大,但是它们的某些顶点仍然很接近。

有什么建议么?


问题答案:

慢速版本(无空间索引):

SELECT  *
FROM    mytable
WHERE   MBRIntersects(mypolygon, LineString(Point(@X - @distance, @Y - @distance), Point(@X + @distance, @Y + @distance))

要使用空间索引,您需要对表格进行非规范化,以便将每个多边形顶点存储在其自己的记录中。

然后SPATIAL INDEX在包含顶点坐标的字段上创建,然后发出以下查询:

SELECT  DISTINCT polygon_id
FROM    vertices
WHERE   MBRContains(vertex, LineString(Point(@X - @distance, @Y - @distance), Point(@X + @distance, @Y + @distance))

如果您将UTM坐标存储在数据库中而不是纬度和经度,那么事情会容易得多。



 类似资料:
  • 问题内容: 我在SQLite数据库中存储了经度和纬度数据,我想获取与所输入参数最接近的位置(例如,我当前的位置-纬度/经度等)。 我知道这在MySQL中是可能的,并且我已经做了大量的研究,认为SQLite需要Haversine公式的自定义外部函数(计算球体上的距离),但是我还没有发现任何用Java编写并且可以工作的东西。 另外,如果要添加自定义功能,则需要org.sqlite.jar(用于org.

  • 问题内容: 我正在编写一个小程序,为了提高效率,我需要能够找到数组中最接近的纬度和经度。 假设您有以下代码: 我得到的结果是: 它应该是(在此示例中,列表中的最后一个对象) 我知道如何获取单个值的最接近单元格,但我想让lambda函数考虑这两个值,但我不确定如何做到。救命? 问题答案: 为了正确计算地球上各点之间的距离,您需要使用Haversine公式。使用此答案中提供的Python实现,您可以像

  • 问题内容: 我需要从MySQL表中获取与当前日期最接近的日期。 这是我的桌子: 因此,如果查询今天运行,它将返回 任何帮助深表感谢。谢谢 问题答案:

  • 我正在使用下面的代码创建一个地图并为其附加一个标记。我还添加了一个标记监听器,在那里我需要在拖动后获得标记位置的经度和纬度。 它所做的是返回我的当前位置,而不是拖动后标记的位置。这部分有什么帮助吗?!

  • 我有一个 netCDF 文件,我希望使用 R 中的“ncdf”包从由纬度/经度边界定义的子集(即经纬度/经度定义的框)中提取子集。 下面是我的netCDF文件的摘要。它有两个维度(纬度和经度)和一个变量(10U_GDS4_SFC)。它本质上是一个包含风值的平面/长网格: 纬度变量从 90 到 -90,经度变量从 0 到 360。 我希望使用以下地理角边界提取整个网格的子集: 左下角:纬度:34.5

  • 问题内容: 在询问具体的代码示例之前,我只想问一下是否可以进行类似此伪代码的查询: 从表中选择项目,其中经度/经度=-在某个经度/经度点的x英里内- 那可行吗?还是我必须跳过一些箍?可以推荐的任何好的方法都很棒! 问题答案: 您应该搜索Haversine公式,但是一个好的开始可能是: 使用PHP,MySQL和Google Maps创建商店定位器 -请参见“使用MySQL查找位置”部分 使用MySQ