基于ElasticSearch的海量遥感数据检索技术研究

2021-06-01 13:27李峰宋宴魏广泽王永安
计算机与网络 2021年5期
关键词:海量检索编码

李峰 宋宴 魏广泽 王永安

摘要:随着我国对地观测技术的发展,卫星遥感数据越来越多,传统空间关系数据库在时间范围、空间范围的快速查询及可扩展方面存在一定瓶颈。通过分析ElasticSearch搜索引擎框架,提出了一种基于改良GeoHash编码的时空索引方法,设计并实现了基于ElasticSearch的海量遥感数据检索技术,可以精确高效建立一维行键索引筛选遥感数据,提高查询处理效率。实验结果表明,该技术适合于组织管理与查询海量的遥感数据,查询性能优于传统关系数据库。

关键词:ElasticSearch;遥感数据;GeoHash;数据检索

中图分类号:TP311.5文献标志码:A文章编号:1008-1739(2021)05-57-5

0引言

隨着我国对地观测技术的发展,特别是高分辨率对地观测系统重大专项的推进,基本具备了高空间分辨率、高时间分辨率及高光谱分辨率的天基对地观测能力。随着遥感影像数据越积越多,不同领域的应用需求对遥感影像数据的存储及高效检索提出了越来越高的要求。遥感元数据作为描述遥感影像数据的重要数据,具有结构复杂、信息量大、产生频率高等特点。传统的空间关系型数据(如Oracle、PostgreSQL等)主要以内置的B+树或R树等简单成熟的索引结构来辅助查询处理,面对存储海量的遥感元素数据信息存在读写性能不理想、可扩展性差等缺点。本文提出了一种基于改良GeoHash编码的时空索引方法,设计了基于ElasticSearch的海量遥感数据检索技术,实现了遥感数据空间、时间、卫星和载荷等多样化的检索,支撑海量遥感影像数据的高效检索。

1基于ElasticSearch的海量遥感数据检索技术

由于遥感影像文件很大,不适合直接对遥感影像数据本身进行检索,常用的方式是从遥感元数据提取特征信息、范围信息及标识信息等描述内容,存储到空间关系型数据中,支撑行业应用中的数据查询检索应用。随着遥感元数据量的增加,基于卫星载荷、时间范围和空间范围等信息的快速查询是亟需解决的问题。

为了提高海量遥感数据的查询检索访问效率,本文设计了一种基于改良GeoHash编码的时空索引方法,将时间、空间等多维信息映射到一维时空索引编码,在分析ElasticSearch搜索引擎框架的基础上,将时空索引编码作为索引字段,设计和实现一种基于ElasticSearch的海量遥感数据检索技术。

1.1扩展GeoHash的时空索引技术

GeoHash是一种经纬度地址编码方法,把二维的空间经纬度数据进行转换,编码成一个可以比较和排序的字符串,用一个字符串表示地理要素的空间坐标。GeoHash的主要原理是根据地物的经纬度坐标利用二分法对空间区域划分规则格网无限逼近地物所在区间。以天安门广场坐标(北纬:39.928167,东经:116.390705)为例,GeoHash的编码过程如下:

①将经纬度转换成二进制:纬度范围(-90,90),其中间值为0,将其划分为区间0(-90,0)和区间1(0,90)。对于纬度39.928167,在区间(0,90)中,因此二进制首位取值为1;(0,90)区间的中间值为45°,纬度39.928167小于45°,因此第二位取值0,依次计算下去,如表1所示,即可得到纬度的二进制序列前20位为:10111000110001111001,同理可以得到经度116.390 705的二进制序列前20位为:11010010110001000100。序列的长度越长,表示经纬度范围精度越高。

②二进制序列交叉组合:按照偶数位放经度,奇数位放纬度(从0开始,0为偶数位)的顺序对经纬度的二进制序列进行交叉组合得出合并后的二进制序列。仍以(39.928 167,116.390 705)为例,合并后的序列前20位为11100111010010001111。

③编码转换:标准的GeoHash值采用Base32编码,具体过程是将经纬度交叉组合后的二进制序列每5个一组进行切分(不足5个用0补充),将其转换为十进制,参考标准Base32编码表用0~9,b~z(去掉a,i,l,o)这32个字母进行编码。如11100111010010001111转换为十进制成2829415,对应的 Base32编码为wx4g。Base32编码每一字符代表5 bit,字符位数与精度之间的关系如表2所示。

可以看出,随着GeoHash位数减少,误差增加在4~8倍交替,难以有效控制区域精度,若将二进制GeoHash码直接索引保持精度又存在索引过长影响效率的问题。因此,设计了使用long型值的GeoHash编码转换方法,在保证细粒度和精度的同时,降低GeoHash有效值的位数,从而减少计算次数,进一步提高编码效率。具体步骤为:

