gpt4 book ai didi

c# - 如何使用 Sql 搜索矩形内的(预定义)位置(纬度/经度)?

转载 作者:行者123 更新时间:2023-12-03 00:25:15 24 4
gpt4 key购买 nike

我有矩形位置的北、东、南和西值,如何仅搜索该矩形位置范围内的位置(纬度/经度)?

enter image description here

请注意,我需要在数据库中搜索位置(纬度/经度)。我需要在数据库中找到给定矩形边界内的位置,然后在 map 上为它们绘制标记。

我不是在谈论Google search ,搜索API已经支持传递矩形边界来过滤搜索。

googlemaps API 可以为我执行此操作,例如:

var request = {
bounds: myMapObject.getBounds(), // Search only within the Bound of the Map
query: someTextToFind
};

或者

var isWithInMapsBounds = myMapObject.getBounds().contains(myLocation);

但是我需要在从数据库获取位置时执行此操作,我的意思是在服务器端

有人可以指导我正确的方向,如何实现此功能吗?

编辑:

我想在数据库中搜索;所以我需要一个 SQL 解决方案。

最佳答案

DECLARE @Bounds AS Geography = GEOMETRY::STGeomFromText('polygon-wkt-here',0)

SELECT columns-list
FROM table
WHERE 1 = @Bounds.STIntersects(table.point-column)

对于那些一无所知的人,请快速说明为什么不能将点位置与边界框的北/南/东/西坐标进行比较:

边界框可能不按纬度/经度对齐(例如,其北/南/东/西线可能不遵循纬度/长轴)。如果您在纬度/经度 map 投影上绘制平面矩形,就会发生这种情况。点距离边界框边缘越近,距离赤道越远,失真就越明显。

使用地理数据类型的第二个原因是它提供了一种统一的方法来对任何多边形(而不仅仅是矩形)执行此类操作。因此,现在您可以比较单个点是否在您的盒子内,或者查找邮政编码中的所有地址,所有地址都使用相同的代码段。

关于c# - 如何使用 Sql 搜索矩形内的(预定义)位置(纬度/经度)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15584000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com