Data Skills Tutorial: Exploring NEON Airborne Remote Sensing Data in Google Earth Engine
Watch on YouTubeVideo summary
Bu videoyu izleyerek Google Earth Engine (GEE) platformunda NEON Havacılı Uzak Algılama verilerine nasıl erişilebileceğini ve görselleştirilip karşılaştırılabileceğini öğreniyoruz. İlk olarak, GEE veri kataloğundaki NEON veri setlerinin yapısını inceleyerek başlıyoruz; burada Lidar türevli dijital yükseklik modelleri, RGB kamera görüntüleri, kanop nitrojen içeriği ve iki farklı yansıtma verisi gibi altı ana kategori bulunmaktadır. Özellikle yüzey çift yönlü (bidirectional) ve tek yönlü (directional) yansıtma veri setlerine odaklanarak, bu verilerin 426 spektral bant içerdiğini ve görünür ışık ile kısa dalga kızılötesi bölgeyi kapsadığını görüyoruz. Veri kataloğundaki detaylı dokümantasyon sayfaları, atmosferik düzeltme girdileri ve çıktıları gibi kalite kontrol bandlarını da barındırırken, kullanıcılar örnek kod bloklarını doğrudan editöre taşıyarak hızlıca başlangıç yapma imkanı bulurlar.
Veri işleme sürecine geçildiğinde, GEE kod editöründe NEON veri setlerini nasıl içe aktarıp haritalayacağımız adım adım gösterilmektedir. Verilerin her yılın üçte ikisinde toplanması ve bazı yıllarda atmosferik düzeltmelerin tam olarak uygulanmamış olması gibi kısıtlamalar nedeniyle, öncelikle `aggregate array` fonksiyonu kullanılarak mevcut görüntü koleksiyonlarının listelenmesi önerilir. Bu liste sayesinde kullanıcılar yıl bazlı veri boşluklarını veya site kodları (örneğin CLBJ) ile ilgili bilgileri kontrol edebilirler. Ardından belirli bir tarih aralığı ve site adı üzerinden filtreleme yapılarak tekil bir görüntü seçilmesi, ardından bu görüntünün 439 adet özelliği içeren JSON yapısı incelenerek DOI'ye erişim ve atıf kılavuzlarına ulaşılması sağlanır.
Son olarak, toplanan yansıtma verilerinin görsel analizi için renk bantlarını seçip gerçek renkli görüntüler oluşturulması ve farklı yıllardaki veri kalitesini karşılaştırma teknikleri detaylandırılır. Örneğin, 2021'den alınan tek yönlü yansıtma verisi ile 2022'den alınmış çift yönlü (BRDF düzeltmeli) veri yan yana getirildiğinde, BRDF düzeltmesinin güneş konumu ve kamera açısı değişmelerinden kaynaklanan parlaklık farklılıklarını ortadan kaldırarak görüntünün daha homojen hale getirdiği net bir şekilde gözlemlenir. Video boyunca hem gerçek renk hem de yanlış renkli (false color) görselleştirmeler, histogram yayılımı ayarları ve şeffaflık değerleri değiştirilerek verinin farklı spektral bölgeleri nasıl incelenebileceği gösterilirken, izleyiciler NEON havacılık veri setlerini GEE üzerinde etkin bir şekilde keşfetme ve analiz etme becerisi kazanmış olur.
Read the full video transcript
In this video, we'll explore how to
access and visualize NEON remote sensing
data sets in Google Earth Engine.
First, we'll take a look at the NEON
data sets in the Earth Engine data
catalog, and then we'll move over to the
GEE code editor where we can write a
simple script to read in, map, and
compare reflectance data at a NEON site.
Before writing any code, it's helpful to
explore the data set documentation in
the Earth Engine data catalog.
First, open the Earth Engine data
catalog, which is
developers.google.com/earth-engine/datasets.
And then, to find the NEON data sets,
you can either search at the top search
bar,
which pulls up all the NEON data sets,
or you can navigate to the publisher
catalog,
and then this is organized
alphabetically, so you can scroll down
to the NEON page here, the National
Ecological Observatory Network.
Here you can see there are six data sets
contained in the NEON
publisher catalog, and these include
lidar derived data sets such as the
digital elevation model and canopy
height model,
RGB camera imagery,
canopy nitrogen content, which is
derived from reflectance data,
and then two reflectance data sets
including the surface bidirectional
reflectance data set and the surface
directional reflectance data set.
Let's take a deeper look at the
bidirectional reflectance data.
And when you scroll down, you can see a
number of tabs that describe the data
set including the description, which
describes how the data set is collected
and what it entails,
including links to documentation,
an intro tutorial series, and then data
visualization app, which allows for
interactive viewing
of the AOP data.
There's a detailed band description tab,
which describes NEON's 426 spectral
bands for this data set, which range
from the visible
to the shortwave infrared portion of the
spectrum.
And below those 426 bands are a number
of QA-related bands, including atcor, or
the atmospheric correction inputs and
outputs, as well as a weather quality
indicator and acquisition date layer.
There are also tabs describing the image
properties,
terms of use,
and citations with a link to the NEON
citation guideline page.
If you scroll down on in this explore
with Earth Engine tab,
you can open a sample code directly in
the code editor,
and
that will uh immediately pull in some
data and plot it for you.
We're going to go through that more
step-by-step in the next part of this
video,
so I won't click on this here, but just
know that this is available for your
use.
Now we'll switch over to the GEE code
editor, which can be found in the URL
code.earthengine.google.com.
In the code editor, if you're not sure
where to find an image collection, you
can search for it at the top. So, I will
search for
NEON, and you'll see the raster data
sets here,
and you can directly import the image
collections as follows.
So, this is the directional reflectance
image collection. We'll call it
reflectance 001, or ref1001.
And if we click on this
path here, we can si- find the
information that we saw in the data set
page, including the description, band,
image properties, and so forth.
And we can also see the collection
snippet here, which we can copy and use
that in our script.
So, I've already read in the image
collection up here, but I'll show you
how to
read in
the directional reflectance
collection here.
So, we'll call it 001.
And then if I just paste that path that
I had copied, that's reading in the data
set.
So, the first thing that we always
recommend people do when working with
NEON data is to see what data are
available.
So, data are collected at AOP sites
approximately three out of every five
years. So, there may not be data at your
site for every year.
Um and also data with different
corrections, for example, the
bidirectional correction has not been
applied to all previous years.
So, it's important to see what data are
available first.
So, to do that, we'll use something
called aggregate array
to basically just print out a list of
all the images in this collection.
So, let's go ahead and list available
images in the
directional
reflectance collection.
And to do that, we'll make a new
variable called
reflectance 001 images.
And then we can use our image collection
and this tool called aggregate array
on the system index.
So,
if you're not sure what something does,
you can always use the documentation
and then
see what that does. For For example,
when you run it on an image collection.
So, here we can see this function
aggregates over given property of the
objects in a collection, calculating a
list of all the values of the selected
property.
So, the property we're
running uh we're aggregating over is the
system index, [clears throat] which is
essentially the image names.
And we can go ahead and print that
to the console.
And we can see it's generated a list of
193 elements.
And these are the image names, which
follow the convention year {underscore}
site, where this is the four-digit NEON
site code, and then {underscore} visit.
Going back to the properties,
you can see the NEON site is described
here, and you can get a list of all the
NEON site codes by clicking on this
link.
So, now that we've seen what images are
available, we can see there's data from
2013 all the way to 2021.
Um let's look at a site of interest. In
this case, we'll look at the CLBJ, or
Lyndon B. Johnson site, and we'll pull
in an individual image from that site in
2021.
So, to do that, we can filter.
And
we can use options such as filter date
to filter by the date. In this case,
we'll filter from 2021 January 1st
to 2021
December 31st. And in most cases,
there's only one site per year.
Occasionally, we'll have uh we'll fly
the same site twice in a year.
Um but if you select the entire year,
you should be able to encompass the site
uh for that year.
Then you can also filter by metadata.
Um and for that, you can filter by the
site name.
And we'll search for site OBG.
And then finally, if you collect select
first, it will select the first image.
So, if you did have two images in a a
given year, it would select the first,
and if you only had one image, it would
only select that one. But this ensures
that you get an image and not an image
collection.
So, now that we've read in that site,
let's take a look at the image
properties for this site.
So,
let's call this
props.
And to do that, we can use that variable
we just defined above.
And then use the two dictionary option.
And then let's go ahead and display
that. So, you can also print out what
you're printing out beforehand. So,
let's call this site OBG 2021
reflectance
properties.
And we can copy in that variable.
So, let's go ahead and look at those
properties. We can see that there are
439 properties.
We expand here, we can see that some of
these are straightforward such as the
domain, NEON site, that's that site
code, and the site name,
whether the data are provisional or
released. And so, this gets into
NEON's versioning control system, which
relies on a release process that that
happens every year in January.
So, these data have been released in
January 2026.
Um you can also see recommended
citation.
So, if you expand to the JSON, you can
actually just copy this
to get the citation for the data.
There's also a digital object identifier
or DOI. So, if you click on that, it
will link you to the
root uh page for this data set and um
the associated release tag and DOI here.
And then in this page
is additional documentation including
algorithm theoretical basis documents,
quick start guides, and so forth. So, we
do recommend that you take a look at the
the landing page for the data product.
And then um most of the properties uh by
number are these wavelength full width
half max properties for each band, which
describe the center wavelength and the
bandwidth for each. And so, you can see
here NEON data ranges from 380 nm
to about 2500 nm, uh which ranges from
the visible to the shortwave infrared
portion of the spectrum.
So, now that we've explored some of the
properties, let's go ahead and make a
plot of our reflectance data.
So, to do that, first we need to create
a visualization parameter dictionary.
So,
we'll just we'll call that reflectance
RGB viz.
And here
um since we have so many bands, we do
need to specify which bands we want to
be visualized.
And to visualize the red, green, and
blue combination to get a more true
color image, we can use bands 53,
35,
and 19.
We can also specify the minimum
and maximum value to display.
So, I'll just go from 0 to 1,000. You
can see that there's a scale factor of
10,000, so 0 to 1,000 represents
uh 0 to 10% of the reflectance.
Now that we've specified our
visualization parameters, we can create
um a map layer here. So,
add the RGB true color
reflectance image to the map.
So, for that we can use map.addLayer
and add our
reflectance image.
Next is the
visualization parameter dictionary.
And then finally, we can add a title.
And then now that we've added the layer,
we also need to center
on
our
data set so that it zooms to the correct
place.
And we can add a zoom level. In this
case, I'll add 11.
So, let's go ahead and run this again.
And it looks like I made a little typo
here. I forgot the 001.
And if you do have errors, that will
show up in the console on the right-hand
side, and it tells you which line
failed, so you can go in and
troubleshoot.
So, let's run again now that I fixed
that. So, here we can see the site CLBJ
in the map panel.
And if we expand this layers
option here
and click on the settings,
we can do things like change the bands
that we're visualizing. So, instead of a
true color image, you can modify these
to look at a false color image, for
example, looking at the shortwave
infrared or infrared portions.
You can also change the histogram
stretch.
So, for example, if I select three
sigma, this shows three standard
deviations of the
the reflectance values and apply this,
you can see it changes the visualization
here a little bit.
Lastly, you can also adjust opacity
and the gamma value here.
You can also change the opacity
with this slider panel to the right up
here.
So, now that we've looked at the
directional reflectance, we can also
take a quick look at a bidirectional
reflectance data set.
So, to do that, I'm just going to copy
some of the code that we've already
written
and make a few modifications. So, the
bidirectional reflectance data set
is the 002
revision.
And then, we can also copy this
here and use the same visualization
parameters that we used before.
So, here we're
plotting the
bidirectional.
Um sorry, we also have to select
the
correct
image from 2022.
So, here we'll change this to 002 and
the date to 2022.
And then again, to plot it,
just change what we're plotting
and call it bidirectional reflectance.
So, this is all things we've done
before. First, we're just reading in the
reflectance 002 image collection. We're
selecting the bidirectional data from
2022
at this site CLBJ.
and then we're using the same function
map.addLayer
to plot it with the same visualization
parameters that we used before.
We don't have to re-
copy this line of centering the object
because it's already applied in this
script.
So here we can see now we have two
layers added to the map from 2021 and
2022. We can zoom in a little bit.
And then as I showed before you can
change the opacity of a layer to kind of
see the differences between these two or
you can deselect or select as follows.
And so right off the bat you can see
that compared to the 2021 data the 2022
data is a lot smoother
and that's because the BRDF correction
has been applied.
And so this BRDF correction or BRDF
effect essentially means that objects
look differently when viewed from
different angles and illuminated from
different directions.
So the BRDF correction or the
bidirectional reflectance distribution
function smooths out the images so the
objects have the same brightness
regardless of the sun's position or the
camera angle.
In this video we explored how to access
NEON airborne data sets in Earth Engine,
inspect data set metadata, create a true
color visualization of reflectance data,
and then compare directional and
bidirectional reflectance data.
On your own you could explore the other
NEON data sets
uh again searching for the paths as
follows and then exploring the
properties.
Thank you.