Esri 建议在创建要素类时使用 ArcGIS Desktop 工具创建空间参考。 对此,ArcGIS 提供了一整套工具,并且将计算 x、y、z 和 m 单位及偏移以维持高精度数据。 不过,Esri 也了解到某些用户和应用程序开发者可能想要用其他方式创建空间参考。 下文提供了使用 SQL 创建空间参考的示例。
空间参考系统在其构建过程中被分配给几何。 空间参考系统必须存在于空间参考表中。 同一列中的所有几何都必须具有相同的空间参考系。
在 IBM Db2 中创建空间参考
在 Db2 中,用于创建空间参考的命令是 db2se create_srs(或调用 db2se.ST_create_srs 存储过程)。 下例创建了一个比例因子为 10 并且使用特定坐标系的空间参考记录:
db2se create_srs mydb -srsName \"mysrs\"
-srsID 310000 -xScale 10 -coordsysName \"GCS_North_American_1983\"
确保用唯一值替换 srsID (310000)。 有关使用此命令的更多信息,请参阅 IBM Knowledge Center。
在 IBM Informix 中创建空间参考
Informix 用户可使用与下例类似的 INSERT 语句在 spatial_references 表中创建空间参考记录。 确保用唯一值替换 SRID (310000)。
INSERT INTO sde.spatial_references (srid, description,
auth_name, auth_srid, falsex, falsey, xyunits, falsez,
zunits, falsem, munits, srtext, object_flags,
xycluster_tol, zcluster_tol, mcluster_tol)
VALUES (
310000,
'GCS_North_American_1983',
NULL,
NULL,
-400,
-400,
1000000000,
-100000,
100000,
-100000,
10000,
'GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]',
1,
0,
0,
0
);
有关在 Informix 中创建空间参考的更多信息,请参阅 IBM Knowledge Center。
在 Oracle 中创建空间参考
在 Oracle 中为使用空间类型的表创建空间参考的操作通过与下例类似的 INSERT 语句执行。 ST_Geometry 函数将用唯一值替换 NULL SRID 值。
INSERT INTO SDE.ST_SPATIAL_REFERENCES (SR_NAME, SRID,
X_OFFSET, Y_OFFSET, XYUNITS, Z_OFFSET, Z_SCALE, M_OFFSET,
M_SCALE, MIN_X, MAX_X, MIN_Y, MAX_Y, MIN_Z, MAX_Z, MIN_M,
MAX_M, CS_ID, CS_NAME, CS_TYPE, ORGANIZATION,
ORG_COORDSYS_ID, DEFINITION, DESCRIPTION)
VALUES (
'GCS_North_American_1983',
NULL,
-400,
-400,
1000000000,
-100000,
100000,
-100000,
100000,
9.999E35,
-9.999E35,
9.999E35,
-9.999E35,
9.999E35,
-9.999E35,
9.999E35,
-9.999E35,
4269,
'GCS_North_American_1983',
'PROJECTED',
NULL,
NULL,
'GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]',
'Custom SpRef'
);
在 PostgreSQL 中创建空间参考
要在 PostgreSQL 中为空间类型创建空间参考系统,请使用与下例类似的 INSERT 语句。 确保用唯一值替换 SRID (310000)。
INSERT INTO sde.st_spatial_references (sr_name, srid,
x_offset, y_offset, xyunits, z_offset, z_scale, m_offset,
m_scale, min_x, max_x, min_y, max_y, min_z, max_z, min_m,
max_m, cs_id, cs_name, cs_type, organization,
org_coordsys_id, definition, description)
VALUES (
'GCS_North_American_1983',
310000,
-400,
-400,
1000000000,
-100000,
100000,
-100000,
100000,
9.999E35,
-9.999E35,
9.999E35,
-9.999E35,
9.999E35,
-9.999E35,
9.999E35,
-9.999E35,
4269,
'GCS_North_American_1983',
'PROJECTED',
NULL,
NULL,
'GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]',
'Custom SpRef'
);
在 SQLite 中创建空间参考
使用与下例类似的 INSERT 语句向使用 ST_Geometry 的 SQLite 数据库中的 st_aux_spatial_reference_systems 表添加空间参考。 确保用唯一值替换 SRID (310000)。
INSERT INTO st_aux_spatial_reference_systems (srid, auth_name, auth_srid,
sr_text, falsex, falsey, xyunits, falsez, zunits, falsem,
munits, xycluster_tol, zcluster_tol, mcluster_tol)
VALUES (
310000,
NULL,
4269,
'GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]',
-400,
-400,
1000000000,
-100000,
1.0,
-100000,
1.0,
0,
0,
0
);