①将GeoHash的二进制转换为64位long型值,作为GeoHash值;

②GeoHash值的高位为有效位,低位补0,并记录下long值的有效位数量;

③根据具体需求,可以截取前2(0< <32)bit位作为GeoHash的long值有效位,将区域精度的增长控制在2倍左右。

采用该方法改良后的GeoHash字符位数对应精度如表3所示。

改良后的GeoHash编码方法能精确高效地将二维空间坐标降维成一维编码,满足一维行键索引的使用需要。在此基础上,结合行键索引的查询规则,针对遥感数据的时空特点设计了将时间和GeoHash编码特殊组合的混合时空编码行键结构及时空索引构建方法。索引结构如图1所示。

使用該索引进行遥感数据查询时,首先会根据行键的前缀即“年月日”将符合日期的数据集检索出来,然后按照GeoHash编码表示的经纬度范围进行空间检索,最后查询“时分秒”得到查询结果。该方法可以通过时间的年月日部分和GeoHash相同前缀代表的大致地理范围过滤掉大部分不符合查询条件的数据,再对剩余数据使用值过滤器进行查询,整个过程几乎不需要使用行键过滤器,提高了数据的查询效率。

1.2 ElasticSearch遥感数据检索设计

ElasticSearch是一款基于Lucene库的分布式、RESTful的开源搜索引擎,由于其功能强大,使用便捷,受到维基百科、卫报、Stack Overflow、GitHub等企业和组织的欢迎,诸如搜索推荐、数据分析、日志采集的很多功能都是基于ElasticSearch实现的。基于ElasticSearch的分布式海量遥感数据检索设计技术通过统一规范化的元数据结构建立元数据与索引文件的映射,基于扩展GeoHash的混合时空编码方法建立时空索引,并搭建分布式ElasticSearch集群提高可靠性,实现海量遥感影像数据的高效检索。

(1)元数据设计

元数据是用来描述数据的数据。遥感元数据作为描述遥感数据本身特性的辅助数据,可以服务于数据的存储和检索,提高查询效率。针对海量遥感数据检索的实际需要,抽取影像元数据特征进行扩展,设计了一套符合实际查询需求的遥感影像元数据结构,如表4所示。

为了将遥感影像与元数据一一对应,除了以上基本数据结构外,还新增了3类元数据,如表5所示。

(2)索引创建

ElasticSearch是基于Lucene的全文检索系统,其底层的索引技术实现与Lucene一致,可以将索引创建的流程划分为4步,创建流程如图2所示。索引创建过程包括获取影像元数据、生成混合时空编码索引、创建Document对象、IndexWriter建立索引,其中混合时空编码索引是根据扩展GeoHash的时空索引技术生成的。

(3)集群部署

ElasticSearch支持分布式部署,通过集群部署可以保证搜索引擎的高可用性。多台主机构成了一个集群,每台主机称作一个节点(Node),对于处在同一网段下拥有相同集群名称的多个节点,每当一个节点启动时,ElasticSearch会自动调用节点发现机制寻找集群中的其他节点建立连接,组成分布式集群。本文部署的ElasticSearch集群包含3个节点:主节点、数据节点和客户端节点。其中主节点的主要职责是元数据的处理,如创建或删除索引,跟踪哪些节点是集群的一部分,并决定哪些分片分配给相关的节点等;数据节点是保存数据分片的节点,主要负责数据的增删改查操作,聚合操作,分片的CRUD等;客户端节点也称作负载均衡节点,该节点表现为智能负载平衡器,可以协调主节点和数据节点,起到路由请求的作用。

2实验验证

为验证基于ElasticSearch的海量遥感数据检索技术的查询效率,使用来自不同卫星传感器的750万条ZY-3、GF-1、GF-2等卫星遥感影像元数据作为实验数据,分别使用ElasticSearch和遥感领域常用的PostgreSQL、MySQL数据库3种方式存储,实验环境为Windows7操作系统,2.20 GHz Intel E5至强CPU,64 GB内存。

本文在选取实验数据后,提取影像元数据并选择了空间范围和时间跨度2个可调参数,以此为变量设计了多组实验,进行不同条件下的检索效率实验,并对实验结果进行对比分析,结果如下。

(1)空间范围查询

在空间范围上,选择了雄安新区、京津冀、中国和全球4个不同维度的区域,检索该区域包含的全部遥感数据,并多次实验记录平均耗时,将查询效率可视化,如图3所示。

