PostgreSQL 地理数据库中的定位器
定位器是包含用于进行地理编码的参考数据快照的数据集。所含有的信息包括:如何使地址标准化、搜索地址匹配项的方法以及发现匹配项时返回的信息类型。要了解有关如何创建和使用定位器的详细信息,请参阅定义地址定位器组件及相关主题。
ArcGIS for Desktop 中的定位器
如果已在地理数据库中创建过地址定位器,那么它便会在目录树中显示为下方图标:
在 PostgreSQL 中,地理数据库的地址定位器名称包含数据库名称、定位器所有者的名称以及定位器自身的名称。
例如,如果定位器 city_streets 由用户 jake 所有,并且所在的地理数据库名为 infrastructure,则它将以 infrastructure.jake.city_streets 形式列出在目录树中。
PostgreSQL 数据库中的定位器
创建定位器的同时,系统会在地理数据库中创建相应的定位器数据集表。定位器数据集表中将包含定位器参考数据的快照,它包括地理编码所需的全部属性和 shape 信息,这些信息以便于快速搜索和检索的格式存储。
定位器创建后,不会使用原始参考数据而是参考定位器数据集表。
定位器数据集表的名称与定位器名称相同,只是加了 _lox 后缀。如果定位器名称中包含空格,则在定位器数据集表名称中应以下划线代替空格。
定位器数据集表的作用是,将一系列二进制数据块(与文件类似)保留在数据库中。
您不应该修改定位器数据集表中的内容。
<locator_name>_lox
创建定位器时,将从参考要素类中读取与地理编码相关的属性,然后以一种高效的专有二进制结构组织数据,最后在定位器数据集表中存储参考数据的快照。这样,定位器创建后,便无需使用原始参考数据,而只需参考定位器数据集表。按照 EmbedGeocodingRules 定位器属性所指定的那样,定位器也可以将地理编码规则文件的副本存储在地理编码索引表中。
定位器数据集表的作用是,将一系列二进制数据块(与文件类似)保留在数据库中。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
fileid |
integer |
内部地理编码索引数据块的标识符 | |
segid |
integer |
内部地理编码索引数据块子部分(片段)的标识符 | |
data |
bytea |
内部地理编码索引数据块子部分(片段)的二进制数据 |
下方示意图显示了定位器所涉及到的数据库管理系统 (DBMS) 中的表。在本例中,CITY_STREETS_LOX 表即为定位器数据集。
- 业务表
- streets 是定位器所依据的要素类的业务表名称。创建或重新构建定位器时才会用到业务表。搜索地址时,定位器仅使用定位器数据集表中的数据。如果要对业务表进行更改,并希望定位器反映出这些更改,则必须使用 ArcCatalog 重新构建定位器。
- sde_locators 表
- 将定位器添加到企业级、工作组或 Desktop 地理数据库中时,会在 sde_locators 表中添加一行。定位器表中的每一行均用于定义定位器或定位器样式。
- sde_metadata 表
- 将定位器添加到企业级、工作组或 Desktop 地理数据库中时,会在 sde_metadata 表中为定位器的每个属性都添加一行。sde_metadata 表中的每一行定义定位器的一个属性。object_name 列是用来关联定位器与其属性的 sde_locators 表中名称列的外键。
XML 工作空间文档中的定位器
目前,XML 文档不支持定位器。因此,如果您的地理数据库中已存在定位器,并且您将地理数据库导出为 XML 工作空间文档,然后将 XML 工作空间文档导入另一个数据库,则必须重新创建定位器。