CN113297343A - 专题关联映射地球矢量数据快速生成方法 - Google Patents
专题关联映射地球矢量数据快速生成方法 Download PDFInfo
- Publication number
- CN113297343A CN113297343A CN202110595596.4A CN202110595596A CN113297343A CN 113297343 A CN113297343 A CN 113297343A CN 202110595596 A CN202110595596 A CN 202110595596A CN 113297343 A CN113297343 A CN 113297343A
- Authority
- CN
- China
- Prior art keywords
- data
- osm
- file
- way
- gis
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 196
- 238000013507 mapping Methods 0.000 title claims abstract description 88
- 230000008569 process Effects 0.000 claims description 109
- 238000012545 processing Methods 0.000 claims description 88
- 238000006243 chemical reaction Methods 0.000 claims description 48
- 230000006870 function Effects 0.000 claims description 22
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 20
- 238000013461 design Methods 0.000 claims description 13
- 229910002056 binary alloy Inorganic materials 0.000 claims description 8
- 238000004458 analytical method Methods 0.000 claims description 7
- 238000013499 data model Methods 0.000 claims description 5
- 238000013500 data storage Methods 0.000 claims description 5
- 230000007246 mechanism Effects 0.000 claims description 5
- 239000002131 composite material Substances 0.000 claims description 3
- 230000006835 compression Effects 0.000 claims description 2
- 238000007906 compression Methods 0.000 claims description 2
- 238000007405 data analysis Methods 0.000 claims description 2
- 230000006837 decompression Effects 0.000 claims description 2
- 238000012546 transfer Methods 0.000 claims description 2
- 230000008520 organization Effects 0.000 abstract description 4
- 230000009286 beneficial effect Effects 0.000 abstract description 3
- 238000013519 translation Methods 0.000 description 6
- 230000014616 translation Effects 0.000 description 6
- 238000002474 experimental method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 235000013410 fast food Nutrition 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000019771 cognition Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/29—Geographical information databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Remote Sensing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
基于中国GIS标准生成其它国家的矢量数据有很大难度,采用OSM项目开源数据作为GIS中国模式生成地球范围内的数字线化数据,目前还没有显著成果,本发明针对OSM项目开源数据的背景、文件格式及组织方式、质量、生成方法、与GIS标准专题数据关联映射、快速读取,提出专题关联映射地球矢量数据快速生成方法,探索基于OSM项目开源数据转换成GIS标准专题数据的方法,探索地球矢量数据初步成果的提高精度、应用方法,成功的研制出一个高效率、高精度的中国GIS标准的全球矢量数据生成系统,充分保证中国标准的全球矢量数据的精确度,丰富性、时效性方面都存在明显优势,有利于提高国内公司地球空间信息产品的品质。
Description
技术领域
本发明涉及一种地球矢量数据快速生成方法,特别涉及一种专题关联映射地球矢量数据快速生成方法,属于地球矢量数据生成技术领域。
背景技术
众源地理数据是由大量非专业人员志愿生成并通过互联网向大众或相关机构提供的一种开放地理空间数据,即人人都是传感器。OSM是众源地理数据中最具代表性的一种数据源,众源地理数据突破了传统地理信息采集和更新方式的局限,为快速低成本的生成和更新地理空间数据提供了一种新的途径。OSM数据可通过数据挖掘、转换、校正等处理形成规范的地理信息。OSM项目是生成地球矢量数据的有效解决方案,地理空间数据有二个重要特征:时效性和准确性。在时效性方面,大量非专业人员可利用智能移动设备、GPS接收机等收集某一时刻的位置信息,然后借助网络标注和上传功能,将位置信息、属性信息共享到OSM中,使OSM数据具有较高的现势性;在准确性方面,通过地球定位系统、基于移动运营网的基站不断完善,使用户通过智能手机、车载GPS等移动终端生成的位置更加精确;同时用户也通过OSM网站提供的影像数据矢量化自己感兴趣的地理要素。所以OSM在时效性和准确性方面满足公众要求,对于实现OSM处理成规范的地理信息,形成地球矢量数据实施地球化发展战略具有重要意义。
近年来众源地理数据也引起了一些企业和专家的研发兴趣,包括对众源地理数据的初步认知、数据质量、控制数据组织和管理进行的研究,李德仁等根据众源地理数据的特点研究了众源地理数据的存储结构及空间索引的构建,贾宁等研究了众源地理数据的意义和OSM数据的质量,单杰等研究了众源地理数据的处理及分析方法,王明等研究了众源地理数据的评价方法,通过OSM在自然灾害援救过程中起到的作用来讨论将众源地理数据等空间信息,引入应急指挥和决策的重要性、优势及一些应用。从大量已有的成果来看,OSM数据在精确度、丰富性、时效性方面都存在优势,而且已经有了一定的应用基础。
但是国内公司还没有充分利用OSM数据,来弥补国内公司不具备地球很多地区高精度的空间信息产品的不足。通过实现基于OSM的地球矢量数据建库系统来实现生产地球矢量数据成果,充分利用OSM数据的优势,来满足国内公司对地球矢量数据的迫切需求,但由于国内公司生成数字线化数据传统模式为由点生成线、由线生成面,从外业实地测量到内业数字化;以遥感影像为底图矢量化,这导致了国内公司很难生成其它国家的矢量数据。采用OSM项目开源数据作为国内公司生成地球范围内的数字线化数据,目前也还没有显著成果。
当前国内公司的全球矢量数据生成系统存在诸多不足,现有技术的难点和本发明解决的问题主要集中在以下方面:
第一,快速生成地球各个区域(特别是中国以外地区)空间信息可有效解决国内公司地球空间信息产品缺乏问题,但现有技术缺少一个高效率、高精度的中国GIS标准的全球矢量数据生成系统,也无法保证矢量数据的精度,不利于提高国内公司地球空间信息产品的品质;
第二,现有技术还没有充分利用OSM数据,来弥补国内公司还不具备地球很多地区高精度的空间信息产品的不足,通过实现基于OSM的地球矢量数据建库系统来实现生产地球矢量数据成果,利用OSM数据的优势,可以满足国内公司对地球矢量数据的迫切需求,但由于国内公司生成数字线化数据传统模式为由点生成线、由线生成面,从外业实地测量到内业数字化,以遥感影像为底图矢量化,这导致了国内公司很难生成其它国家的矢量数据,采用OSM 项目开源数据作为国内公司生成地球范围内的数字线化数据,目前还没有显著成果,现有技术的方法可靠性很低,方法更换非常频繁和繁琐,实际利用价值不高;
第三,基于PBF二进制的OSM文件的数据存储方式,只能顺序读取OSM文件中的数据,不适合随机检索,由于OSM文件的数据模型存在引用关系,并且GIS中的线状、面状地理要素都是一系列有序的坐标对组成,所以在OSM数据转换成GIS标准数据过程中必然存在对OSM 文件进行反复检索的过程,若在读取OSM文件中Way的过程中,Way引用Node节点的id,需要通过遍历OSM文件生成Node节点id对应的坐标,但OSM文件已包含27.5亿个Node、2.75亿条Way、325万多万条Relation,这个读取过程将非常耗时,不能满足数据实时处理的速度要求,严重制约矢量数据生成效率,无法满足正常的生产需要;
第四,在读取OSM数据中Node数据的过程中,同时将Node数据根据Node的标签信息转换成GIS中对应专题数据FeatureClass,FeatureClass具备属性检索功能,Way、Relation引用的Node数据可以通过FeatureClass的检索功能实现,但该方案非常耗时,利用FeatureClass检索只能保证一个Node的检索在毫秒级别,假设1毫秒完成一个Node的检索,地球OSM数据中有27.5亿个Node节点,这些点中一部分是独立的Node,一部分则是引用的Node,假定50%的Node将有可能被检索到,那么13.7亿个点每个点1毫秒的检索时间将耗费13.7亿/1000/3600/24=15.8天,初而且还没有考虑Way和Relation数据的写入时间,由于OSM数据的更新周期为7天,利用FeatureClass具备的检索功能的方案是不可行的;
第五,在遍历OSM数据中Relation数据结构时,需要引用到Way的数据结构,而OSM的数据文件不适合随机检索,当Relation引用到某个Way的id,根据Way的id去OSM文件中遍历所有的Way非常耗时;假设存在某个HashTable文件可实现key为Way的id而Value为 Way引用的Node的id数组,那么在读取、转换Relation时则可以快速检索、生成引用的Way,但地球OSM的Realtion引用的Way的数量相当大,每个Way所引用的Node的id也可能成千上万,如果全用HashTable文件存储显然无法直接存储为内存,普通计算机内存难于承受如此大的HashTable检索。
发明内容
针对现有技术的不足,本发明提出专题关联映射地球矢量数据快速生成方法,基于GIS 专题数据中居民地及设施、水系、交通三大类与OSM数据转换的关联映射,将转换结果根据字段进一步提取专题数据;提出转换过程中的快速读取策略的缓存机制,大幅提高了OSM文件转换的效率;根据OSM数据转换GIS专题数据的方法,设计了该方法的实现过程,成功的研制出一个高效率、高精度的中国GIS标准的全球矢量数据生成系统。
为达到以上技术效果,本发明所采用的技术方案如下:
专题关联映射地球矢量数据快速生成方法,包括OSM数据到GIS专题数据的转换关联映射、转换过程中的快速读取策略,首先提出GIS专题数据中居民地及设施、水系、交通三大类与OSM数据转换的关联映射,然后提出转换过程中的快速读取策略的缓存机制,包括Node、 Way的缓存策略,提高OSM文件转换的效率,最后根据OSM数据转换GIS专题数据的方法,提出该功能的实现步骤;
一是OSM数据到GIS专题数据的关联映射,提出可以配置的OSM项目开源数据与GIS标准专题数据关联映射文件,具体包括OSM数据到GIS居民地及设施的关联映射、OSM数据到GIS水系的关联映射、OSM数据到GIS交通的关联映射,根据转换成GIS标准专题数据成果修改关联映射,同时也可以根据不同的需求,转换成不同的GIS标准数据,通过该配置文件,提高该系统生成数据的灵活性,增加该系统的应用领域;
二是OSM数据的快速读取,包括选用OSM文件格式和OSM文件快速读取方法,根据OSM 文件及数据的特点,采用基于PBF二进制格式的OSM文件;并在读取OSM数据过程中,设计缓存OSM数据中的Node、Way策略,提高OSM数据的读取速度;
三是地球矢量数据快速生成方法,将OSM数据转换成标准GIS数据设计成一个可独立运行的可执行程序,只要拷贝该文件即可在Windows平台上运行,通过在GDP软件中添加一个插件,直接调用该执行程序,使该执行程序方便融入GDP软件框架中,基于OSM提供的PBF 文件不适合随机检索,PBF文件转换程序设计分为以下几个过程,将PBF文件交给对象处理模块分离出一个一个的OSM对象,每个OSM对象经过多个处理过程后,最终形成GIS标准地理要素并存储至对应的GIS专题数据库,或基于OSM数据将OSM对象缓存至本地,用来被更复杂的OSM对象检索;
四是地球矢量数据快速生成方法实现,基于以上设计,实现专题关联映射地球矢量数据快速生成成果的可执行程序,该程序所需的参数都是通过配置文件OperatorTemplate.xml实现,配置文件与该执行程序在同一目录下,程序启动后首先在该程序的同级目录下寻找配置文件,在程序的界面中可更改配置文件的一些参数,防止用户直接更改配置文件,保证程序的正常运行。
专题关联映射地球矢量数据快速生成方法,进一步的,OSM数据到GIS专题数据的关联映射:OSM数据中属性信息标签与GIS专题数据属性信息存储结构不同,本发明根据OSM文件中的Node、Way、Relation数据结构的标签信息将OSM数据转换成不同GIS专题数据,基于GIS三大类地理信息要素:居民地及设施、水系、交通,通过将关联映射转换成GIS专题数据成果,并与OSM网站数据比较,如此反复迭代与,直至转换的GIS专题数据成果满足国家规范及应用要求,将OSM数据转换成GIS专题数据后,通过GIS数据的属性分析,再转换成国家标准不同比例尺的专题数据。
专题关联映射地球矢量数据快速生成方法,进一步的,OSM文件快速读取方法:基于PBF 二进制的OSM文件的数据存储方式,只能顺序读取OSM文件中的数据,不适合随机检索,OSM 文件的数据模型存在引用关系,并且GIS中的线状、面状地理要素都是一系列有序的坐标对组成,所以在OSM数据转换成GIS标准数据过程中必然存在对OSM文件进行反复检索的过程,若在读取OSM文件中Way的过程中,Way引用Node节点的id,需要通过遍历OSM文件生成Node 节点id对应的坐标,本发明得到一个理想的解决方案,该方案缓存OSM数据中的Node、Way 数据信息。
专题关联映射地球矢量数据快速生成方法,进一步的,缓存OSM数据中的Node数据信息:缓存OSM数据中Node的id、lat、lon信息存储至缓存文件,便于Way和Relation数据进行转换时方便的根据引用Node结构的id生成点的坐标(lat,lon);
在读取OSM数据中Node数据的过程中,同时将Node数据根据Node的标签信息转换成 GIS中对应专题数据FeatureClass,采用缓存文件缓存Node数据的id、lat、lon信息,因为数据结构简单可使用文件的方式存储,OSM数据中Node的id为64位整数,并且在OSM数据文件中Node的id都是从小到大存储顺序,那么缓存文件可设计成多个小文件来存储连续的若干Node的坐标信息,id为0至10000使用一个文件编号为1.Node的文件存储,以此类推10000至20000使用文件编号为2.Node的文件来存储;
反过来如果要检索缓存文件中的Node,则根据id和每个文件存储的数量整除即可获得文件的名称,然后从文件中对应的位置获得对应Node的坐标信息,每个缓存小文件可通过内存映射文件的方式进行缓存,这样在检索节点较集中的情况下大幅减少文件打开的开销。
专题关联映射地球矢量数据快速生成方法,进一步的,缓存OSM数据中的Way数据信息:
在遍历OSM数据中Relation数据结构时,需要引用到Way的数据结构,当Relation引用到某个Way的id,根据Way的id去OSM文件中遍历所有的Way非常耗时,将需要引用的Way数据信息存储起来;
假设存在某个HashTable文件可实现key为Way的id而Value为Way引用的Node的id数组,那么在读取、转换Relation时则可以快速检索、生成引用的Way,对于Way的id缓存则采用文件和Hash表的方式实现;
建立两个完全相同的HashTable,一个用于存储id小于2的32次方的Way,HashTable 中存储Way的id低32位和这个Way在对应数据文件中的偏移量,另外一个则用于存储id大于2的32次方的Way,HashTable中存储Way的id高32位和这个Way在对应数据文件中的偏移量,如此存储则可以让HashTable完全存放于内存中;
这一步将Relation的所引用的Way的id全部写入HashTable中,但此时无法获取Way 所引用Node的坐标信息,因此其Value都是0,此过程结束则将Way的id的Hash表写入到缓存文件中存储起来;
将缓存OSM数据中的Node、Way数据信息后,即可实现转换Way、Relation为GIS标准数据,遍历OSM数据中所有的Way,根据Way的标签生成为对应的线或面的地物存储到地物类中,同时检索生成的Way的HashTable,如果Way的id在HashTable中则将这个Way的id 添加到数据文件的结尾,并在HashTable中记录Way的id的数据地址,遍历OSM数据中所有的Relation数据,根据Relation关联的Way的id在Way的HashTable缓存中查找到Way所引用Node的id,然后从Node缓存文件中检索到Node,生成Relation对应的Geometry,并根据Relation的标签存储到对应的线、面地物类中。
专题关联映射地球矢量数据快速生成方法,进一步的,对地球矢量数据的生成遵循以下方法:
第一,将OSM对象的处理过程设计为多个处理过程,要实现OSM数据的转换,需要多次遍历PBF文件,将OSM对象的处理过程设计为多个处理过程,每个处理过程设计为实现特定的功能,这些处理过程可以组合使用,在所有的Node数据处理完成之后处理Way数据时,系统出现意外,继续处理时,不加载Node数据的处理过程,Node数据的处理过程将会被跳过,直接出来执行Way的处理过程,原来处理Node数据可能几个小时,现在则只需要几分钟即可直接执行Way数据的处理过程;
第二,利用多线程并行处理数据,PBF文件为分块压缩存储,解压数据和数据解析过程在计算机多CPU的情况下能并行处理,PBF的数据读取模块也设计为多线程遍历处理,对于大数据解析情况下,采用多线程遍历过程,充分利用计算机CPU资源,提高OSM数据转换速度。
专题关联映射地球矢量数据快速生成方法,进一步的,OSM数据处理过程中主要处理模块为CPBFProcess类和COperator类,CPBFProcess类实现PBF文件的遍历、解析成OSM对象,并将所有成功解析的OSM对象传递给其引用的数据处理类COperator,CPBFProcess类具备CSingleThreadPBFProcess(单线程处理过程)和CMultiThreadPBFProcess(多线程处理过程)两种实现逻辑,这两种处理方式在配置文件中配置,CPBFDealWorker类用来解压PBF的类,CPBFTraverse类将OSM数据中的对象转换成GIS地理要素;
COperator类具备多种实现类,每种实现类处理一种或多种OSM数据结构,对数据进行一种到多种的处理过程,处理结果数据输出有处理类自己实现数据的存储或者交给公共资源对象PublicResource缓存至本地,其中CCacheNodeFileOperator类基于OSM数据进行设计,缓存Node对象数据,以被引用的Way对象检索,CRecordRelationRefWay类也基于OSM数据进行设计,缓存Way对象数据,以被引用的Relation数据检索,CMultiOperator类为多个处理流程,该类设计支持多线程,可同时处理多个COperator,CStatNodeWayRelationOperator 类设计为统计OSM数据中Node对象、Way对象、Relation对象的个数。
专题关联映射地球矢量数据快速生成方法,进一步的,在COperator类处理OSM对象的过程中,根据OSM数据与GIS专题数据的关联映射,将OSM对象通过关联映射找到对应的COperator类,将OSM对象转换成GIS专题数据的地理要素并存储,本发明提出一个可扩充的CTagFilter属性过滤类,同时也提出了一个基于XML的配置文件,即可满足需求;
基于CTagFilter类实现多个类,其中CExistTagFilter类是判断OSM数据中的标签是否存在某个Key,类似有SQL语句中的exists,在XML文件中Exist表示,CEqualTagFilter类是判断OSM数据中的标签是否存在某个<Kye,Value>键值对,类似有SQL语句中的“=”(等于)运算符,在XML文件中Equal表示,CMultiTagFilter类是实现对多个CTagFilter类进行组合,有二个具体的实现CAndTagFilter类和COrTagFilter类,其中CAndTagFilter类是对多个CTagFilter类并运算,同时满足多个CTagFilter类,类似有SQL语句中的“and”运算符,在XML文件中And表示;COrTagFilter类是对多个CTagFilter类或运算,只要满足多个CTagFilter类中的一个即可,类似有SQL语句中的“or”运算符,在XML文件中Or表示,也可以根据需求扩充CTagFilter类,以满足OSM数据与GIS专题数据的关联映射的要求。
专题关联映射地球矢量数据快速生成方法,进一步的,为将OSM数据转换成的GIS专题数据的属性数据结构更灵活,本发明提出配置文件方案,根据GIS专题数据需要的属性字段在OSM数据的标签中找到对应的Key,同时生成该Key的Value,由于OSM数据的标签中Key 并非在OSM对象中都存在,所以设计GIS专题数据需要的属性字段也可以对应多个OSM数据标签中的Key,首先找到不为空的Key,则将该Key的Value赋值给该字段,GIS专题数据需要的属性字段名为Name,可以对应OSM数据的标签中Key为name:zh、name,其中name:zh表示中文名称,name表示标准名称,因为OSM数据为地球数据,自愿者根据自己的语言编辑OSM对象的属性,当OSM数据的标签中Key存在name:zh,则取其值赋值给地理要素的Name 字段;否则将OSM数据的标签中Key存在name,则取其值赋值给地理要素的Name字段;若 OSM数据的标签中Key不存在name:zh、name,则地理要素的Name字段为空;
为提高OSM数据处理程序OSMOperator的灵活性,本发明提出采用XML配置文件存储数据处理的过程、数据处理的公共信息,PBF文件转换程序配置文件为:LogFile-是否输出日志文件,PBF-指定要遍历的PBF文件路径,Disable-该处理流程是否执行,NodeCache-缓存 Node数据文件的目录,ReadOnlyNodeIndex-是否需要读OSM数据中Nod对象的id,WayCache- 缓存Way数据文件的目录,ThreadCount-指定处理流程使用多少线程,Description-仅作日志提示作用,MaxNodeBlock-节点缓存文件最多缓存多少个文件在内存,MultiOperator-复合操作,是对单类操作的组合,用以完成OSM数据处理,同时处理Node数据缓存、Way数据缓存,Node数据、Way数据、Relation数据的地物类解析。
专题关联映射地球矢量数据快速生成方法,进一步的,地球矢量数据快速生成方法实现:在程序的界面中可更改配置文件的一些参数,在该界面中更改的参数包括:
第一,原始OSM数据文件(×.pbf),在文本框输入OSM数据的路径或点击按钮选择OSM 数据的路径;
第二,输出目录,该目录为OSM数据中Node对象、Way对象的缓存文件目录,同时也是转换成标准GIS专题数据的路径;
第三,工作线程,该参数是设置该程序的工作线程,该参数与运行程序的计算机性能相关,设置为计算机的CPU个数;
第四,点击转换按钮,该程序开始执行OSM数据的转换,该程序界面的下面最大的文本框为该程序的运行经度及日志;
程序的底层是用C++实现的类,利用C++语言效率高;界面层是用C#实现,利用C#的良好的界面性及C#语言的可读性;CLR语言是C++和C#的桥梁,C#通过CLR调用C+实现的类。
与现有技术相比,本发明的贡献和创新点在于:
第一,由于中国GIS标准生成数字线化数据传统模式为由点生成线、由线生成面,从外业实地测量到内业数字化,以遥感影像为底图矢量化,这导致了中国模式很难生成其它国家的矢量数据,采用OSM项目开源数据作为中国生成地球范围内的数字线化数据,目前还没有显著成果,本发明针对OSM项目开源数据的背景、文件格式及组织方式、质量、生成方法、与GIS标准专题数据关联映射、快速读取,探索基于OSM项目开源数据转换成GIS标准专题数据的方法,探索地球矢量数据初步成果的提高精度、应用方法,成功的研制出一个高效率、高精度的中国GIS标准的全球矢量数据生成系统,充分保证中国标准的全球矢量数据的精确度,丰富性、时效性方面都存在明显优势,有利于提高国内公司地球空间信息产品的品质;
第二,本发明OSM数据到GIS专题数据的关联映射,提出可以配置的OSM项目开源数据与GIS标准专题数据关联映射文件,由于关联映射的建立是迭代与不断完善的过程,根据转换成GIS标准专题数据成果修改关联映射,同时也可以根据不同的需求,转换成不同的GIS 标准数据,通过该配置文件,大幅提高了该系统生成数据的灵活性,也增加了该系统的应用领域;OSM数据的快速读取根据OSM文件及数据的特点,采用基于PBF二进制格式的OSM文件;并在读取OSM数据过程中,设计缓存OSM数据中的Node、Way策略,该方案大幅提高了OSM数据的读取速度,使OSM数据转换成GIS标准数据所需时间控制在9.5小时内;地球矢量数据快速生成方法,将OSM数据转换成标准GIS数据设计成一个可独立运行的可执行程序,这样只要拷贝该文件,即可在Windows平台上运行,大幅提高该功能的灵活性,通过在GDP软件中添加一个插件,直接调用该执行程序,使该执行程序方便融入GDP软件框架中;地球矢量数据快速生成方法实现,实现了专题关联映射地球矢量数据快速生成成果的可执行程序,为提高该程序的可用性,在程序的界面中可更改配置文件的一些参数,防止用户直接更改配置文件,保证程序的正常运行,地球矢量数据生成效率具有极大的提高;
第三,本发明提出专题关联映射地球矢量数据快速生成方法,包括转换的关联映射、转换过程中的快速读取策略、功能实现设计,基于GIS专题数据中居民地及设施、水系、交通三大类与OSM数据转换的关联映射,将转换结果根据字段进一步提取专题数据;提出转换过程中的快速读取策略的缓存机制,大幅提高了OSM文件转换的效率;最后根据OSM数据转换 GIS专题数据的方法,设计了该方法的实现过程,生成地球各个区域(特别是中国以外地区) 空间信息,有效解决地球空间信息产品缺乏问题;
第四,本发明的数据采用基于PBF二进制的OSM文件,相比于现有技术基于XML结构化的OSM文件在读取方面具有明显的优点,考虑到计算机硬件的快速提升,关键是OSM文件的快速读取和转换,采用基于PBF二进制的OSM文件读取和转换效率有了大幅提高,但基于PBF 二进制的OSM文件的数据存储方式,只能顺序读取OSM文件中的数据,不适合随机检索,由于OSM文件的数据模型存在引用关系,并且GIS中的线状、面状地理要素都是一系列有序的坐标对组成,所以在OSM数据转换成GIS标准数据过程中必然存在对OSM文件进行反复检索的过程,这个读取过程将非常耗时,本发明经过多次研究和实验,得到一个理想的解决方案,该方案缓存OSM数据中的Node、Way数据信息,使得读取速度和可靠性得到充分保证。
第五,为提高OSM数据的转换效率,本发明将OSM对象的处理过程设计为多个处理过程,每个处理过程设计为实现特定的功能,这些处理过程可以组合使用;利用多线程并行处理数据,PBF文件为分块压缩存储,解压数据比较耗时,同时将解压的数据解析为Googleprotobuff 对象也需要时间,这些过程在计算机多CPU的情况下能并行处理,PBF的数据读取模块也设计为多线程遍历处理,采用多线程遍历过程,充分利用计算机CPU资源,提高OSM数据转换速度,节约时间,OSM数据转换成标准GIS数据的用途范围很广,本发明设计成一个可独立运行的可执行程序,这样只要拷贝该文件,即可在Windows平台上运行,大幅提高了该功能的灵活性,通过在GDP软件中添加一个插件,直接调用该执行程序,使该执行程序方便融入 GDP软件框架中,使用非常方便灵活。
附图说明
图1是本发明OSM数据的Node缓存文件结构示意图。
图2是缓存OSM数据中的Way的缓存文件示意图。
图3是本发明PBF文件转换程序设计图。
图4是本发明OSM数据转换程序界面示意图。
具体实施方式
下面结合附图,对本发明提供的专题关联映射地球矢量数据快速生成方法的技术方案进行进一步的描述,使本领域的技术人员能够更好的理解本发明并能予以实施。
随着移动互联网、社交网络和GIS技术的不断发展,以网站和移动终端为平台的OSM项目得到了越来越多的关注,OSM项目的开源数据具有精确性、丰富性、时效性等优势,越来越广泛的用于导航、灾害应急等行业。近年来苹果、阿里巴巴、Foursquare、百度等公司先后采用OSM数据来支撑业务,也反映出OSM项目开源数据的质量等优势。由于国内公司生成数字线化数据传统模式为由点生成线、由线生成面,从外业实地测量到内业数字化;以遥感影像为底图矢量化,这导致了国内公司很难生成其它国家的矢量数据。但采用OSM项目开源数据作为生成地球范围内的数字线化数据,目前还没有显著成果。本发明针对OSM项目开源数据的背景、文件格式及组织方式、质量、生成方法、与GIS标准专题数据关联映射、快速读取,探索基于OSM项目开源数据转换成GIS标准专题数据的方法,探索地球矢量数据初步成果的提高精度、应用方法。
本发明具体包括:
一是OSM数据到GIS专题数据的关联映射,提出可以配置的OSM项目开源数据与GIS标准专题数据关联映射文件,具体包括OSM数据到GIS居民地及设施的关联映射、OSM数据到GIS水系的关联映射、OSM数据到GIS交通的关联映射,由于关联映射的建立是迭代与不断完善的过程,根据转换成GIS标准专题数据成果修改关联映射,同时也可以根据不同的需求,转换成不同的GIS标准数据,通过该配置文件,大幅提高了该系统生成数据的灵活性,也增加了该系统的应用领域;
二是OSM数据的快速读取,包括选用OSM文件格式和OSM文件快速读取方法,根据OSM 文件及数据的特点,采用基于PBF二进制格式的OSM文件;并在读取OSM数据过程中,设计缓存OSM数据中的Node、Way策略,该方案大幅提高了OSM数据的读取速度,使OSM数据转换成GIS标准数据所需时间控制在9.5小时内;
三是地球矢量数据快速生成方法,将OSM数据转换成标准GIS数据设计成一个可独立运行的可执行程序,这样只要拷贝该文件,即可在Windows平台上运行,大幅提高该功能的灵活性,通过在GDP软件中添加一个插件,直接调用该执行程序,使该执行程序方便融入GDP 软件框架中,OSM提供的PBF文件不适合随机检索,因此PBF文件转换程序设计分为以下几个过程,将PBF文件交给对象处理模块分离出一个一个的OSM对象,每个OSM对象经过多个处理过程后,最终形成GIS标准地理要素并存储至对应的GIS专题数据库,或基于OSM数据将OSM对象缓存至本地,用来被更复杂的OSM对象检索;
四是地球矢量数据快速生成方法实现,根据以上设计,实现了专题关联映射地球矢量数据快速生成成果的可执行程序,该程序所需的参数都是通过配置文件OperatorTemplate.xml 实现,配置文件与该执行程序在同一目录下,程序启动后首先在该程序的同级目录下寻找配置文件,为提高该程序的可用性,在程序的界面中可更改配置文件的一些参数,防止用户直接更改配置文件,保证程序的正常运行。
本发明提出专题关联映射地球矢量数据快速生成方法,包括OSM数据到GIS专题数据的转换关联映射、转换过程中的快速读取策略,首先提出GIS专题数据中居民地及设施、水系、交通三大类与OSM数据转换的关联映射,然后提出转换过程中的快速读取策略的缓存机制,包括Node、Way的缓存策略,可以大幅提高OSM文件转换的效率,最后根据OSM数据转换GIS 专题数据的方法,提出该功能的实现步骤。
一、OSM数据到GIS专题数据的关联映射
OSM数据中属性信息标签与GIS专题数据属性信息存储结构不同,OSM数据中的属性信息标签采用<Key、Value>非结构化存储,<Key、Value>类型和格式自由,完全由上传数据者定义。
由于自愿者的数量众多,在上传数据过程中可增加<Key、Value>,从而导致OSM数据中的具有53458个不同的Key,76309802个不同的标签,使OSM数据转换成GIS专题数据的关联映射变得复杂,但OSM项目为标签制定了规则,保证了标签有一定的规律。
OSM项目将Node分为公园、超市、医院、专用场所、咖啡馆、快餐店、餐馆、银行、酒吧、未定义十大类,这些大类定义更小的类别;将Way分为未知种类道路、道路、小径、铁轨、供电线、水、未定义七大类;将Relation分为多个面、超市、建筑物、土地使用、公园、水、医院、专用场所、咖啡屋、餐馆、未定义11个大类,这些大类再细分小类,同时允许自愿者自定义小类。
本发明根据OSM文件中的Node、Way、Relation数据结构的标签信息将OSM数据转换成不同GIS专题数据,基于GIS三大类地理信息要素:居民地及设施、水系、交通,通过将关联映射转换成GIS专题数据成果,并与OSM网站数据比较,如此反复迭代与,直至转换的GIS 专题数据成果满足国家规范及应用要求,将OSM数据转换成GIS专题数据后,通过GIS数据的属性分析,再转换成国家标准不同比例尺的专题数据。
(一)OSM数据到GIS居民地及设施的关联映射
国家标准基础地理信息要素分类定义居民地及设施中包括工矿及其设施、居民地、农业及其设施、名胜古迹、公共服务及其设施、科学观测站、宗教设施、其他建筑物及其设施8 种小类。
根据居民地及设施包括的内容,在OSM数据中查找对应标签中的<Key、Value>。
居民地及设施中的点图层与OSM数据Node的关联映射为超市、医院、公园、专用场所、快餐店、餐馆、酒吧、咖啡馆、银行7个小类,以及未定义类中的部分数据,其中从未定义类中生成居民地及设施最复杂,因为很难一次从中生成全部有关居民地及设施的要素,需要根据提取结果与OSM数据比较,逐步完善。
(二)OSM数据到GIS水系的关联映射
国家标准基础地理信息要素分类定义水系中包括河流、湖泊、沟渠、海洋要素、水库、其他水利要素、水利及其附属设施7种小类。根据水系包括的内容,在OSM数据中查找对应标签中的<Key、Value>,水系的点图层与OSM数据的关联映射为泉、瀑布,以及未定义类中的部分数据。
(三)OSM数据到GIS交通的关联映射
国家标准基础地理信息要素分类定义交通中包括城市道路、铁路、乡村道路、城际公路、道路构造物及附属设施、航道、空运设施、水运设施、其他交通设施9种小类。根据交通包括的内容,在OSM数据中查找对应标签中的<Key、Value>,交通的点图层与OSM数据的关联映射为火车站、机场、公交站、地铁站,以及未定义类中的部分数据。
交通的线图层与OSM数据的关联映射为主干道、高速公路、城市道路、次主干道、轻轨线、人行线、自行车线,以及未定义类中的部分数据。
交通的面图层与OSM数据的关联映射为高速公路服务区、铁路用地、桥面、公交站及服务区、地铁站及服务区、火车站及服务区,以及未定义类中的部分数据。
根据以上总结的关联映射,将OSM数据转换成GIS标准的地理要素图层。GIS标准的地理要素图层属性结构见下表。
类别 | 图层字段 | 所属图层 | 备注 |
string(字符串) | Name | 所有图层 | 名称 |
string(字符串) | Type | 所有图层 | 地理要素的大类别 |
string(字符串) | Type_sec | 所有图层 | 地理要素的小类别 |
long(长整型) | OSMID | 所有图层 | OSM数据的id |
long(长整型) | version | 所有图层 | OSM数据的版本 |
long(长整型) | changeset | 所有图层 | OSM数据的变化集 |
long(长整型) | timestamp | 所有图层 | OSM数据的时间戳 |
long(长整型) | linelong | 所有线图层 | 地理要素的长度 |
long(长整型) | lineWidth | 所有线图层 | 地理要素的宽度 |
int(整型) | LANE | 交通的线图层 | 交通中的车道个数 |
string(字符串) | surface | 交通的线、面图层 | 交通中的路面材质 |
string(字符串) | oneway | 交通的线图层 | 交通中的是否单行线 |
long(长整型) | area | 所有线图层 | 地理要素的面积 |
二、OSM数据的快速读取
(一)选用OSM文件格式
基于XML结构化的OSM文件与基于PBF二进制的OSM文件在读取方面具有明显的优缺点,经过二种格式的OSM文件比较,考虑到计算机硬件的快速提升,关键是OSM文件的快速读取和转换,本发明的数据采用基于PBF二进制的OSM文件。
(二)OSM文件快速读取方法
基于PBF二进制的OSM文件的数据存储方式,只能顺序读取OSM文件中的数据,不适合随机检索。由于OSM文件的数据模型存在引用关系(Way引用Node节点的id,Relation引用Relation、Way、Node节点的id),并且GIS中的线状、面状地理要素都是一系列有序的坐标对组成,所以在OSM数据转换成GIS标准数据过程中必然存在对OSM文件进行反复检索的过程,若在读取OSM文件中Way的过程中,Way引用Node节点的id,需要通过遍历OSM文件生成Node节点id对应的坐标,但OSM文件已包含27.5亿个Node、2.75亿条Way、325万多万条Relation,这个读取过程将非常耗时。本发明经过多次研究和实验,得到一个理想的解决方案,该方案缓存OSM数据中的Node、Way数据信息。
1、缓存OSM数据中的Node数据信息
缓存OSM数据中Node的id、lat、lon信息存储至缓存文件,便于Way和Relation数据进行转换时方便的根据引用Node结构的id生成点的坐标(lat,lon)。
在读取OSM数据中Node数据的过程中,同时将Node数据根据Node的标签信息转换成 GIS中对应专题数据FeatureClass,FeatureClass具备属性检索功能,Way、Relation引用的Node数据完全可以通过FeatureClass的检索功能实现,但该方案非常耗时,利用FeatureClass检索只能保证一个Node的检索在毫秒级别,假设1毫秒完成一个Node的检索,地球OSM数据中有27.5亿个Node节点,这些点中一部分是独立的Node,一部分则是引用的Node,假定50%的Node将有可能被检索到,那么13.7亿个点每个点1毫秒的检索时间将耗费13.7亿/1000/3600/24=15.8天,初步估算是将OSM数中的Node转换完成要耗费将近16 天,而且还没有考虑Way和Relation数据的写入时间,由于OSM数据的更新周期为7天,利用FeatureClass具备的检索功能的方案是不可行的。
因此有必要采用缓存文件缓存Node数据的id、lat、lon信息,因为数据结构简单可使用文件的方式存储,OSM数据中Node的id为64位整数,并且在OSM数据文件中Node的id 都是从小到大存储顺序,那么缓存文件可设计成多个小文件来存储连续的若干Node的坐标信息,例如id为0至10000使用一个文件编号为1.Node的文件存储,以此类推10000至20000 使用文件编号为2.Node的文件来存储,如此即使将26亿的节点都缓存,花费的磁盘空间约为38G。图1为OSM数据的Node缓存文件结构。
反过来如果要检索缓存文件中的Node,则根据id和每个文件存储的数量整除即可获得文件的名称,然后从文件中对应的位置获得对应Node的坐标信息,每个缓存小文件可通过内存映射文件的方式进行缓存,这样在检索节点较集中的情况下大幅减少文件打开的开销,检索单个节点的耗时低于1ms,实验证明将OSM所有的27亿个节点缓存为文件约耗费1个小时。
2、缓存OSM数据中的Way数据信息
在遍历OSM数据中Relation数据结构时,需要引用到Way的数据结构,而OSM的数据文件不适合随机检索,当Relation引用到某个Way的id,根据Way的id去OSM文件中遍历所有的Way非常耗时,较理想的方法是将需要引用的Way数据信息存储起来。
假设存在某个HashTable文件可实现key为Way的id而Value为Way引用的Node的id数组,那么在读取、转换Relation时则可以快速检索、生成引用的Way。但地球OSM的Realtion 引用的Way的数量相当大,每个Way所引用的Node的id也可能成千上万,如果全用HashTable 文件存储显然无法直接存储为内存,普通计算机内存难于承受如此大的HashTable检索,对于Way的id缓存则采用文件和Hash表的方式实现,其缓存文件的结构见图2。
建立两个完全相同的HashTable,一个用于存储id小于2的32次方的Way,HashTable 中存储Way的id低32位和这个Way在对应数据文件中的偏移量,另外一个则用于存储id大于2的32次方的Way,HashTable中存储Way的id高32位和这个Way在对应数据文件中的偏移量,如此存储则可以让HashTable完全存放于内存中,从这个量来计算即使每个Hash表中存储1亿个Way,那么整体也只需要1.4G左右的内存即可缓存,32位的程序几乎都可以满足要求,而实际上地球的OSM数据中的Way数据总计才2.75亿个,而且被Relation引用的 Way就算全部被缓存需要的内存大概在2G左右,考虑Hash表自身的数据膨胀,在普通8G的计算机上使用64位的程序即可完全缓存Way的数据,当然这样缓存可能的一个风险是缓存数据文件大小可能会超过4G,如果这样则可以认为Value不是绝对地址,而是相对8个字节的地址,那么文件的大小即可支持到32G,而实际的实验证明并没有超过4G。
这一步将Relation的所引用的Way的id全部写入HashTable中,但此时无法获取Way 所引用Node的坐标信息,因此其Value都是0,此过程结束则将Way的id的Hash表写入到缓存文件中存储起来。
将缓存OSM数据中的Node、Way数据信息后,即可实现转换Way、Relation为GIS标准数据,遍历OSM数据中所有的Way,根据Way的标签生成为对应的线或面的地物存储到地物类中,同时检索生成的Way的HashTable,如果Way的id在HashTable中则将这个Way的id 添加到数据文件的结尾,并在HashTable中记录Way的id的数据地址,遍历OSM数据中所有的Relation数据,根据Relation关联的Way的id在Way的HashTable缓存中查找到Way所引用Node的id,然后从Node缓存文件中检索到Node,生成Relation对应的Geometry,并根据Relation的标签存储到对应的线、面地物类中。
三、地球矢量数据快速生成方法
OSM数据转换成标准GIS数据的用途范围很广,很适合设计成一个可独立运行的可执行程序,这样只要拷贝该文件,即可在Windows平台上运行,大幅提高了该功能的灵活性。通过在GDP软件中添加一个插件,直接调用该执行程序,使该执行程序方便融入GDP软件框架中。
OSM提供的PBF文件不适合随机检索,因此PBF文件转换程序设计分为以下几个过程,见图3。将PBF文件交给对象处理模块分离出一个一个的OSM对象,每个OSM对象经过多个处理过程后,最终形成GIS标准地理要素并存储至对应的GIS专题数据库,或基于OSM数据将OSM对象缓存至本地,用来被更复杂的OSM对象检索。
为提高OSM数据的转换效率,本发明对地球矢量数据的生成遵循以下方法:
第一,将OSM对象的处理过程设计为多个处理过程,要实现OSM数据的转换,需要多次遍历PBF文件,并且整个处理过程比较耗时,如果成功完成了部分OSM数据处理之后,遇到断电、程序崩溃等意外情况,需要重新开始处理数据,这显然是比较耗时的,而且是不合理的。因此将OSM对象的处理过程设计为多个处理过程,每个处理过程设计为实现特定的功能,这些处理过程可以组合使用。例如在所有的Node数据处理完成之后处理Way数据时,系统出现意外,继续处理时,不加载Node数据的处理过程,Node数据的处理过程将会被跳过,直接出来执行Way的处理过程,原来处理Node数据可能几个小时,现在则只需要几分钟即可直接执行Way数据的处理过程。
第二,利用多线程并行处理数据,PBF文件为分块压缩存储,解压数据比较耗时,同时将解压的数据解析为Google protobuff对象也需要时间,这些过程在计算机多CPU的情况下能并行处理,PBF的数据读取模块也设计为多线程遍历处理,对于大数据解析情况下,采用多线程遍历过程,充分利用计算机CPU资源,提高OSM数据转换速度,节约时间。
OSM数据处理过程中主要处理模块为CPBFProcess类和COperator类,CPBFProcess类实现PBF文件的遍历、解析成OSM对象,并将所有成功解析的OSM对象传递给其引用的数据处理类COperator,CPBFProcess类具备CSingleThreadPBFProcess(单线程处理过程)和CMultiThreadPBFProcess(多线程处理过程)两种实现逻辑,这两种处理方式在配置文件中配置,CPBFDealWorker类用来解压PBF的类,CPBFTraverse类将OSM数据中的对象转换成GIS地理要素。
COperator类具备多种实现类,每种实现类处理一种或多种OSM数据结构,对数据进行一种到多种的处理过程,处理结果数据输出有处理类自己实现数据的存储或者交给公共资源对象PublicResource缓存至本地,其中CCacheNodeFileOperator类基于OSM数据进行设计,缓存Node对象数据,以被引用的Way对象检索,CRecordRelationRefWay类也基于OSM数据进行设计,缓存Way对象数据,以被引用的Relation数据检索,CMultiOperator类为多个处理流程,该类设计支持多线程,可同时处理多个COperator,CStatNodeWayRelationOperator 类设计为统计OSM数据中Node对象、Way对象、Relation对象的个数。
在COperator类处理OSM对象的过程中,根据OSM数据与GIS专题数据的关联映射,将 OSM对象通过关联映射找到对应的COperator类,将OSM对象转换成GIS专题数据的地理要素并存储,由于OSM数据与GIS专题数据的关联映射需要不断完善,所以设计一个比较灵活的实现方法。本发明提出一个可扩充的CTagFilter属性过滤类,同时也提出了一个基于XML 的配置文件,即可满足需求。
基于CTagFilter类实现多个类,其中CExistTagFilter类是判断OSM数据中的标签是否存在某个Key,类似有SQL语句中的exists,在XML文件中Exist表示,CEqualTagFilter类是判断OSM数据中的标签是否存在某个<Kye,Value>键值对,类似有SQL语句中的“=”(等于)运算符,在XML文件中Equal表示,CMultiTagFilter类是实现对多个CTagFilter类进行组合,有二个具体的实现CAndTagFilter类和COrTagFilter类,其中CAndTagFilter类是对多个CTagFilter类并运算,同时满足多个CTagFilter类,类似有SQL语句中的“and”运算符,在XML文件中And表示;COrTagFilter类是对多个CTagFilter类或运算,只要满足多个CTagFilter类中的一个即可,类似有SQL语句中的“or”运算符,在XML文件中Or表示,也可以根据需求扩充CTagFilter类,以满足OSM数据与GIS专题数据的关联映射的要求。
为将OSM数据转换成的GIS专题数据的属性数据结构更灵活,本发明提出配置文件方案,根据GIS专题数据需要的属性字段在OSM数据的标签中找到对应的Key,同时生成该Key的 Value,由于OSM数据的标签中Key并非在OSM对象中都存在,所以设计GIS专题数据需要的属性字段也可以对应多个OSM数据标签中的Key,首先找到不为空的Key,则将该Key的Value 赋值给该字段,GIS专题数据需要的属性字段名为Name,可以对应OSM数据的标签中Key为 name:zh、name,其中name:zh表示中文名称,name表示标准名称,因为OSM数据为地球数据,自愿者根据自己的语言编辑OSM对象的属性,当OSM数据的标签中Key存在name:zh,则取其值赋值给地理要素的Name字段;否则将OSM数据的标签中Key存在name,则取其值赋值给地理要素的Name字段;若OSM数据的标签中Key不存在name:zh、name,则地理要素的Name字段为空。
为提高OSM数据处理程序OSMOperator的灵活性,本发明提出采用XML配置文件存储数据处理的过程、数据处理的公共信息,PBF文件转换程序配置文件为:LogFile-是否输出日志文件,PBF-指定要遍历的PBF文件路径,Disable-该处理流程是否执行,NodeCache-缓存 Node数据文件的目录,ReadOnlyNodeIndex-是否需要读OSM数据中Nod对象的id,WayCache- 缓存Way数据文件的目录,ThreadCount-指定处理流程使用多少线程,Description-仅作日志提示作用,MaxNodeBlock-节点缓存文件最多缓存多少个文件在内存,MultiOperator-复合操作,是对单类操作的组合,用以完成OSM数据处理,同时处理Node数据缓存、Way数据缓存,Node数据、Way数据、Relation数据的地物类解析。
四、地球矢量数据快速生成方法实现
根据以上设计,实现了专题关联映射地球矢量数据快速生成成果的可执行程序。程序界面如图4所示。该程序所需的参数都是通过配置文件OperatorTemplate.xml实现,配置文件与该执行程序在同一目录下,程序启动后首先在该程序的同级目录下寻找配置文件,为提高该程序的可用性,在程序的界面中可更改配置文件的一些参数,防止用户直接更改配置文件,保证程序的正常运行,在该界面中更改的参数包括:
第一,原始OSM数据文件(×.pbf),在文本框输入OSM数据的路径或点击按钮选择OSM 数据的路径;
第二,输出目录,该目录为OSM数据中Node对象、Way对象的缓存文件目录,同时也是转换成标准GIS专题数据的路径;
第三,工作线程,该参数是设置该程序的工作线程,该参数与运行程序的计算机性能相关,设置为计算机的CPU个数;
第四,点击转换按钮,该程序开始执行OSM数据的转换,该程序界面的下面最大的文本框为该程序的运行经度及日志。
程序的底层是用C++实现的类,利用C++语言效率高;界面层是用C#实现,利用C#的良好的界面性及C#语言的可读性;CLR语言是C++和C#的桥梁,C#通过CLR调用C+实现的类。
Claims (10)
1.专题关联映射地球矢量数据快速生成方法,其特征在于,包括OSM数据到GIS专题数据的转换关联映射、转换过程中的快速读取策略,首先提出GIS专题数据中居民地及设施、水系、交通三大类与OSM数据转换的关联映射,然后提出转换过程中的快速读取策略的缓存机制,包括Node、Way的缓存策略,提高OSM文件转换的效率,最后根据OSM数据转换GIS专题数据的方法,提出该功能的实现步骤;
一是OSM数据到GIS专题数据的关联映射,提出可以配置的OSM项目开源数据与GIS标准专题数据关联映射文件,具体包括OSM数据到GIS居民地及设施的关联映射、OSM数据到GIS水系的关联映射、OSM数据到GIS交通的关联映射,根据转换成GIS标准专题数据成果修改关联映射,同时也可以根据不同的需求,转换成不同的GIS标准数据,通过该配置文件,提高该系统生成数据的灵活性,增加该系统的应用领域;
二是OSM数据的快速读取,包括选用OSM文件格式和OSM文件快速读取方法,根据OSM文件及数据的特点,采用基于PBF二进制格式的OSM文件;并在读取OSM数据过程中,设计缓存OSM数据中的Node、Way策略,提高OSM数据的读取速度;
三是地球矢量数据快速生成方法,将OSM数据转换成标准GIS数据设计成一个可独立运行的可执行程序,只要拷贝该文件即可在Windows平台上运行,通过在GDP软件中添加一个插件,直接调用该执行程序,使该执行程序方便融入GDP软件框架中,基于OSM提供的PBF文件不适合随机检索,PBF文件转换程序设计分为以下几个过程,将PBF文件交给对象处理模块分离出一个一个的OSM对象,每个OSM对象经过多个处理过程后,最终形成GIS标准地理要素并存储至对应的GIS专题数据库,或基于OSM数据将OSM对象缓存至本地,用来被更复杂的OSM对象检索;
四是地球矢量数据快速生成方法实现,基于以上设计,实现专题关联映射地球矢量数据快速生成成果的可执行程序,该程序所需的参数都是通过配置文件OperatorTemplate.xml实现,配置文件与该执行程序在同一目录下,程序启动后首先在该程序的同级目录下寻找配置文件,在程序的界面中可更改配置文件的一些参数,防止用户直接更改配置文件,保证程序的正常运行。
2.根据权利要求1所述的专题关联映射地球矢量数据快速生成方法,其特征在于,OSM数据到GIS专题数据的关联映射:OSM数据中属性信息标签与GIS专题数据属性信息存储结构不同,本发明根据OSM文件中的Node、Way、Relation数据结构的标签信息将OSM数据转换成不同GIS专题数据,基于GIS三大类地理信息要素:居民地及设施、水系、交通,通过将关联映射转换成GIS专题数据成果,并与OSM网站数据比较,如此反复迭代与,直至转换的GIS专题数据成果满足国家规范及应用要求,将OSM数据转换成GIS专题数据后,通过GIS数据的属性分析,再转换成国家标准不同比例尺的专题数据。
3.根据权利要求1所述的专题关联映射地球矢量数据快速生成方法,其特征在于,OSM文件快速读取方法:基于PBF二进制的OSM文件的数据存储方式,只能顺序读取OSM文件中的数据,不适合随机检索,OSM文件的数据模型存在引用关系,并且GIS中的线状、面状地理要素都是一系列有序的坐标对组成,所以在OSM数据转换成GIS标准数据过程中必然存在对OSM文件进行反复检索的过程,若在读取OSM文件中Way的过程中,Way引用Node节点的id,需要通过遍历OSM文件生成Node节点id对应的坐标,本发明得到一个理想的解决方案,该方案缓存OSM数据中的Node、Way数据信息。
4.根据权利要求3所述的专题关联映射地球矢量数据快速生成方法,其特征在于,缓存OSM数据中的Node数据信息:缓存OSM数据中Node的id、lat、lon信息存储至缓存文件,便于Way和Relation数据进行转换时方便的根据引用Node结构的id生成点的坐标(lat,lon);
在读取OSM数据中Node数据的过程中,同时将Node数据根据Node的标签信息转换成GIS中对应专题数据FeatureClass,采用缓存文件缓存Node数据的id、lat、lon信息,因为数据结构简单可使用文件的方式存储,OSM数据中Node的id为64位整数,并且在OSM数据文件中Node的id都是从小到大存储顺序,那么缓存文件可设计成多个小文件来存储连续的若干Node的坐标信息,id为0至10000使用一个文件编号为1.Node的文件存储,以此类推10000至20000使用文件编号为2.Node的文件来存储;
反过来如果要检索缓存文件中的Node,则根据id和每个文件存储的数量整除即可获得文件的名称,然后从文件中对应的位置获得对应Node的坐标信息,每个缓存小文件可通过内存映射文件的方式进行缓存,这样在检索节点较集中的情况下大幅减少文件打开的开销。
5.根据权利要求3所述的专题关联映射地球矢量数据快速生成方法,其特征在于,缓存OSM数据中的Way数据信息:
在遍历OSM数据中Relation数据结构时,需要引用到Way的数据结构,当Relation引用到某个Way的id,根据Way的id去OSM文件中遍历所有的Way非常耗时,将需要引用的Way数据信息存储起来;
假设存在某个HashTable文件可实现key为Way的id而Value为Way引用的Node的id数组,那么在读取、转换Relation时则可以快速检索、生成引用的Way,对于Way的id缓存则采用文件和Hash表的方式实现;
建立两个完全相同的HashTable,一个用于存储id小于2的32次方的Way,HashTable中存储Way的id低32位和这个Way在对应数据文件中的偏移量,另外一个则用于存储id大于2的32次方的Way,HashTable中存储Way的id高32位和这个Way在对应数据文件中的偏移量,如此存储则可以让HashTable完全存放于内存中;
这一步将Relation的所引用的Way的id全部写入HashTable中,但此时无法获取Way所引用Node的坐标信息,因此其Value都是0,此过程结束则将Way的id的Hash表写入到缓存文件中存储起来;
将缓存OSM数据中的Node、Way数据信息后,即可实现转换Way、Relation为GIS标准数据,遍历OSM数据中所有的Way,根据Way的标签生成为对应的线或面的地物存储到地物类中,同时检索生成的Way的HashTable,如果Way的id在HashTable中则将这个Way的id添加到数据文件的结尾,并在HashTable中记录Way的id的数据地址,遍历OSM数据中所有的Relation数据,根据Relation关联的Way的id在Way的HashTable缓存中查找到Way所引用Node的id,然后从Node缓存文件中检索到Node,生成Relation对应的Geometry,并根据Relation的标签存储到对应的线、面地物类中。
6.根据权利要求1所述的专题关联映射地球矢量数据快速生成方法,其特征在于,对地球矢量数据的生成遵循以下方法:
第一,将OSM对象的处理过程设计为多个处理过程,要实现OSM数据的转换,需要多次遍历PBF文件,将OSM对象的处理过程设计为多个处理过程,每个处理过程设计为实现特定的功能,这些处理过程可以组合使用,在所有的Node数据处理完成之后处理Way数据时,系统出现意外,继续处理时,不加载Node数据的处理过程,Node数据的处理过程将会被跳过,直接出来执行Way的处理过程,原来处理Node数据可能几个小时,现在则只需要几分钟即可直接执行Way数据的处理过程;
第二,利用多线程并行处理数据,PBF文件为分块压缩存储,解压数据和数据解析过程在计算机多CPU的情况下能并行处理,PBF的数据读取模块也设计为多线程遍历处理,对于大数据解析情况下,采用多线程遍历过程,充分利用计算机CPU资源,提高OSM数据转换速度。
7.根据权利要求6所述的专题关联映射地球矢量数据快速生成方法,其特征在于,OSM数据处理过程中主要处理模块为CPBFProcess类和COperator类,CPBFProcess类实现PBF文件的遍历、解析成OSM对象,并将所有成功解析的OSM对象传递给其引用的数据处理类COperator,CPBFProcess类具备CSingleThreadPBFProcess(单线程处理过程)和CMultiThreadPBFProcess(多线程处理过程)两种实现逻辑,这两种处理方式在配置文件中配置,CPBFDealWorker类用来解压PBF的类,CPBFTraverse类将OSM数据中的对象转换成GIS地理要素;
COperator类具备多种实现类,每种实现类处理一种或多种OSM数据结构,对数据进行一种到多种的处理过程,处理结果数据输出有处理类自己实现数据的存储或者交给公共资源对象PublicResource缓存至本地,其中CCacheNodeFileOperator类基于OSM数据进行设计,缓存Node对象数据,以被引用的Way对象检索,CRecordRelationRefWay类也基于OSM数据进行设计,缓存Way对象数据,以被引用的Relation数据检索,CMultiOperator类为多个处理流程,该类设计支持多线程,可同时处理多个COperator,CStatNodeWayRelationOperator类设计为统计OSM数据中Node对象、Way对象、Relation对象的个数。
8.根据权利要求7所述的专题关联映射地球矢量数据快速生成方法,其特征在于,在COperator类处理OSM对象的过程中,根据OSM数据与GIS专题数据的关联映射,将OSM对象通过关联映射找到对应的COperator类,将OSM对象转换成GIS专题数据的地理要素并存储,本发明提出一个可扩充的CTagFilter属性过滤类,同时也提出了一个基于XML的配置文件,即可满足需求;
基于CTagFilter类实现多个类,其中CExistTagFilter类是判断OSM数据中的标签是否存在某个Key,类似有SQL语句中的exists,在XML文件中Exist表示,CEqualTagFilter类是判断OSM数据中的标签是否存在某个<Kye,Value>键值对,类似有SQL语句中的“=”(等于)运算符,在XML文件中Equal表示,CMultiTagFilter类是实现对多个CTagFilter类进行组合,有二个具体的实现CAndTagFilter类和COrTagFilter类,其中CAndTagFilter类是对多个CTagFilter类并运算,同时满足多个CTagFilter类,类似有SQL语句中的“and”运算符,在XML文件中And表示;COrTagFilter类是对多个CTagFilter类或运算,只要满足多个CTagFilter类中的一个即可,类似有SQL语句中的“or”运算符,在XML文件中Or表示,也可以根据需求扩充CTagFilter类,以满足OSM数据与GIS专题数据的关联映射的要求。
9.根据权利要求8所述的专题关联映射地球矢量数据快速生成方法,其特征在于,为将OSM数据转换成的GIS专题数据的属性数据结构更灵活,本发明提出配置文件方案,根据GIS专题数据需要的属性字段在OSM数据的标签中找到对应的Key,同时生成该Key的Value,由于OSM数据的标签中Key并非在OSM对象中都存在,所以设计GIS专题数据需要的属性字段也可以对应多个OSM数据标签中的Key,首先找到不为空的Key,则将该Key的Value赋值给该字段,GIS专题数据需要的属性字段名为Name,可以对应OSM数据的标签中Key为name:zh、name,其中name:zh表示中文名称,name表示标准名称,因为OSM数据为地球数据,自愿者根据自己的语言编辑OSM对象的属性,当OSM数据的标签中Key存在name:zh,则取其值赋值给地理要素的Name字段;否则将OSM数据的标签中Key存在name,则取其值赋值给地理要素的Name字段;若OSM数据的标签中Key不存在name:zh、name,则地理要素的Name字段为空;
为提高OSM数据处理程序OSMOperator的灵活性,本发明提出采用XML配置文件存储数据处理的过程、数据处理的公共信息,PBF文件转换程序配置文件为:LogFile-是否输出日志文件,PBF-指定要遍历的PBF文件路径,Disable-该处理流程是否执行,NodeCache-缓存Node数据文件的目录,ReadOnlyNodeIndex-是否需要读OSM数据中Nod对象的id,WayCache-缓存Way数据文件的目录,ThreadCount-指定处理流程使用多少线程,Description-仅作日志提示作用,MaxNodeBlock-节点缓存文件最多缓存多少个文件在内存,MultiOperator-复合操作,是对单类操作的组合,用以完成OSM数据处理,同时处理Node数据缓存、Way数据缓存,Node数据、Way数据、Relation数据的地物类解析。
10.根据权利要求7所述的专题关联映射地球矢量数据快速生成方法,其特征在于,地球矢量数据快速生成方法实现:在程序的界面中可更改配置文件的一些参数,在该界面中更改的参数包括:
第一,原始OSM数据文件(×.pbf),在文本框输入OSM数据的路径或点击按钮选择OSM数据的路径;
第二,输出目录,该目录为OSM数据中Node对象、Way对象的缓存文件目录,同时也是转换成标准GIS专题数据的路径;
第三,工作线程,该参数是设置该程序的工作线程,该参数与运行程序的计算机性能相关,设置为计算机的CPU个数;
第四,点击转换按钮,该程序开始执行OSM数据的转换,该程序界面的下面最大的文本框为该程序的运行经度及日志;
程序的底层是用C++实现的类,利用C++语言效率高;界面层是用C#实现,利用C#的良好的界面性及C#语言的可读性;CLR语言是C++和C#的桥梁,C#通过CLR调用C+实现的类。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110595596.4A CN113297343A (zh) | 2021-05-29 | 2021-05-29 | 专题关联映射地球矢量数据快速生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110595596.4A CN113297343A (zh) | 2021-05-29 | 2021-05-29 | 专题关联映射地球矢量数据快速生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113297343A true CN113297343A (zh) | 2021-08-24 |
Family
ID=77326117
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110595596.4A Pending CN113297343A (zh) | 2021-05-29 | 2021-05-29 | 专题关联映射地球矢量数据快速生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113297343A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183825A (zh) * | 2015-08-28 | 2015-12-23 | 中南大学 | 一种osm数据到专业gis矢量数据的模型自动转换及osm增量数据动态整合方法 |
CN105893703A (zh) * | 2016-04-27 | 2016-08-24 | 中国地质大学(武汉) | 一种基于多边形的城市道路网主干道选取方法 |
CN108445515A (zh) * | 2018-03-01 | 2018-08-24 | 南京理工大学 | 一种面向公路物流的车辆追踪系统 |
-
2021
- 2021-05-29 CN CN202110595596.4A patent/CN113297343A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183825A (zh) * | 2015-08-28 | 2015-12-23 | 中南大学 | 一种osm数据到专业gis矢量数据的模型自动转换及osm增量数据动态整合方法 |
CN105893703A (zh) * | 2016-04-27 | 2016-08-24 | 中国地质大学(武汉) | 一种基于多边形的城市道路网主干道选取方法 |
CN108445515A (zh) * | 2018-03-01 | 2018-08-24 | 南京理工大学 | 一种面向公路物流的车辆追踪系统 |
Non-Patent Citations (3)
Title |
---|
刘文明: "基于OpenStreetMap的全球矢量数据建库关键技术研究", 《武汉大学机构知识库》, 27 May 2015 (2015-05-27), pages 1 - 74 * |
刘文明: "基于OpenStreetMap的全球矢量数据建库关键技术研究", pages 1 - 74, Retrieved from the Internet <URL:《https://whu-primo.hosted.exlibrisgroup.com.cn/primo-explore/fulldisplay?docid=86WHU_XWLW35995&context=L&vid=86WHU&lang=zh_CN&search_scope=default_scope&adaptor=Local%20Search%20Engine&tab=default_tab&query=any, contains, %E5%9F%BA%E4%BA%8EOpenStreetMap%E7%9A%84%E5%85%A8%E7%90%83%E7%9F%A2%E9%87%8F%E6%95%B0%E6%8D%AE&offset=0》> * |
罗路长: "自发地理信息与专业数据的转换、匹配及质量评价方法研究", 《中国优秀硕士学位论文全文数据库基础科学辑》, no. 1, 15 January 2018 (2018-01-15), pages 008 - 31 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240037109A1 (en) | Ranking of Geographic Information | |
Hong et al. | Hierarchical community detection and functional area identification with OSM roads and complex graph theory | |
US6816779B2 (en) | Programmatically computing street intersections using street geometry | |
Hill | Core elements of digital gazetteers: placenames, categories, and footprints | |
US20030165254A1 (en) | Adapting point geometry for storing address density | |
McKeown | The role of artificial intelligence in the integration of remotely sensed data with geographic information systems | |
CN101350012B (zh) | 一种地址匹配的方法和系统 | |
Campbell et al. | Essentials of geographic information systems | |
CN109344213B (zh) | 一种基于字典树的中文地理编码方法 | |
EP3152683A1 (en) | Tile-based geocoder | |
CN111324679B (zh) | 地址信息的处理方法、装置和系统 | |
EP2836928B1 (en) | Full text search using r-trees | |
CN101425080A (zh) | 地理xml数据库管理系统 | |
US20030158667A1 (en) | Programmatically deriving street geometry from address data | |
Cetl et al. | A comparison of address geocoding techniques–case study of the city of Zagreb, Croatia | |
CN112699640B (zh) | 基于PostgreSQL的地理编码方法和系统 | |
Chen et al. | A spatiotemporal data model and an index structure for computational time geography | |
Ladner et al. | Mining Spatio-Temporal Information Systems | |
CN113297343A (zh) | 专题关联映射地球矢量数据快速生成方法 | |
Singh et al. | MODELING A GEO-SPATIAL DATABASE FOR MANAGING TRAVELERS'DEMAND | |
CN111191084B (zh) | 一种基于图结构的地名地址的解析方法 | |
KR100672986B1 (ko) | 모바일 데이터 단말기용 콤팩트형 지리정보시스템 엔진과공간 데이터베이스를 구축하기 위한 시스템 | |
Tran et al. | Exploiting WebGis technology to build an environmental database to support the environmental management of Ho Chi Minh city | |
Ramazanli | Informatıon search in Geographıc Databases | |
Petrov | Geocodes in Geographic Information Systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |