版权声明:本文为博主原创文章,转载请注明原文出处!

写作时间:2010年4月10日晚


ESA SNAP工具包Java接口的使用

欧盟的SNAP工具包提供了对Sentinel卫星数据的处理功能。

SANP使用Java编写,UI界面使用了NetBeans框架。

如果要进行批处理的话,还提供了基于图的Graph Processing Framework (GPF)处理模式。

此外,SNAP还贴心的提供了Python接口snappy(对Java API的封装)。

参考资料:https://senbox.atlassian.net/wiki/spaces/SNAP/overview

但是我使用官方提供的安装包安装好以后,Python接口用不了,所以我想着还不如就用原生的Java接口。

首先,从GitHub下载SNAP的源码进行编译,主要下载了snap-engine,snap-desktop,s1tbx和s2tbx这四个工程,依次进行编译(最新版本为8.0.0-SNAPSHOT)。

例如对snap-engine的编译命令如下:

cd snap
git clone https://github.com/senbox-org/snap-engine.git
cd snap-engine
mvn clean install -DskipTests=true

编译中主要问题是一些第三方库下载特别慢或者根本下载不下来,这时候你需要科学上网手动下载需要的依赖包,再次进行编译。

编译完这四个包以后,我们新建Maven工程进行代码测试。下面代码使用Better Java (Kotlin)进行示范,我把注释加进了代码中方便理解。

package cn.demoimport java.nio.file.Paths
import org.esa.snap.core.dataio.ProductIOfun main(args: Array<String>) {val path = Paths.get("S2B_MSIL1C_20200304T032629_N0209_R018_T48SYC_20200304T075000.zip")// 通过文件获得读取数据的Readerval reader = ProductIO.getProductReaderForInput(path.toFile())// 通过这个Reader对象来读取Sentinel数据产品Productval product = reader.readProductNodes(path.toFile(), null)// 通过这个Product对象来读取波段中存储的数据val band = product.getBand("B1")// 数据不是自动加载的,需要手动加载一下if (!band.hasRasterData()) {band.loadRasterData()}// 获取波段数据,数据是以一维数组的形式存储的,主要使用PixelInterleavedSampleModel这类进行控制像素交替方式存储// 有兴趣的可以参考java.awt.image.PixelInterleavedSampleModelval data = band.rasterDataassert(band.rasterHeight * band.rasterWidth == data.numElems)
}

代码运行过程中,提示找不到OpenJPEG的库(Sentinel-2 SAFE格式的文件中是以JPG图像格式保存各个波段的观测数据的),最后我通过代码调试发现,SNAP中对OpenJPEG库的路径定义在~/.snap/auxdata/openjpeg/8.0.0-SNAPSHOT/目录下,而我的本地没有该目录(虽然/usr/local/bin 目录中有OpenJPEG库,但是SNAP不是在这个目录中寻找的),所以程序会报错。

解决的方案是我由于本来安装的SNAP桌面版(7.0.0),该版本在~/.snap/auxdata/openjpeg/7.0.0/目录下存放了OpenJPEG库,所以拷贝该版本的库修改名称为8.0.0-SNAPSHOT即可,程序正常运行。

总得来说,SNAP提供的参考资料不多,有问题只能取Forum中提问。所以我觉得还是使用GDAL读取Sentinel数据,然后再进行进一步操作方便些。

ESA SNAP工具包Java接口的使用相关推荐

  1. Java并发编程-并发工具包(java.util.concurrent)使用指南(全)

    1. java.util.concurrent - Java 并发工具包 Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包.这个包包含有一系列能够让 Ja ...

  2. Java并发编程-并发工具包java.util.concurrent使用指南

    译序 本指南根据 Jakob Jenkov 最新博客翻译,请随时关注博客更新 本指南已做成中英文对照阅读版的 pdf 文档,有兴趣的朋友可以去 Java并发工具包java.util.concurren ...

  3. 在php中调用java接口吗,php 调用 java 接口

    php 需要开启 curl模块 /* * HTTP 请求函数封装 */ function http_request_cloudzone($url, $data){ //var_dump($url.&q ...

  4. Java接口自动化之Maven工具使用

    VOL 190 30 2020-12 今天距2021年1天 这是ITester软件测试小栈第190次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上 08 ...

  5. Java接口和包(超详细)

    目录 前言 接口 声明接口 接口的实现 接口的继承 实现多个接口时的常量和方法冲突问题 包 包的创建 导入包 Java的系统包 常用工具包 java.lang包 java.util包 最后 前言 什么 ...

  6. Java接口对Hadoop集群的操作

    Java接口对Hadoop集群的操作 首先要有一个配置好的Hadoop集群 这里是我在SSM框架搭建的项目的测试类中实现的 一.windows下配置环境变量 下载文件并解压到C盘或者其他目录. 链接: ...

  7. 推荐一个 Java 接口快速开发框架

    欢迎关注方志朋的博客,回复"666"获面试宝典 今天给小伙伴们介绍一个Java接口快速开发框架-magic-api 简介 magic-api 是一个基于 Java 的接口快速开发框 ...

  8. java接口如何定义常量 c_在Java接口中怎样访问定义的常量呢?

    java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能).那么我们在Java接口中怎 ...

  9. Java接口和Java抽象类

    Java接口和Java抽象类有太多相似的地方,又有太多特别的地方,究竟在什么地方,才是它们的最佳位置呢?把它们比较一下,你就可以发现了. 1.Java接口和Java抽象类最大的一个区别,就在于Java ...

最新文章

  1. azure多功能成像好用吗_如何使用Azure功能处理高吞吐量消息
  2. shiroConfig配置中要注意的事项
  3. Android BitmapShader 实战 实现圆形、圆角图片
  4. C语言求一个数的平方根倒数的近似值-一战封神的代码
  5. java sql update用法_使用if else条件将SQL UPDATE语句转换为php(codeigniter)
  6. Beego框架简介准备搭建分布式爬虫
  7. React Router最新指南与异步加载实践
  8. Linux环境下编译运行大型C语言项目
  9. laravel 框架使用hdjs 实现多图上传功能
  10. 一线二线城市工作的区别
  11. 腾讯云服务器被攻击我是这样应对的
  12. stm32f103c8t6串口数据包收发
  13. 李奇霖:通道业务山穷水尽 券商资管何去何从?
  14. 太原市住房公积金商转公又新增一种担保方式
  15. C# MVC《捷信达酒店管理系统》项目研发技术总结文献
  16. XGBOOST原理解析
  17. RedHat 6.4配置本地镜像源(适用于已停止更新的Linux系统)
  18. sticky INTENT
  19. 手机酷狗2 java_酷狗叮咚(原手机酷狗) 2.70 For Java 中文官方安装版下载
  20. 几个国外域名解析网站

热门文章

  1. windows找不到文件,如何解决。
  2. Windows7操作系统要求电脑配置
  3. 台式电脑:点击开启虚拟机报错:此主机支持intel vy-x, 但intel vy-x处于禁用状态
  4. 转一篇十几年前的旧文,与各位共赏之
  5. 视频质量诊断视频质量分析
  6. 游戏怎么关闭英伟达NVIDIA Corporation提示
  7. 评估数据,包括长度,角度,卷曲度
  8. 墨迹天气php,Android_仿墨迹天气在Android App中实现自定义zip皮肤更换,在这里谈一下墨迹天气的换肤 - phpStudy...
  9. win10+中标麒麟双系统安装步骤
  10. 协和医院(东单院区)就诊流程记录