geotrellis使用(十八)导入多波段Tiff、读取多波段Tile
Geotrellis系列文章链接地址http://www.cnblogs.com/shoufengwei/p/5619419.html
目录
一、前言
之前我们处理的都是单波段的Tiff数据,可以实现瓦片的读取、处理等操作,如果Tiff为多波段Tiff,并且我们不希望在导入的时候将多波段合并成单波段,这时候就需要进行多波段数据处理。多波段数据处理方式基本与单波段处理方式相同,稍有差别,我在这里简单介绍之。
二、多波段数据导入
首先准备一个多波段的Tiff文件,将其导入Accumulo中。单波段数据导入代码如下:
implicit val sc = SparkUtils.createSparkContext("ETL SinglebandIngest", new SparkConf(true))
Etl.ingest[ProjectedExtent, SpatialKey, Tile](args, ZCurveKeyIndexMethod)
sc.stop()
多波段基本相同,代码如下:
implicit val sc = SparkUtils.createSparkContext("ETL MultibandIngest", new SparkConf(true))
Etl.ingest[ProjectedExtent, SpatialKey, MultibandTile](args, ZCurveKeyIndexMethod)
sc.stop()
运行方式为将代码达成jar包,然后提交到spark集群,这在之前文章中已经介绍过,不同的是format参数要设置为multiband-geotiff。
三、读取多波段瓦片
多波段数据存入Accumulo中之后,读取单个瓦片的代码如下:
val multiTile = tileReader.reader[SpatialKey, MultibandTile](LayerId(name, zoom)).read(key)
其中name表示多波段瓦片存储的layer,zoom为读取瓦片的层级,key为瓦片的x、y坐标,tileReader为AccumuloValueReader实例。这样得到的结果就是一个MultibandTile对象。
四、提取单波段
读取出多波段瓦片之后可以进行各种各样的操作,比如将多波段取出三个波段进行RGB渲染之后在前台显示,或者通过前台控制显示任意单一波段的瓦片数据。在这里我简单介绍一些显示单一波段瓦片。
理论上很简单,因为MultibandTile对象,简单来说就是一个Tile的数组,这时候只需要获取到用户想要浏览的波段值,从数组中提取出相应的Tile即可。代码如下:
multiTile.bands(bandNum)
其中bandNum为想要提取的波段号。
五、总结
本文简单介绍了多波段数据导入、处理的一些细节,真的是很简单,因为目前关于多波段只进行了这些工作,遂将其简单总结之,还未深入涉及,研究的宽度和深度都不够,下一步会根据工作情况深入研究之后进行进一步总结。
geotrellis使用(十八)导入多波段Tiff、读取多波段Tile的更多相关文章
- geotrellis使用(二十八)栅格数据色彩渲染(多波段真彩色)
目录 前言 实现过程 总结 一.前言 上一篇文章介绍了如何使用Geotrellis渲染单波段的栅格数据,已然很是头疼,这几天不懈努力之后工作又进了一步,整清楚了如何使用Geotrelli ...
- geotrellis使用(三十八)COG 写入和读取
前言 上一篇中简单介绍了 COG 的概念和 Geotrellis 中引入 COG 的原因及简单的原理,本文为大家介绍如何在 Geotrellis 中使用 COG 来写入和读取 GeoTIFF数据. 一 ...
- geotrellis使用(八)矢量数据栅格化
目录 前言 栅格化处理 总结 参考链接 一.前言 首先前几天学习了一下Markdown,今天将博客园的编辑器改为Markdown,从编写博客到界面美观明显都清爽多了,也能写出各种样式的东 ...
- Python之路【第十八篇】:Web框架们
Python之路[第十八篇]:Web框架们 Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Pytho ...
- 201771010126 王燕《面向对象程序设计(java)》第十八周学习总结
实验十八 总复习 实验时间 2018-12-30 1.实验目的与要求 (1) 综合掌握java基本程序结构: (2) 综合掌握java面向对象程序设计特点: (3) 综合掌握java GUI 程序设 ...
- python自动华 (十八)
Python自动化 [第十八篇]:JavaScript 正则表达式及Django初识 本节内容 JavaScript 正则表达式 Django初识 正则表达式 1.定义正则表达式 /.../ 用于定 ...
- 王颖奇 201771010129《面向对象程序设计Java》第十八周实验总结
实验十八 总复习 实验时间 2018-12-30 1.实验目的与要求 (1) 综合掌握java基本程序结构: (2) 综合掌握java面向对象程序设计特点: (3) 综合掌握java GUI 程序设 ...
- 最全的MySQL基础【燕十八传世】
1.课前准备! 开启mysql服务:1).配置环境变量;2).net start mysql 将该sql文件导入到你的数据库中,以下所有操作都是基于该数据库表操作的!!! [此笔记是本人看着视频加上自 ...
- Web 前端开发人员和设计师必读文章推荐【系列二十八】
<Web 前端开发精华文章推荐>2014年第7期(总第28期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...
随机推荐
- 解决FF浏览器无法执行window.close()脚本
在FF浏览器中输入about:config 查找dom.allow_scripts_to_close_windows 将值改为true
- spark 大数据 LR测试
#!/bin/bash size="120Y*10W"date1=`date +%F_%H-%M-%S`config="spark-submit \ --jars /da ...
- C# Just want 入门
1. 终于明白为什么以前的程序在结尾部分会经常出现 input any key to exit! using System; namespace ConsoleApplication1 { class ...
- CMS模板引擎:XHtmlAction
前言: 先说说大伙关心的工作上的事,在上家公司任了一个多月的技术经理后,和公司中止了合作关系. 主要原因在于一开始的待遇没谈的太清楚: 1:没有合同,没有公积金,连社保也没交. 2:工资的30%变成了 ...
- ENode框架Conference案例分析系列之 - 上下文划分和领域建模
前面一片文章,我介绍了Conference案例的核心业务,为了方便后面的分析,我这里再列一下: 业务描述 Conference是这样一个系统,它提供了一个在线创建会议以及预订会议座位的平台.这个系统的 ...
- Net作业调度(四)—quartz.net持久化和集群
介绍 在实际使用quartz.net中,持久化能保证实例重启后job不丢失. 集群能均衡服务器压力和解决单点问题. quartz.net在这两方面配置都比较简单. 持久化 quartz.net的持久化 ...
- [.net 面向对象程序设计进阶] (21) 反射(Reflection)(下)设计模式中利用反射解耦
[.net 面向对象程序设计进阶] (21) 反射(Reflection)(下)设计模式中利用反射解耦 本节导读:上篇文章简单介绍了.NET面向对象中一个重要的技术反射的基本应用,它可以让我们动态的调 ...
- 【Java并发编程实战】-----“J.U.C”:Semaphore
信号量Semaphore是一个控制访问多个共享资源的计数器,它本质上是一个"共享锁". Java并发提供了两种加锁模式:共享锁和独占锁.前面LZ介绍的ReentrantLock就是 ...
- EasyPR--一个开源的中文车牌识别系统
我正在做一个开源的中文车牌识别系统,Git地址为:https://github.com/liuruoze/EasyPR. 我给它取的名字为EasyPR,也就是Easy to do Plate Reco ...
- Go语言实战 - revel框架教程之MongDB的最佳搭档revmgo
由于revel框架本身对于model层的编写没有提供任何指导,所以在设计这部分的时候就有些犹豫,反复斟酌到底怎样才算是最佳实践. 我在做山坡网的时候刚开始也纠结了一下,拿不准mongodb的sessi ...