从最小和最大纬度/经度创建多边形(矩形)
Posted
技术标签:
【中文标题】从最小和最大纬度/经度创建多边形(矩形)【英文标题】:Create polygon (rectangle) from min and max lat/long 【发布时间】:2011-12-23 14:52:18 【问题描述】:给定一个代表西南点的纬度/经度和代表东北点的纬度/经度 当我创建一个多边形 那么它应该可以在 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 个点 - 左下角、左上角、右上角、右下角和再次回到左下角。
【问题讨论】:
不输入这个作为答案,因为我没有在 SQLServer 中使用地理的经验,但错误似乎是不言自明的:您包含了来自多个半球的坐标,SQLServer 地理可以应付不过来。如果您只打算处理英国地理,一个简单的答案是在所有坐标上添加 10 度经度。 【参考方案1】:首先,这与您在矩形中穿过本初子午线并同时位于东半球和西半球无关。这只是一个巧合。
SQL Geography 使用左手规则,所以当观察者按照提供的顺序走过你的环时,形状的内部总是在他们的左边。对于外环,这意味着环是按逆时针顺序定义的。根据这条规则,你原来的矩形是英国以外的整个世界,当然不仅仅是一个半球。 :)
所以只需在 POLYGON 语句中更改点的顺序,(另外,我切换了你的 X 和 Y 值,它不会影响语句的有效性,但它会使地图看起来像一个长/英国的纬度)
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 + '))'
【讨论】:
首先,很抱歉这么长时间离线 - 假期。其次,非常感谢 TetonSig,你已经成功了。假设顺时针方向是我的错误 - 我应该比假设...以上是关于从最小和最大纬度/经度创建多边形(矩形)的主要内容,如果未能解决你的问题,请参考以下文章