root/climate/research/LST_missingdata.html @ f9695052
1 |
<!DOCTYPE html>
|
---|---|
2 |
<!-- saved from url=(0014)about:internet -->
|
3 |
<html>
|
4 |
<head>
|
5 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> |
6 |
<meta http-equiv="x-ua-compatible" content="IE=9" > |
7 |
|
8 |
<title>LST Climatology Evaluation</title> |
9 |
|
10 |
<style type="text/css"> |
11 |
body, td { |
12 |
font-family: sans-serif; |
13 |
background-color: white; |
14 |
font-size: 12px; |
15 |
margin: 8px; |
16 |
}
|
17 |
|
18 |
tt, code, pre { |
19 |
font-family: 'DejaVu Sans Mono', 'Droid Sans Mono', 'Lucida Console', Consolas, Monaco, monospace; |
20 |
}
|
21 |
|
22 |
h1 { |
23 |
font-size:2.2em; |
24 |
}
|
25 |
|
26 |
h2 { |
27 |
font-size:1.8em; |
28 |
}
|
29 |
|
30 |
h3 { |
31 |
font-size:1.4em; |
32 |
}
|
33 |
|
34 |
h4 { |
35 |
font-size:1.0em; |
36 |
}
|
37 |
|
38 |
h5 { |
39 |
font-size:0.9em; |
40 |
}
|
41 |
|
42 |
h6 { |
43 |
font-size:0.8em; |
44 |
}
|
45 |
|
46 |
a:visited { |
47 |
color: rgb(50%, 0%, 50%); |
48 |
}
|
49 |
|
50 |
pre { |
51 |
margin-top: 0; |
52 |
max-width: 95%; |
53 |
border: 1px solid #ccc; |
54 |
white-space: pre-wrap; |
55 |
}
|
56 |
|
57 |
pre code { |
58 |
display: block; padding: 0.5em; |
59 |
}
|
60 |
|
61 |
code.r, code.cpp { |
62 |
background-color: #F8F8F8; |
63 |
}
|
64 |
|
65 |
table, td, th { |
66 |
border: none; |
67 |
}
|
68 |
|
69 |
blockquote { |
70 |
color:#666666; |
71 |
margin:0; |
72 |
padding-left: 1em; |
73 |
border-left: 0.5em #EEE solid; |
74 |
}
|
75 |
|
76 |
hr { |
77 |
height: 0px; |
78 |
border-bottom: none; |
79 |
border-top-width: thin; |
80 |
border-top-style: dotted; |
81 |
border-top-color: #999999; |
82 |
}
|
83 |
|
84 |
@media print { |
85 |
* { |
86 |
background: transparent !important; |
87 |
color: black !important; |
88 |
filter:none !important; |
89 |
-ms-filter: none !important; |
90 |
}
|
91 |
|
92 |
body { |
93 |
font-size:12pt; |
94 |
max-width:100%; |
95 |
}
|
96 |
|
97 |
a, a:visited { |
98 |
text-decoration: underline; |
99 |
}
|
100 |
|
101 |
hr { |
102 |
visibility: hidden; |
103 |
page-break-before: always; |
104 |
}
|
105 |
|
106 |
pre, blockquote { |
107 |
padding-right: 1em; |
108 |
page-break-inside: avoid; |
109 |
}
|
110 |
|
111 |
tr, img { |
112 |
page-break-inside: avoid; |
113 |
}
|
114 |
|
115 |
img { |
116 |
max-width: 100% !important; |
117 |
}
|
118 |
|
119 |
@page :left { |
120 |
margin: 15mm 20mm 15mm 10mm; |
121 |
}
|
122 |
|
123 |
@page :right { |
124 |
margin: 15mm 10mm 15mm 20mm; |
125 |
}
|
126 |
|
127 |
p, h2, h3 { |
128 |
orphans: 3; widows: 3; |
129 |
}
|
130 |
|
131 |
h2, h3 { |
132 |
page-break-after: avoid; |
133 |
}
|
134 |
}
|
135 |
|
136 |
</style>
|
137 |
|
138 |
<!-- Styles for R syntax highlighter -->
|
139 |
<style type="text/css"> |
140 |
pre .operator, |
141 |
pre .paren { |
142 |
color: rgb(104, 118, 135) |
143 |
}
|
144 |
|
145 |
pre .literal { |
146 |
color: rgb(88, 72, 246) |
147 |
}
|
148 |
|
149 |
pre .number { |
150 |
color: rgb(0, 0, 205); |
151 |
}
|
152 |
|
153 |
pre .comment { |
154 |
color: rgb(76, 136, 107); |
155 |
}
|
156 |
|
157 |
pre .keyword { |
158 |
color: rgb(0, 0, 255); |
159 |
}
|
160 |
|
161 |
pre .identifier { |
162 |
color: rgb(0, 0, 0); |
163 |
}
|
164 |
|
165 |
pre .string { |
166 |
color: rgb(3, 106, 7); |
167 |
}
|
168 |
</style>
|
169 |
|
170 |
<!-- R syntax highlighter -->
|
171 |
<script type="text/javascript"> |
172 |
var hljs=new function(){function m(p){return p.replace(/&/gm,"&").replace(/</gm,"<")}function f(r,q,p){return RegExp(q,"m"+(r.cI?"i":"")+(p?"g":""))}function b(r){for(var p=0;p<r.childNodes.length;p++){var q=r.childNodes[p];if(q.nodeName=="CODE"){return q}if(!(q.nodeType==3&&q.nodeValue.match(/\s+/))){break}}}function h(t,s){var p="";for(var r=0;r<t.childNodes.length;r++){if(t.childNodes[r].nodeType==3){var q=t.childNodes[r].nodeValue;if(s){q=q.replace(/\n/g,"")}p+=q}else{if(t.childNodes[r].nodeName=="BR"){p+="\n"}else{p+=h(t.childNodes[r])}}}if(/MSIE [678]/.test(navigator.userAgent)){p=p.replace(/\r/g,"\n")}return p}function a(s){var r=s.className.split(/\s+/);r=r.concat(s.parentNode.className.split(/\s+/));for(var q=0;q<r.length;q++){var p=r[q].replace(/^language-/,"");if(e[p]){return p}}}function c(q){var p=[];(function(s,t){for(var r=0;r<s.childNodes.length;r++){if(s.childNodes[r].nodeType==3){t+=s.childNodes[r].nodeValue.length}else{if(s.childNodes[r].nodeName=="BR"){t+=1}else{if(s.childNodes[r].nodeType==1){p.push({event:"start",offset:t,node:s.childNodes[r]});t=arguments.callee(s.childNodes[r],t);p.push({event:"stop",offset:t,node:s.childNodes[r]})}}}}return t})(q,0);return p}function k(y,w,x){var q=0;var z="";var s=[];function u(){if(y.length&&w.length){if(y[0].offset!=w[0].offset){return(y[0].offset<w[0].offset)?y:w}else{return w[0].event=="start"?y:w}}else{return y.length?y:w}}function t(D){var A="<"+D.nodeName.toLowerCase();for(var B=0;B<D.attributes.length;B++){var C=D.attributes[B];A+=" "+C.nodeName.toLowerCase();if(C.value!==undefined&&C.value!==false&&C.value!==null){A+='="'+m(C.value)+'"'}}return A+">"}while(y.length||w.length){var v=u().splice(0,1)[0];z+=m(x.substr(q,v.offset-q));q=v.offset;if(v.event=="start"){z+=t(v.node);s.push(v.node)}else{if(v.event=="stop"){var p,r=s.length;do{r--;p=s[r];z+=("</"+p.nodeName.toLowerCase()+">")}while(p!=v.node);s.splice(r,1);while(r<s.length){z+=t(s[r]);r++}}}}return z+m(x.substr(q))}function j(){function q(x,y,v){if(x.compiled){return}var u;var s=[];if(x.k){x.lR=f(y,x.l||hljs.IR,true);for(var w in x.k){if(!x.k.hasOwnProperty(w)){continue}if(x.k[w] instanceof Object){u=x.k[w]}else{u=x.k;w="keyword"}for(var r in u){if(!u.hasOwnProperty(r)){continue}x.k[r]=[w,u[r]];s.push(r)}}}if(!v){if(x.bWK){x.b="\\b("+s.join("|")+")\\s"}x.bR=f(y,x.b?x.b:"\\B|\\b");if(!x.e&&!x.eW){x.e="\\B|\\b"}if(x.e){x.eR=f(y,x.e)}}if(x.i){x.iR=f(y,x.i)}if(x.r===undefined){x.r=1}if(!x.c){x.c=[]}x.compiled=true;for(var t=0;t<x.c.length;t++){if(x.c[t]=="self"){x.c[t]=x}q(x.c[t],y,false)}if(x.starts){q(x.starts,y,false)}}for(var p in e){if(!e.hasOwnProperty(p)){continue}q(e[p].dM,e[p],true)}}function d(B,C){if(!j.called){j();j.called=true}function q(r,M){for(var L=0;L<M.c.length;L++){if((M.c[L].bR.exec(r)||[null])[0]==r){return M.c[L]}}}function v(L,r){if(D[L].e&&D[L].eR.test(r)){return 1}if(D[L].eW){var M=v(L-1,r);return M?M+1:0}return 0}function w(r,L){return L.i&&L.iR.test(r)}function K(N,O){var M=[];for(var L=0;L<N.c.length;L++){M.push(N.c[L].b)}var r=D.length-1;do{if(D[r].e){M.push(D[r].e)}r--}while(D[r+1].eW);if(N.i){M.push(N.i)}return f(O,M.join("|"),true)}function p(M,L){var N=D[D.length-1];if(!N.t){N.t=K(N,E)}N.t.lastIndex=L;var r=N.t.exec(M);return r?[M.substr(L,r.index-L),r[0],false]:[M.substr(L),"",true]}function z(N,r){var L=E.cI?r[0].toLowerCase():r[0];var M=N.k[L];if(M&&M instanceof Array){return M}return false}function F(L,P){L=m(L);if(!P.k){return L}var r="";var O=0;P.lR.lastIndex=0;var M=P.lR.exec(L);while(M){r+=L.substr(O,M.index-O);var N=z(P,M);if(N){x+=N[1];r+='<span class="'+N[0]+'">'+M[0]+"</span>"}else{r+=M[0]}O=P.lR.lastIndex;M=P.lR.exec(L)}return r+L.substr(O,L.length-O)}function J(L,M){if(M.sL&&e[M.sL]){var r=d(M.sL,L);x+=r.keyword_count;return r.value}else{return F(L,M)}}function I(M,r){var L=M.cN?'<span class="'+M.cN+'">':"";if(M.rB){y+=L;M.buffer=""}else{if(M.eB){y+=m(r)+L;M.buffer=""}else{y+=L;M.buffer=r}}D.push(M);A+=M.r}function G(N,M,Q){var R=D[D.length-1];if(Q){y+=J(R.buffer+N,R);return false}var P=q(M,R);if(P){y+=J(R.buffer+N,R);I(P,M);return P.rB}var L=v(D.length-1,M);if(L){var O=R.cN?"</span>":"";if(R.rE){y+=J(R.buffer+N,R)+O}else{if(R.eE){y+=J(R.buffer+N,R)+O+m(M)}else{y+=J(R.buffer+N+M,R)+O}}while(L>1){O=D[D.length-2].cN?"</span>":"";y+=O;L--;D.length--}var r=D[D.length-1];D.length--;D[D.length-1].buffer="";if(r.starts){I(r.starts,"")}return R.rE}if(w(M,R)){throw"Illegal"}}var E=e[B];var D=[E.dM];var A=0;var x=0;var y="";try{var s,u=0;E.dM.buffer="";do{s=p(C,u);var t=G(s[0],s[1],s[2]);u+=s[0].length;if(!t){u+=s[1].length}}while(!s[2]);if(D.length>1){throw"Illegal"}return{r:A,keyword_count:x,value:y}}catch(H){if(H=="Illegal"){return{r:0,keyword_count:0,value:m(C)}}else{throw H}}}function g(t){var p={keyword_count:0,r:0,value:m(t)};var r=p;for(var q in e){if(!e.hasOwnProperty(q)){continue}var s=d(q,t);s.language=q;if(s.keyword_count+s.r>r.keyword_count+r.r){r=s}if(s.keyword_count+s.r>p.keyword_count+p.r){r=p;p=s}}if(r.language){p.second_best=r}return p}function i(r,q,p){if(q){r=r.replace(/^((<[^>]+>|\t)+)/gm,function(t,w,v,u){return w.replace(/\t/g,q)})}if(p){r=r.replace(/\n/g,"<br>")}return r}function n(t,w,r){var x=h(t,r);var v=a(t);var y,s;if(v){y=d(v,x)}else{return}var q=c(t);if(q.length){s=document.createElement("pre");s.innerHTML=y.value;y.value=k(q,c(s),x)}y.value=i(y.value,w,r);var u=t.className;if(!u.match("(\\s|^)(language-)?"+v+"(\\s|$)")){u=u?(u+" "+v):v}if(/MSIE [678]/.test(navigator.userAgent)&&t.tagName=="CODE"&&t.parentNode.tagName=="PRE"){s=t.parentNode;var p=document.createElement("div");p.innerHTML="<pre><code>"+y.value+"</code></pre>";t=p.firstChild.firstChild;p.firstChild.cN=s.cN;s.parentNode.replaceChild(p.firstChild,s)}else{t.innerHTML=y.value}t.className=u;t.result={language:v,kw:y.keyword_count,re:y.r};if(y.second_best){t.second_best={language:y.second_best.language,kw:y.second_best.keyword_count,re:y.second_best.r}}}function o(){if(o.called){return}o.called=true;var r=document.getElementsByTagName("pre");for(var p=0;p<r.length;p++){var q=b(r[p]);if(q){n(q,hljs.tabReplace)}}}function l(){if(window.addEventListener){window.addEventListener("DOMContentLoaded",o,false);window.addEventListener("load",o,false)}else{if(window.attachEvent){window.attachEvent("onload",o)}else{window.onload=o}}}var e={};this.LANGUAGES=e;this.highlight=d;this.highlightAuto=g;this.fixMarkup=i;this.highlightBlock=n;this.initHighlighting=o;this.initHighlightingOnLoad=l;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="\\b(0[xX][a-fA-F0-9]+|(\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|\\.|-|-=|/|/=|:|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.ER="(?![\\s\\S])";this.BE={b:"\\\\.",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE],r:0};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE],r:0};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BNM={cN:"number",b:this.BNR,r:0};this.inherit=function(r,s){var p={};for(var q in r){p[q]=r[q]}if(s){for(var q in s){p[q]=s[q]}}return p}}();hljs.LANGUAGES.cpp=function(){var a={keyword:{"false":1,"int":1,"float":1,"while":1,"private":1,"char":1,"catch":1,"export":1,virtual:1,operator:2,sizeof:2,dynamic_cast:2,typedef:2,const_cast:2,"const":1,struct:1,"for":1,static_cast:2,union:1,namespace:1,unsigned:1,"long":1,"throw":1,"volatile":2,"static":1,"protected":1,bool:1,template:1,mutable:1,"if":1,"public":1,friend:2,"do":1,"return":1,"goto":1,auto:1,"void":2,"enum":1,"else":1,"break":1,"new":1,extern:1,using:1,"true":1,"class":1,asm:1,"case":1,typeid:1,"short":1,reinterpret_cast:2,"default":1,"double":1,register:1,explicit:1,signed:1,typename:1,"try":1,"this":1,"switch":1,"continue":1,wchar_t:1,inline:1,"delete":1,alignof:1,char16_t:1,char32_t:1,constexpr:1,decltype:1,noexcept:1,nullptr:1,static_assert:1,thread_local:1,restrict:1,_Bool:1,complex:1},built_in:{std:1,string:1,cin:1,cout:1,cerr:1,clog:1,stringstream:1,istringstream:1,ostringstream:1,auto_ptr:1,deque:1,list:1,queue:1,stack:1,vector:1,map:1,set:1,bitset:1,multiset:1,multimap:1,unordered_set:1,unordered_map:1,unordered_multiset:1,unordered_multimap:1,array:1,shared_ptr:1}};return{dM:{k:a,i:"</",c:[hljs.CLCM,hljs.CBLCLM,hljs.QSM,{cN:"string",b:"'\\\\?.",e:"'",i:"."},{cN:"number",b:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},hljs.CNM,{cN:"preprocessor",b:"#",e:"$"},{cN:"stl_container",b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:a,r:10,c:["self"]}]}}}();hljs.LANGUAGES.r={dM:{c:[hljs.HCM,{cN:"number",b:"\\b0[xX][0-9a-fA-F]+[Li]?\\b",e:hljs.IMMEDIATE_RE,r:0},{cN:"number",b:"\\b\\d+(?:[eE][+\\-]?\\d*)?L\\b",e:hljs.IMMEDIATE_RE,r:0},{cN:"number",b:"\\b\\d+\\.(?!\\d)(?:i\\b)?",e:hljs.IMMEDIATE_RE,r:1},{cN:"number",b:"\\b\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",e:hljs.IMMEDIATE_RE,r:0},{cN:"number",b:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",e:hljs.IMMEDIATE_RE,r:1},{cN:"keyword",b:"(?:tryCatch|library|setGeneric|setGroupGeneric)\\b",e:hljs.IMMEDIATE_RE,r:10},{cN:"keyword",b:"\\.\\.\\.",e:hljs.IMMEDIATE_RE,r:10},{cN:"keyword",b:"\\.\\.\\d+(?![\\w.])",e:hljs.IMMEDIATE_RE,r:10},{cN:"keyword",b:"\\b(?:function)",e:hljs.IMMEDIATE_RE,r:2},{cN:"keyword",b:"(?:if|in|break|next|repeat|else|for|return|switch|while|try|stop|warning|require|attach|detach|source|setMethod|setClass)\\b",e:hljs.IMMEDIATE_RE,r:1},{cN:"literal",b:"(?:NA|NA_integer_|NA_real_|NA_character_|NA_complex_)\\b",e:hljs.IMMEDIATE_RE,r:10},{cN:"literal",b:"(?:NULL|TRUE|FALSE|T|F|Inf|NaN)\\b",e:hljs.IMMEDIATE_RE,r:1},{cN:"identifier",b:"[a-zA-Z.][a-zA-Z0-9._]*\\b",e:hljs.IMMEDIATE_RE,r:0},{cN:"operator",b:"<\\-(?!\\s*\\d)",e:hljs.IMMEDIATE_RE,r:2},{cN:"operator",b:"\\->|<\\-",e:hljs.IMMEDIATE_RE,r:1},{cN:"operator",b:"%%|~",e:hljs.IMMEDIATE_RE},{cN:"operator",b:">=|<=|==|!=|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||\\$|:",e:hljs.IMMEDIATE_RE,r:0},{cN:"operator",b:"%",e:"%",i:"\\n",r:1},{cN:"identifier",b:"`",e:"`",r:0},{cN:"string",b:'"',e:'"',c:[hljs.BE],r:0},{cN:"string",b:"'",e:"'",c:[hljs.BE],r:0},{cN:"paren",b:"[[({\\])}]",e:hljs.IMMEDIATE_RE,r:0}]}}; |
173 |
hljs.initHighlightingOnLoad(); |
174 |
</script>
|
175 |
|
176 |
|
177 |
|
178 |
|
179 |
</head>
|
180 |
|
181 |
<body>
|
182 |
<h1>LST Climatology Evaluation</h1> |
183 |
|
184 |
<h3>Adam M. Wilson (Compiled on Tue Mar 4 14:31:08 2014 using code version (git hash): f41365c)</h3> |
185 |
|
186 |
<p>A short script to visualize and explore the updated Land Surface Climatology algorithm that 'lowers the standards' in some areas to increase the number of available observations. </p> |
187 |
|
188 |
<h2>Download data from ECOcast and convert to raster stacks</h2> |
189 |
|
190 |
<pre><code class="r">download = F |
191 |
if (download) system("wget -e robots=off -L -r -np -nd -p 20140304_LST -nc -A tif http://ecocast.arc.nasa.gov/data/pub/climateLayers/LST_new/") |
192 |
|
193 |
## organize file names |
194 |
f = data.frame(full = T, path = list.files("20140304_LST", pattern = "tif$", |
195 |
full = T), stringsAsFactors = F) |
196 |
f$month = as.numeric(do.call(rbind, strsplit(basename(f$path), "_|[.]"))[, 7]) |
197 |
f$type = do.call(rbind, strsplit(basename(f$path), "_|[.]"))[, 1] |
198 |
f = f[order(f$month), ] |
199 |
f$mn = month.name[f$month] |
200 |
|
201 |
## create raster stacks |
202 |
lst_mean = stack(f$path[f$type == "mean"]) |
203 |
names(lst_mean) = f$mn[f$type == "mean"] |
204 |
NAvalue(lst_mean) = 0 |
205 |
|
206 |
lst_nobs = stack(f$path[f$type == "nobs"]) |
207 |
names(lst_nobs) = f$mn[f$type == "nobs"] |
208 |
|
209 |
lst_qa = stack(f$path[f$type == "qa"]) |
210 |
names(lst_qa) = f$mn[f$type == "qa"] |
211 |
|
212 |
## define a function to summarize data |
213 |
fst = function(x, na.rm = T) c(mean = mean(x, na.rm = T), min = min(x, na.rm = T), |
214 |
max = max(x, na.rm = T)) |
215 |
rfst = function(r) cellStats(r, fst) |
216 |
</code></pre>
|
217 |
|
218 |
<h2>Mean Monthly LST</h2> |
219 |
|
220 |
<p>Map of LST by month (with white indicating missing data). Note that many inland regions have missing data (white) in some months (mostly winter).</p> |
221 |
|
222 |
<pre><code class="r">colramp = colorRampPalette(c("blue", "orange", "red")) |
223 |
dt_mean = rfst(lst_mean) |
224 |
levelplot(lst_mean, col.regions = c(colramp(99)), at = seq(0, 65, len = 99), |
225 |
main = "Mean Land Surface Temperature", sub = "Tile H08v05 (California and Northern Mexico)") |
226 |
</code></pre>
|
227 |
|
228 |
<p><img src="http://i.imgur.com/LTEp1xT.png" alt="plot of chunk unnamed-chunk-4"/> </p> |
229 |
|
230 |
<p>Table of mean, min, and maximum LST for this tile by month.</p> |
231 |
|
232 |
<pre><code class="r">print(xtable(dt_mean), type = "html") |
233 |
</code></pre>
|
234 |
|
235 |
<!-- html table generated in R 3.0.2 by xtable 1.7-1 package -->
|
236 |
|
237 |
<!-- Tue Mar 4 14:19:55 2014 -->
|
238 |
|
239 |
<TABLE border=1> |
240 |
<TR> <TH> </TH> <TH> January </TH> <TH> February </TH> <TH> March </TH> <TH> April </TH> <TH> May </TH> <TH> June </TH> <TH> July </TH> <TH> August </TH> <TH> September </TH> <TH> October </TH> <TH> November </TH> <TH> December </TH> </TR> |
241 |
<TR> <TD align="right"> mean </TD> <TD align="right"> 15.01 </TD> <TD align="right"> 18.41 </TD> <TD align="right"> 25.81 </TD> <TD align="right"> 32.05 </TD> <TD align="right"> 39.49 </TD> <TD align="right"> 44.18 </TD> <TD align="right"> 44.70 </TD> <TD align="right"> 41.96 </TD> <TD align="right"> 38.59 </TD> <TD align="right"> 30.84 </TD> <TD align="right"> 21.77 </TD> <TD align="right"> 14.33 </TD> </TR> |
242 |
<TR> <TD align="right"> min </TD> <TD align="right"> 1.43 </TD> <TD align="right"> 1.98 </TD> <TD align="right"> 1.08 </TD> <TD align="right"> 1.28 </TD> <TD align="right"> 2.37 </TD> <TD align="right"> 5.03 </TD> <TD align="right"> 12.04 </TD> <TD align="right"> 12.96 </TD> <TD align="right"> 12.72 </TD> <TD align="right"> 6.90 </TD> <TD align="right"> 2.77 </TD> <TD align="right"> 2.76 </TD> </TR> |
243 |
<TR> <TD align="right"> max </TD> <TD align="right"> 31.31 </TD> <TD align="right"> 36.74 </TD> <TD align="right"> 45.88 </TD> <TD align="right"> 52.29 </TD> <TD align="right"> 58.66 </TD> <TD align="right"> 60.88 </TD> <TD align="right"> 61.15 </TD> <TD align="right"> 60.99 </TD> <TD align="right"> 57.07 </TD> <TD align="right"> 48.82 </TD> <TD align="right"> 39.17 </TD> <TD align="right"> 29.42 </TD> </TR> |
244 |
</TABLE>
|
245 |
|
246 |
<h3>Boxplot of Monthly Mean LST</h3> |
247 |
|
248 |
<pre><code class="r">lst_tmean = melt(unlist(as.matrix(lst_mean))) |
249 |
colnames(lst_tmean) = c("cell", "month", "value") |
250 |
lst_tmean = lst_tmean[!is.na(lst_tmean$value), ] |
251 |
lst_tmean$month = factor(lst_tmean$month, levels = month.name, ordered = T) |
252 |
bwplot(value ~ month, data = lst_tmean, ylab = "Mean LST (c)", xlab = "Month") |
253 |
</code></pre>
|
254 |
|
255 |
<p><img src="http://i.imgur.com/5Knr2zX.png" alt="plot of chunk unnamed-chunk-6"/> </p> |
256 |
|
257 |
<h2>Total number of available observations</h2> |
258 |
|
259 |
<p>This section details the spatial and temporal distribution of the number of LST observations that were not masked by quality control (see section below). Note that the regions with no data in the map above have missing data (nobs=0) here as well, but also the areas surrounding those regions have low numbers of observations in some months (blue colors). </p> |
260 |
|
261 |
<pre><code class="r">dt_nobs = rfst(lst_nobs) |
262 |
levelplot(lst_nobs, col.regions = c("grey", colramp(99)), at = c(-0.5, 0.5, |
263 |
seq(1, 325, len = 99)), main = "Sum Available Observations", sub = "Tile H08v05 (California and Northern Mexico) \n Grey indicates zero observations") |
264 |
</code></pre>
|
265 |
|
266 |
<p><img src="http://i.imgur.com/n7HfvPt.png" alt="plot of chunk unnamed-chunk-7"/> </p> |
267 |
|
268 |
<p>Table of mean, min, and maximum number of observations for this tile by month.</p> |
269 |
|
270 |
<!-- html table generated in R 3.0.2 by xtable 1.7-1 package -->
|
271 |
|
272 |
<!-- Tue Mar 4 14:21:49 2014 -->
|
273 |
|
274 |
<TABLE border=1> |
275 |
<TR> <TH> </TH> <TH> January </TH> <TH> February </TH> <TH> March </TH> <TH> April </TH> <TH> May </TH> <TH> June </TH> <TH> July </TH> <TH> August </TH> <TH> September </TH> <TH> October </TH> <TH> November </TH> <TH> December </TH> </TR> |
276 |
<TR> <TD align="right"> mean </TD> <TD align="right"> 107.97 </TD> <TD align="right"> 100.06 </TD> <TD align="right"> 140.35 </TD> <TD align="right"> 152.19 </TD> <TD align="right"> 177.02 </TD> <TD align="right"> 178.22 </TD> <TD align="right"> 156.86 </TD> <TD align="right"> 169.87 </TD> <TD align="right"> 180.29 </TD> <TD align="right"> 167.68 </TD> <TD align="right"> 136.12 </TD> <TD align="right"> 102.86 </TD> </TR> |
277 |
<TR> <TD align="right"> min </TD> <TD align="right"> 0.00 </TD> <TD align="right"> 0.00 </TD> <TD align="right"> 0.00 </TD> <TD align="right"> 0.00 </TD> <TD align="right"> 0.00 </TD> <TD align="right"> 0.00 </TD> <TD align="right"> 0.00 </TD> <TD align="right"> 0.00 </TD> <TD align="right"> 0.00 </TD> <TD align="right"> 0.00 </TD> <TD align="right"> 0.00 </TD> <TD align="right"> 0.00 </TD> </TR> |
278 |
<TR> <TD align="right"> max </TD> <TD align="right"> 272.00 </TD> <TD align="right"> 238.00 </TD> <TD align="right"> 281.00 </TD> <TD align="right"> 293.00 </TD> <TD align="right"> 319.00 </TD> <TD align="right"> 304.00 </TD> <TD align="right"> 319.00 </TD> <TD align="right"> 324.00 </TD> <TD align="right"> 310.00 </TD> <TD align="right"> 305.00 </TD> <TD align="right"> 271.00 </TD> <TD align="right"> 260.00 </TD> </TR> |
279 |
</TABLE>
|
280 |
|
281 |
<h3>Boxplot of Number of Observations</h3> |
282 |
|
283 |
<p>The seasonal cycle of missing data is quite noisy, though there tend to be fewer observations in winter months (DJF). </p> |
284 |
|
285 |
<pre><code class="r">lst_tnobs = melt(unlist(as.matrix(lst_nobs))) |
286 |
colnames(lst_tnobs) = c("cell", "month", "value") |
287 |
lst_tnobs = lst_tnobs[!is.na(lst_tnobs$value), ] |
288 |
lst_tnobs$month = factor(lst_tnobs$month, levels = month.name, ordered = T) |
289 |
bwplot(value ~ month, data = lst_tnobs, ylab = "Number of availble observations", |
290 |
xlab = "Month") |
291 |
</code></pre>
|
292 |
|
293 |
<p><img src="http://i.imgur.com/G9g9qQw.png" alt="plot of chunk unnamed-chunk-9"/> </p> |
294 |
|
295 |
<h2>Quality Assessment level used</h2> |
296 |
|
297 |
<p>Map of the Quality Assessment (QA) level used to fill the pixels. It goes from 0 (highest quality) to 3(low). For h08v05 all pixels are filled with either 0 or 1. So red indicates areas with the lower quality data (most of the tile).</p> |
298 |
|
299 |
<pre><code class="r">levelplot(lst_qa, col.regions = c("grey", "red"), at = c(-0.5, 0.5, 1.5), cuts = 2, |
300 |
main = "Quality Assessment Filter", sub = "Tile H08v05 (California and Northern Mexico)") |
301 |
</code></pre>
|
302 |
|
303 |
<p><img src="http://i.imgur.com/LWLYRXJ.png" alt="plot of chunk unnamed-chunk-10"/> </p> |
304 |
|
305 |
<p>Proportion of cells in each month with QA=1 (including cells in the Pacific Ocean)</p> |
306 |
|
307 |
<!-- html table generated in R 3.0.2 by xtable 1.7-1 package -->
|
308 |
|
309 |
<!-- Tue Mar 4 14:23:35 2014 -->
|
310 |
|
311 |
<TABLE border=1> |
312 |
<TR> <TH> </TH> <TH> January </TH> <TH> February </TH> <TH> March </TH> <TH> April </TH> <TH> May </TH> <TH> June </TH> <TH> July </TH> <TH> August </TH> <TH> September </TH> <TH> October </TH> <TH> November </TH> <TH> December </TH> </TR> |
313 |
<TR> <TD align="right"> ProportionQA_1 </TD> <TD align="right"> 0.47 </TD> <TD align="right"> 0.47 </TD> <TD align="right"> 0.42 </TD> <TD align="right"> 0.40 </TD> <TD align="right"> 0.38 </TD> <TD align="right"> 0.37 </TD> <TD align="right"> 0.42 </TD> <TD align="right"> 0.40 </TD> <TD align="right"> 0.38 </TD> <TD align="right"> 0.38 </TD> <TD align="right"> 0.43 </TD> <TD align="right"> 0.47 </TD> </TR> |
314 |
</TABLE>
|
315 |
|
316 |
<h2>Questions</h2> |
317 |
|
318 |
<p>A few open questions/comments (in my mind):</p> |
319 |
|
320 |
<ol>
|
321 |
<li>Why are there only two QA classes for this tile (0 and 1) rather than 4 (0-3)? There are still missing data in some months, is the plan to do it or was there another reason to not consider all classes for this tile?</li> |
322 |
<li>How exactly are the different QA levels selected? If QA=0 results in <33 obs, go to QA=1, etc.?<br/></li> |
323 |
<li> Please name monthly output in a way that it sorts chronologically (e.g. mean_LST_Day_1km_h08v05_04.tif instead of mean_LST_Day_1km_h08v05_apr_4.tif )<br/></li> |
324 |
<li> Please name directories on ECOcast with dates rather than “new”. E.g. LST/20140304/* That will make it easier to see which is the new version.</li> |
325 |
<li> Should we consider also saving the SD of the observations in each pixel (in addition to the mean and n of observations)?</li> |
326 |
</ol>
|
327 |
|
328 |
</body>
|
329 |
|
330 |
</html>
|
331 |
|