【问题标题】:Returning results within Latitude / Longitude rectagle返回纬度/经度矩形内的结果
【发布时间】:2023-03-15 15:19:01
【问题描述】:

这是我的表的示例:

CREATE TABLE [dbo].[Addresses] (
[Id] int NOT NULL IDENTITY(1,1) ,
[Latitude] float(53) NULL,
[Longitude] float(53) NULL
)

从我们的应用程序中,我以边界框格式返回 2 组纬度和对数点:

{"upperright":[32.91052662576775,-79.5290690551758],"lowerleft":[32.6420709033305,-80.33313094482423]}

因此,根据边界框结果中返回的信息,我需要将该信息传递给 SQL 查询,以查找该矩形内的所有地址。

【问题讨论】:

标签: sql sql-server sql-server-2008 google-maps


【解决方案1】:

获取重复的经纬度

WITH Dup_LatLong AS
(
SELECT row_number() OVER (PARTITION BY
LATITUDE, LONGITUDE ORDER BY Rpropid1) AS RowNumber, UniqueValue, convert(Varchar(50),LATITUDE)+convert(Varchar(50),LONGITUDE) Check_Cond
FROM YourTable)
Select UniqueValue,LATITUDE, LONGITUDE, convert(Varchar(50),LATITUDE)+convert(Varchar(50),LONGITUDE)
from YourTable
where convert(Varchar(50),LATITUDE)+convert(Varchar(50),LONGITUDE) in (Select Check_Cond from Dup_LatLong where RowNumber > 1)
order by 7

【讨论】:

    【解决方案2】:

    这对我有用:

    Select * from Addresses
    Where Addresses.Longitude between -80.33313094482423 and  -79.5290690551758
    And Addresses.Latitude between 32.6420709033305 and 32.91052662576775
    

    【讨论】:

    • 这并没有说明您可能正在寻找纬度介于 359.2 和 0.12 之间的地方。如果给定这些参数,它将返回与您想要的相反范围内的所有位置
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多