鹰图GeoMedia的Access和SQL Server仓库读/写
注意:授权的选项阅读这种格式开始FME专业版。授权的选项写作这种格式开始FME数据库版本。
在GeoMedia的访问仓库读/写器模块提供FME可以访问鹰GeoMedia的Access和SQL Server仓库,其存储空间和属性数据。
注意:下面的信息既适用于GeoMedia的访问和GeoMedia的SQL Server的仓库阅读和写作,除非另有说明。
概观
GeoMedia的仓库存储几何和属性在数据库的表中列的形式特征。表格可以分为基于内容的两组。第一组包含有关该数据的格式,包括坐标系,表别名,修改日志,一个数据表列表,以及场电平索引的元信息。第二组是实际包含的几何特征及其属性表的列表。例如,单个的Microsoft Access. mdb要么.accdb
文件或单个SQL Server数据库中包含所有图像所需的信息。
为了从一个GeoMedia的仓库检索信息,开放式数据库连接(ODBC)源必须设置。根据源数据集格式,用户可以指定文件名,数据库名称或有效现有的ODBC数据源名称。如果源格式的类型是“GeoMedia的访问仓库”然后或者文件名或者可以使用DSN。如果源格式的类型是“GeoMedia的SQL服务器仓库”然后是一个数据库名称与相关联的参数或DSN可以使用。一旦GeoMedia的阅读器具有所有需要的信息时,它然后动态地创建一个临时ODBC源(当文件名或数据库名被供给)连接到该数据库。
点,线,区域,圆弧,和文本原始几何数据可以存储由GeoMedia的,以及复合材料(聚集体)中产生的表的那些类型的,边界(甜甜圈)和集合(聚集体)英寸一个给定的数据表保持的多个类型的几何形状可以通过读取器来读取,但只作家产生包含一个特定几何类型的每个,包括边界,复合材料或该类型的集合的表。其结果是,含有许多类型的特征中的一个表可被转换成多个表 - 一个用于由作家每种类型的特征。这是在GeoMedia的集合类型,这是非常普遍的任何原语类型的集合,并且具有在没有FME相应等效尤其如此。语法,类型简单地附加到表名称以下划线分隔(例如,tableOfManyTypes_area)。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_ReadersWriters/Skins/Default/Stylesheets/Images/transparent.gif)
用于确定空间表名称的键表称为GFeatures表格此表包含几何图形和属性数据表的名称列表。也可以从FieldLookup表,其中还包含每个几何表的特定字段。但是,在进行这两种查找之前,必须找到GFeatures和FieldLookup表。可以别名化表名,并且只有一个表必须具有常数名GAliasTable)。从这里,您可以查找正在查看的特定数据库中其他元数据表的给定名称。
GeoMedia仓库存放三维几何图形。几何表可以包含用户指定的任何属性组合,但必须包含包含实际几何对象的列。该列是一个blob类型,只是一个二进制数据编码块。每种几何图形blob类型都以一种独特的方式进行编码,并且在长度上有所不同。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_ReadersWriters/Skins/Default/Stylesheets/Images/transparent.gif)
GeoMedia可以以两种变体存储文本:纯文本和富文本。因为FME只支持纯文本,所以GeoMedia阅读器将把所有富文本转换为纯文本,并将文本大小设置为默认(1地面单位)或用户提供的地面单位大小TEXT_SIZE_GROUND_UNITS关键词。如果正在读取的文本是富文本格式,它还设置属性fm0_rtf_text_string到原始的格式化字符串。
GeoMedia编写器将首先检查属性是否存在fm0_rtf_text_string是集。如果设置了它,那么格式化的字符串将被用作富文本。如果属性未设置,则默认情况下GeoMedia writer将写入纯文本,除非纯文本关键字被设置为没有。在本例中,GeoMedia编写器将使用默认字体大小10或用户提供的字体大小编写富文本字体大小关键词。允许的字体大小在1到1024之间。此时,富文本的字体大小是惟一支持的书写样式。
读取是通过直接从Microsoft Access数据库或SQL Server数据库解析表和相应的二进制块来执行的。因此,几何访问仓库阅读器不需要安装几何来运行。然而,GeoMedia访问仓库写入器使用GeoMedia COM对象创建和写入表和blob,因此没有经过许可的GeoMedia安装就不能使用。GeoMedia SQL Server仓库读写器不需要安装GeoMedia,但是需要访问Microsoft SQL Server。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_ReadersWriters/Skins/Default/Stylesheets/Images/transparent.gif)
坐标系统支持读和写:在最好的情况下,可以读取一个包含定义的坐标系统的GeoMedia仓库,并将其转换为FME中支持的任何写入器格式,这些格式也支持坐标系统,具有相同的坐标系统名称。如果在FME中没有明确标识出具有完全相同的定义名称的坐标系,则仍然会传输该坐标系的属性,除了名称之外,生成一个完全相同的坐标系。反过来也一样:编写器可以解释任何给定的FME坐标系统,并将其转换为指定的GeoMedia坐标系统或等效的已创建的坐标系统。
其中一个问题涉及到坐标系统定义中使用的投影类型,GeoMedia将其称为基本存储类型。此类型可以设置为投影、地理或地理中心。投影类型是常见的情况,通常由FME处理,但值得注意的是,来自GeoMedia坐标系统的存储中心值被构建到坐标中,并在转换后的仓库中清除。所有地理类型在Lat/Long坐标系中表示,但在外观上保持相同。这里的存储中心值将表示如何将坐标转换为弧度,因为它们将以度为单位提供,这与GeoMedia本身处理地理类型的方式一致。最后,FME不支持地心类型。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_ReadersWriters/Skins/Default/Stylesheets/Images/transparent.gif)
读者和作者都支持几何图形中的本地空间索引。但是也有一些条件。读者将保留空间索引读取从GeoMedia的仓库和一个作家会自动创建新的索引基于数据(创建新的功能表时),只要符合下列条件:
该CREATE_SPATIAL_INDEX关键字未设置为没有,
该注册表项HKEY_LOCAL_MACHINE \ SOFTWARE \鹰\应用有一个叫做字符串值DefaultJCache它必须被设置为正确的版本GeoMedia的(例如“GeoMedia的Professional_04.00”),和
该autodt.ini文件必须包含坐标系原点与WGS84数据电流之间的有效数据的映射。(详情请参见该文件。它可能是位于一个文件夹,如C:\ Program Files文件\ GeoMedia的专业\程序\ cssruntm \ CFG \ autodt.ini)。
当附加到现有的仓库,空间索引的创建依赖于是否SpatialKeyFieldName属性设置为几何列和自身存在的列。如果属性是组和列存在,则空间密钥将被自动为几何创建的,而不管该CREATE_SPATIAL_INDEX关键字设置。
在大多数情况下,空间索引创建应自动为大多数已知发生的坐标系,因为默认为作家创造他们是是,和注册表项上面提到的安装GeoMedia的时候应该设置。另外,数据表可以由GeoMedia的访问仓库作家主要或次要索引被创建。
阅读器概述
该GeoMedia的仓库读者产生FME在Microsoft Access中保存的所有数据功能. mdb要么.accdb
文件或Microsoft SQL Server数据库中,与图像(覆盖)的数据的除外。读者打开源数据集的连接,并读取GAliasTable确定要使用正确的表名。接着,它读取的表GFeaturesTable类型,以确定包含几何数据表的列表。要读取的数据的表的该列表被指定的改性ID和DEF在映射文件或者在命令行上指定的行。然后,每个几何表被读出并且它的特征被处理并在一个时间返回的一个。当表耗尽,读者在列表中的下一个数据表开始,直到所有的表被读取。在表中读取可能会导致特定功能存在问题跳过,有时整个表,根据错误的严重性,但读者将始终尝试尽可能多的翻译尽可能地进行。
从GeoMedia的几何形状不完全映射到FME几何形状。这将对所得到的FME特点如下效果:
- 集合映射到每个FME的一个聚合特性fm0_type取决于集合中存在的类型。
- 多层复合材料可以被简化为更简单的第一层或第二层嵌套。
- 因为GeoMedia对其类型没有严格的要求,读者可以产生一些可以跳过的无意义特性,例如,包含点的行聚合。
作家简介
在GeoMedia的访问仓库作家写功能,通过识别Microsoft Access数据库数据集关键词。如果数据库不存在,一个空数据库文件被复制并用作模板。
该GeoMedia的SQL Server的仓库作家写到现有的Microsoft SQL Server数据库。
如果数据库不存在,翻译将被终止。如果在指定的数据库中不存在元数据表和/或数据表数据集指令,他们将创建提供用户有足够的权限来创建并写入表到数据库。
如果存在的元数据表,约新创建的数据表(一个或多个)的信息将被添加到它们。
作为特征由FME路由到GeoMedia的仓库作家,他们确定它们在层(特征类型)和写入功能,以相应的表中。只有一个的Microsoft Access数据库文件在单个FME会议期间写的,但许多表可以在数据库中创建。类似地,SQL Server写入器只写入一个数据库,但可能使用该数据库创建多个表。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_ReadersWriters/Skins/Default/Stylesheets/Images/transparent.gif)
该GeoMedia的SQL Server的仓库作家并不需要安装GeoMedia的。然而,对于成功的写作,用户必须创建和删除表,并插入和现有表中更新行足够的权限。所有元数据和要素表将被创建DBO所有权,这确保了与权限的任何用户可以访问这些表。一个表DBO所有权意味着它是由数据库管理员拥有。
当写GeoMedia的SQL Server的仓库,笔者将创造额外的四列存储的几何形状的范围。这些列GeoMedia的需要。这些列的名字是从表中的几何列被写入的名称派生。例如,如果几何列的名称几何,那么这四个派生列名会Geometry_xlo,Geometry_ylo,Geometry_xhi和Geometry_yhi。