【发布时间】:2016-02-17 02:50:19
【问题描述】:
我遇到了一个有趣/烦人的问题,即在矩形边界内查找地标的经纬度。 我相信我的两点在我的矩形边界内。但是您可以测试自己,第一次选择的结果是假而不是真!
DECLARE @boundingRect varchar(1000)
DECLARE @maxLat VARCHAR(20)
DECLARE @minLong VARCHAR(20)
DECLARE @minLat VARCHAR(20)
DECLARE @maxLong VARCHAR(20)
set @maxLat ='-36.06631759541187'
set @minLong ='125.23310677812492'
set @minLat ='-44.43329881450396'
set @maxLong='167.04707162187492'
SET @boundingRect = 'POLYGON((' + @minLong + ' ' + @minLat + ', ' +
@maxLong + ' ' + @minLat + ', ' +
@maxLong + ' ' + @maxLat + ', ' +
@minLong + ' ' + @maxLat + ', ' +
@minLong + ' ' + @minLat + '))'
DECLARE @Bounds AS Geography =GEOGRAPHY::STPolyFromText(@boundingRect,4326)
DECLARE @point1 AS GEOGRAPHY = GEOGRAPHY::Point(-37.81502, 144.94601, 4326)
DECLARE @point2 AS GEOGRAPHY = GEOGRAPHY::Point(-38.81502, 144.94601, 4326)
SELECT @Bounds.STIntersects(@point1)
SELECT @Bounds.STIntersects(@point2)
为了给你背景,我有我想在谷歌地图上加载的地标列表(纬度、经度)。由于地标的数量太多,我无法一次返回所有地标。我需要返回用户可见区域中的地标,在他们的查看边界中。我正在获取谷歌地图边界的西北(最大纬度,最小长度)和东南部(最小纬度,最大长度)并将其发送到我的存储过程以返回该边界内的地标列表。但是,正如我在上面解释的那样,我遇到了一些问题,并且列表中缺少一些地标。
【问题讨论】:
-
@point1 由于地球曲率不相交:
-
Azadeh,如果你想使用 Geography 多边形并且仍然处理曲率问题,我建议你在多边形中添加更多点。
-
对于小距离,geometry数据类型很好,很远距离最好用geographyc,但总分很少,也可以用集群developers.google.com/maps/articles/toomanymarkers
标签: sql-server tsql spatial sqlgeography