空間参照系を作成するか、置き換えます。
{ 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 : 数値
inverse-flattening-ratio : 数値
grid-size : DOUBLE : 通常は 0 ~ 1
tolerance-distance : 数値
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 句が指定されていない場合は、デフォルトにより、ORGANIZATION 句または DEFINITION 句で定義された organization-srs-id に SRID が設定されます。デフォルトの SRID として使用できる organization-srs-id がどちらの句にも指定されていない場合は、エラーが返されます。
空間参照系が周知の座標系に基づいておらず、異なる測地線解釈がされている場合は、1000000000 (10 億) に周知の値を加えた値に srs-id 値を設定します。たとえば、測地線の空間参照系 WGS 84 (ID 4326) の平面解釈の SRID は、1000004326 になります。
SQL Anywhere で提供される周知の座標系に基づいていない空間参照系には、SRID 0 を除き 2000000000 (20 億) 以上の 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 で定義されるような、空間参照系の Well Known Text 構文の文字列です。たとえば、次のクエリは WGS 84 の定義を返します。
SELECT ST_SpatialRefSys::ST_FormatWKT( definition ) FROM ST_SPATIAL_REFERENCE_SYSTEMS WHERE srs_id=4326; |
Interactive SQL で戻り値をダブルクリックすると、読みやすい形で値が表示されます。
DEFINITION 句が指定されている場合は、definition-string が解析され、属性のデフォルト値の選択に使用されます。たとえば、definition-string に、organization-name と organization-srs-id を定義する AUTHORITY 要素が含められる場合があります。
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 system プロシージャーを使用します。
カスタム測定単位をデータベースに追加するには、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 system プロシージャーを使用します。
カスタム測定単位をデータベースに追加するには、CREATE SPATIAL UNIT OF MEASURE 文を使用します。
TYPE 句 この TYPE 句は、SRS で点と点を結ぶ線を解釈する方法を制御するために使用します。地理的空間参照系では、TYPE 句で ROUND EARTH (デフォルト) または PLANAR のいずれかを指定できます。ROUND EARTH モデルでは、点と点を結ぶ線が大楕円弧として解釈されます。地表面の 2 点を指定し、この 2 点および地球の中心と交差するように平面を選択したとします。この平面は地球と交差し、2 点を結ぶ線はこの交差に沿った最短距離になります。
2 点がまったく反対側にある場合、2 点および地球の中心と交差する単一でユニークな平面は存在しません。このような正反対の点を結ぶ線セグメントは無効であり、ROUND EARTH モデルでエラーになります。
ROUND EARTH モデルでは、地球が回転楕円体と見なされ、地球の湾曲に沿った線が選択されます。場合によっては、2 点間の線が x= 経度、y= 緯度の正距円筒図法における直線として解釈される平面モデルの使用が必要となることがあります。
次の例では、青い線は 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 座標には、関連する境界が必要です。地理的座標系の場合は、これらの設定を COORDINATE 句で上書きしないかぎり、デフォルトにより経度座標は -180 ~ 180 度の間、緯度座標は -90 ~ 90 の間になります。非地理的座標系の場合は、X 座標と Y 座標の両方について CREATE 文で境界を指定してください。
LATITUDE と LONGITUDE は、地理的座標系に使用されます。LATITUDE と LONGITUDE の境界は、指定がなければデフォルトにより地球全体になります。
ELLIPSOID 句 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 で計算に使用されるグリッドサイズを定義します。デフォルトでは、X と Y の空間の境界におけるすべての点で 12 有効桁数を格納できるように SQL Anywhere でグリッドサイズが選択されます。たとえば、空間参照系の境界が 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 句を使用して、点を比較するときに使用する精度を指定します。2 点間の距離が tolerance-distance より小さい場合、その 2 点は同じと見なされます。tolerance-distance を指定することにより、入力データまたは制限された内部精度の不正確さに対する許容度を制御できます。デフォルトでは、tolerance-distance は grid-size と等しくなるように設定されます。
0 に設定すると、2 点が完全に等しい場合にのみ同じであると見なされます。
曲面の空間参照系では、TOLERANCE を 0 に設定してください。
POLYGON FORMAT 句 SQL Anywhere では、まず、多角形を構成するリングの方向によって多角形が解釈されます。定義された点の順序でリングを移動した場合、多角形の内側がリングの左側になります。PLANAR と ROUND EARTH の空間参照系では、同じルールが適用されます。
SQL Anywhere で使用される解釈は一般的ですが、汎用的な解釈ではありません。正反対の方向を使用する製品もあれば、多角形の解釈にリングの方向を使用しない製品もあります。POLYGON FORMAT 句を使用して、必要に応じて入力データと一致する多角形の解釈を選択できます。次の値がサポートされています。
'CounterClockwise' 入力は SQL Anywhere の内部解釈に従います。リングの方向に従って、多角形の内側が左側になります。
'Clockwise' 入力は SQL Anywhere の内部解釈と反対になります。リングの方向に従って、多角形の内側が右側になります。
'EvenOdd' EvenOdd はデフォルトフォーマットです。EvenOdd を指定すると、リングの方向は無視され、代わりに多角形の内部はリングのネストによって決まります。外部のリングは最大のリングとなり、内部のリングはこのリングの内側の小さなリングとなります。斜線は、リング内の点から、すべてのリングを交差して外側に向かってトレースされます。交差するリングの数が偶数の場合は、外部リングです。奇数の場合は、内部リングです。
STORAGE FORMAT 句 空間データを外部フォーマット (WKT や WKB など) からデータベースに挿入するとき、空間操作のパフォーマンスとセマンティックを向上するため、データベースサーバーでデータが正規化されます。正規化された表現は、元の表現と異なる場合があります (多角形リングの方向や個々の座標に格納される精度など)。空間の等価性は正規化の後でも保持されますが、精度やリング方向など、元の入力特性の中には再現できないものもあります。場合によっては、元の表現を、正規化された表現とともに、または明示的に格納することがあります。
格納内容を制御するには、STORAGE FORMAT 句に続けて、次のいずれかの値を指定します。
'Internal' SQL Anywhere は正規化された表現のみを格納します。元の入力特性を再現する必要がない場合にこの値を指定します。これは、平面 (TYPE PLANAR) の空間参照系のデフォルトです。
Mobile Link を使用して空間データを同期する場合は、代わりに 「Mixed」 を指定してください。Mobile Link では同期時に等価性がテストされるため、データが元のフォーマットである必要があります。
'Original' SQL Anywhere は元の表現のみを格納します。元の入力特性を再現できますが、格納された値のすべての操作に対して正規化の手順を繰り返す必要があり、データの操作が遅くなる可能性があります。
'Mixed' SQL Anywhere で内部バージョンが格納されます。元のバージョンと異なる場合は、元のバージョンも格納されます。両方のバージョンを格納すると、元の表現特性を再現でき、格納された値の操作に対して正規化の手順を繰り返す必要はありません。ただし、ジオメトリごとに 2 つの表現が格納される可能性があるため、記憶領域の要件が大幅に増加します。
Mixed は、曲面の空間参照系 (TYPE ROUND EARTH) のデフォルトフォーマットです。
地理空間参照系では、LINEAR と ANGULAR の両方の測定単位を指定できます。非地理空間参照系では、LINEAR 測定単位のみを指定できます。LINEAR 測定単位は、点と領域間の距離を計算するために使用されます。ANGULAR 測定単位は、角度の緯度と経度を解釈する方法を示し、投影座標系の場合は NULL、地理的座標系の場合は NULL 以外になります。
操作から返される派生ジオメトリはすべて正規化されます。
SQL Anywhere 以外のデータベースで同期されるデータを操作する場合は、データの元の特性を保持できるようにするため、STORAGE FORMAT を 'Original' または 'Mixed' のいずれかに設定してください。
DBA 権限を持つか、SYS_SPATIAL_ADMIN_ROLE グループのメンバーである必要があります。
なし
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 で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |