Sql server 2008 SQL Server 2008近似于地理数据列上的.STWithin()
我正在使用SQL2008Sql server 2008 SQL Server 2008近似于地理数据列上的.STWithin(),sql-server-2008,geospatial,Sql Server 2008,Geospatial,我正在使用SQL2008Geographydatatype进行一个项目,该项目涉及绘制一些区域。我需要检查以确保较小的区域完全在较大区域的范围内。使用Geometry数据类型,我可以简单地使用它 我会简单地创建多边形的几何体数据类型以及地理,但我不确定如果将映射到地理坐标的多边形用作简单的几何体类型,它是否会像预期的那样工作 有什么方法可以对地理数据类型执行类似于.STWithin()的操作吗?好吧,这种方法不如使用STWithin干净,但您可以使用“STDifference”来执行。我准备了一
Geography
datatype进行一个项目,该项目涉及绘制一些区域。我需要检查以确保较小的区域完全在较大区域的范围内。使用Geometry
数据类型,我可以简单地使用它
我会简单地创建多边形的几何体
数据类型以及地理
,但我不确定如果将映射到地理
坐标的多边形用作简单的几何体
类型,它是否会像预期的那样工作
有什么方法可以对地理数据类型执行类似于
.STWithin()
的操作吗?好吧,这种方法不如使用STWithin干净,但您可以使用“STDifference”来执行。我准备了一个小例子:
基本上有一个大长方形作为容器。还有两个矩形,“内部”和“外部”,其中第一个完全包含在“容器”中,第二个仅部分包含
这个想法只是为了检查孩子和家长之间的差异是否有任何点(技巧是在调用的方向上)
我不完全理解你的问题?您的两组多边形是否都已经是地理类型?您是否正在尝试将几何图形转换为地理类型或其他类型?我有地理数据,但需要执行与.STWithin()等效的操作。问题是STWithin()仅适用于几何体数据。
declare @container geography;
declare @inside geography;
declare @outside geography;
select @container = geography::STGeomFromText('POLYGON((-10 10, -10 0, 0 0, 0 10, -10 10))', 4326); -- large rectangle (container)
select @inside = geography::STGeomFromText('POLYGON((-9 9, -9 1, -1 1, -1 9, -9 9))', 4326); -- smaller rectangle (fully contained)
select @outside = geography::STGeomFromText('POLYGON((-9 9, -9 1, 2 1, 2 9, -9 9))', 4326); -- smaller rectangle (partially contained)
select @inside.STDifference(@container).STNumPoints() as [Points Outside Container] -- returns 0
select @outside.STDifference(@container).STNumPoints() as [Points Outside Container] -- returns > 0