可以看出,随着地理范围的扩大,三者查询效率均有所降低,但得益于扩展GeoHash的时空索引技术,ElasticSearch的基础查询效率更高,且随地理范围扩大,查询时间的增长较为平稳。

(2)时间范围查询

时间范围上,以实验数据的最早采集时间2007年为起点,分别测试三年、五年、十年和到目前为止范围内遥感数据的检索所需时间,并多次实验记录平均耗时,将查询效率可视化,如图4所示。

可以看出,PostgreSQL在较小时间跨度时查询效率最低,MySQL随着时间跨度的扩大查询效率显著降低,只有ElasticSearch保持了较高基础查询效率的同时,查询时间的增长相对平稳。

综合以上2组实验结果可知,相较于常用的PostgreSQL和MySQL数据库,ELasticSearch对于不同空间和时间维度上的遥感數据查询性能更优。此外,空间和时间范围的扩大带来的数据量级的提升对ElasticSearch影响不大,这一特点非常适合应用于拥有海量数据的遥感领域。总之,对于近千万级的遥感影像元数据,在检索速度方面,基于ELasticSearch的检索效率明显高于基于PostgreSQL和MySQL数据库的检索效率,可以满足海量遥感数据的实时时空查询需要。

3结束语

本文提出了基于ElasticSearch的海量遥感数据检索技术,设计了一种基于改良GeoHash编码的时空索引方法,完成了海量遥感数据元数据的数据接入、数据索引和数据检索,开发实现了基于ElasticSearch的海量遥感数据检索系统,对上述技术方法进行了实验验证。实验结果表明,技术途径合理可行,其查询性能优于传统关系数据库,为实现海量遥感数据的快速检索提供了解决方案。

参考文献

[1]李德仁,沈欣,龚健雅,等.论我国空间信息网络的构建[J].武汉大学学报(信息科学版),2015,40(6):711-715.

[2]谢榕,罗知微,王雨晨,等.遥感卫星特定领域大规模知识图谱构建关键技术[J].无线电工程,2017,47(4):1-6.

[3]权治,宋晶晶.基于NoSQL的数据库技术分析[J].无线电工程,2013,43(9):4-6.

[4] HUANG K, LI G, WANG J. Rapid Retrieval Strategy for Massive Remote Sensing Metadata Based on GeoHash Coding[J]. Remote Sensing Letters,2019,10(2):111-119.

[5]向隆刚,高萌,王德浩,等.Geohash-Trees:一种用于组织大规模轨迹的自适应索引[J].武汉大学学报(信息科学版), 2019,44(3):436-442.

[6] ZHOU Chang,LU Huimei,XIANG Yong,et al.Geohashtile: Vector Geographic Data Display Method Based on Geohash[J].ISPRS International Journal of Geo-Information,2020,9(7): 418.

[7]李峰,尤淑撑,魏海,等.遥感影像区域覆盖最优数据集的筛选模型[J].无线电工程,2017,47(10):45-48.

[8]陈启凡.基于NoSQL的公共安全监测数据分布式存储技术研究[D].成都:电子科技大学,2020.

[9]姜康,冯钧,唐志贤,等.基于ElasticSearch的元数据搜索与共享平台[J].计算机与现代化,2015(2):117-121.

[10] WANG Ruoyu,SUN Daniel,LI Guoqiang,et al.Pipeline Provenance for Cloud Based Big Data Analytics[J]. Software:Practice and Experience,2020,50(5):658-674.

[11]关雪峰,曾宇媚.时空大数据背景下并行数据处理分析挖掘的进展及趋势[J].地理科学进展,2018,37(10):1314-1327.

[12]张学亮,陈金勇,陈勇.基于Hadoop云计算平台的海量文本处理研究[J].无线电通信技术,2014,40(1):54-57.

[13] DHULAVVAGOL PM,BHAJANTRI VH,TOTAD SG. Performance Analysis of Distributed Processing System Using Shard Selection Techniques on Elasticsearch[J]. Procedia Comput Sci,2020,167:1626-1635.

[14]王章龙.Elasticsearch索引分片策略研究[D].重庆:重庆邮电大学,2019.

猜你喜欢
海量检索编码
住院病案首页ICD编码质量在DRG付费中的应用
CNKI检索模式结合关键词选取在检索中的应用探讨
通过实际案例谈如何利用外文库检索提高检索效率
瑞典专利数据库的检索技巧
英国知识产权局商标数据库信息检索
高效视频编码帧内快速深度决策算法
一个图形所蕴含的“海量”巧题
从教材中突围,走课内海量阅读之路
Hadoop构建的银行海量数据存储系统研究
吃饭谁买单