查询地理坐标内的所有点

问题描述 投票:-2回答:3

Bing Maps给我边界坐标作为盒子上相对的点,如下所示:

'34.763402330018245,-76.65003395080568,34.692861148846255,-76.86890220642091'

在我的SQL查询中,我使用该数据将框按顺时针方向绘制为多边形,但未获取任何数据。如果我按逆时针方向绘制它,似乎所有内容都超出了框框。

SET @g = geography::STPolyFromText('POLYGON((
34.763402330018245 -76.65003395080568,
34.692861148846255 -76.65003395080568,
34.692861148846255 -76.86890220642091,
34.763402330018245 -76.86890220642091,
34.763402330018245 -76.65003395080568))', 4326);

在我的位置,我有@g.STContains(geography::Point(p.Latitude, p.Longitude,4326 )) = 1

有人可以告诉我我在做什么错吗?

sql sql-server bing-maps latitude-longitude
3个回答
0
投票
根据对问题的描述,您遇到了环向问题。也就是说,是否以顺时针或逆时针方式指定点都很重要。

尝试更改点的顺序(在我的情况下,换第二和第四点,看是否能解决您的问题。


0
投票

我发现了问题!

因为我正在使用地图,所以使用了[[geography变量。显然,这是错误的方法。您必须改用

geometry变量。

我的解决方案现在看起来像:SET @g = geometry::STPolyFromText('POLYGON(( 34.763402330018245 -76.65003395080568, 34.692861148846255 -76.65003395080568, 34.692861148846255 -76.86890220642091, 34.763402330018245 -76.86890220642091, 34.763402330018245 -76.65003395080568))', 4326);

以及在何处.....

 @g.STContains(geometry::Point(p.Latitude, p.Longitude,4326 )) = 1

-1
投票
enter image description here
© www.soinside.com 2019 - 2024. All rights reserved.