GEE obtain bands from image collection - google-earth-engine

I'm currently working on my bachelor's thesis and I am trying to work with Sentinel 5 - P's aerosol data.
I am trying to obtain Aerosol Layer Height (L3__AER_LH) data but I do not know the bands, which I need to 'select'.
The README file on L3__AER_LH reads as follows:
The data file contains the aerosol_mid_pressure and aerosol_mid_height which provide the
air pressure at the center of the aerosol layer and the height at the center of the aerosol layer relative
to the geoid, respectively.
But when I try running: .select('absorbing_aerosol_index'); I get no results.
Therefore, I have tried using print(collection.bandNames); but I recieve an 'undefined'.
Could someone help me obtain L3__AER_LH data from GEE?
Thank you for your time.

Therefore, I have tried using print(collection.bandNames); but I recieve an 'undefined'.
The best way to find out about bands programmatically is to look at the band names of one image, because band information for a collection is sometimes incomplete.
print(collection.first().bandNames());
That said, for datasets from the Earth Engine Data Catalog, you'll get documentation as well as the names by looking at their catalog pages (example), so doing so is a better option in that case.
That page tells you that the band names for L3_AER_LH (as provided by Earth Engine) include aerosol_pressure and aerosol_height.

Related

Calculate landscape metrics over other raster column in R (landscapemetrics package)

In R and using the landscapemetrics package, I am wanting to calculate landscape metrics of a raster file that I have that contains different vegetation types. When I import the raster file into R using the stack function, the file contains one layer with multiple levels (see attached image). enter image description here
Subsequently, when I run a function to calculate a landscape metric, or plot the raster, it works with the "Value" level/column (see second image attached). enter image description here. Rather, I want it to calculate the metric over the "Vegetation_Type" level/column directly. However, I do not know how to do this. Currently, when I calculate for example the amount of core area for each vegetation type, it gives me the result in the form of a table that presents "class = 1-7" with the specific core area of that class, rather than "Vegetation_Type = Hummock". I want to have the "class" column with numbers 1-7 to be substituted by the vegetation types (e.g. Hummock, N, K etc.). Is there anyone who knows how to do this who can maybe help me?
Thank you so much in advance, and sorry for the unlogical post. I am still new here and do not really know how to best structure my questions!
Sincerely,
Jasper
The lanscapemetrics package will always use the numeric ID of each class to make sure the output is type stable, i.e, always identical regardless of the input.
But, since the output is simply a tibble, you should be able to just join the information using e.g. dplyr::left_join().

Google Maps vs. ggplot2/MarMap

Below is a JavaScript page I have created that allows me add and freely move markers on the map. From this map I can figure out the regions I am interested in.
Basically what I want to do is show the same map using ggplot2/MarMap with coastline indicators + bathymetry data. I am really just interested in getting bathymetry data per GPS location, basically getting negative/positive elevation per Lat+Long, so I was thinking if I can plot it then I should be able to export data to a Database. I am also interested in coastline data, so I want to know how close I am (Lat/Long) to coastline, so with plot data I was also going to augment in DB.
Here is the R script that I am using:
library(marmap);
library(ggplot2);
a_lon1 = -79.89836596313478;
a_lon2 = -79.97179329675288;
a_lat1 = 32.76506070891712;
a_lat2 = 32.803624214389615;
dat <- getNOAA.bathy(a_lon1,a_lon2,a_lat1,a_lat2, keep=FALSE);
autoplot(dat, geom=c("r", "c"), colour="white", size=0.1) + scale_fill_etopo();
Here is the output of above R script:
Questions:
Why do both images not match?
In google-maps I am using zoom value 13. How does that translate in ggplot2/MarMap?
Is it possible to zoom in ggplot2/MarMap into a (Lat/Long)-(Lat/Long) region?
Is it possible to plot what I am asking for?
I don't know how you got this result. When I use your script, I get an error since the area your are trying to fetch from the ETOPO1 database using getNOAA.bathy() is too small. However, adding resolution=1 (this gives the highest possible resolution for the ETOPO1 database), here is what I get:
To answer your questions:
Why do both images not match?
Probably because getNOAA.bathy() returned an error and the object dat you're using has been created before, using another set of coordinates
In google-maps I am using zoom value 13. How does that translate in ggplot2/MarMap?
I have no clue!
Is it possible to zoom in ggplot2/MarMap into a (Lat/Long)-(Lat/Long) region?
I urge you to take a look at section 4 of the marmap-DataAnalysis vignette. This section is dedicated to working with big files. You will find there that you can zoom in any area of a bathy object by using (for instance) the subsetBathy() function that will allow you to click on a map to define the desired area
Is it possible to plot what I am asking for? Yes, but it would be much easier to use base graphics and not ggplot2. Once again, you should read the package vignettes.
Finally, regarding the coastline data, you can use the dist2isobath() function to compute the distance between any gps point and any isobath, including the coastline. Guess where you can learn more about this function and how to use it...

