孤独的猫

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

SQL Server 2008 及更高版本支持空间数据。这包括对平面空间数据类型 geometry 的支持,该数据类型支持欧几里得坐标系统中的几何数据(点、线和多边形)。geography 数据类型表示地球表面某区域上的地理对象,如一片陆地。geography 列的空间索引会将地理数据映射到二维非欧几里得空间。

空间索引是对包含空间数据的表列(“空间列”)定义的。每个空间索引指向一个有限空间。例如,geometry 列的索引指向平面上用户指定的矩形区域。

Create Table ZipCodes

(

  ID INT PRIMARY KEY,  ZipGeometry GEOMETRY NOT NULL,  

     ZipAsText AS ZipGeometry.STAsText()

)

  

DECLARE @ZipData GEOMETRY

SET @ZipData=geometry::STGeomFromText('POLYGON((1 10,15 15,30 13,29 4,7 1,1 10))',0)

insert into ZipCodes Values('1',@ZipData)

DECLARE @ZipData GEOMETRY

SET @ZipData=(SELECT ZipGeometry from ZipCodes where ID=1)

SELECT @ZipData.STArea() as 'Area of zipcode'

 

如果该城市现在10,10建一所中学,并想确定该点所在邮政编码怎么办?以下代码用STWithin()函数来火大这个问题:

DECLARE @HighSchool GEOMETRY

SET @HighSchool=GEOMETRY::STGeomFromText('POINT(10,10)',0);

IF (@HighSchool.STWithin(@ZipData)=1)  

  SELECT 'School is within ZipCode'

ELSE  

  SELECT 'School is outside of ZipCode'

posted on 2012-11-10 19:28  孤独的猫  阅读(585)  评论(0编辑  收藏  举报