ee.ImageCollection.size()
Integer返してくれるって書いてあるけど、実際にはNumberの形で返ってくる。.size()
の使い方もee.Number
参照。
ee.Number
Numberというオブジェクトは、imageCollection.size() + 1
みたいなことはできない。
imageCollection.size().add(1)
とすればおk。
四則演算とか簡単な計算は以下のとおり。
.add(right) //rightと足し算
.subtract(right) //rightを引き算する
.multiply(right) //掛け算
.divide(right) //rightで割り算。0で割ると0になる。
.mod(right) //剰余
ここで問題なのはif文とかで分岐したい時。
もちろんif(ee.Number==0)
とかはできない。
if使いたいときはee.Algorithms.If
を使用する。
var landsat5=ee.ImageCollection(ee.Algorithms.If(size.mod(2).eq(0),load_L5.merge(allone_col),load_L5));
new Date()
var date_ymd=new Date(year,month,date);
ここで問題なのは引数の値。
yearは年をそのままいれればいいんだけど、month,dateはちょっとへん。
monthは0が1月、dateは2が1日を指す。
それで時間はなぜかそのままにすると15:00:00となる。
reduceNeighborhood()
imageにかけるもの。
それぞれのピクセルの周りのピクセルをみて何かするためのもの。
image.reduceNeighborhood(reducer, kernel, inputWeight)
引数として、
reducerには任意のreducerを、
kernelには任意のkernel(丸とか四角とか、あるピクセルの周りのどの範囲をreduceの対象にするか)を、
inputweightにはウェイトをmaskとかkernelの形で渡す。
例えば、
var landsat5=ee.Image(/*なんかの画像*/);
var edge_mask=landsat5.reduceNeighborhood({
reducer: ee.Reducer.count(),
kernel:ee.Kernel.square(1,"pixels"),
});
こんな感じにしておけば、
すべてのピクセルにおいて、周りの有効ピクセルが何個あるかを確認できる。ただし自分のピクセルもカウントされて、最大9になる。
要は端っこを抽出できるってこと。
ee.Kernel.square
単位を"pixels"
にしておくと、ズームの度合いに応じて変化してしまう。
"meters"
でも同様。
原因はピクセルの大きさがズームレベルによって変化するから。