创建或替换空间参照系。
{ CREATE [ OR REPLACE ] SPATIAL REFERENCE SYSTEM | CREATE SPATIAL REFERENCE SYSTEM IF NOT EXISTS } srs-name [ srs-attribute ] [ srs-attribute ... ]
srs-name:字符串
srs-attribute : IDENTIFIED BY srs-id | DEFINITION { definition-string | NULL } | ORGANIZATION { organization-name IDENTIFIED BY organization-srs-id | NULL } | TRANSFORM DEFINITION { transform-definition-string | NULL } | LINEAR UNIT OF MEASURE linear-unit-name | ANGULAR UNIT OF MEASURE { angular-unit-name | NULL } | TYPE { ROUND EARTH | PLANAR } | COORDINATE coordinate-name { UNBOUNDED | BETWEEN low-number AND high-number } | ELLIPSOID SEMI MAJOR AXIS semi-major-axis-length { SEMI MINOR AXIS semi-minor-axis-length | INVERSE FLATTENING inverse-flattening-ratio } | SNAP TO GRID { grid-size | DEFAULT } | TOLERANCE { tolerance-distance | DEFAULT } | POLYGON FORMAT polygon-format | STORAGE FORMAT storage-format
srs-id:整数
semi-major-axis-length:数字
semi-minor-axis-length:number
inverse-flattening-ratio:number
grid-size:DOUBLE:通常介于 0 和 1 之间
tolerance-distance:number
axis-order : { 'x/y/z/m' | 'long/lat/z/m' | 'lat/long/z/m' }
polygon-format : { 'CounterClockWise' | 'Clockwise' | 'EvenOdd' }
storage-format : { 'Internal' | 'Original' | 'Mixed' }
OR REPLACE 子句 通过指定 OR REPLACE,可在数据库中尚未存在空间参照系时创建空间参照系,而在数据库中存在空间参照系时替换空间参照系。如果尝试替换正在使用的空间参照系,则会返回错误。如果在未指定 OR REPLACE 子句的情况下尝试替换已存在于数据库中的空间参照系,也会返回错误。
CREATE SPATIAL REFERENCE IF NOT EXISTS 指定 CREATE SPATIAL REFERENCE IF NOT EXISTS 会检查是否已存在使用该名称的空间参照系。如果不存在,数据库服务器会创建空间参照系。如果确实存在,则不会继续执行任何操作且不会返回错误。
IDENTIFIED BY 子句 使用此子句指定用于空间参照系的 SRID(srs-id)。如果空间参照系由具有 organization-srs-id 的组织定义,则应该将 srs-id 设置为该值。
如果未指定 IDENTIFIED BY 子句,则 SRID 缺省为 ORGANIZATION 子句或 DEFINITION 子句定义的 organization-srs-id。如果两个子句都没有定义可以用作缺省 SRID 的 organization-srs-id,则会返回错误。
当空间参照系基于标准坐标系但有不同的测量单位时,可以将 srs-id 值设置成 1000000000(十亿)加上标准值。例如,测量空间参照系 WGS 84 (ID 4326) 的平面测量单位的 SRID 是 1000004326。
除 SRID 0 以外,由 SQL Anywhere 提供的非基于标准系统的空间参照系将指定 2000000000(二十亿)或更大的 SRID。从 2000000000 到 2147483647 的 SRID 值范围由 SQL Anywhere 保留,您不应创建该范围内的 SRID。
为减少选择到已由权威定义机构(例如 OGC)或其他供应商保留的 SRID 的可能性,不应选择范围 0 - 32767(由 EPSG 保留)或范围 2147483547 - 2147483647 之间的 SRID。
另外,由于 SRID 作为有符号 32 位整数值存储,所以数值不能超过 231-1 或 2147483647。
DEFINITION 子句 使用此子句设置或替换缺省坐标系设置。如果在 DEFINITION 子句以外的其它子句中设置了任何属性,则会使用其它子句中指定的值而忽略 DEFINITION 子句中指定的值。
definition-string 是由 SQL/MM 和 OGC 定义的空间参考系标准文本语法中的字符串。例如,以下查询会返回 WGS 84 的定义。
SELECT ST_SpatialRefSys::ST_FormatWKT( definition ) FROM ST_SPATIAL_REFERENCE_SYSTEMS WHERE srs_id=4326; |
在 Interactive SQL 中,如果双击返回值,则会显示该值更加易读的版本。
当指定 DEFINITION 子句时,会解析 definition-string 并使用它来选择属性的缺省值。例如,definition-string 可能包含 AUTHORITY 元素,该元素定义 organization-name 和 organization-srs-id。
definition-string 中的参数值由使用 SQL 语句子句显式设置的值替代。例如,如果指定 ORGANIZATION 子句,则它将替代 definition-string 中 ORGANIZATION 的值。
ORGANIZATION 子句 使用该子句指定有关创建空间参考系(新空间参考系基于此参考系)的组织的信息。organization-name 是创建该空间参考系的组织的名称;organization-srs-id 是该组织用于标识空间参考系的数字标识符。
TRANSFORM DEFINITION 子句
使用此子句指定用于转换空间参照系的说明。目前仅支持 PROJ.4 转换。例如,WGS 84 的 transform-definition-string 是 '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'
。
如果指定了不支持的转换定义,则返回错误。
在空间参照系之间转换数据时,由 ST_Transform 方法使用转换定义。即使未定义 transform-definition-string,仍可能使用某些转换。
LINEAR UNIT OF MEASURE 子句 使用此子句指定空间参照系的线性测量单位。指定的值必须与在 ST_UNITS_OF_MEASURE 系统视图中定义的线性测量单位相匹配。
如果未指定该子句,并且没有在 DEFINITION 子句中定义,则缺省值为 METRE。
要将预定义测量单位添加到数据库,可以使用 sa_install_feature 系统过程。
要将自定义测量单位添加到数据库,可以使用 CREATE SPATIAL UNIT OF MEASURE 语句。
虽然可以接受 METRE 和 METER 两种拼写方式,但首选符合 SQL/MM 标准的 METRE。
ANGULAR UNIT OF MEASURE 子句 使用此子句指定空间参照系的角度测量单位。指定的值必须与在 ST_UNITS_OF_MEASURE 系统表中定义的角度测量单位相匹配。
如果未指定此子句,并且没有在 DEFINITION 子句中定义,则缺省值对于地理空间参照系为 DEGREE,而对于非地理空间参照系为 NULL。
地理空间参照系的角度测量单位必须是非 NULL 值,而非地理空间参照系的角度测量单位必须是 NULL。
要将预定义测量单位添加到数据库,可以使用 sa_install_feature 系统过程。
要将自定义测量单位添加到数据库,可以使用 CREATE SPATIAL UNIT OF MEASURE 语句。
TYPE 子句 使用 TYPE 子句控制 SRS 如何解释两点之间的线。对于地理空间参照系,TYPE 子句可以指定 ROUND EARTH(缺省值)或 PLANAR。ROUND EARTH 模型将两点之间的线解释为大椭圆弧。给定地球表面上的两个点,则可以选择一个穿过这两点及地心的平面。该平面与地球相交,并且两点之间的线沿此贯穿面是最近的距离。
对于彼此直接相对的两个点,不存在与这两点及地心均相交的唯一平面。连接这些对映点的线段无效且在 ROUND EARTH 模型中会报错。
ROUND EARTH 模型将地球视为椭球体,并且选择符合地球曲率的线。在某些情况下,如果两点之间的线解释为 x=long、y=lat 的等矩形投影,可能需要使用平面模型。
在下面的示例中,蓝色线显示 ROUND EARTH 模型中使用的线解释,而红色线显示对应在 PLANAR 模型中使用的线解释。
PLANAR 模型可能用于匹配其它产品使用的解释。由于 ROUND EARTH 模型中存在不支持的方法(例如 ST_Area、ST_ConvexHull)和某些部分支持的方法(只有点几何之间支持 ST_Distance 方法)的限制,所以 PLANAR 模型仍然非常有用。ROUND EARTH 空间参照系不支持基于圆弧线串的几何。
对于非地理 SRS,类型必须是 PLANAR(并且如果没有指定 TYPE 子句且未指定 DEFINITION 子句或该子句使用非地理定义,则此类型为缺省类型)。
COORDINATE 子句 使用此子句指定空间参照系的维度的范围。coordinate-name 是空间参照系使用的坐标系的名称。对于非地理坐标系,coordinate-name 可以是 x、y 或 m。对于地理坐标系,coordinate-name 可以是 LATITUDE、LONGITUDE、z 或 m。
指定 UNBOUNDED 不设置维数的界限。使用 BETWEEN 子句设置上下界限。
X 和 Y 坐标必须有相关的界限。对于地理空间参照系,缺省情况下经度坐标的范围在 -180 到 180 度之间,纬度坐标的范围在 -90 到 90 度之间,除非使用 COORDINATE 子句替代这些设置。对于非地理空间参照系,CREATE 语句必须同时指定 X 和 Y 坐标的范围。
LATITUDE 和 LONGITUDE 用于地理坐标系统。如果没有指定,则 LATITUDE 和 LONGITUDE 的范围缺省为整个地球。
ELLIPSOID 子句 使用椭圆体子句指定在类型为 ROUND EARTH 的空间参照系中将地球表示为椭圆体时使用的值。如果 DEFINITION 子句存在,该子句可以指定椭圆体定义。如果指定 ELLIPSOID 子句,则它会替换此缺省椭圆体。
地球不是正球体,因为地球旋转造成展平而使地心到南北极的距离小于地心到赤道的距离。因此,地球建模为半长轴(地心到赤道的距离)值与半短轴(地心到南北极的距离)值不同的椭圆体。虽然使用半长轴与反转展平的方式定义椭圆体更为常见,但也可以使用半短轴指定的方法代替(例如,当使用正圆体近似地球时必须使用该方法)。半长轴和半短轴通过空间参照系的线性测量单位定义,且反转展平 (1/f) 是比值:
1/f = (semi-major-axis) / (semi-major-axis - semi-minor-axis) |
当计算地理空间参照系中的距离时,SQL Anywhere 使用椭圆体定义。
必须为地理空间参照系定义椭圆体(在 DEFINITION 子句或 ELLIPSOID 子句中定义),并且不得为非地理空间参照系指定该定义。
SNAP TO GRID 子句 对于平面地球(平面)空间参照系,使用 SNAP TO GRID 子句定义执行计算时 SQL Anywhere 使用的网格大小。缺省情况下,SQL Anywhere 会选择一个网格大小,以便可以在 X 和 Y 边界内的所有点存储 12 位有效数字。例如,如果空间参照系限定 X 在 -180 到 180 之间而 Y 在 -90 到 90 之间,则选择大小为 0.000000001 (1E-9) 的网格。
grid-size 必须足够大,以便可以使用与边界空间内的所有点相同的精度表示对齐到网格的点。如果 grid-size 太小,则服务器会报告错误。
当设置为 0 时,不会执行对齐网格。
对于球形地球空间参照系,SNAP TO GRID 必须设置为 0。
指定 SNAP TO GRID DEFAULT 将网格大小设置为数据库服务器使用的缺省值。
TOLERANCE 子句 对于平面地球(平面)空间参照系,使用 TOLERANCE 子句指定比较点时使用的精度。如果两点之间的距离小于 tolerance-distance,则这两点视为相等。设置 tolerance-distance 可控制在输入数据中或有限制的内部精度中不精确程度的公差。缺省情况下,tolerance-distance 设置为等于 grid-size。
设置为 0 时,两点必须完全相等才会视为相等。
对于球形地球空间参照系,TOLERANCE 必须设置为 0。
POLYGON FORMAT 子句 在内部,SQL Anywhere 依据几何组分环的方向解释多边形。当按照定义的点顺序经过圆环时,多边形的内侧在环的左侧。PLANAR 和 ROUND EARTH 空间参照系也应用相同的规则。
SQL Anywhere 使用的解释是常见但不通用的解释。有些产品使用完全相反的方向,而有些产品则不依赖环的方向解释多边形。POLYGON FORMAT 子句可用于根据需要选择匹配输入数据的多边形解释。支持以下值:
STORAGE FORMAT 子句 当从外部格式(例如 WKT 或 WKB)将空间数据插入数据库时,数据库服务器将规范化数据以改进空间操作的性能和语义。规范化表示可能与原始表示不同(例如多边形环的方向或单个坐标中的存储精度)。由于空间相等性在规范化后维护,所以一些原始输入特性可能无法重复,例如精度和环的方向。在一些情况中,您可能希望以专用方式或以规范化表示的附属方式存储原始表示。
要控制存储的内容,可以指定 STORAGE FORMAT 子句并跟以下值之一:
'Internal' SQL Anywhere 仅存储规范化表示。当不需要再现原始输入特性时可指定此值。这是平面空间参照系 (TYPE PLANAR) 的缺省值。
如果使用 MobiLink 同步空间数据,应指定 Mixed。同步时,MobiLink 会测试是否相等,这需要数据保持原始格式。
'Original' SQL Anywhere 仅存储原始表示。可以再现原始输入特性,但对存储值执行的所有操作必须重复规范化步骤,这可能减慢数据的操作速度。
'Mixed' SQL Anywhere 可存储内部版本。如果内部版本与原始版本不同,则也会存储原始版本。由于同时存储这两个版本,可以再现原始表示特性,而且对存储值执行的操作不需要重复规范化步骤。但是,由于每个几何都可能存储两个表示,所以存储需求可能会显著增加。
Mixed 是球形地球空间参照系 (TYPE ROUND EARTH) 的缺省格式。
对于地理空间参照系,可以同时指定 LINEAR 和 ANGULAR 测量单位;而对于非地理空间参照系,只能指定 LINEAR 测量单位。LINEAR 测量单位用于计算点和区域之间的距离。ANGULAR 测量单位表明如何解释角度经度/纬度,而其对于投影坐标系为 NULL,地理坐标系为非 NULL。
操作返回的所有派生几何都已经过规划化。
当使用与非 SQL Anywhere 数据库同步的数据时,STORAGE FORMAT 应设置为 'Original' 或 'Mixed',以便保留数据的原始特性。
您必须具有 MANAGE ANY SPATIAL OBJECT 或 CREATE ANY OBJECT 系统特权。
无
SQL/2008 服务商扩充。
以下示例创建一个名为 mySpatialRS 的空间参照系:
CREATE SPATIAL REFERENCE SYSTEM "mySpatialRS" IDENTIFIED BY 1000026980 LINEAR UNIT OF MEASURE "metre" TYPE PLANAR COORDINATE X BETWEEN 171266.736269555 AND 831044.757769222 COORDINATE Y BETWEEN 524881.608973277 AND 691571.125115319 DEFINITION 'PROJCS["NAD83 / Kentucky South", GEOGCS["NAD83", DATUM["North_American_Datum_1983", SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]], AUTHORITY["EPSG","6269"]], PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]], UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]], AUTHORITY["EPSG","4269"]], UNIT["metre",1,AUTHORITY["EPSG","9001"]], PROJECTION["Lambert_Conformal_Conic_2SP"], PARAMETER["standard_parallel_1",37.93333333333333], PARAMETER["standard_parallel_2",36.73333333333333], PARAMETER["latitude_of_origin",36.33333333333334], PARAMETER["central_meridian",-85.75], PARAMETER["false_easting",500000], PARAMETER["false_northing",500000], AUTHORITY["EPSG","26980"], AXIS["X",EAST], AXIS["Y",NORTH]]' TRANSFORM DEFINITION '+proj=lcc +lat_1=37.93333333333333+lat_2=36.73333333333333+lat_0=36.33333333333334+lon_0=-85.75+x_0=500000+y_0=500000+ellps=GRS80+datum=NAD83+units=m+no_defs'; |
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |