- 收藏
- 加入书签
区块链技术在基于多源矢量数据融合的基础地理实体更新中的应用研究
摘要:随着计算机技术的发展与国民经济生活对测绘地理信息服务需求的提高,测绘地理信息技术的发展迎来了前所未有的挑战。区块链技术作为当前计算机分布式网络热点技术之一,已写入国家产业白皮书中,其去中心化、可溯源、不可篡改等技术特点对基于多源矢量数据融合的地理实体更新研究具有借鉴意义。本文通过对仿真区块链技术的研究,探讨了区块链技术要点及其在基础地理实体更新中的应用。
关键词:区块链 多源矢量数据融合 基础地理实体更新
0 引言
近年来,随着自然资源大系统的整合,测绘行业更加深入地融入到自然资源大环境中,相应地对测绘技术手段所发挥的作用有了更高的要求。有关部门对测绘地理信息行业多次明确“多测合一”、“多规合一”的要求。而多源矢量数据融合是当前“多测合一”、“多规合一”必经的技术阶段,是整合优化现有资源,进行数据挖掘与再表达的基础。
多源矢量数据融合,前人已经做了大量探索,并取得了很大的成果。其中,顾芒提出了通过数据整合抽取(ETL)技术,将地理要素数据自动抽取成为基础数据、国情数据以及框架数据,实现多库融合与联动更新的方法[1]。杨灿针对地理空间数据多源、异构、不一致性的现状及特点,构建了以数据库模式融合与数据库实例融合为研究思路的多源地理空间数据融合基本流程与技术要求[2]。张豫研究了地理空间要素选取的若干原则,从不同数据源、不同数据精度和不同数据模型的地理空间矢量中抽取所需要的信息,按照用户新的应用需求构建新的空间数据[3]。张敏从同名实体匹配和融合的角度,研究并总结了多源矢量地图数据集成与融合的框架流程,研究了多源矢量地图数据的预处理和格式转换的多源矢量地图数据集成方法[4]。邱新忠提出从省市数据源中提取需要的图层,并对图层要素进行代码一致性处理,再按照融合原则对图层分类融合处理,最终形成一套融合后的数据[5]。
本研究是在前人研究的基础上,引入区块链技术,探索区块链技术在多源矢量数据融合中的应用。
1 多源矢量数据融合
多源矢量数据是对来源广泛,具有矢量数据结构的地理信息数据的统称。一般而言,多源矢量数据包括基础测绘地形图数据、地理国情监测数据、国土调查数据、天地图数据、导航电子地图数据以及其他各类测绘成果数据等。其中基础测绘地形图数据由于内容丰富、分类分层明确,往往作为地理实体数据生产进行抽取整理的本底数据。本研究是在省级基础测绘数字线划地形图的基础上,按照地理实体相关标准要求[6]制作地理实体数据库作为实验数据,并以地理国情监测数据作为地理实体更新的融合参考数据。
一般而言,多源矢量数据融合建立在统一的地理参考基准上,并且融合处理前各矢量数据具有相近的属性结构。融合处理大致包括几何图形的融合与属性值的融合。从数据处理层面上讲,一般包括数据库模式融合、数据库实例融合[2]。数据库模式融合是指数据结构的一致性融合,其实现的基础是融合的多源矢量数据具备相近的数据结构,且表现形式一致。数据库实例融合包括几何图形与属性信息的融合。这是多源矢量地理信息数据融合处理的关键内容。属性信息的融合是在建立多源矢量数据关联的基础上进行属性的追加、赋值与拼接,表现在二维表中就是对目标字段的组合赋值及属性表的字段扩展。几何图形的融合是在分析多源矢量数据几何特点的基础上,找出各矢量数据的异同,通过设置融合策略,实现几何图形的自动融合。
本研究中,是研究其他多源矢量数据与基础地理实体数据库中相关地理要素的融合。在融合前需要对更新参考的矢量数据做以下处理:地理参考基准的统一、矢量数据结构的统一、属性结构的一致性处理、同名地理要素的对比分析等等。结合区块链的技术特点,与本研究的试验目的,设计具体的流程如图1所示:
2 区块链技术
狭义上讲,区块链是一种按照数据产生的时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并在密码学的基础上进行加密保证的不可篡改和不可伪造的分布式账本。广义来讲,区块链技术是利用区块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式[7]。
区块链技术的基础数据结构是以区块为单位的链式结构。每个链上的区块基本上是由区块元数据与入链信息数据组成。区块元数据主要包含区块大小、区块头信息和交易计数器三部分。区块头Header包含两组元数据,一组与挖矿有关,包含时间戳、nonce、验证要求;一组与区块链自身有关,包含前一区块的签名值、版本号和Merkle根。
区块链中的序列是通过Merkle-tree进行组织的。它是一种Hash二叉树,用作快速归纳和校验大规模数据完整性的数据结构,可以用于零知识证明、修改等。生成一棵完整的Merkle树需要递归地对哈希节点对进行哈希运算,并将新生成的哈希节点插入到Merkle树中,直到只剩下一个哈希节点,该节点即Merkle树的根。
区块链技术的具体实现方式众多,鉴于本研究的目的为区块链技术的应用技术验证,因此采用基于Python和FLASK微服务区块链仿真技术实现方式。矢量数据采用GeoJSON的格式统一存储。通过Python读取GeoJSON格式的多源矢量数据,对按照顺序记录的地理要素核心属性及几何特征点坐标进行Hash赋值,并把记录数据时的时间信息通过链式编码的方式一并写入区块链的区块中以实现数据的入链过程。
3 地理实体更新中区块链技术的应用
基础地理实体更新是困扰地理实体数据处理的一大难题。从数据源中抽取的基础地理实体数据,具备基础地理信息的框架特征和核心要素属性,是对基础地理数据的再抽象化和骨架化,因此,基础地理实体数据属性高度精简,几何特征极其抽象。这些基本特点也为区块链技术的应用创造了条件。
区块链的特点之一就是存储在区块中的交易记录(存储在分布式网络中的矢量数据)不可篡改,为了实现该特性,首先需要能够检测出区块数据是否被篡改。通常使用密码学中的哈希(Hash)函数来检测矢量数据发生的变化。哈希函数可以把任意大小的输入数据转换为固定大小的输出数据,也就是数据的哈希,而且不同的输入数据基本上会得到不同的输出数据,因此可以使用输出的哈希值作为输入数据的标识。
本次实验中,将基础地理实体要素的核心属性GB码以及坐标值串数列的区块哈希值保存为区块的一个字段,用它作为区块数据的数字指纹。狭义上讲,区块链就是区块的集合。本项目试验使用Python列表来保存所有的区块。为了避免一个较早的区块被集合中的新区块替换掉从而导致数据被篡改。需要构建一个方法来保证对较早的区块的修改会导致整条区块链无效的结果。另外,为了将区块链串接起来,需要在区块结构中增加一个新的字段来保存前一个区块的哈希值:pre_hash。因为第一个区块(也被称为创世区块)无法满足该机制,所以可以手工生成创世区块并使用一些特定的逻辑使得如果任何较早的区块被修改,则从被替换掉的区块开始的整条链都失效了。而修复这一问题的唯一办法是重算整条区块链。另一方面,如果修改了之前的区块,但是重算后面的其他区块非常简单的话,那么就无法从根本上杜绝篡改区块链现象。为了避免这一问题,可以利用哈希函数的非对称性来加大区块哈希计算工作的难度和随机性。因此,进行区块入链计算时只接受符合特定约束条件的区块哈希。为了简化计算,增加一个约束条件,要求区块哈希的开始部分至少有n个0,其中n是一个正整数。一般而言,除非改变区块数据的内容,否则区块哈希值不会变化。
为了实现不同矢量数据按顺序(时间戳)写入链中,需要为Block类增加一个新的字段nonce,记录区块的顺序码(时间戳信息),通过改变这个字段的值来得到不同的区块哈希,直到满足指定的约束条件,而这时的nonce值就是工作量的证明。同时,由于哈希函数的非对称性,工作量证明不容易计算,但是容易进行验证。一般而言,没有简单的逻辑可以快速找到满足约束条件的nonce值,因此只能进行暴力计算。
要将区块加入区块链,还需要验证入链数据满足:①区块中的数据没有被篡改,并且所提供的工作量证明是正确的;②交易的顺序是正确的,pre_hash字段指向链上最新区块的哈希值。
一般而言,区块链中的交易一开始是保存在未确认交易池中的。将未确认交易放入区块并计算工作量证明的过程,俗称为“挖矿”。一旦找出了满足指定约束条件的nonce,就可以说挖出了一个可以上链的区块。
本次项目中为仿真区块链节点添加API接口,从而应用程序就可以利用这些API开发具体的应用。为简化技术验证流程,项目使用流行的Python微框架Flask来创建REST API。为了将新数据添加到区块链中,可以利用这个API提交新交易的访问端节点。通过另一个端节点“/chain”可以返回区块链的数据。由于网络延迟等原因造成存在多个区块链节点,不同节点上的区块链可能彼此不同。在这种情况下,节点之间需要就区块链版本达成一致,以便维护整个系统的一致性。换句话说,就是需要达成共识。
当不同节点上的区块链出现分化时,一个简单的共识算法是选择最长有效链。因为最长的链包含了最多的已经投入的工作量证明计算。因此需要提供一个Python方法让节点在挖出区块同时可以将这一消息广播给其他节点,这样区块链网络中的每个参与者都可以更新其本地区块链,然后接着挖下一个区块。收到区块广播的节点很简单就可以验证工作量证明,然后将收到区块加入到自己的本地链上。
通过上述对仿真区块链技术的具体实现细节的论述,可以表明区块链技术具有引入地理信息大数据存储和解析的先决条件。本研究通过把具有时空特性的地理信息数据通过GeoJSON格式降维到文本信息,一方面方便数据的文本化检索处理,另一方面提高了数据存储、处理分析的效率。
4 结束语
区块链技术是一门计算机的前沿应用技术。目前,已经在金融、物流等领域实现了良好的应用价值。测绘地理信息数据也具备大数据的基本特点,是区块链技术应用的一个很好的研究方向。本文通过对区块链技术在基于多源矢量数据融合的地理实体更新中的应用研究进行初步的探索与试验,为区块链技术在测绘地理信息行业进一步应用发展探明了方向。随着区块链技术越来越成熟,其在各行各业的应用前景一片光明。
尽管本文结合实例对区块链技术应用进行了一系列试验探索,但仍然存在尚需解决的问题,诸如快速识别多源矢量数据差异并融合多源矢量数据特征的算法设计仍需后期进一步研究探索,这也是接下来研究主要任务与研究重点。通过本项目研究的开展,既厘清了多源矢量数据融合的技术流程与相关数据处理方法路径,又对区块链技术的引用和应用奠定了理论基础,并为该技术深入融入到新型基础测绘中探明了道路。
参考文献
[1]顾芒,刘许清. 增量更新技术在新型基础测绘中的应用研究[J].现代测绘,2017,40(2):17-20.
[2]杨灿,汪齐松.多源地理矢量空间数据融合研究[J].测绘通报,2019(12):112-115
[3]张豫,袁少雄,陈彩霞等. 一种区域地理空间数据融合方法[P].中国专利:108304559,2018-07-20.
[4]张敏. 多源矢量地图数据的集成与融合[D].哈尔滨:哈尔滨工程大学,2011.
[5]邱新忠,朱俊. 天地图省市数据融合若干关键技术研究及应用—以“天地图·浙江”为例[J].测绘与空间地理信息,2018,41(1):179-181.
[6]GB/T 37118—2018,地理实体空间数据规范[S].北京:中国标准出版社,2019.
[7]王亮,贺朗月,牛敬华.基于区块链的地学大数据管理[J].国防科技,2018,39(2):65-73.
项目来源:江苏省测绘工程院科研项目资助(SCYKY202005)