gpt4 book ai didi

c# - 获取与给定点重叠的所有点(带半径的圆圈)

转载 作者:行者123 更新时间:2023-11-30 22:24:07 24 4
gpt4 key购买 nike

我需要找到“圆圈重叠给定点”系统的最佳方法。

我有很多要点,例如餐厅,每个项目都有一个地方的点,以及例如半径。 “带出食物”。半径不同,有的有3公里,有的10公里。我正在从一个点搜索。例如“我的位置”纬度/经度。

我需要找到找到所有与我的观点重叠的餐馆的最佳方法。 (会给我带来食物)。 (不是圆圈中的点,而是什么圆圈与我的点重叠。)

我正在考虑将 lat/lng 作为地理类型存储在 SQLServer 2008 中。这是实现它的方法吗?

可以直接在sqlserver上面查询吗?还是我需要用代码来做?以及如何做到这一点?

最佳答案

是的,这正是地理学和空间方法所擅长的事情。这是一个简短的例子:

DECLARE @Restaurant TABLE (
Name nvarchar(50),
Location geography,
DeliveryRadiusMetres int
);

INSERT @Restaurant
VALUES
-- long lat
('Dominos','POINT(-0.109339 51.532835)',2000 ),
('Pizza Hut','POINT(-0.102961 51.541157)',2000 );

请注意,这里为了构造 geography 值,我使用了字符串的隐式转换,它在幕后调用了 geography::Parse

DECLARE @MyLocation geography = 'POINT(-0.115063 51.550231)';

SELECT
Name
FROM
@Restaurant R
WHERE
R.Location.STDistance(@MyLocation) <= R.DeliveryRadiusMetres
;

关于c# - 获取与给定点重叠的所有点(带半径的圆圈),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12949605/

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