基于Spring Boot 的西藏遥感信息服务系统设计与实现*
2023-04-11杨明芬李文雯吴旭高杨塔杰西热加措
杨明芬 李文雯 吴旭 高杨 塔杰 西热加措
(1.西藏自治区科技信息研究所,西藏 拉萨 850008;2.成都理工大学,四川 成都 610000)
对地观测技术是国家与地区重要的战略高新技术,对地观测获取的海量遥感数据是基础性和战略性的空间信息资源。整合现有的遥感数据资源,“盘活”现有空间数据存量,减少浪费,提高遥感数据的有效供给,能够为各领域的科学研究提供支撑,为相关行业应用向广度和深度发展提供基础,为国防安全建设提供有力的信息保障。作为一种宝贵的信息资源,遥感数据可以不断地被重复使用,发挥遥感数据的作用,也是对巨额投资的回报。因此,遥感数据的集成与共享普遍受到世界各国重视。通过空天地多种传感器所获取到的遥感影像,成为了对地探测目标最直接、丰富的信息载体。作为一种真实、客观的图像资源,很多有价值的信息都可以从遥感影像数据中识别出来。因此,从遥感影像中获取的特定信息,具有广泛的应用前景,如农业、探测和监测全球变化、环境监测与评价、气象、测绘等。
西藏具有得天独厚的自然资源、文化资源和生态资源,在国家经济社会发展中具有不可替代的重要地位。遥感技术可面向西藏地区农林牧业发展、数字基础设施建设、生态屏障保护与修复、应急抢险救灾等多个方面发挥重要作用。同时,由于西藏地广人稀,边境线长,生态环境脆弱,自然灾害多、强度大,因此在经济社会发展、防灾减灾、生态文明建设、资源勘查等方面对高分遥感数据资源的需求十分迫切。目前,西藏地区在遥感信息服务方面还需加快发展步伐,形成一批有代表性的遥感信息服务软件系统和数据产品,实现西藏地区实现各部门之间信息资源的互联互通、共用共享。
1 相关工作
在遥感信息服务方面,国外许多商业公司以开展多年的研究并推出了相应的产品。Bing Maps 是由微软公司发布的一项在线地图服务,采用瓦片划分模型,在Windows Azure 中以二进制格式存储瓦片数据,并使用关系数据库SQL Azure 管理遥感影像的元数据信息[1]。Google Maps 是谷歌推出的共享数字地图服务产品,其卫星遥感影像以瓦片形式传输,不但能支持浏览器中的空间数据的查询,还能在应用中请求所需要的卫星影像数据[2]。武汉大学吴华意等人,研究出了一种分布式的在线管理遥感数据的跨平台框架,在对遥感数据的管理和服务的模型进行抽象的基础上,采用混合存储模型和分布式计算模型,使遥感数据管理效能与服务效能得到显着提升。该框架具备良好的跨平台性,能提供高效、稳定的服务,给海量遥感数据资源的实时管理、应用、服务及研究提供了有效、可靠的借鉴[3]。地矿测绘的王恺,为搭建遥感影像数据的时空云服务系统,设计了功能共享及数据共享的理念,最终实现了遥感影像的质量检测、查询浏览、任务发送等云服务[4]。该系统采用分布式文件系统来实现海量遥感影像的高效存储管理,并提供遥感信息共享、交换的服务[5]。
本文设计的软件系统,前端使用Vue3+Vite2+ElementPlus;后端采用Spring Boot框架;持久层使用了MyBatis 进行CRUD 操作;数据库采用PostgreSQL,以及其空间数据存储扩展工具PostGIS,能提供对空间信息服务的支持[6]。SpringBoot 采用约定优于配置的核心思想,使用JavaConfig 来进行配置,可以充分利用复用、继承、多态等特性[7,8]。ElementPlus 是基于Vue3 设计的一套组件库,遵循使用者习惯的语言和观念,整个UI 风格简约、实用,提供了丰富的组件,极大的提高了开发效率[9]。
本文采用PostgreSQL 的bytea 类型存储遥感影像的缩略图,方便预览遥感影像;依靠GDAL 提供的一系列函数,获取遥感影像的信息,将元数据信息存放到PostgreSQL 中,实现元数据的自动提取,并将海量的原始遥感影像数据存储HDFS 中。基本技术路线如图1 所示。
图1 文章技术路线图
2 系统设计与实现
2.1 系统设计
元数据的产生是遥感影像存储中的一个重要问题。对于少量的遥感影像,采用人工方法进行提取元数据是可以的。但是,由于空间信息技术的飞速发展,目前各个部门要处理的影像资料数量非常庞大,如果继续采用人工方法,不但需要大量的时间和精力,而且还会影响到提取的准确性。因此,对遥感影像元数据的自动抽取技术进行研究,并将其与影像数据相映像,实现图像的高效检索,是遥感影像管理的一个关键问题。系统中具有普通用户、数据管理员和系统管理员三种角色。这三种不同的角色对于遥感信息服务系统有不同的功能需求,下面将依次展开说明。
(1)数据管理员,该角色的用例图如图2 所示。
图2 数据管理员用例图
数据管理员可以将遥感数据进行上传,上传过程中涉及到元数据的生成问题,系统自动对遥感影像的元数据进行自动提取,不需要手工录入,并且系统会自动将遥感影像按照“卫星名称/传感器类型/获取时间”目录存放,完成影像入库操作;数据管理员具有选择的将已存放到服务器中的遥感数据下载到本地,支持下载单个的遥感影像文件及多个文件;针对已经被提取的元数据信息,数据管理员可以指定条件,如指定卫星、遥感器类型、地理位置等条件,检索出系统中已有的元数据。
(2)普通用户,可以指定条件,如指定卫星、遥感器类型、地理位置等,检索出系统中已有的遥感数据,对检索出来的遥感数据可以查看其相关信息及缩略图,进行放大缩小等操作;普通用户可以有选择的将已存放到服务器中的遥感数据下载到本地,支持下载文件和文件夹。
(3)系统管理员,对系统的用户账号信息进行管理,指定条件如指定用户名称、创建时间、当前状态等条件进行查询,对单个用户可以停用或启用该账号,编辑用户的信息,重置登录密码,分配指定的权限。系统管理员可以查看包含登录和操作日志的系统记录信息。
本文设计出遥感信息服务系统的功能结构,如图3 所示。遥感影像资料上传就是将遥感数据进行上传即影像数据入库操作。在遥感影像上传过程中涉及三个方面的问题。
图3 系统功能结构图
首先是如何提取遥感影像的元数据,有些影像数据中存在头文件,头文件中包含有传感器、轨道号等信息。为了达到自动提取遥感影像元数据的目的,本系统依靠GDAL 提供的一系列函数,获得遥感影像的信息,比如getRasterXSize()获取x 宽度、GetGeoTransform()获得仿射矩阵信息,将提取出来的元数据信息存放到PostgreSQL 数据库中。对于各种遥感影像,在元数据规范的基础上,需要编写对应的提取接口,解决不同来源的遥感影像的元数据的生成问题。其次在解析元数据时,借助GDAL 将原始图像重采样转化成JPG 格式的,并借助Java 图像缩略图类库Thumbnailator 进行压缩生成缩略图,存放在元数据表Metadata 表的bytea 类型的字段中。最后为方便数据管理员进行遥感影像的存储管理,对多个来源的遥感影像进行归类。采用目录树的方法,在Hadoop 分布式文件系统上根该遥感影像元数据信息中的卫星名称/传感器类型/采集时间创建一个三级目录,将遥感影像归类到相应的目录中。整个资料上传流程如图4 所示。
图4 资料上传流程图
元数据放在PostgreSQL 关系型数据库中。对遥感影像的元数据管理有元数据的查询、导出、导入、编辑、删除等功能。查询操作就是根据用户指定的条件,如指定卫星、遥感器类型等条件,检索出对应的元数据。另外借助PostgreSQL 的扩展工具PostGIS,在PostgreSQL 上添加了一个额外的存储和管理空间数据的能力,利用其可以实现数据的空间查询。元数据管理流程如图5 所示。
图5 元数据管理流程图
遥感信息服务系统的数据库采用PostgreSQL,PostgreSQL 是当前最强大的、最先进的开源数据库管理系统。它能跨多种平台工作,并且能够支持多种语言的开发。其扩展PostGIS,为PostgreSQL 添加了一个额外的存储和管理空间数据的能力。表中字段的定义、数据类型均遵循其相关规定。
2.2 系统实现
2.2.1 普通用户功能。普通用户涉及的界面包括登录界面、注册界面、首页界面。登录功能的验证码借助Kaptcha 验证码生成工具实现的,将生成的验证码存放到Redis 缓存中。在登录验证时再查询Redis 中记录的正确验证码和用户输入的进行比较。完成验证码、用户验证并验证成功后会生成token并返回给客户端。普通用户登录成功后,会跳转到系统首页。普通用户可以在首页进行遥感数据的检索,指定条件,如指定卫星、遥感器类型等,还可以在地图上绘制区域,如图6 所示。
图6 首页遥感数据检索
普通用户在检索出来的遥感数据列表中,勾选想要下载的数据,然后点击下载按钮,进行遥感图像的下载操作。遥感影像下载如图7 所示。
图7 遥感影像下载
系统提供影像下载功能,从数据库中的storage表中查找出其存储在HDFS 对应的路径,然后借助fileToZip 函数完成打包。打包借助ZipOutputStream 类完成文件或文件夹的压缩,ZipEntry 类用于表示ZIP文件条目。
2.2.2 数据管理功能实现。在遥感信息服务系统中,数据管理员涉及的界面主要包括资料上传、元数据管理、存储管理。数据管理员可以点击选择遥感影像资料按钮,选择要上传的遥感影像文件,然后点击自动解析元数据按钮,将遥感影像上传至HDFS,并将其元数据信息入库。解析出的元数据信息如图8 所示。
图8 元数据信息
自动提取元数据模块是借助开源类库GDAL 实现的,GDAL 将遥感影像的元数据信息提取出来,并将其插入metadata 表中。在生成缩略图时借助GDAL 将原始图像重采样转化成JPG 格式的,并借助Java 图像缩略图类库Thumbnailator 进行压缩生成缩略图。对于各种遥感影像,在元数据规范的基础上,需要编写对应的提取接口,实现不同来源的遥感影像的元数据的生成。目前该系统支持Lansat、MODIS、GeoEye、Spot 等卫星遥感数据的元数据信息自动解析。
2.2.3 系统管理功能实现。系统管理员可以在该界面指定条件如用户名称、状态等条件进行查询,也可以点击左侧的用户组,比如系统管理员1 组,则会显示该组下的用户。针对单一用户,可以停用或启用该账号,也可以编辑用户的信息,重置登录密码,分配角色以获得相应权限。用户管理界面如图9 所示。角色管理功能,系统管理员可以在该界面进行角色的查询,对角色拥有的权限进行修改。
图9 用户管理界面
日志监控包括登录日志界面和操作日志界面。登录日志界面展示了系统所有的用户的登录信息包括用户名称、地址、登录状态等信息。系统管理员可以对所有用户登录信息进行查询、删除、清空、导出操作,界面如图10 所示。操作日志界面展示了用户在系统中进行的操作信息包括所在系统模块、日期、状态等。系统管理员可以对所有用户操作信息进行查询、删除、清空、导出操作。
图10 日志管理
3 结论
本文在研究以西藏地区内采集的遥感影像数据为典型遥感信息资源的基础上,分析了遥感信息服务系统的用户基本需求,将本系统的使用人员分为:遥感数据管理者、相关地学研究者、系统管理者。在对系统需求进行分析整理的基础上,设计出遥感信息服务系统的功能结构,地学研究者即普通用户有检索遥感影像、下载的功能,数据管理员有遥感影像资料上传、资料下载、元数据管理、存储管理的功能,系统管理员有用户相关的管理、日志监控的功能,然后对这些功能模块进行了分析设计。结合遥感数据的元数据信息规范和系统需求,设计并建立了遥感信息服务系统的数据库。本文重点研究了对于不同类型遥感影像数据,如何实现统一标准化的元数据提取以及如何对遥感原始影像进行存储管理的功能设计和实现方法。