首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL geography::包络聚合输出不准确

SQL geography::包络聚合输出不准确
EN

Stack Overflow用户
提问于 2017-12-09 14:16:08
回答 0查看 223关注 0票数 1

我正在尝试获取一组位置的geography::EnvelopeAggregate。使用各个点的经度/经度计算地理列值。当我尝试获取边界框(范围)时,框并不覆盖所有单独的点。这是预期的行为吗?在这个领域有专业知识的人可以提供一些输入吗?下面是绘制的SQL代码和相应的Map。

代码语言:javascript
复制
IF EXISTS (SELECT * FROM tempdb.dbo.sysobjects WHERE id = OBJECT_ID(N'tempdb..[#ServicePoints]'))
    BEGIN
        DROP TABLE #Points
    END
CREATE TABLE #Points
(
    PointId nvarchar(max),
    Lat float,
    Long float,
    Location geography
)
insert into #Points(PointId, Lat, Long, Location)
values ('point1', 47.659226, -117.218292, geography::Point(47.659226, -117.218292, 4326))
insert into #Points(PointId, Lat, Long, Location)
values ('point2', 47.659226, -117.218292, geography::Point(47.659226, -117.218292, 4326))
insert into #Points(PointId, Lat, Long, Location)
values ('point3', 47.659226, -117.218292, geography::Point(47.659226, -117.218292, 4326))
insert into #Points(PointId, Lat, Long, Location)
values ('point3', 47.658276, -117.218474, geography::Point(47.658276, -117.218474, 4326))
insert into #Points(PointId, Lat, Long, Location)
values ('point3', 47.658323, -117.21899, geography::Point(47.658323, -117.21899, 4326))
insert into #Points(PointId, Lat, Long, Location)
values ('point3', 47.658341, -117.219487, geography::Point(47.658341, -117.219487, 4326))
insert into #Points(PointId, Lat, Long, Location)
values ('point3', 47.660115, -117.219365, geography::Point(47.660115, -117.219365, 4326))
insert into #Points(PointId, Lat, Long, Location)
values ('point3', 47.658478, -117.216265, geography::Point(47.658478, -117.216265, 4326))

select * from #Points
--select geography::Point(47.658323, -117.21899, 4326)
Select E1.ID, 
                   E1.SPEXtents.STPointN(3).Lat as BottomLeft_Lat, 
                   E1.SPEXtents.STPointN(3).Long as BottomLeft_Long,
                   E1.SPEXtents.STPointN(1).Lat as RightTop_Lat,         
                   E1.SPEXtents.STPointN(1).Long as RightTop_Long, 
                   E1.SPExtents.STPointN(2).Lat as BottomRight_Lat,
                   E1.SPExtents.STPointN(2).Long as BottomRight_Long,
                   E1.SPExtents.STPointN(4).Lat as TopRight_Lat,
                   E1.SPExtents.STPointN(4).Long as TopRight_Long

        from
        (SELECT 1 as ID,
                geography::EnvelopeAggregate(sp.Location) AS SPExtents
        FROM #Points sp
        ) E1;

这些点在地图中的表示如下所示。可以看到,有两个点位于边界之外。

或者我应该画一个连接这4个坐标的圆?在这种情况下,我可以看到所有的点都落在这个圆内,如图所示。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47725899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档