ArcGIS 和 Microsoft 空间类型

地理数据库支持使用 Microsoft 的几何类型和地理类型存储矢量数据。SQL Server 中提供这些类型;因此无需单独安装即可使用。如果要使用 SQL 访问空间数据,可以使用这些数据类型。

Microsoft 几何类型与现有 GIS 空间数据类型相似:使用任意平面(如已定义的投影)内的坐标。

Microsoft 地理类型用于椭球体上的数据,该数据与纬度和经度坐标一同存储。

这两种类型的空间计算方式有所不同。有关 Microsoft 空间类型的详细信息,请参阅 SQL Server 文档。

使用配置关键字指定 Microsoft 空间类型

默认情况下,SQL Server 中的地理数据库使用 Microsoft 几何类型。如果要在预置 SQL Server 数据库中的地理数据库中使用 Microsoft 几何类型进行存储,必须 (1) 将 SDE_dbtune 表中 DEFAULTS 配置关键字下的 GEOMETRY_STORAGE 参数更改为 GEOGRAPHY,或 (2) 指定在创建要素类时将 GEOMETRY_STORAGE 参数指定为 GEOGRAPHY 的配置关键字。

如果多数用户在多数时候都使用地理类型存储数据,则只应更改 DEFAULTS 关键字下的 GEOMETRY_STORAGE 参数。如果只有部分数据将以地理类型进行存储,则应在创建要素类时指定一个单独的关键字。系统提供的关键字为:GEOGRAPHY,或者您也可创建自己的自定义关键字。

将现有空间表注册到地理数据库

如果您使用第三方应用程序或 SQL 创建了包含 Microsoft 几何或地理列的表,则可以将这些表注册到该地理数据库来利用地理数据库功能,例如关系类、拓扑、几何网络、地籍结构、terrain 或方案,或者使地理数据库具有子类型、默认值、域或验证规则。为此,这些表必须满足某些先决条件:

有关如何通过 ArcGIS for Desktop 将表注册到地理数据库的说明,请参阅将表注册到地理数据库

创建空间索引

SQL Server 要求表具有一个主键才可以在表中创建空间索引。

...在 ArcGIS 中

使用 ArcGIS 创建包含几何列或地理列的要素类时,默认情况下,ArcGIS 会针对业务表的行 ID (ObjectID) 列创建聚类主键,然后基于为创建要素类时使用的 SDE_dbtune 表中的配置关键字的 B_MS_SPINDEX 参数设置的值构建空间索引。将要素类注册为版本后,会在“添加”表的行 ID 和状态 ID 列上创建聚集主键,然后基于为创建要素类时使用的配置关键字中的 A_MS_SPINDEX 设置的值构建空间索引。这两个参数的默认值如下:

GRIDS = (MEDIUM, MEDIUM, MEDIUM, MEDIUM), CELLS_PER_OBJECT = 16

有关在 SDE_dbtune 表中设置值的详细信息,请参阅修改 DBTUNE 表的内容

同样,通过 ArcGIS 使用几何或地理空间列创建要素类时,会将要素类的边界框计算为要建立索引的数据的范围。将不会对位于此范围以外的任何要素创建索引,但仍然会在空间查询中返回此类要素。如果未设置要素类范围,则会将该要素类的空间参考系统的最大坐标范围作为边界框。只要将图层从只加载 I/O 模式转换到正常 I/O 模式,就会使用最新的范围对边界框进行调整。或者,您也可以根据要素类属性 对话框的要素范围选项卡设置或重新计算要素类范围。

...ArcGIS 外部

对于在 ArcGIS 外部创建的空间表(如,那些使用 SQL 创建的表),必须为此类表创建主键并使用 SQL 创建空间索引。以下是用于对包含几何或地理类型列的表创建空间索引的 SQL 语法:

CREATE SPATIAL INDEX <index_name>
ON <table> (<spatial column>)
USING GEOMETRY_GRID
WITH (
BOUNDING_BOX = minx,miny,maxx,maxy),
GRIDS = (low|medium|high, low|medium|high, low|medium|high, low|medium|high), 
CELLS_PER_OBJECT = n,
<other regular btree index options like filegroups, fill factors, etc>
)

有关在企业级地理数据库中使用 SQL Server 地理的已知限制条件

以下是将 SQL Server 地理数据存储在企业级地理数据库中时所需牢记的注意事项的列表:

9/15/2013