gpt4 book ai didi

sql - 从最小和最大纬度/经度创建多边形(矩形)

转载 作者:行者123 更新时间:2023-12-01 11:54:15 24 4
gpt4 key购买 nike

给定一个代表西南点的纬度/经度和一个代表东北点的纬度/经度当我创建多边形时然后它应该在 SQL 2008 中工作...

这是我的 SQL:

   DECLARE @minX varchar(10) = N'49.871159'
DECLARE @maxX varchar(10) = N'55.811741'
DECLARE @minY varchar(10) = N'-6.379880'
DECLARE @maxY varchar(10) = N'1.768960'

DECLARE @boundingRect varchar(150)
SET @boundingRect = 'POLYGON((' + @minX + ' ' + @minY + ', ' + @minX + ' ' + @maxY + ', ' + @maxX + ' ' + @maxY + ', ' + @maxX + ' ' + @minY + ', ' + @minX + ' ' + @minY + '))'
SELECT GEOGRAPHY::Parse(@boundingRect)

但它给我以下错误:“指定的输入不代表有效的地理实例,因为它超出了一个半球。”

谁能告诉我我做错了什么?我示例中的边界矩形应该大致覆盖英国,我的假设是我需要指定 5 个点 - 左下角、左上角、右上角、右下角并再次回到左下角。

最佳答案

首先,这与您在矩形中穿过本初子午线并同时处于东半球和西半球无关。那只是巧合。

SQL Geography 使用左手法则,因此当观察者按照提供的顺序在环中行走时,形状的内部始终在他们的左侧。对于外环,这意味着环是按逆时针顺序定义的。按照这个规则,你原来的矩形是英国以外的整个世界,当然不仅仅是一个半球。 :)

所以只需更改 POLYGON 语句中点的顺序,(另外,我切换了 X 和 Y 值,这不会影响语句的有效性,但它会使 map ​​看起来像一个长/lat 代表英国)

DECLARE @minY varchar(10) = N'49.871159'
DECLARE @maxY varchar(10) = N'55.811741'
DECLARE @minX varchar(10) = N'-6.379880'
DECLARE @maxX varchar(10) = N'1.768960'

DECLARE @boundingRect varchar(150)
SET @boundingRect = 'POLYGON((' + @minX + ' ' + @minY + ', ' +
@maxX + ' ' + @minY + ', ' +
@maxX + ' ' + @maxY + ', ' +
@minX + ' ' + @maxY + ', ' +
@minX + ' ' + @minY + '))'

关于sql - 从最小和最大纬度/经度创建多边形(矩形),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8617370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com