我的问题是,我的数据库中只有我的酒店信息及其经度和纬度。现在,我想从给定的经度和纬度中找到最近的酒店。 例如:假设纬度为196.98575,经度= 24.985644,现在基于此纬度,我想在15公里内找到最近的酒店,该酒店已在我的数据库中提供。 请建议我任何想法,或者如果您有任何存储过程,请告诉我,以便我可以避免手动任务。 我正在使用sql server。

===============>>#1 票数:1

正如上面的评论中提到的那样,SQL Server自SQL 2008起具有本地地理空间功能。这是我对解决方案的一种追求:

create table dbo.Hotels (
    HotelID int identity not null,
        constraint [PK_Hotels] primary key clustered (HotelID),
    Longitude decimal(15, 12) not null,
    Latitude decimal(14, 12) not null,
    geo as geography::Point(Latitude, Longitude, 4326)
)

insert into dbo.Hotels 
    (Longitude, Latitude)
values
    (-122.4167, 37.7833);
go

create procedure dbo.findHotels (@point geography, @distanceKM int = 15)
as
begin
    --SRID 4326 measures disances in meters, so use that measure
    declare @distanceM int = @distanceKM * 1000;

    select HotelID, @point.STDistance(geo) as [DistanceInM]
    from dbo.Hotels
    where @point.STDistance(geo) <= @distanceM
    order by @point.STDistance(geo);
end
go

declare @longitude decimal(15, 12) = -122.4168,
    @latitude decimal(14, 12) = 37.7832;
declare @p geography = geography::Point(@latitude, @longitude, 4326);

exec dbo.findHotels @p, 15;

===============>>#2 票数:0

这里一下 。它在数据库* Lat和Lon中找到距离M =(lat,lon)=(1.3963,-0.6981)距离d = 1000 km以内的弧度的地点

这是根据此来源的简单查询

SELECT * FROM Places WHERE
    (Lat => 1.2393 AND Lat <= 1.5532) AND (Lon >= -1.8184 AND Lon <= 0.4221)
AND
    acos(sin(1.3963) * sin(Lat) + cos(1.3963) * cos(Lat) * cos(Lon - (-0.6981))) <= 0.1570;

  ask by user3810961 translate from so

未解决问题?本站智能推荐:

2回复

如何使用Asp.net从SQL Server数据库中搜索纬度和经度明智记录

我想根据某些条件从我的SQL Server数据库中搜索所有记录 例如“ 5公里附近”,“我现在所在位置的人”(男,女,都有) 表结构如下所示: 那么,我该怎么做呢? 谢谢
2回复

sql查询经纬度

我有这张桌子 我想编写一个查询,这样它将显示我将从下拉列表中选择的公司经纬度100度内的所有公司。
1回复

试图在MasterPage中查找控件的问题

我正在尝试在asp.page的代码隐藏文件中使用C#更改html <div>标记中的DATA属性。 这是我的HTML代码 这是我在代码隐藏文件中的C# 一些上下文:我的方法从查询字符串中获取一个值,并将该值传递给存储过程,该存储过程运行SELECT查询以从SQL
1回复

从触发器中查找AspNetUser

我正在使用ASP.NET MVC应用程序。 在此应用程序中,我想更新刚刚写入的记录上的某些数据字段-包括负责更改的人员的用户ID。 问题是我不知道如何找出谁更改了记录。 我在脚本中使用了CURRENT_USER,但是它始终返回当前的SQL_SERVER安全性用户-在这种情况下为“ db
2回复

SQL查询查找相关项

我们有一个使用电子表格的系统,但表格的标准搜索功能非常低,因此我的任务是尝试为用户创建更好的方法。 好的,这是当前数据库格式的一点背景: 关系是1到多,一个表单上有很多控件。 我的任务是创建一个搜索,通过搜索表单名称(基于数据的更改)和属于该表单的每个表单控件来查找相关表单。
1回复

使用SQL Server查询从id为1位数或2位数的字符串中查找user_id

这是我的C#代码 在training_attendence_condition ,我可以编写查询以获取该行的user_id ,但它只能显示两位数字记录,当取一位数字时,它可以返回第二位数字。 因此,请帮助获得一两位数字
5回复

查找经度和纬度最近的位置

我正在开发一个我需要到达附近位置的应用程序,我的Web服务将收到2个参数(十进制经度,十进制纬度) 我有一个表,其中的位置保存在数据库中的经度和纬度字段, 我想找回最近的位置。 有人可以帮忙吗? 这是我的代码: 以下是有关此内容的更多详细信息:我在数据库表中有2个
1回复

使用linq查找具有给定纬度和经度的最近数据

我有一个数据表,其中存储了按纬度和经度存储的数据。 我需要使用LINQ查询来过滤此datable,并从给定的纬度和经度中找到最近的位置。 例如:28.9873-纬度,80.1652-经度
1回复

如何使用当前的经度和纬度从cosmos db查找最近的优惠券

我在Cosmos db中有一个Coupon容器,其中包含id,名称,类别,纬度和经度字段。 我为不同地区保存优惠券,并保存其中的纬度和经度。 我想搜索当前用户英里半径内(例如50英里内)的优惠券。 我正在从他们的设备获取用户位置的经度和纬度。 纬度和经度格式为lat:24.8779 lo
1回复

MarkClusterer地图问题:查找最近的纬度/经度

我在Google Map API v3中使用了Markclusterer扩展程序,遇到了某些麻烦,该地图可以完美显示并且集群也可以工作,但是我的问题是某些地址共享相同的经度和纬度,因此将地址分组并显示地址数为一组,但我无法进一步放大该组。 我尝试增加缩放比例,但没有帮助。 任何理想或解决方案