读取地理数据文件记录的方法及装置 【技术领域】
本发明涉及地理信息系统技术领域, 尤其涉及一种读取地理数据文件记录的方法及装置。 背景技术 地理数据文件 (Geographic Data Files, GDF) 是国际标准化组织颁布的一种保存 地理数据的文件格式, 用于描述道路及道路相关信息。一个 GDF 包括全局记录、 数据记录和 更新记录, 其中数据记录又包括坐标记录、 结点记录、 线记录等 13 种类型的记录。
在地理数据的开发过程中, 对 GDF 记录的读取操作必不可少, 现有技术采用遍历 整个 GDF 的方式, 实现对 GDF 中某类型记录的读取, 比如, 遍历整个 GDF, 实现坐标记录的读 取。
在对现有读取 GDF 记录方法的研究和实践过程中, 发明人发现 GDF 通常都是几百 MB 甚至 GB 大小的文件, 遍历整个 GDF 需要花费很长时间, 因此, 现有读取 GDF 记录的方法存 在读取速度和效率较低的问题。
发明内容 本发明实施例要解决的技术问题是提供一种读取地理数据文件记录的方法及装 置, 能够实现快速、 高效地读取 GDF 记录。
为解决上述技术问题, 本发明的目的是通过以下技术方案实现的 :
本发明提供了一种读取地理数据文件记录的方法, 所述方法包括 :
接收地理数据文件记录的类型码及标识 ;
通过所述类型码及标识, 在预置的位置索引文件中查找所述记录在所述地理数据 文件中的起始存储位置及长度 ;
从所述地理数据文件中所述起始存储位置开始, 读取所述长度范围内的记录。
本发明还提供了一种读取地理数据文件记录的装置, 所述装置包括 :
记录读取信息接收单元, 用于接收地理数据文件记录的类型码及标识 ;
记录存储信息查找单元, 用于通过所述类型码及标识, 在预置的位置索引文件中 查找所述记录在所述地理数据文件中的起始存储位置及长度 ;
记录读取单元, 用于从所述地理数据文件中所述起始存储位置开始读取所述长度 范围内的记录。
上述技术方案具有如下有益效果 :
本发明提供的读取地理数据文件记录的技术方案, 预先构建了地理数据文件记录 的位置索引文件, 在读取 GDF 记录时, 通过该位置索引文件存储的记录位置信息, 能够快速 定位相应记录, 从而实现了快速、 高效地读取 GDF 记录。
附图说明图 1 为本发明提供的读取 GDF 记录的方法流程图 ; 图 2 为本发明实施例一提供的生成位置索引文件的方法流程图 ; 图 3 为本发明实施例提供的 GDF 数据文件记录实例 ; 图 4 为本发明实施例二提供的生成位置索引文件的方法流程图 ; 图 5 为本发明实施例三提供的生成位置索引文件的方法流程图 ; 图 6 为本发明提供的读取 GDF 记录的装置组成示意图。具体实施方式
为使本发明实施例的目的、 技术方案、 及优点更加清楚明白, 以下参照附图对本发 明实施例提供的技术方案进行详细说明。
请参加图 1, 为本发明提供的读取地理数据文件 (GDF) 记录的方法流程图, 该方法 包括 :
步骤 101 : 接收 GDF 记录的类型码及标识 ;
步骤 102 : 通过所述类型码及标识, 在预置的位置索引文件中查找所述记录在所 述 GDF 中的起始存储位置及长度 ; 其中, 位置索引文件是预先通过遍历所述 GDF 生成的。
步骤 103 : 从 GDF 中所述起始存储位置开始读取所述长度范围内的记录。
以上为本发明提供的读取 GDF 记录的方法, GDF 记录包括 : 全局记录、 数据记录及 更新记录, 本发明提供方法适用于读取上述三种记录。
以下结合附图对生成位置索引文件的方法进行详细介绍。
请参见图 2, 为本发明实施例一提供的生成位置索引文件的方法, 该方法用于为一 个 GDF 生成多个位置索引文件, 并且, 生成的每个位置索引文件唯一对应一个类型码, 该方 法包括 :
步骤 201 : 读取一条 GDF 记录的类型码和标识 ;
步骤 202 : 获取所述记录在 GDF 中的起始存储位置及长度 ( 记录字节数 ) ;
其中, 起始存储位置用该记录头相对于文件头的偏移量表示。
步骤 203 : 将所述标识、 起始存储位置及长度作为一条索引存入所述类型码对应 的位置索引文件中 ;
如图 3 所示是一条 GDF 坐标记录, 记录的开始两位数字 “23” 是这条记录的类型 码, 第三位数字 “3” 是这条记录的标识, 假设该记录头到 GDF 头的偏移量为 “8100” , 记录长 度为 “161 字节” , 则将 “3, 8100, 161” 作为一条索引存入类型码 “23” 对应的位置索引文件。
步骤 204 : 判断步骤 201 读取的 GDF 记录是否为最后一条记录, 如果是, 则结束该 流程, 如果否, 则返回步骤 201。
以上是本发明实施例一提供的生成位置索引文件的方法。
请参见表 1, GDF 数据记录包括坐标记录、 结点记录、 线记录等 13 种记录, 每一种记 录都对应一个类型码。假设一个 GDF 包含上述 13 种记录, 若采用图 2 所示方法为该 GDF 的 记录生成位置索引文件, 则至少能够生成 13 个位置索引文件, 并且这 13 个位置索引文件分 别唯一对应一个表 1 所示类型码。
6102339293 A CN 102339306说数据记录名称 坐标记录 结点记录 线记录 面记录 文本记录 属性记录 时间域记录 转换记录 关系记录 点要素记录 线要素记录 面要素记录 复杂要素记录明书类型码 23 25 24 29 41 44 45 46 50 51 52 53 543/6 页
表 1GDF 数据记录及类型码
需要说明的是, 若实际应用需要图 2 所示方法仅为一种类型的记录生成位置索引 文件, 比如, 仅为 GDF 数据记录生成位置索引文件, 则需要在图 2 所示步骤 201 及步骤 202 之间加入如下步骤 :
根据步骤 201 读取的类型码判断记录是否为数据记录 ( 即, 判断步骤 201 读取的 类型码是否属于表 1 所示 13 种类型码的一种 ), 如果是, 则进入步骤 202, 如果否, 则忽略该 记录, 转入读取下一条记录的类型码和标识。
同理, 可以将图 2 所示方法调整成仅为 GDF 全局记录生成位置索引文件, 或, 仅为 GDF 更新记录生成位置索引。
请参见图 4, 是本发明实施例二提供的一种生成位置索引文件的方法, 该方法用于 为一个 GDF 生成一个位置索引文件, 该方法包括 :
步骤 401 : 读取一条 GDF 记录的类型码和标识 ;
步骤 402 : 获取所述记录在 GDF 中的起始存储位置及长度 ;
步骤 403 : 将所述类型码、 标识、 起始存储位置及长度作为一条索引存入所述位置 索引文件中 ;
仍以前文所述图 3 为例, 步骤 403 是将 “23, 3, 8100, 161” 作为一条索引存入位置 索引文件。
步骤 404 : 判断步骤 401 读取的 GDF 记录是否为最后一条记录, 如果是, 则结束该 流程, 如果否, 则返回步骤 401。
在实际应用中, 也可以将图 4 所示方法调整成仅能为一种 GDF 记录生成位置索引 文件的方法, 相关内容请参加前文, 此处不再赘述。
对比图 2 和图 4 所示方法, 可知图 4 与图 2 生成的位置索引文件的区别在于, 图4 生成的一个位置索引文件中保存了一个 GDF 所有记录的位置信息, 而图 2 生成的一个位置 索引文件只保存一种 GDF 记录的位置信息。
请参见图 5, 是本发明实施例三提供的一种生成位置索引文件的方法, 该方法用于 为一个 GDF 生成两个位置索引文件, 该方法包括 :
步骤 501 : 读取一条 GDF 记录的类型码和标识 ;
步骤 502 : 获取所述记录在 GDF 中的起始存储位置及长度 ;
步骤 503 : 将所述标识、 起始存储位置及长度作为一条索引存入一级位置索引文 件中所述类型码对应的索引簇中 ; 仍以前文所述图 3 为例, 步骤 503 是将 “3, 8100, 161” 作为一条索引存入 “23” 在 一级位置索引文件中对应的索引簇中。
步骤 504 : 判断步骤 501 读取的 GDF 记录是否为最后一条记录, 如果是, 则进入步 骤 505, 如果否, 则返回步骤 501。
步骤 505 : 获取每个类型码对应索引簇在一级位置索引文件中的起始存储位置 ;
步骤 506 : 将所述类型码及所述起始存储位置作为一条索引存入二级位置索引文 件中。
在实际应用中, 也可以将图 5 所示方法调整成仅能为一种 GDF 记录生成位置索引 文件的方法, 相关内容请参加前文, 此处不再赘述。
以上是本发明实施例提供的三种生成位置索引文件的方法, 以下分三种情况对图 1 所示方法的具体实施方法进行详细介绍。
第一、 预先采用图 2 所示方法生成位置索引文件, 则在实际应用中, 图 1 所示 “步骤 102 查找所述记录在所述 GDF 中的起始存储位置及长度” 具体包括 :
在所述类型码对应的预置位置索引文件中, 查找所述标识对应的所述记录在 GDF 中的起始存储位置及长度。
第二、 预先采用图 4 所示方法生成位置索引文件, 则在实际应用中, 图 1 所示 “步骤 102 查找所述记录在所述 GDF 中的起始存储位置及长度” 具体包括 :
在预置位置索引文件中, 查找所述类型代码及标识对应的记录在所述 GDF 中的起 始存储位置及长度。
第三、 预先采用图 5 所示方法生成位置索引文件, 则在实际应用中, 图 1 所示 “步骤 102 查找所述记录在所述 GDF 中的起始存储位置及长度” 具体包括 :
从预置的二级位置索引文件中, 查找所述类型码对应的索引簇在所述一级索引中 的起始存储位置 ;
从预置的一级位置索引文件中所述起始存储位置开始, 查找所述标识对应的所述
记录在 GDF 中的起始存储位置及长度。
以上对本发明实施例提供的读取 GDF 记录的方法以及生成位置索引文件的方法 进行了详细介绍。 由于一个 GDF 中 99%的记录是数据记录, 因此, 仅对 GDF 数据记录采用本 发明提供方法进行读取也可达到提高读取速度及效率的目的。需要注意的是, 如果仅采用 本发明提供方法读取 GDF 数据记录, 则在预先生成位置索引文件时, 只需针对 GDF 数据记录 生成位置索引文件。
以上是本发明实施例提供的读取 GDF 记录的方法, 以下结合附图对本发明提供的 实现上述方法装置进行介绍。
请参见图 6, 是本发明提供的一种读取 GDF 记录的装置组成示意图, 所述装置包 括:
记录读取信息接收单元 601, 用于接收 GDF 记录的类型码及标识 ;
记录存储信息查找单元 602, 用于通过所述类型码及标识, 在预置的位置索引文件 中查找所述记录在所述 GDF 中的起始存储位置及长度 ;
在实际应用中, 可以预先由位置索引文件生成单元遍历所述 GDF 生成所述位置索 引文件。位置索引文件生成单元亦可以独立于图 6 所示装置, 也可以作为图 6 所示装置包 含的一个功能模块, 并不影响本发明的实现。
记录读取单元 603, 用于从所述 GDF 中所述起始存储位置开始读取所述长度范围 内的记录。
以上是本发明提供的读取 GDF 记录的装置。
本发明还提供了三种实现上述位置索引文件生成单元的方式, 对这三种方式进行 详细介绍。
第一种方式, 若一个 GDF 生成多个位置索引文件且一个位置索引文件唯一对应一 个类型码, 则位置索引文件生成单元具体包括 :
记录信息读取单元, 用于读取 GDF 记录的类型码及标识 ;
存储信息获取单元, 用于获取记录在 GDF 中的起始存储位置及长度 ;
标识位置索引存储单元, 用于将所述标识、 起始存储位置及长度作为一条索引存 入所述类型码对应的位置索引文件中。
第二种方式, 若一个 GDF 生成一个位置索引文件, 则位置索引文件生成单元具体 包括 :
记录信息读取单元, 用于读取 GDF 记录的类型码及标识 ;
存储信息获取单元, 用于获取记录在 GDF 中的起始存储位置及长度 ;
类型标识位置索引存储单元, 用于将所述类型码、 标识、 起始存储位置及长度作为 一条索引存入所述位置索引文件中。
第三种方式, 若一个 GDF 生成两级位置索引文件, 则位置索引文件生成单元具体 包括 :
记录信息读取单元, 用于读取 GDF 记录的类型码及标识 ;
存储信息获取单元, 用于获取记录在 GDF 中的起始存储位置及长度 ;
一级索引存储单元, 用于将所述标识、 起始存储位置及长度作为一条索引存入一 级位置索引文件中所述类型码对应索引簇中 ;一级索引存储信息获取单元, 用于获取每个类型码对应索引簇在一级位置索引文 件中的起始存储位置 ;
二级索引存储单元, 用于将所述类型码及所述起始存储位置作为一条索引存入二 级位置索引文件中。
以结合前文生成的三种位置索引文件对图 6 所示装置的实现方式进行详细介绍。
1、 若位置索引文件生成单元预先采用前文所述第一种方式生成位置索引文件, 则 在实际应用中, 所述记录存储信息查找单元 602 具体包括 : 索引查找单元和存储信息查找 单元 ;
所述索引查找单元, 用于在预置的位置索引文件集中, 查找所述类型码对应的位 置索引文件 ;
所述存储信息查找单元, 用于在所述索引查找单元查找到的位置索引文件中, 查 找所述标识对应的所述记录在 GDF 中的起始存储位置及长度。
2、 若位置索引文件生成单元预先采用前文所述第二种方式生成位置索引文件, 则 在实际应用中, 所述记录存储信息查找单元具体用于在预置位置索引文件中, 查找所述类 型代码及标识对应的所述记录在所述 GDF 中的起始存储位置及长度。 3、 若位置索引文件生成单元预先采用前文所述第三种方式生成位置索引文件, 则 在实际应用中, 所述记录存储信息查找单元 602 具体包括 : 索引查找单元和存储信息查找 单元 ;
一级索引存储信息查找单元, 用于从预置的二级位置索引文件中, 查找所述类型 码对应的索引簇在所述一级索引中的起始存储位置 ;
记录存储信息查找子单元, 用于从预置的一级位置索引文件中所述起始存储位置 开始, 查找所述标识对应的所述记录在 GDF 中的起始存储位置及长度。
以上对本发明所提供的一种读取地理数据文件记录的方法及装置进行了详细介 绍, 对于本领域的一般技术人员, 依据本发明实施例的思想, 在具体实施方式及应用范围上 均会有改变之处, 综上所述, 本说明书内容不应理解为对本发明的限制。