创建表或向数据库中的表添加新列时,列将创建为特定的数据类型。数据类型是用于确定数据值自身以及可对数据执行哪些操作的分类,也表示列中数据在数据库中的存储方式。
从 ArcGIS 访问数据库表时,可以使用特定数据类型。在目录树中通过“数据库连接”节点或在 ArcMap 中通过查询图层访问数据库表时,ArcGIS 会过滤掉任何不支持的数据类型。如果直接访问数据库表,则不支持的数据类型不会显示在 ArcGIS 界面,您也无法通过 ArcGIS 编辑这些数据。同样,复制包含不受 ArcGIS 支持的数据类型的表时,将只复制支持的数据类型;将表粘贴到另一个数据库或地理数据库时,不会存在不支持的数据类型列。
在 ArcGIS 中创建要素类或表时,或者使用 ArcGIS 向现有表或要素类添加列时,可向字段分配 12 种可能的 ArcGIS 数据类型。未与这些类型对应的数据库数据类型不能直接在 ArcGIS 客户端应用程序中使用。
第一列列出了 ArcGIS 数据类型。第二列列出了将在数据库中创建的 SQL Server 数据类型。第三列显示了在 ArcGIS 中查看时哪些其他 SQL Server 数据类型(如果有)会映射到 ArcGIS 数据类型。
| ArcGIS 数据类型 | 创建的 SQL Server 数据类型 | 可以查看的其他 SQL Server 数据类型 | 注意事项 |
|---|---|---|---|
BLOB | VARBINARY(MAX) | BINARY、IMAGE、TIMESTAMP、VARBINARY(n) | |
DATE | DATETIME2(7) | DATETIME2(n)、DATETIME、SMALLDATETIME | |
DOUBLE | NUMERIC(p,s) | DECIMAL、FLOAT、MONEY、SMALLMONEY | ArcGIS 中指定的精度和小数位数可以影响在数据库中创建的结果数据类型。有关详细信息,请参阅 ArcGIS 字段数据类型。 |
FLOAT | NUMERIC(p,s) | REAL | ArcGIS 中指定的精度和小数位数可以影响在数据库中创建的结果数据类型。有关详细信息,请参阅 ArcGIS 字段数据类型。 |
GEOMETRY | INT, GEOMETRY, GEOGRAPHY | 在企业级地理数据集中,创建的 SQL Server 数据类型取决于创建要素类时使用的配置关键字的 GEOMETRY_STORAGE 参数。SDEBINARY = INT;GEOMETRY = GEOMETRY 列;GEOGRAPHY = GEOGRAPHY 列。 在桌面和工作组级地理数据库中,通常使用 GEOMETRY 类型。 在数据库中,指定创建要素类时使用 GEOMETRY 还是 GEOGRAPHY。 ArcGIS 不支持以下几何子类型:
| |
GLOBAL ID | UNIQUEIDENTIFIER | 仅地理数据库支持。 | |
GUID | UNIQUEIDENTIFIER | ||
LONG INTEGER | INT | ||
RASTER | INT, ST_RASTER | 仅地理数据库支持栅格数据类型。 在桌面和工作组级地理数据库中,通常作为 INT 数据类型来创建栅格。 在企业级地理数据库中,创建的 SQL Server 数据类型取决于创建栅格列时使用的配置关键字。如果关键字的 RASTER_STORAGE 参数设置为 BINARY,则会创建 INT 列;如果该参数设置为 ST_RASTER,则会创建 ST_Raster 列。 如果要使用 ST_Raster,必须先在企业级地理数据库中对其进行单独配置。有关说明,请参阅在 SQL Server 中安装 ST_Raster 类型。 | |
OBJECT ID | INT(4) when created in an enterprise geodatabase INTEGER with IDENTITY property when created in a database | ArcGIS 类型 ObjectID 是表(或要素类)的注册行 ID 列。每个表只能存在一个 ObjectID。 | |
SHORT INTEGER | SMALLINT | BIT、TINYINT | |
TEXT | VARCHAR, NVARCHAR, VARCHAR(MAX), NVARCHAR(MAX) | CHAR、NCHAR |
文本数据类型
如果在 SQL Server 数据库中创建 VARCHAR 或 VARCHAR(MAX) 字段,那么在 ArcGIS 中查看时,该字段将映射至 ArcGIS TEXT 数据类型。如果在 ArcGIS 中的 SQL Server 数据库中创建了一个 TEXT 字段,则会使用 NVARCHAR 或 NVARCHAR(MAX)。
在企业级地理数据库中,如果 UNICODE_STRING 配置参数设置为 FALSE,并且文本字段是 7,999 个字符或更少,则使用 VARCHAR。
如果 UNICODE_STRING 配置参数设置为 FALSE,并且文本字段是 8,000 个字符或更多,则使用 VARCHAR(MAX)。
如果 UNICODE_STRING 配置参数设置为 TRUE,并且文本字段是 3,999 个字符,则使用 NVARCHAR。
如果 UNICODE_STRING 配置参数设置为 TRUE,并且文本字段是 4,000 个字符或更多,则使用 NVARCHAR(MAX)。
几何数据类型
如表中所示,ArcGIS 可在 SQL Server 中创建并使用三种几何数据类型:压缩二进制、SQL Server 几何和 SQL Server 地理。有关通过 ArcGIS 使用几何或地理的详细信息,请参阅 SQL Server 空间类型和 ArcGIS。
压缩二进制
Esri 压缩二进制存储类型使用二进制存储机制存储要素几何。压缩二进制几何存储仅可用在地理数据库中。压缩二进制要素类由三个表组成:业务表、要素表和空间索引表。
验证几何后,客户端应用程序将压缩该几何并将其发送到地理数据库,此几何以压缩二进制格式存储在此地理数据库的要素表(或 F 表)中。在客户端上压缩几何可避免数据库服务器执行此项任务,从而降低发送几何所需的传输时间。这还能使存储数据所需的空间降低 40% 之多,从而可以有效地存储和检索空间数据。
业务表包含属性和空间列。空间列是要素表和空间索引表的键。
业务表和要素表之间的关系通过空间列和要素 ID (FID) 列来管理。此键由 ArcGIS 维护,并且是唯一的。
SQL Server 几何
以下内容是对几何类型进行的总结。有关几何类型及其使用方式的详细信息,请参阅 Microsoft SQL Server 文档。
- 几何类型支持所有 X/Y 坐标系。
- 平面(平地,欧氏)计算和折点间的直线插值用于渲染和空间比较。
- 符合 SQL 规范(版本 1.1.9)的开放地理空间联盟 (OGC) 简单要素,并符合 ISO 标准 SQL MM。
SQL Server 地理
以下内容是对地理类型进行的总结。有关地理类型及其使用方式的详细信息,请参阅 Microsoft SQL Server 文档。
- 地理类型支持许多标准地理坐标系,例如 GPS 经度和纬度。
Microsoft 要求使用 SQL Server 数据字典中定义的 SRID 和地理坐标系。
- 椭圆体(圆形地球)模型和折点间的大椭圆线段插值用于计算和空间比较。
- 使用全球(椭圆体)图层范围。
数据坐标不能超过全球范围。
- 在 SQL Server 2008 和 2008 R2 中,要素必须小于单个半球。
- 如果使用 SQL Server 2008 或 2008 R2,则当要素与 ArcGIS 一同使用时,要素不能有 z 坐标或 m 坐标。
栅格数据类型
SQL Server 地理数据库中使用的栅格类型默认为整型。如果想要使用 SQL 访问地理数据库栅格,您可以将 SQL Server 中的企业级地理数据库配置为使用 ST_Raster 类型。
有关如何定义 ST_Raster 对象类型的详细信息,请参阅 ST_Raster 数据类型。