LoginSignup
1
2

More than 5 years have passed since last update.

Google Earth Engine覚書1 〜よく使う関数〜

Posted at

ee.ImageCollection.size()

Integer返してくれるって書いてあるけど、実際にはNumberの形で返ってくる。.size()の使い方もee.Number参照。

ee.Number

Numberというオブジェクトは、imageCollection.size() + 1みたいなことはできない。
imageCollection.size().add(1)とすればおk。
四則演算とか簡単な計算は以下のとおり。

四則演算.js
.add(right) //rightと足し算
.subtract(right) //rightを引き算する
.multiply(right) //掛け算
.divide(right) //rightで割り算。0で割ると0になる。
.mod(right) //剰余

ここで問題なのはif文とかで分岐したい時。
もちろんif(ee.Number==0)とかはできない。
if使いたいときはee.Algorithms.Ifを使用する。

if文.js
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"でも同様。
原因はピクセルの大きさがズームレベルによって変化するから。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2