如何在 SQL 服务器 2008 中验证地理多边形?
How to validated geography polygon in SQL server 2008?
在 SQL Server 2012 中有验证地理“.IsValidDetailed()' and to change orientation '.ReorientObject (geography)”的方法。
我正在使用 SQL server 2008 并面临多边形方向问题。
问题是 -
- 是否有验证地理多边形或将方向更改为有效地理的解决方案?
- 是否可以将 IsValidDetailed 方法从 sqlserver 2012 复制到 2008?
- 如果我必须手动执行,那么有效地理数据类型的多边形的正确方向是什么?
- 我们可以在 SQL 服务器 2008 中验证几何数据类型,是否可以将地理多边形转换为几何多边形并验证它?
请协助。提前致谢
我找到了解决方案,SQL Server Saptial Tools
http://sqlspatialtools.codeplex.com/
以下是解决我问题的方法。
IsValidGeographyFromText(字符串输入WKT, int srid)
检查输入的 WKT 是否可以表示有效的地理位置。这个功能需要
WTK 坐标值是 longitude/latitude 值,按此顺序并且有效
提供地理 SRID 值。这个函数即使在
边缘条件(即 longitude/latitude 坐标反转为 latitude/longitude)。
SqlGeography MakeValidGeographyFromText(字符串输入WKT,int srid)
将输入 WKT 转换为有效的地理实例。
该函数要求WKT坐标值为longitude/latitude值,
按此顺序并提供有效的地理 SRID 值。
我在 SQL Server 2008 上工作。将形状作为几何图形加载后,使用 MakeValid()
更正它,然后重新加载到地理中。
declare @gt nvarchar(max)
declare @gm geometry
declare @gmvalid geometry
set @gmvalid = @gm.MakeValid()
set @gt = @gmvalid.STAsText()
--select @gt
if LEFT(@gt,7 ) = 'POLYGON'
begin
set @gg = geography::STPolyFromText(@gt, 4326)
end
else
begin
set @gg = geography::STMPolyFromText(@gt, 4326)
end
在 SQL Server 2012 中有验证地理“.IsValidDetailed()' and to change orientation '.ReorientObject (geography)”的方法。
我正在使用 SQL server 2008 并面临多边形方向问题。
问题是 -
- 是否有验证地理多边形或将方向更改为有效地理的解决方案?
- 是否可以将 IsValidDetailed 方法从 sqlserver 2012 复制到 2008?
- 如果我必须手动执行,那么有效地理数据类型的多边形的正确方向是什么?
- 我们可以在 SQL 服务器 2008 中验证几何数据类型,是否可以将地理多边形转换为几何多边形并验证它?
请协助。提前致谢
我找到了解决方案,SQL Server Saptial Tools
http://sqlspatialtools.codeplex.com/
以下是解决我问题的方法。
IsValidGeographyFromText(字符串输入WKT, int srid)
检查输入的 WKT 是否可以表示有效的地理位置。这个功能需要 WTK 坐标值是 longitude/latitude 值,按此顺序并且有效 提供地理 SRID 值。这个函数即使在 边缘条件(即 longitude/latitude 坐标反转为 latitude/longitude)。
SqlGeography MakeValidGeographyFromText(字符串输入WKT,int srid)
将输入 WKT 转换为有效的地理实例。 该函数要求WKT坐标值为longitude/latitude值, 按此顺序并提供有效的地理 SRID 值。
我在 SQL Server 2008 上工作。将形状作为几何图形加载后,使用 MakeValid()
更正它,然后重新加载到地理中。
declare @gt nvarchar(max)
declare @gm geometry
declare @gmvalid geometry
set @gmvalid = @gm.MakeValid()
set @gt = @gmvalid.STAsText()
--select @gt
if LEFT(@gt,7 ) = 'POLYGON'
begin
set @gg = geography::STPolyFromText(@gt, 4326)
end
else
begin
set @gg = geography::STMPolyFromText(@gt, 4326)
end