地理数据文件(GDF)阅读器/写作
许可选项出于此格式,以FME Professional Edition开头。
地理数据文件(GDF)阅读器/Writer允许FME读写由欧洲标准化委员会建立的中欧标准化(CEN)标准格式的文件。本章假定您熟悉这种格式。
有关其他背景信息,请参阅
http://www.ertico.com/en/about_ertico/links/gdf_-_geographic_data_files.htm.
概述
地理数据文件(GDF)的CEN标准通常称为GDF 3.0。国际标准组织(ISO)标准通常称为GDF 4.0。例如,几个GDF数据生产商,如Navteq和Teleatlas,并不严格遵循GDF 3.0或4.0标准,而是遵循自己的略微修改的这些标准。
GDF 3.0 (ASCII Sequential)目前由FME支持(包括NAVTEQ、TeleAtlas和ETAK等变体)。
原始的GDF规范(GDF 3.0)在欧洲开发,以满足参考,更新,供应和应用所涉及的专业人士和组织的需求,参考和结构化的道路网络数据。
它远远超过通用GIS标准,因为GDF提供了有关如何捕获数据的规则,以及如何定义功能,属性和关系。
GDF是在名为EDRM(欧洲数字路线图)的欧洲项目中开发的。其主要用途是用于汽车导航系统(例如,Bosch,Philips,沃尔沃);但是,由于标准基于一般的非应用程序特定的数据模型,它还用于许多其他传输和流量应用,包括车队管理,派遣管理,交通分析,交通管理和自动车辆位置。
GDF文件格式通常被称为a数据库,并从未被应用直接使用过。实际上,在从GDF文件中提取数据时,GDF文件本身的结构会施加显着的低效率。GDF用户通常将数据转换为其应用程序直接工作的其他数据库或格式。
使用FME写GDF时,构建包含简单的Spaghetti Linework或Road地图的文件很简单。建立准确的路线图,以与智能传输系统(其)(其)可能需要专业干预映射文件自定义。例如,不能从输入的道路数据中推断出诸如业务流程方向的基本信息,其中没有明确地存储这种信息。
在GDF文件结构中,功能(或元素)组织成三层。每个图层中的功能实际上并不包含任何几何形状,但只需链接到下面的图层中的功能即可从中接受几何。
笔记:期限特征在GDF文档中使用,以引用居住在级别1和2上的元素。本章使用该术语特征以标准FME术语理解的方式。)
- 等级0(拓扑):此级别包含基本GIS拓扑组件。没有任何功能以任何方式重叠,并且已知相邻关系。一切都是由节点,边缘和面部描述的。
- 1级(特征):1级是最常用的GDF水平。它包含道路元素,河流,边界和路标等简单功能。功能可以具有特定于特征的属性(例如,一种方式,道路宽度,车道数量)。特征也可以具有关系,这对汽车导航系统非常重要。例如,关系可以包括“从道路元件1到道路元件2的禁止转弯”或“道路元件1在道路元件2中具有优先级”。
- 2级(复杂功能):在此级别,1级别“简单功能”会聚合到更高级别的功能。例如,在1级,表示交叉点的所有道路元素。在2级,交叉点可以仅以单点表示。下图说明了这一点。
迂回表示:级别1和2
当道路网络的简化描述就足够了时,第2级是感兴趣的。例如,城市间路线计算不需要高水平的细节。然而,借助于GPS接收器的车辆位置需要对道路网络的更详细描述。
GDF读取器和Writer使用存储在数据文件中的不同特征类型的符号名称。每个功能都有一个gdf_type.属于它。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_ReadersWriters/gdf/../Skins/Default/Stylesheets/Images/transparent.gif)
gdf_type. | 描述 |
---|---|
gdf_level_0_point. |
这些是0级上的点特征。 |
gdf_level_0_line. |
这些是0级上的线性功能。 |
gdf_level_0_polygon. |
这些是在0级上发现的多边形特征。 |
gdf_level_1_point. |
这些是1级上的点特征。 |
gdf_level_1_line. |
这些是在关卡1中发现的线性特征。 |
gdf_level_1_polygon. |
这些是在1级上发现的多边形特征。 |
gdf_level_2_point. |
这些是(复杂的)点特征在2级上发现。 |
gdf_level_2_line. |
这些是(复杂的)在2级上的线性功能。 |
gdf_level_2_polygon. |
这些是(复杂)在2级上发现的多边形特征。 |
gdf_nullrec. |
有关此功能类型的完整说明,请参阅NullRec记录的官方GDF规范。 |
gdf_volhdrec. |
有关此功能类型的完整说明,请参阅Volhdrec记录的官方GDF规范。 |
gdf_volhdrec_link_daset_vol. |
此功能类型在GDF_VOLHDREC功能和其数据集卷之间保存映射。 |
gdf_dshdrec_01 |
有关此功能类型的完整说明,请参阅DShdrec记录的官方GDF规范。 |
gdf_dshdrec_01_link_language |
此功能类型在GDF_DSHDREC_01功能和语言之间保存映射。 |
gdf_dshdrec_01_link_country. |
此功能类型在GDF_DSHDREC_01功能和他们的国家之间保持映射。 |
gdf_dshdrec_02 gdf_dshdrec_03. gdf_dshdrec_04 gdf_dshdrec_05. gdf_dshdrec_06. gdf_dshdrec_07. |
有关这些功能类型的完整说明,请参阅DShdrec记录的官方GDF规范。 |
gdf_fieldefrec. |
有关FIELDEFREC记录的详细说明,请参阅官方GDF规范。 |
gdf_recdefrec. |
有关此功能类型的完整说明,请参阅RecdefRec记录的官方GDF规范。 |
gdf_recdefrec_link_fld_name. |
此功能类型在GDF_RECDEFREC功能和其字段名称之间保存映射。 |
gdf_atdefrec. |
有关此功能类型的完整说明,请参阅atdefrec记录的官方GDF规范。 |
gdf_direc. |
有关此功能类型的完整说明,请参阅官方GDF规范。 |
gdf_featdefrec. |
有关此功能类型的完整说明,请参阅Feat Defrec记录的官方GDF规范。 |
gdf_spadorec. |
有关此功能类型的完整说明,请参阅Spadorec Records的官方GDF规范。 |
gdf_feaqualrec. |
有关此功能类型的完整说明,请参阅Feaqualrec Records的官方GDF规范。 |
gdf_atqualrec. |
有关ATQUALREC记录的详细说明,请参阅官方GDF规范。 |
gdf_srcerec_01 gdf_srcerec_02 |
有关此功能类型的完整说明,请参阅SRCEREC记录的官方GDF规范。 |
gdf_srcerec_02_link_language |
此功能类型包含GDF_SRERCEREC_02功能和语言之间的映射。 |
gdf_srcerec_02_link_country. |
此功能类型在GDF_SRERCEREC_02功能和国家之间包含映射。 |
gdf_srcerec_03 gdf_srcerec_04 gdf_srcerec_05 gdf_srcerec_06 gdf_srcerec_07 gdf_srcerec_08 gdf_srcerec_09. |
有关这些特征类型的完整说明,请参阅SRCEREC记录的官方GDF规范。 |
gdf_dattvalrec. |
有关此功能类型的完整说明,请参阅DattValRec记录的官方GDF规范。 |
gdf_sechrec_01 gdf_sechrec_02 gdf_sechrec_03 |
有关此功能类型的完整说明,请参阅SehRec记录的官方GDF规范。 |
gdf_sechrec_03_link_feature_ |
此功能类型在GDF_SECHREC_03功能和其特征质量之间保持映射。 |
gdf_sechrec_03_link_ |
此功能类型在GDF_SECHREC_03功能和其属性质量之间保存映射。 |
gdf_sechrec_04 |
有关此功能类型的完整说明,请参阅SehRec记录的官方GDF规范。 |
gdf_sechrec_04_link_ |
该特性类型保存gdf_sechrec_04特性与其源描述之间的映射。 |
gdf_sechrec_05. |
有关此功能类型的完整说明,请参阅SehRec记录的官方GDF规范。 |
gdf_sechrec_05_link_ |
此功能类型在GDF_SECHREC_05功能和其拒绝之间保存映射。 |
gdf_sechrec_06 |
有关此功能类型的完整说明,请参阅SehRec记录的官方GDF规范。 |
gdf_sechrec_06_link_geoid. |
此功能类型包含GDF_SECHREC_06功能和其水流之间的映射。 |
gdf_sechrec_07 gdf_sechrec_08. gdf_sechrec_09. |
有关此功能类型的完整说明,请参阅SehRec记录的官方GDF规范。 |
gdf_layhrec. |
有关此功能类型的完整说明,请参阅LayhRec记录的官方GDF规范。 |
gdf_layhrec_link_them_cod. |
此功能类型在GDF_LAYHREC功能和主题代码之间保存映射。 |
gdf_datelrec. |
有关DATELREC记录的详细说明,请参阅官方GDF规范。 |
gdf_verdatrec |
有关此功能类型的完整说明,请参阅verdatrec记录的官方GDF规范。 |
gdf_verdatrec_link_Level. |
此功能类型在GDF_VERDATREC功能和其级别之间保存映射。 |
gdf_projecrec. |
有关此功能类型的完整说明,请参阅projecrec记录的官方GDF规范。 |
gdf_projecroc_link_parms. |
此功能类型保存GDF_PROJECREC功能及其投影参数之间的映射。 |
gdf_natgridrec. |
有关此功能类型的完整说明,请参阅NatgridRec记录的官方GDF规范。 |
gdf_geoidrec. |
有关此功能类型的完整说明,请参阅Geodrec Records的官方GDF规范。 |
gdf_magnetrec. |
有关此功能类型的完整说明,请参阅Magnetrec记录的官方GDF规范。 |
gdf_commentrec. |
有关CommentRec记录的官方GDF规范,请参阅此功能类型的完整说明。 |
gdf_voltermrec |
有关此功能类型的完整说明,请参阅VolterMREC记录的官方GDF规范。 |
gdf_xyzrec_point. gdf_xyzrec_line. |
有关此功能类型的完整说明,请参阅XYZREC记录的官方GDF规范。 |
gdf_nedgerec. |
有关此功能类型的完整说明,请参阅Nedgerec记录的官方GDF规范。 |
gdf_knotrec. |
有关此功能类型的完整说明,请参阅KnotRec记录的官方GDF规范。 |
gdf_facerec. |
有关此功能类型的完整说明,请参阅FaceEC记录的官方GDF规范。 |
gdf_facerec_link_edge_id. |
此功能类型在GDF_Facerec功能和其边缘ID之间保存映射。 |
gdf_namerec. |
有关该特性类型的完整解释,请参阅官方GDF规范中的NAMEREC记录。 |
gdf_dsatrec. |
有关此功能类型的完整说明,请参阅DSATREC记录的官方GDF规范。 |
gdf_dsatrec_link_attr. |
此功能类型包含GDF_DSATREC功能与其属性ID之间的映射。 |
gdf_timerec. |
有关TIMEREC记录的详细说明,请参阅官方GDF规范。 |
gdf_convertrec. |
有关此功能类型的完整说明,请参阅Convertrec记录的官方GDF规范。 |
gdf_relatrec. |
有关此功能类型的完整说明,请参阅RelatRec记录的官方GDF规范。 |
gdf_relatrec_link_feat. |
此功能类型在GDF_RELATREC功能和其功能ID之间保存映射。 |
gdf_relatrec_link_attribute. |
此功能类型在GDF_RELATREC功能和其属性ID之间保存映射。 |
gdf_poferec. |
有关此功能类型的完整说明,请参阅Poferec Records的官方GDF规范。 |
gdf_poferec_link_knot. |
此功能类型保存GDF_POFEREC功能与其结ID之间的映射。 |
gdf_poferec_link_attribute. |
此功能类型在GDF_POFEREC功能和其属性ID之间保存映射。 |
gdf_linfrec. |
有关此功能类型的完整说明,请参阅Linfrec记录的官方GDF规范。 |
gdf_linfrec_link_edge. |
此功能类型在GDF_LINFREC功能和其边缘ID之间保存映射。 |
gdf_linfrec_link_attribute. |
此功能类型在GDF_LINFREC功能和其属性ID之间保存映射。 |
gdf_arferec. |
有关此功能类型的完整说明,请参阅Arferec记录的官方GDF规范。 |
gdf_arferec_link_face. |
该特征类型保存了gdf_arferec特征与其面部id之间的映射。 |
gdf_arferec_link_attribute. |
此功能类型在GDF_ARFEREC功能与其属性ID之间保存映射。 |
gdf_compferec. |
有关此特性类型的完整解释,请参阅COMPFEREC记录的官方GDF规范。 |
gdf_compferec_link_feat. |
此功能类型在GDF_Compferec功能和其功能ID之间保存映射。 |
gdf_compferec_link_attribute. |
此功能类型在GDF_Compferec功能和其属性ID之间保存映射。 |
gdf_unknown_record. |
FME未完全理解的所有GDF记录都作为此功能类型输出。 |
我们曾经拥有过gdf_type.每个记录类型除了几何类型之外。制作几何形状gdf_type.更明确,我们现在给了一个gdf_no_geom.类型转换为不包含任何几何形状的所有特征类型,例如VOLHDREC。
读者和作家概述
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_ReadersWriters/gdf/../Skins/Default/Stylesheets/Images/transparent.gif)
GDF阅读器顺序读取整个文件。因此,首先处理来自音量级别的标题信息,然后分别处理来自数据集,部分和图层级别的信息。在GDF文件的标题中找到的缩放和偏移因子应用于从文件读取的所有坐标。读取器一次提取每个功能,一次提取一个功能,并将其传递给FME的其余部分进行处理。
读取器基于的动态架构配置FieldEFREC(03)和Recdefrec(04)记录。读者对不同的变体具有默认配置,例如Navteq和Teleatlas 3.4。如果要读取的数据集有标题FieldEFREC(03)和Recdefrec(04)记录,这些将用于调整配置。因此,可以在数据集标题中定义新的记录类型,读者将正确处理它们。
1级点的几何形状是所有组件的边界框的中心。1级线的几何形状是所有组件的串联。通过“溶解”所有组件来计算等级1区域的几何形状。
复杂(2级)功能符号化抽象网络拓扑,因此不能忠实地由所有情况下的视觉图形表示代表。复杂功能上的属性将始终保留完全重建级别2拓扑所需的所有信息,或以其他方式访问GDF文件中表示的数据的每个方面。在复杂功能上的几何形状智能地创建,以便在可能的情况下以视性地代表网络拓扑的那些部分。在大多数情况下,复杂特征上的几何形状确实有助于通过图形观众理解网络。
分配给复杂功能的几何图形是行,点或多边形。具有复杂功能从到链接被读取为级别2行,其几何图形被认为是来自边界框中的中心的单个段行从特征和边界框的中心到特征。如果复杂的功能没有从到链接,然后考虑成员的类型。只有多边形构件的那些被读取为级别2多边形,其几何形状是溶解所有多边形构件的结果。最后,完全由多边形成员组成的复杂特征被读取为级别2点,其几何图形被认为是所有组件的边界框的中心。应注意上述一个例外;所有复杂功能都没有从到链接和恰好一个成员将假设该成员的完整几何形状和类型。包含对未出现在文件中未出现的成员引用的复杂功能将作为a输出Comperec.功能没有几何形状。
当GDF读取器遇到记录类型时,它不知道如何进程,它只是将此元素输出为一个Unknown_record.并继续读取下一个功能。但是,除非尚未在a中定义了记录模式,否则不会发生这种情况Recdefrec(04)记录在标题中。
除了被称为GDF术语中的物理表示的不同记录类型之外,读者还考虑了数据模型以创建FME功能。此数据模型是特定于供应商和版本的,并定义GDF功能名称和属性名称和值。如果需要,可以在文本编辑器中编辑不同变体的数据模型和GDF的版本。数据模型位于FME安装文件夹中插件/ GDF / DataModel。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_ReadersWriters/gdf/../Skins/Default/Stylesheets/Images/transparent.gif)
创建GDF文件目前涉及大量的自定义。发送到GDF编写器的所有功能都假定在“链接”结构中,如要素表示部分所概述的。在向作者发送之前,还必须正确确定这些功能的顺序。
GDF作家的未来版本可能会获得更多智能,能够自动地正确生产必要的“链接”功能,定为常规线条,多边形等;但是,目前,需要自定义映射文件。
作为输出产生有意义的GDF文件将需要设置自定义映射文件,该文件描述了输入架构的详细信息,原因如下:
- 通用(自动)翻译通常适用于大多数格式,因为它们非常简单。(如果某些道路在源中具有属性“长度”,则在目的地中称为“长度”的属性是有意义的。但是,GDF是一个特例。GDF非常复杂,即这种“最佳猜测”是不可能的。翻译大多数格式不需要了解架构,只是了解它。在GDF中,FME不仅需要知道输入数据的架构,但它必须实际上了解含义。
- GDF具有数百个,如果不是数千个,则具有特征可以具有的预定义属性和值。当FME给出源数据集时没有任何指示源数据中的属性应该用于填写输出GDF文件中所需的归属,大部分信息都将丢失。(当给出所有道路的任何道路时都没有“猜测”是一个源文件,没有关于模式或输入数据的含义的知识。)因此,“自动”翻译通常不会生成任何有用的东西。需要发生什么是用户需要创建自定义映射文件,告诉FME在其中在其中在其特定源数据集中找到所有所需的GDF数据。
- 如果gdf_fieldefrec.编写功能,将尊重它们的字段宽度定义。这允许用户动态定义自定义字段宽度以用于产生的GDF文件。这是有用的,例如,在创建Teleatlas MultiLet 3.1和3.2 GDF文件中,在多个记录中使用不同的字段宽度。