Successive pictures on R

I have a code to plot a world map with a meteorological field for one moment (or one measure).
Is it possible to successively plot the map for different moments (for i from 1 to 125) in order to view a sort of video when we run the code?
Yes, look at the animation package.
It can creates an animated gif for you (as well as other tricks). There are live examples you can look at as eg Buffon's needle, a CLT demo and much more.
The package abstracts away some of the OS-dependent layers. If you know the basics, you can of course just call the corresponding tool from the imagemagick project which is likely to be available on OS of choice too.

Build my own off-line map server?

I am new to GIS and I am trying to deploy my own off-line map server.
I have found very interesting open source tools like: geoserver.
I have downloaded OpenStreetMap data from geofabrik.de
In the packages I downloaded from geofabrik we find different layers with diffrent information: landuse, natural, places, railways ... but not the base map i.e: the geographic map with country border and no other information.
My question is:
How can I get (download) this base map layer in order to use it off-line?
Thanks for any help.
I had exactly the same project recently. I tried several world maps (CloudMate, NaturalEarth) to put under geofabrik extractions. Most of them didn't have enough resolution to display properly on higher zoom levels.
Finally, I found ThinkGeo extractions. It contains a "complete world landmass polygons" layer, which is good enough for a background layer on any zoom levels. It turned out that ThinkGeo extractions for separate countries contain country borders and have higher quality than geofabrik. (I experienced missing objects with geofabrik.)
So I came up a solution displaying the landmass layer, and some of the countries depending on the focus of the project.
I'd recommend you to try ThinkGeo. They do weekly update on data.

Need a fast dataset 2D-viewer/plotter for large datasets

I'm searching a data viewer/plotter for some data I've generated.
Facts
First some facts about the data I've generated:
There are several datasets with about 3 million data points each.
Each dataset currently is stored in ascii format.
Every line represents a point and consists of multiple columns.
The first two columns determine the position of the point (i.e. x and y value) whereas the first column is a timestamp and the second is a normalized float between 0 and 1.
The other columns contain additional data which may be used to colorize the plot or filter the data.
An example data point:
2012-08-08T01:02:03.040 0.0165719281 foobar SUCCESS XX:1
Current Approach
Currently I am generating multiple png files (with gnuplot) with different selection criteria like the following ones for each data set:
Display all points in grey.
Display all points in grey, but SUCCESS in red.
Display all points in grey, but SUCCESS in red, XX:-1 in green; if both SUCCESS and XX:-1 match use blue as coloring.
Drawbacks
With the current approach there are some drawbacks I'd like to have addressed:
I can't easily switch on/off some filters or colorings because I have to generate a new png file every time.
I need to use a limited resolution in my image file because the higher the resolution the slower is the viewer. So I can only zoom in to a limited level of detail.
I don't have the raw data available in the png viewer for each point. Ideally I'd like to have the data visible on selection of a point.
Already tested
I've already tested some other approaches:
Gnuplot itself has a viewer but it can't handle that amount of points efficiently - it is too slow and consumes too much memory.
I've had a quick look at KST, but I couldn't find a way to display 2D data and I don't think it will meet my wishes.
Wishes
I'd like to have a viewer which can operate on the raw data, can displays the points quickly if zoomed out, can also zoom in quickly and as well should resolve the aforementioned drawbacks.
Question
So finally, does anybody know of such a viewer or has another suggestion?
If there isn't a viewer some recommendations for programming it myself are welcome, too.
Thanks in advance
Stefan

Resources