查询地理坐标内的所有点
Querying all points within geography coordinates
Bing 地图给我的边界坐标是一个盒子上的相对点,如下所示:
'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
有人可以告诉我我做错了什么吗?
根据您对问题的描述,您的戒指方向有问题。也就是说,您是按顺时针还是逆时针指定点。
尝试更改点的顺序(在你的情况下,我认为交换第二个和第四个),看看是否能解决你的问题。
我找到问题了!
因为我正在使用地图,所以我使用了 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
Bing 地图给我的边界坐标是一个盒子上的相对点,如下所示:
'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
有人可以告诉我我做错了什么吗?
根据您对问题的描述,您的戒指方向有问题。也就是说,您是按顺时针还是逆时针指定点。
尝试更改点的顺序(在你的情况下,我认为交换第二个和第四个),看看是否能解决你的问题。
我找到问题了!
因为我正在使用地图,所以我使用了 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