kaywang 发表于 2015-6-29 11:46:07

SQL Server 2008 空间数据存储摘抄(SRID 点 MultiPoint LineString MultiLineString 多边形 MultiP

  本文摘抄自SQL 2008 帮助阅读笔记
  有两种类型的空间数据。geometry 数据类型支持平面或欧几里得(平面球)数据。geometry 数据类型符合适用于 SQL 规范的开放地理空间联盟 (OGC) 简单特征 1.1.0 版。
  另外,SQL Server 支持 geography 数据类型,该数据类型可存储诸如 GPS 纬度和经度坐标之类的椭圆体(圆球)数据。
  geometry 和 geography 数据类型支持十一种空间数据对象或实例类型。但是,这些实例类型中只有七种“可实例化”;可以在数据库中创建并使用这些实例(或可对其进行实例化)。这些实例的某些属性由其父级数据类型派生而来,使其在 GeometryCollection 中区分为 Points、 LineStrings、Polygons 或多个 geometry 或 geography 实例。
  下图描述了 geometry 和 geography 数据类型所基于的 geometry 层次结构。geometry 和 geography 的可实例化类型以蓝色表示。

  如图所示,geometry 和 geography 数据类型的七种可实例化类型为 Point、MultiPoint、LineString、MultiLineString、Polygon、MultiPolygon 和 GeometryCollection。只要特定实例的格式正确,即使未显式定义该实例,geometry 和 geography 类型也可识别该实例。例如,如果您使用 STPointFromText() 方法显式定义了一个 Point 实例,只要方法输入的格式正确,geometry 和 geography 便将该实例识别为 Point。如果您使用 STGeomFromText() 方法定义了相同的实例,则 geometry 和 geography 数据类型都将该实例识别为 Point。
  
  
  SRID (空间引用标识符)
  每个空间实例都有一个空间引用标识符 (SRID)。
  SRID 对应于基于特定椭圆体的空间引用系统,可用于平面球体映射或圆球映射。
  空间列可包含具有不同 SRID 的对象。
  然而,在使用 SQL Server 空间数据方法对数据执行操作时,仅可使用具有相同 SRID 的空间实例。
  从两个空间数据实例派生的任何空间方法的结果仅在这两个实例具有相同的 SRID(该 SRID 基于相同的用于确定实例坐标的度量单位、数据和投影)时才有效。SRID 最常见的度量单位为米或平方米。
  如果两个空间实例的 SRID 不相同,则对这两个实例使用 geometry 或 geography 数据类型方法后的结果将返回 NULL。例如,若要以下谓词返回非 NULL 结果,两个 geometry 实例(geometry1 和 geometry2)必须具有相同的 SRID:
  geometry1.STIntersects(geometry2) = 1
  空间引用标识系统是由 European Petroleum Survey Group (EPSG) standard(欧洲石油测绘组 (EPSG) 标准)定义的,它是为绘图、测绘以及大地测量数据存储而开发的一组标准。该标准归石油天然气生产商 (OGP) 测绘和定位委员会所有。

几何图形实例默认 SRID 为零
  SQL Server 中 geometry 实例的默认 SRID 为 0。利用 geometry 空间数据,执行计算是不需要空间实例的指定 SRID 的;因此,实例可驻留在未定义的平面空间。若要在 geometry 数据类型方法的计算中指明未定义的平面空间,SQL Server 数据库引擎 使用 SRID 0。

地域实例必须使用支持的 SRID
  SQL Server 支持基于 EPSG 标准的 SRID。必须使用 geography 实例的支持,SQL Server 的 SRID 执行计算或将方法用于地域空间数据。
  SRID 必须与 sys.spatial_reference_systems 目录视图中显示的 SRID 中的一个匹配。
  如前所述,在使用 geography 数据类型对空间数据执行计算时,结果将取决于在创建数据时使用的是哪个椭圆体,因为为每个椭圆体都分配了一个特定空间引用标识符 (SRID)。
  对 geography 实例使用方法时,SQL Server 使用等于 4326 的默认 SRID,它将映射到 WGS 84 空间引用系统。如果要使用 WGS 84(或 SRID 4326)之外的某个空间引用系统中的数据,您需要确定地域空间数据的特定 SRID。
  
  点
  在 SQL Server 空间数据中,Point 是表示单个位置的零维对象,可能包含 Z(仰角)和 M(度量)值。


  下面的示例创建一个表示点 (3, 4) 的 geometry Point 实例,该实例的 SRID 为 0。

DECLARE @g geometry;
SET @g = geometry::STGeomFromText('POINT (3 4)', 0);

  下一个示例创建一个表示点 (3, 4) 的 geometry Point 实例,该实例的 Z(仰角)值为 7,M(度量)值为 2.5,默认 SRID 为 0。

DECLARE @g geometry;
SET @g = geometry::Parse('POINT(3 4 7 2.5)');

  最后一个示例返回 geometry Point 实例的 X、Y、Z 和 M 值。

SELECT @g.STX;
SELECT @g.STY;
SELECT @g.Z;
SELECT @g.M;

  Z 和 M 值可以显式指定为 NULL,如下例所示。

DECLARE @g geometry;
SET @g = geometry::Parse('POINT(3 4 NULL NULL)');

  C#

SqlGeometry centPoint = (SqlGeometry)dr.GetValue(1); // 中心点或点SQlGeometry类型
//实际上下面的代码执行一次就跳出了
// 随机取了第一个点为中心点
for (int j = 1; j
页: [1]
查看完整版本: SQL Server 2008 空间数据存储摘抄(SRID 点 MultiPoint LineString MultiLineString 多边形 MultiP