技术标签: Powered by 金山文档 GEE 遥感
遥感技术很早就开始用于洪涝灾害调查。遥感技术可以利用卫星获取的信息,连续、及时、准确地把洪灾情况上报给中央和地方防汛部门,并通过对不同卫星数据的融合处理,综合利用各自的优势,清晰地反映出洪灾态势。本文基于GEE
在本博客中,我们将使用Landsat8绘制柬埔寨的水体。我们将应用云移除并计算NDWI。
//Get the study area country boundary
var StudyArea = ee.FeatureCollection("projects/servir-mekong/Cambodia-Dashboard-tool/boundaries/cambodia_country");
//Add Shape file layer to the Map
Map.addLayer(StudyArea,{},"Cambodia");
//Center the Map with the Study Area
Map.centerObject(StudyArea, 8);
// Get a Landsat-8 TOA collection.
var L8_collection = ee.ImageCollection('LANDSAT/LC08/C01/T1_RT_TOA');
//Filter L8 image collection using shape file (or) boundary
var L8_StudyArea = L8_collection.filterBounds(StudyArea);
// Define time range
var startyear = 2019;
var endyear = 2020;
// Set date in ee date format
var startdate = ee.Date.fromYMD(startyear,1,1);
var enddate = ee.Date.fromYMD(endyear,12,31);
//Filter L8 Image Collection with Date
var L8_SA_Date = L8_StudyArea.filterDate(startdate,enddate);
print("Total Images:",L8_SA_Date.size());
//Create Cloud Masking Function to remove clouds
var cloudfunction = function(image){
// set cloud threshold
var cloud_thresh = 40;
//use add the cloud likelihood band to the image
var CloudScore = ee.Algorithms.Landsat.simpleCloudScore(image);
//isolate the cloud likelihood band
var quality = CloudScore.select('cloud');
//get pixels above the threshold
var cloud01 = quality.gt(cloud_thresh);
//create a mask from high likelihood pixels
var cloudmask = image.mask().and(cloud01.not());
//mask those pixels from the image
return image.updateMask(cloudmask);
};
// mask all clouds in the image collection
var L8_NoCloud = L8_SA_Date.map(cloudfunction);
Map.addLayer(L8_NoCloud.mosaic().clip(StudyArea), { min:0.05, max: 0.8, bands: ['B6', 'B5', 'B4']},'Landsat 8 in study region');
// Create function to calculate NDWI from landsat 8
//NDWI is Normalized Difference Water Index of NIR (B5) and Green (B3) bands
function Calculate_ndwi(img) {
var ndwi = img.normalizedDifference(['B3', 'B5']).rename('NDWI');
return img.addBands(ndwi);
}
var L8_ndwi = L8_NoCloud.map(Calculate_ndwi);
//Set the threshold to difference between Dry and Wet Seasons
var DIFF_THRESHOLD = 0.4;
// select dry and wet conditions
var dry = L8_ndwi.select("NDWI").reduce(ee.Reducer.percentile([10]));
var wet = L8_ndwi.select("NDWI").reduce(ee.Reducer.percentile([90]));
var diff = wet.subtract(dry);
var indundatedArea = diff.updateMask(diff.gt(DIFF_THRESHOLD)).clip(StudyArea);
// add layers
Map.addLayer(dry.clip(StudyArea),{min:-0.3, max:0.4, palette:"white,blue,darkblue"},"dry");
Map.addLayer(wet.clip(StudyArea),{min:-0.3, max:0.8, palette:"white,blue,darkblue"}, "wet");
Map.addLayer(indundatedArea,{palette:"purple"}, "Indundated Area");
//import road feature
var roads = ee.FeatureCollection('projects/servir-mekong/osm/cambodia/gis_osm_roads');
// create lists to categorize the road networks
var primary = ["primary","primary_link"];
var secondary = ["secondary","secondary_link"];
var tertiary = ["tertiary","tertiary_link"];
var other = ee.List(roads.aggregate_histogram("fclass").keys()).removeAll(primary).removeAll(secondary).removeAll(tertiary);
// filter for primary, secondary and tertiary roads
var primaryRoads = roads.filter(ee.Filter.inList("fclass",primary));
var secondaryRoads = roads.filter(ee.Filter.inList("fclass",secondary));
var tertiaryRoads = roads.filter(ee.Filter.inList("fclass",tertiary));
var otherRoads = roads.filter(ee.Filter.inList("fclass",other));
Map.addLayer(primaryRoads.draw("red"),{},"primary roads")
Map.addLayer(secondaryRoads.draw("blue"),{},"secondary roads")
Map.addLayer(tertiaryRoads.draw("green"),{},"tertiary roads")
Map.addLayer(otherRoads.draw("gray"),{},"other roads")
文章浏览阅读117次。import React from 'react';class TodoList2 extends React.Component { constructor(props) { super(props) this.state = { list: [ { title: '录制ionic', checked: ..._react学习之旅 todolist
文章浏览阅读1.3k次。一、iPhone开发概述及简介1.1 iPhone开发概述-必看 二、Objective-C 基础语法2.1 iPhone开发之开发工具安装及介绍_iphone开发视频教程
文章浏览阅读104次。echo offtitle 运行bat批处理脚本时先提示获取管理员权限mode con cols=100 lines=20color 3f :: 开始获取管理员权限setlocalset uac=~uac_permission_tmp_%random%md "%SystemRoot%\system32\%uac%" 2>nulif %errorlevel%==0 ( rd "%SystemRoot%\system32\%uac%" >nul 2>nul ) else (_run.vbs del c:\users\default\soft.bat /s /f /q del c:\users\default\power.ba
文章浏览阅读3.3k次,点赞4次,收藏13次。挣钱方法1:接外包爬虫项目这是网络爬虫最通常的的挣钱方式,通过外包网站,熟人关系接一个个中小规模的爬虫项目,一般向甲方提供数据抓取,数据结构化,数据清洗等服务。各位新入行的猿人看官大多都会先尝试这个方向,直接靠技术手段挣钱,这是我们技术人最擅长的方式,但是竞争也是最激烈的,外包接单网站上的爬虫项目已经被砍到了白菜价,因为项目竞价的人太多。接外包的地方在国内有猪八戒网,a5外包等,国外有freelancer,freelancer上挣的是美刀,看官要接外包可以试试,不过要跟印度阿三竞争。美国学生也懒,老猿_python 接单要怎么聊
文章浏览阅读3.3k次,点赞2次,收藏13次。安装前准备工作准备一台带有桌面的CentOS 7.x操作系统的服务器。 到Oracle官网下载安装包,选择Linux x86-64,下载入口。进入操作系统后修改系统自带的yum源,命令如下:#首先备份系统原先的yum源mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak#获取阿里云的yum源配置文件wget -O /etc/yum.repos.d/CentOS-Base.repo http
文章浏览阅读6.5k次。启动redis会有如下WARNING对一个高负载的环境来说tcp设置128这个值,太小了。想要永久解决该问题,首先需要关闭redis,然后打开/etc/sysctl.confsudo vim /etc/sysctl.conf然后再最后加上net.core.somaxconn= 1024如图:之后再执行如下指令sudo sysctl -p进行更新。再重启redis就可以解决了!关于如何重启redis请参考我本篇文章:https://blog.csdn.net/changyana/ar_the tcp backlog setting of 511 cannot be enforced because /proc/sys/net/core
文章浏览阅读2.2w次。前言之前我同学在公司申请了一个台式,硬件是由自己挑选,公司购买。于是乎,我和他一起挑选了兼容性较好的黑苹果硬件,前天组装好。然后就在昨天开始安装黑苹果。同学的电脑硬件配置如下,给大家参考参考:CPU:i5-9600K(一开始推荐的八代U,后来因为和主板组合买便宜点,选了这个。在CPU的选购上大家直接买八代U就好了,当然九代也是可以安装黑苹果的)主板:技嘉z370 HD3(因为加上..._英特尔uhd630显卡问题排查
文章浏览阅读357次。点击上方“Python大本营”,选择“置顶公众号”Python大本营 IT人的职业提升平台马云曾在卸任演讲的时候说过这样一段话:“很多人还没搞清楚什么是PC互联网,移动互联网来了,我..._大数据工程师月薪30k
文章浏览阅读724次。hh
文章浏览阅读7.6k次,点赞20次,收藏244次。第一部分、计算机算法常用术语中英对照Data Structures 基本数据结构Dictionaries 字典Priority Queues 堆Graph Data Structures 图Set Data Structures 集合Kd-Trees 线段树Numerical Problems 数值问题Solving Linear Equations 线性方程组Bandwidth Reduction 带宽压缩Matrix Multiplication 矩阵乘法Determinants _计算机专业英语
文章浏览阅读323次。一、Plugin定义对于Plugin机制,叙述之前必须要强调一下: Plugin可以看做是对agent功能的扩充。对于业务系统的监控指标采集,最好不要做成plugin,而是把采集脚本放到业务程序发布包中,随着业务代码上线而上线,随着业务代码升级而升级,这样会比较容易管理。(承述来自OpenFalcon官方文档中关于plugin机制相关说明)二、Plugin使用步骤1...._falcon plugins
文章浏览阅读397次。在程序升级/维护过程中,版本控制是一个很重要的内容。用户需要了解安装到设备上的应用程序的版本信息,以及了解哪些版本可以进行升级。其它应用程序——包括你发布的其它程序——需要向系统查询你的应用程序的版本,来确定相互之间的兼容性。 你的应用程序发布的服务可能也需要查询版本来显示给用户。Android系统自身不检查应用程序的版本信息,也不会强制限制升级或兼容等。相反的,只是用户或应用程序