Google Earth Engine 101 Part 1

Copy Help
  • Public/Private: Change the visibility of this video on your My Videos tab
  • Save/Unsave: Save/Unsave this video to/from your Saved Videos tab
  • Copy: Copy this video link to your system clipboard
  • Email: Copy this video link to your default email application
  • Remove: Remove this video from your My Videos or Saved Videos tab
Watch at: 00:00 / 00:00:20um so you're here hopefully for earth engine 101 like haven't done earth engine before or did it at a previous kind of meeting but really haven't experimented with it much on your own and need a refresher this is gonna be kind of a slower pace to as much as we can three hour session so we're gonna do 90 minutes then there'll be a break and then there'll be 101 b after that so if you actually have done earth engine in the past and you know how to map a function over a collection and you feel confident with that terminology and think you could do it then you probably would want to go to 101b which is going to be a little bit more advanced with the concepts but if that doesn't make any sense to you then you're in the right place right here so all right my name is tyler erickson i'm what's known as a developer advocate on the earth engine team or i focus primarily on the earth engine product in addition to a few other ones and i'm a little bit about my background is like i came from academia before joining google about six years ago now and so i view this as like a tool that is supporting what i used to be before i came to google people that are developing algorithms they do some coding but they're you know you need a tool to make it easier to manage a lot of data i'm going to start off this today by going through a bit of an overview of earth engine that matt did during the the opening uh kind of introduction but expand on that so that's going to probably take around 20 25 minutes to just do slides a broad overview of what earth engine is a little bit of what it's been used for before uh but then we're going to go into hands-on for the majority of this time it's gonna be following along we're gonna be scripting from starting from nothing and building our way up to hopefully you know doing some amazing classifications on the on the continental scale um so without further ado i'm gonna start off uh into the slides i'd like to introduce a few of the tas in the mac we got tanya and renee at least there might be others if you have any questions as we're going along please raise your hand and they'll come and help you that doesn't apply to the people that are watching the recorded video of this but i wanted you guys in the room to know that as well we are recording this so when you answer or ask questions i'm going to be trying to repeat them so we have a good recording of it and you will be able to listen to your questions i guess later on you'll get to see this again in the future uh so with that i think i will embark just on the slides and since we have a relaxed kind of pace of three hours we normally cover this in about 90 minutes two hours so we have a more relaxed pace today feel free to like interrupt me and with a show of hands whenever something is confusing and you want me to repeat go into more depth on something we do have time time for it all right so earth engine itself if you don't know already is our cloud-based platform for earth science data and analysis it's trying to get it's trying to help out with the idea of managing a lot of geospatial data so whether it's remote sensing data from satellites airborne it might be digital elevation files it could be weather or climate forecasts of the future this is a platform that we're trying to make a lot of the painful i.t things easier to do so you can focus more on on actually just getting results you know either developing new scientific algorithms that you want to publish or also transitioning those into like operational research so take something from a paper and then make it run you know on all the new data that's coming forth that's what earth engine is is about we in order to make this possible we are co-locating a lot of geospatial data in our data centers we're in the order of 10 to 20 petabytes depending on the account now it gets to be too much to kind of worry about how big it is right now it's a lot of data and we keep adding to it week after week we also have a lot of computers that are put next to that data so they can do fast computations on it and we will size that cluster up and down depending on how much demand we have for it and then finally we expose that to users through apis and so there's a javascript and a python api we're going to be using the javascript api today in order to work with earth engine and i'm also going to be spending a lot of time with a tool that we know we call the code editor and that works with the javascript api to make things easier to do we use it for teaching because it makes a lot of things about teaching earth engine a lot easier but just realize that when you're going through this the same techniques that we have the same underlying earth engine is available through a python api too if you come from that type of background like myself i'm more of a python programmer by background the earth engine data catalog is pretty vast and growing it started off with the the sentinel or sorry the landsat collections we were trying to focus initially on deforestation in the amazon and landsat collection was free available data at that point public domain data and right when the landsat program announced that their data was going to transition from a 600 per scene cost to being free data in 1998 we actually we actually went through and um sorry it got the wrong date there anyway about 10 years ago we went in the next year started up the earth engine projects because it was a large uh source of data that we needed a way to enable people to work with that volume of data so start off with landsat but we've gone into many other data sets since then in recent years the sentinel collection from the european union esa and the esa is the one that distributes that has been a huge kind of in feed that we are ingesting into earth engine so they are producing a massive amount of terabytes of data each day and we try to make that available in a lot of other feeds as well of different data sets our data catalog is largely governed by use cases that are presented to us by users so we're not trying to mirror everything under the sun is basically like people say we need this data set to do this particular use case and we're like ah that looks good and we prioritize it versus all the other requests and keep adding more and more to our data catalog all the time the public data catalog in addition you can upload your own private data but what we're going to be working with all today is the big public data catalogs that are already available in earth engine so we'll go into a few of these as we go through today but i want you know it's a lot more vast than just the couple of data sets that we're going to touch on during this hands-on workshop and it keeps changing in addition we have a lot of geospatial processing primitives so what you can do with the data that's in earth engine so we have the concept of an image that you might want to manipulate you know look at the different mans do math on it clip images work on collections of images which we're going to do today there's also the vector equivalent of features and features collections and for any of these large collections you may want to filter them by some type of metadata whether it's spatial temporal something that's actually in the metadata of the of the feature or image and then also reduce that a large amount of data by some dimension whether you're going to aggregate in space or time or something else we have reducers we have the concept of sql joins sort of joining two data sets together and that might that also could be joining in space or time or by some type of metadata and then more advanced things we have like kernel convolution type of operators that actually can aggregate in complex ways this data that you've joined together we do give you ways to export out of earth engine because at the end of the day you might not be able to get your entire analysis into earth engine so we want to make sure that you can stop at any point where we can't actually support your use case and get it out of earth engine into another tool to work on it and in addition we are continuing to work it work on incorporating advanced machine learning algorithms into earth engine a lot of these we've had in earth engine for a while like cart random forests sport vector machines but we're moving into more of the deep neural nets like tensorflow type analysis on on the data as well and then one of the basic things that's really great about earth engine is you don't have to worry so much about these projections like if you get if you've worked with geospatial data before you realize that there's hundreds if not thousands of projections that you can be delivered the data in and we do a lot of that reprojecting on the fly so you don't have to worry about it if you don't want to or you can actually really specifically control how things get reprojected if you do care about managing the projections so we have about a thousand of these different kind of concepts whether they're methods or in general classifications these objects and that is growing all the time as well so if you really get into the cutting edge of earth engine you want to look at our like api release uh history like every time we push a new release we'll say hey this changed we added this new data set we added this new feature uh we announced those often on the developers list as well so there's a lot of stuff that you can do with the data for a concrete example this is a typical satellite image for a certain part of the world i think this is um down in south america but the fact of working especially with satellite data optical satellite data is it's noisy there's clouds there's shadows even if you don't have something as blatant as this there's going to be some atmospheric effects we try to give you algorithms that you can start working with large amounts of data to get rid of a lot of that noise do that type of processing whether it's directly filtering the clouds and shadows or fitting models that that will smooth out those type of impacts over time so you can start focusing on what is happening on the earth's surface rather than the artifacts that you're seeing by looking at it from satellites we do this at a large scale this is uh before we would do this type of processing we used to have um cloud-free mosaics that included quite a few clouds like in the northern part of south america but if you put together enough of the landsat data and sentinel data and modis data together you can blend it to make things that are like this which is the pretty earth composite that you see right now as the base map of google maps and google earth that was something that was produced in earth engine we can do that globally but it's not just these type of visualization uh outputs we allow people to like drive their own properties you know if you're looking for something like water surface water changes or deforestation where it's happening you can look for those particular land cover changes in earth engine and make your own maps at this type of scale a lot of what we're going to be focusing on today is the code editor and this is once again this is a gui application that sits on top of earth engine and we use it for um uh education or training and we get people start on here because there's a lot you can do with it and it's customized for you know starting to build these earth engine applications it's probably not what you want to go and give to a decision maker like this they're going to be a little bit overwhelmed by the the interface that we have here but it's for building algorithms so it's a good place to start learning about earth engine in here and we're going to go through the different aspects of it when we get into the hands-on section but i just want to give you at least a brief overview right now we have a map output that you can get your results whether it's vector or raster imagery on layers on the map we have a coding interface in the middle there and then we have all kinds of documentation and management of your assets on the upper left and a lot of inspection debugging tools over on the right so that's kind of a general outline of what we're going to be playing with a lot today and then we're going to work through particular aspects of the user interface as we go through the the tutorial so at the end of the day though you you can produce apps that don't expose all of that you can kind of hide that from your users that it may not be programmers or don't know need to know about the details of the algorithm there is another class that i'll put a plug for that is user interfaces in earth engine which i can't remember which day it's going to be taught it's not today it's going to be one of the following days uh and that's if you are trying to use earth engine to encapsulate like an algorithm or data set to share with others that don't have access to earth engine that's probably one of the classes that you want to go to so that's sort of a powerful aspect you start in the in the code editor to do that but you can make an end result that you don't need to be in the code editor to actually be sharing this with others and finally i wanted to just show one kind of concrete example of a group that started learning earth engine with the code editor but then they went off and did use the python api and the javascript api and all kinds of other tools of web development to make a pretty neat uh app and if i break out of my slides here for a second to just go live to their application this is um an application that gives you a summary of land cover types there's quite a few of them in here over the last try to figure out how many years it is since 1984 so we're looking at you know 35 plus years there and it allows you to go in and look at all of these properties how they vary in the united states and overlay it with some interesting features that might have affected land cover so in this case i guess i shouldn't be doing red on ram that's a little bit hard to see so let's go back to another one here another red one there we go okay so this is a perennial cover one of the land cover classification apps or land cover classification classes and i've overlaid on that fire boundaries from some database i can't remember exactly which one they were drawing this from but then you can see areas where you would expect a land cover change to occur i'm zooming in an area that in 2002 burned extensively it's called the biscuit fire in oregon and one of the things you can do with this app is like draw features on it it allows you a user to kind of like specify areas they're interested in for example something like that and then you can go ahead and look at the time series for that particular polygon that i drew on and in this case you can see one of the land cover classes as you're going across here tree cover it dropped precipitously around 2002 that's when that uh occurred that fire occurred and then after that you have some responses of the other land cover types so this is live going to earth engine to generate all the data for this graph as you draw that polygon and say go get the end result so it's kind of a neat example of working with a lot of data and then also allowing the user to go through a user inter interface here draw a polygon and actually get something customized for an area that they're interested in it also allows you to go through and like generate reports which i'm going to let that report generate and in this case the report is a pdf file that it downloaded for me and it kind of just encapsulates that into a pdf so it's something that you can then send around if people are more interested in seeing a static representation of it excuse me though all right so let's go back into our slides here for a little bit that did not go into my slides again all right so that was the app now let's back out a little bit now that you've seen an example kind of an end result and go over again kind of what the main uh things that earth engine can do the earth engine back-end the uh what you can do through the api what sure is there also a library of so we're hoping that well not this app but if we back up to these um apps right here this was just launched last week so not yet we're hoping that actually occurs but this type of user interface app um is it's one that we hope to grow and we we have a catalog of those but uh it doesn't exist yet there's some example apps but that's as far as we got in terms of things like this that external groups have built on top of earth engine we tend to feature them a lot on our medium blog we'll blog about something that comes out but we can't keep up with all the people that are publishing papers on it so it's just kind of just a select sample of those at this point any other questions before i cruise ahead thanks for the interruption too i do like those um all right so what can earth engine do uh one of the basic uses people use it for is to just get one particular image because our interface for selecting in space and time can be more convenient than going and getting the original image from one of the data providers especially if you work with lots of images and you want to do this repeatedly so what you can do is say i want this collection and i want to select something in particular in space and time and just give me that one image and if you know the original id of an image like from landsat or sentinel you can specify that as well and so it will give you an image back it includes all of the original metadata so you have projection information for all of the different bands the bands are in their original projection and data type so there's uh there's not going to be much loss from the original file that you might have downloaded from the provider you're getting all of that metadata and you're getting all the the band information within there we then allow you to take an image like that and apply algorithms to that so you can chain chain a bunch of these algorithmic primitives to an image so you might want to do a band ratio if you're familiar with the remote sensing the the usually whenever you start a remote sense glass you learn about ndvi and how do you do a comparison of the near-infrared band to the red band and we're going to do that in our tutorial as well today but that's an example of an algorithm that can be applied to an image and they can be that's just the starting point they can be a lot more complex than that but we can basically take these descriptions of algorithms and apply them to images we can also start with a collection and then filter a collection down so when i mentioned before how to get an image you might start with the image collection of like all the landsat 8 data that has been collected by that platform and then filter it for your particular location and filter it in time and then filter it maybe by cloudiness meta which is a piece of metadata on the the image so you can do a lot of filtering there to just get a collection of images that you want to work with and then you can take an algorithm once again and not just apply it to a single image but you can map it efficiently over a large uh amount of of images and that's how we're going to go today applying these algorithms to like all of the images over the united states for a year or something like that we're going to do this type of mapping and algorithm over a collection in addition once you have a large collection of images or vectors or any other collection you have you might want to reduce it down in space or time so we're going to go through different ways to do some reductions and i'm going to point you to the docs and you'll realize how flexible i guess earth engine is because we're going to like pick just like one or two ways to reduce out of the you know maybe 20 to 30 different reducers that we have we're just going to do some of the more simple reducers in here but i believe there's a whole other class in the 102b that they're going into detail on like what all the reducers are but that's uh a very important part i think of earth engine it's basically trying to take this big data in some sense and reduce it down into something that you could download and fit on your own machine and then finally we'll do some examples of computing aggregate statistics so like outline an area and count area or count the amount of area that meets a particular criteria uh something like that so you can get it out of the spatial domain and get things more like tabular reports when you're doing these uh reductions in statistics any questions on those before i go forward yes sure um i'll try to do it just talking right now but then we're going to go and do it hands-on when we get to it the concept of an earth engine image is that it has one or more bands so we could have an image of elevation for the world that would be a single band image but then when you move into something like a satellite it's it's collecting different spectral bands so you might have red green blue near infrared etc we can package that into a single image that has multiple bands the bands don't have to have the same projection they don't have to share that same resolution etc so it's just a way to encapsulate a collection of related um i don't know if i'd call it channels or something like that into a single concept called an image does that make sense okay and we we will definitely be inspecting the bands of an image when we get to that hands-on part okay the other thing i wanted to point out in these slides is that we have two computation modes in earth engine and the one we're going to be dealing with almost exclusively is this on-demand computation that you say hey i want to get the result here for the map i'm looking at and it goes and tries to generate it right away for you and you might have to wait a few seconds or something to get it back but but it allows you to do this type of interactive computing where you like change an algorithm and you run it and you see the results almost instantaneously and on the other hand we also have this batch computation is like once you've perfected an algorithm and maybe run it on a little area how about apply it over um all of the data for africa at a certain resolution that's something you don't want to wait around for you kind of want to kick off a task and come back and check on it later because just producing the output files of something like that is going to take hours if not days depending on the area and the resolution that you're trying to do it so just saying that in earth engine you can use the same algorithm in both of these modes you usually develop them interactively but if you want to kick off a large job then you're going to do it in the batch process so if you do that on demand computation and let's say you don't start store the intermediate steps can you always kind of go back and figure out what happens as long as you have the script it's kind of your processing flow chart of how you got to the end result as long as you save that script you can rerun it again um that being said it's kind of interesting that there is not strict reproducibility in earth engine because the underlying data may be changing it's like we keep on adding new landsat scenes and sentinel data and sometimes it's the most recent and sometimes it might be from 10 years ago that they just pulled it off of disk so you may get a different result and that's that's actually a product of the system is because we're working with so much data we allow you to easily rerun processes but you might not get exactly the same result because things change and it's good to know that all right any other questions on this like batch versus on demand and we're gonna do a little bit of batch uh computation today as well um it's gonna be pretty limited but i just wanted you to know that you can do both for images and image collections and vectors and all of these okay all right so that is the kind of going through the overview um once again as we're going through the hands-on if there's something that you're struggling with from the overview section we can stop and talk about that as well now i want to go through the initial setup so everybody can get hands-on with earth engine so we have a couple of steps here first is you need a google account in order to access the service so hopefully if you made it here at this point along the way you've got a google account at someone uh the second step up there is that that account needs to be registered to access earth engine and we have a largely automated process there but if you haven't used earth engine before you need to go to that url signup and register the particular google account you want to have access to earth engine if you use multiple google accounts i would say for confusion or lack of confusion purposes don't do that for this workshop so basically close out of all of your google accounts and then open maybe even like an incognito window so you can control exactly the account that you're using because sometimes that leads to confusion if you have multiple google accounts that you have access to so who has not registered for earth engine all right so we're gonna spend about five minutes or so just making sure that we get everybody through the process if you are in that boat of trying to register right now please raise your hand up and we will come around and try to help you or if you have any especially if you need to get stuck at any point please raise your hand and we will do that and for those of you that do think that you're registered try to jump down to steps three and four and open up that link because that will show you whether it worked successfully and if you don't get all the way through number four seeing a code editor view that code editor interface uh then raise your hand as well no it's to avoid the the question was is the incognito window um used just to avoid uh the log in issues and yes if you have multiple google accounts it might get confusing it might be trying to use a different account so it's to no no no if you only have a single account or actually you can try it without an incognito account and if it works great but usually when i have like 50 or 60 people then it's safer to to use the incognito window so the end result should look something like this that you will have over in your scripts tab which is the upper left here a list of scripts where it has opened up a account here in this case i'm the writer because i'm i'm somebody that has right access to this it's probably under the reader tab in yours as well but it should say users tyler e that's me g4g 18 dash ee101 so it's a collection of scripts that we are going to use or i should say you don't have to use these these are just if you fall behind you're going to be able to click on this and catch up if you want to be typing everything in if you learn better that way then i'd encourage you just to type along as i'm i'm explaining things okay so i am going to proceed further because it looks like we have everybody that's uh able to get in the code editor but once again keep raising your hands if you get fall behind at all uh so as i said this list of scripts here we have 0 through 16 with 13 b in there so we have about 18 scripts not numbered as well as it could i guess over on the side but we're gonna largely go through these uh for the most part typing things in but the first one is just about javascript syntax and this was a little bit too much to type so i would invite you to click on that script that starts with the zero dash javascript over there on the side and i am going to try to make this a little bit larger give myself some more real estate here and so the first thing i want to do is just kind of go through a little of the peculiarities of javascript so that if you're not a javascript programmer i want to give you at least enough information to try to decipher what you're typing in there we're not using anything that advanced in javascript but you need to know some of the key syntax so just out of curiosity who actually does program in javascript or has in the past so we got i don't know 15 20 maybe all right um who does program in some language okay now we're getting over 50 percent and of that language what is it r okay our sash all right we don't have an r interface so we get asked for that quite often sorry similarities with sas okay i think as long as you have tried programming in some language this is going to uh be easy to learn uh i mean but we do have to um is there going to be a big benefit of using python versus javascript are they the the question is is there a big benefit of using uh python versus javascript is one uh if you use javascript you get to use this editor which is a big advantage if you use python it can be quite flexible but you are responsible for largely setting up your own environment in this case you don't have to do that uh and if you really are into python i'll be teaching a python course tomorrow on here but but it's not going to be an introduction to earth engine it's an introduction to the python interface because that takes a full 90 minutes to go through and we're we're going to get through a lot of the concepts here that we won't touch in the the python course all right so key things i want to point out here in javascript if you have two slashes at the beginning of line that means it's a comment if i get rid of those then it's no longer green it's trying to figure out that as code but if you do two slashes there it doesn't even have to be at the beginning of line anytime you start with two slashes the rest of the line is a comment the next one is if you have multi-line comments you can do this slash star end it with star slash it also turns it green the the editor here so you know that's being interpreted as a comment we're gonna be declaring a lot of javascript variables and those are declared with this uh keyword here var this is something that you don't see when you go to the python api because you don't need to do that in python but var just means we're declaring a javascript variable and then in this case the variable's name is the underscore answer and it equals 42. it might be a string might be something else you're putting something into that variable and then at the end of a statement we'll do a semicolon to just say this is the end of the statement if you don't do that it puts in a little i here as information saying you're missing a semicolon your code will still work but i always like to try to clean up all mine so i get rid of as many of the errors and information notices on the side in addition you can do strings they can start with a single quote end with a single quote or you can switch those and do double quotes at the start and the end and so if you're trying to have a string with a single quote you should use double quotes around the string and vice versa you can mix and match is what i'm saying but they have to the the start and the end have to match the the single quotes are double quotes but they're equivalent in javascript uh when we i already went through this one basically we want to end these with a semicolon parentheses are ways to pass parameters into functions whether it's a built-in javascript function or a function that you wrote and so in this case i am going to try printing something that said this string will print in the console tab in order to get this to execute you have to click on run and when i click on run it's not just the line that i've highlighted unlike some other editors it's the whole script so you can click run if you want and you'll start getting some output over on the side and the first line of output that says this string will print in the console tab is right here and in the output tab we have some different views i mean we try to render it as well as we can like in this case as a string but if you really want to know what it is you could click on the json tab to see we basically have objects that have more complex recommend or representations but in this case these are all pretty much simple strings that we're outputting to the side all right next uh is the concept of lists of items and those are designated with these square brackets so a starting square bracket ending square rocket so i have a list of three items and then i can reference an item in your in the list by once again using square brackets and saying i want the zero item because it starts at zero confusingly for for some people but it's very common in many languages uh i wanna look at my list item zero which is eggplant and that's why eggplant printed over on the side so that's how you construct your list and how you access something in a list in addition to lists there is the concept of having dictionaries which is key value pairs in a in this case there would be three keys and three values so for in my dictionary i have a key called food and that food is referring to bread i have a color that's red and a number that's 42 and in this case you still use square brackets but then the name of the key or basically the string for the key in order to reference that item of the dictionary so my dict brackets with the string color is going to print out red over here on the side as an example there's also an alternative notation in javascript that if you're trying to get something out of a dictionary you can just say dot color and it's a little bit faster sometimes to write it out that way and can be but it gets you the same result uh the information up here over here on the side if i go again it gives you some helpful information the editor saying hey this could be written in that notation so there's our editor is trying to help you out and most of the time it's helpful advice not always but but you can use that for hints over on the sides all right and then lastly we need to go over the concept of a function or how you write a function in javascript is we're going to declare once again a variable of a certain name but then this variable is going to be a function with some type of input in this case it's it's uh expecting something that's going to be called string and within the brackets here it whoops a little away from you right there within the brackets here it's some code that it's going to operate on it's going to use that string and then it's going to basically do some operations on that string that's being passed in and then return something to whatever called the function so in this case my hello function that's the name of the function is being passed in a string that is world and then it's going to return a string hello plus the string that was passed in plus an exclamation point so if you look at the output over here on the side it says hello world what is the result of that function when we get to functions in an hour or so we'll go through this again but that's the general concept of it is that you declaring something that accepts an input and then does something with the input and returns a result and we are going to be doing that a lot with accepting images and doing something with the image and returning a resulting image any questions on the javascript syntax yes yeah the question was is there a way to run one line of code at a time in general i say no but i will show you a nice shortcut that if i highlight a lot of this and say hey i want to comment it out everything except one line then i can do it so so not really i mean it's all or nothing basically is the way that it runs so it's different than other editors that you may have come across before oh actually i should uh highlight here under the help tab there's this useful shortcuts list and if you find yourself wondering how i'm doing something quickly and i didn't talk about it it's probably because it's in here and i shouldn't be doing that but what i just did is command uh right here command slash comments or uncommented section so there's i i would say at the beginning you don't really need to worry about these but as you use the editor more and more you want to probably learn some of these keystrokes for movie it just makes it faster when you're doing your coding and i use this one a lot the comment and uncommenting selections because of that very reason that you have to control exactly what code is being run any other questions there are different aspects of earth engine that are case sensitive yes there are different yeah it depends on the language that you're using to write it and the objects and methods of earth engine but in general yes it is case sensitive when you're running something that's earth engine uh in here it's all javascript has nothing to do with earth engine at this point but uh the way you can test that out too for javascript is like maybe i'll make the function string down here and it says string is not defined the scope it is case sensitive yep how to okay the question is uh how do you consult how to use these functions and i would say for the javascript ones no but when we get into the earth engine ones yes um but just since we haven't got to that point yet i'll point out there's a docs tab over here on the side this is documentation for earth engine objects and methods not generally for javascript so any of these that are prefixed with ee dot like algorithms arrays probably images are very good example these are all earth engine image object and methods so there's a constructor and then there's all kinds of things you can do with earth engine image so the docs are there there is also some shortcuts to get to that we'll we'll get to that uh as we go through the coding as well but a lot of the documentation is right there on the left hand side for individual objects and methods if you want documentation more on the let me go here user guide uh of the overall concepts that we'll be talking about in earth engine that's small all right make that bigger um there is a whole api developers documentation that's available so you can read about what is an image or a collection of image and it'll have more concepts rather than individual objects and methods but the way i got to that is under the help up here there is a user guide uh help forum is a kind of a free form google group where you can ask questions of anybody who is also subscribed to that group so it's a great way to just get discussion started under attention questions as well um yeah i won't go through the rest of those in there but there's a there's a bunch under help ways to gather more information all right we will move forward to the next one so at this point i would invite you to go under the reset tab up here and just say clear script so we're going to start with a blank slate and what i'm going to start doing is working my way through these scripts examples on the side but i'm going to largely be doing that just by typing in things so we're going to start off with calling a javascript function called print and we're going to say hello world get it to run our print command when we do this it's going to print to the console over on the side so that is our first code editor script that we wrote running if you get that to work not too exciting okay we have a question on it great um i was just wondering if there was a shortcut or where the shortcuts are okay help shortcuts control enter is run script sure all right the next one is we're going to go forward beyond the hello world so the next one we're going to use the search panel at the top to search for some data that we might want to display and we're going to start with a image asset that's pretty simple as a single band image apps asset and we're going to move to things that are more complex in the future so if we search for uh i'm going to tell you sort of how to get there quickly srtm and then if you really want to narrow it down 30 meters this is a global for the most part missing the poles but a digital elevation data set that has 30 meter spacing approximately uh called srtm 30. if i click on that i can search for it i can get a list of the things that might you know the top five but then i can also click on any of those entries to read a larger description of the data set and in this case it will give you a little bit of information most time we'll do a paragraph or two just describing the data set and then very key over on the side we will have links to the provider because they will have a lot of more details than we're going to encapsulate into this short description of the data set underneath our overview paragraphs we generally will have a table of the bands and in this case there's a single band in there his name is elevation it has units of meters and then there will be additional information at the bottom if the provider wanted certain terms of use for how the data set can be used we echo it there citations etc we're trying to give you pointers to go and find additional information on this data set we're trying to keep it uh pretty small as well if this looks like a good data set that you want to use you can click on import see a question here so the concept of an image in earth engine is that it's a regular gridded raster so it's a particular type of raster it doesn't have irregular grid so i guess sometimes i may use them interchangeably but that being said it's important to know that we do have a specific data type that fits into an image and not all rasters may fit in there yes yep images can be saved as geotiffs that's one of the export formats that we support all right so i'm going to click on import here actually before i do one of the other key points on this data description page is the id in this case it's an image id but you might have an image collection id and this is the unique identifier that you can use to reference this image or in the case of image collection a whole collection of images so version of the image or just that that version of the image oh if it gets updated uh you won't see it in here but there's a way to look at the version of the image as well which when you're starting talking about satellite images that are processed by a government entity yes there will be different versions of it sometimes we will make a whole new collection and put in the new versions uh other other times they we are just updating individual images it really depends on the data provider and how they make that those changes accessible but that is a really hard thing for us to get a handle on even within the earth engine is just the different ways that upstream providers make modifications and improvements and how do we convey that into our data catalog okay so at the end of all of this i hit import and i now have a new section at the top of my script that's called imports and it's a list of variables that i have imported in so you can rename them i'm going to take the default name of image and call it srtm and if you're if you want to go back and you know revisit what this one is later on there's a hyperlink that allows you to bring up that data description page if you want oops i'm zoomed up way too large to be able to close that okay but now i have a variable that my script can work with so one thing i can do is i can replace my string there with srtm that variable that refers to an image object and then run it again and now in this case what i get over in the console is a little bit more complex it's the start of a tree for this image object and as i expand that out i get some more attributes it's of type image it has a particular id it has a particular version this version which is really long refers to microseconds past the epoch we have some way to translate it into time within there but it basically it's referring to time in a really detailed way all right underneath bands uh you can see that there is a single band in here band zero it is elevation it has a particular projection 4326 it's uh this is there's a way to encapsulate you know what a coordinate reference system is and we recognize these european petroleum i always forget what the sg is but anyway there's a way to encapsulate what these projections are and we we're using 4326 which is just geographic data uh and then there's ways to transform those projections etc all of this is kept uh you know is stored for that particular band and as i said before an image may have bands that have different projections but i'll be encapsulated in there as well so that was under bands there is also a properties tab here where you will have one or more properties it looks like there's a lot of html sort of that's in there you have the provider url when you get into the remote sensing imagery from like landsat or sentinel you're probably gonna have like a hundred of these metadata values within there they're very detailed about what an image represents like when it was processed which processing software etc uh all of that is accessible by your scripts because it's stored with the the image object yes how is that set up where is the data oh date range in here so the date range here once again this is um it's a time conversion there there's a way that you have to take this number and convert it into a time and it's going to be a date range from the beginning to the end of probably when srtm flew if i remember correctly so it's going to be it sort of represents data about this time interval like when the srtm instrument was flying okay yes i or maybe one of a ta could find it in the docs i don't know where it is off the top of my head right now but yeah and in the the script that you want to do to convert it is different in javascript than it is in python just the way the the date objects date and time objects work differently in those different languages but one thing that's kind of important to to note is that especially when you're looking at the documentation here the ee dot and and when you're seeing time uh represented as these like microseconds it's because behind the scenes earth engine doesn't know anything about javascript and it doesn't know anything about python and in the future we might add another language like r which we're not working on right now um but it gives us the ability to basically um work with the very same objects and methods from a variety of language potentially and that's why a little bit sometimes there's a little bit of work of converting it into the the native form of the language like for these time and date objects okay so that is actually excuse me for one second and break out my cheat sheet because i changed some of the things i want to go through today all right um so there's uh oh actually the next thing we might want to do instead of just printing out an object okay we have a question object but i'm trying to print srtm but type it give me undefined view so dude is that what you're trying to do uh so this at this point uh i'm trying to figure out what exactly is that what you're doing i mean are you trying to use a javascript function called type or dot type okay all right so if you just did it like that it's going to say undefined because that is a property but if you want to make a method out of it you have to do parentheses on it so that wasn't the community either let me see what you're trying to do uh is it is type something that you found in here or was it oh i see got it got it yet yeah okay now i'm understanding here if if we printed it out and you're looking for the type there some of the things in there like id is not necessarily yeah so id might be the same within here i don't remember whether we hooked this up this is a property of the how do i say this this is a property of the object that we've exposed here or a method of the object in this case it's uh doesn't understand that method how to put it out there um i will have to get back to you if you do want to actually figure out the type of it i don't know off the top of the head the syntax that you would use for it right there with these objects doesn't have in the browser yeah because scrtm is an object it's not in the browser it's a browser yeah it's an object on the server that is correct yes okay uh i will point you to the how to understand that better but we're not going to go through it too much in detail so there is a section in our documentation called client versus server and the whole purpose of this is to go through that concept of like what happens on the client what happens on the server and if you understand this you can be a power user of earth engine um if not it trips you up and it will trip advanced users up as well but if you figure out how to leverage this you can do amazing things with earth engine getting both the the best of the back end and the best of the front end as well okay uh that little diversion will be back here all right so instead of printing what i was going to show you next is down here at the bottom of our list of things that you can do in with the documentation after we get through all the ones that are prefixed by ee dot there is a couple things that are particular to the code editor that we're using right here and one of them is map and there is map dot add layer so we can use one of the built-in objects and methods map dot layer add layer to add srtm layer to the map and we get this wonderful bland gray thing by default but we can produce global bland gray things if you zoom out a little bit and the reason it looks so slay is that it doesn't know how to map at this point the lower end of elevation and the upper end of elevation in a way that actually makes sense before looking at it so we're gonna have to provide a little bit more information to it and so what i'm going to do is i'm actually going to backtrack up a little bit and show off excuse me one of these shortcuts i did that a little bit too fast let me if i type out layer here or even if i back up a little bit and i just have and i do control space it's gonna try to autocomplete it so if i go back far enough and do control space it's going to give me a list of all the things i can do with a map object and in this case i want to use the second one there map add layer which i could you know start typing in and do control space eventually and it's going to give you all the options i have for that but i want to do layer and if i finish the name of the method like i did right up there and then hit control space again it's going to populate it with all of the different parameters that i can pass to layer and the first one of those is ee object which is short for an earth engine object so any objects that we've created before like this image object srtm we could put into the uh first parameter so i can replace that with the srtm and then i'm going to get rid of all the rest of the parameters because we're just going to use the defaults and then hit run there so that's what we did before and if we want to the second parameter is vis-params visualization parameters and so this is the way that we're gonna control how it looks um so let me do a little bit of things here i'm gonna put these on different lines for a second here in javascript it will just interpret it all until it thinks it's come up with a full statement so i can separate these on different lines and then i'm going to comment out some of these lines so once again my command slash is a way that i can comment things out quickly and now i have an earth engine object and vis params so i could do srtm for my earth engine object and then under visprams we're going to pass in a dictionary a javascript dictionary that describes some of the parameters that we want to use for the visualization so in this case i could start my dictionary with the curly bracket start and stop and then we can say for a minimum value and you can you have a little bit of flexibility in javascript of like you can quote the keyword or not so i'm gonna i guess not we'll do a minimum colon and then we want to put our value for the lower end of elevation which i'm going to put zero there might be some below zero values i guess for certain parts of the world but zero's kind of a good starting point for elevation and then we're also going to put an upper end remember that this data is in meters so we can do a thousand meters or three thousand meters or if we're going to himalaya we're gonna go up to eight thousand meters uh whoops and then i get my error here the reason i believe it did that is i had an extra comma all right so so far i've just plugged in two of the parameters to add layer srtm and then visualization parameters i can go a little bit further and specify like a name if i want because by default if i go on my map and look under the layers list it just says layer one which is okay if you have a single layer but when you get a lot of them that can start to be confusing so for my name down here i'm going to say srtm and then i have to go back in that preceding line make a comma so it knows it's a list of these parameters or it's a third parameter i can run it again and underneath layers it's now entitled srtm so now you know if you want to manipulate that layer like change the opacity or something turn it on and off you know which layer that you're operating on and then there's a couple of other parameters that i'm not going to get into right now is shown is by default is it turned on or off by default it is shown but you can make that false and have it start off uh invisible and then opacity is if you want to control the initial opacity or the uh of the image that you're overlaying you might set that and that's that tends to be more of a special case most of the time you want it to be full opacity with there so i'm going to clean up a little bit now that we've added our three parameters to bring that all back to one line here at the top and then run it again make sure it works you'll notice this pattern uh that i use a lot is like make a few changes and then hit run right away because then you know if you've broken something along the way and because it's so inexpensive to keep running these operations just keep hitting run all the time to make sure that it's still working which one you want yes the question is uh well it was a good comment basically yes the reason that i didn't have to tell which bands to map is that there's only one band so it will either map the first band or if there's three or more bands it will map the first three bands as red green and blue channels in this case there's a single band so it it defaults to using that band and does it basically a grayscale mapping i just at this point modified the upper and lower bounds of that mapping if we wanted to do something that was more colorful we could say palette and then maybe we go from yellow it's going to be terrible purple and then that's our map of the world uh you can do things that are a lot more complex than that uh as well um and there's all kinds of different sort of like stretches gamma stretches that you can do as well setting different parameters in there gain and bias uh i would if you're curious about that just look under visualization parameters in our documentation all right i'm going to get rid of the yellow and purple yes so can we just say range so the way that the default works for the palette or the way the palette works is that it it assigns the first to the lowest the last to the upper and then it interpolates in between so i could have put additional ones in here uh blue gray actually i'm not sure if i spelled gray right according to this but there we go and it will it will basically do interpolation from the min to the max oh um so i'm not sure if this is what you're asking but there's there is a language called uh style layer descriptors and i'm going to look in our documentation right now for image visualization and there's a whole section in there that allows you to make these intervals and ranges it's a whole language for styling that type of um color maps i guess for a lack of a another word here so you can do a lot more complex things with mapping values to colors in multiple bands uh that's where i would direct you to but i i get the sense i'm not actually answering your question so i'm not understanding the full question okay all right we'll discuss it later uh but yeah if you're curious about advanced styling there's a whole image visualization section in our documentation that will walk you through that okay so let's get rid of my psychedelic palette we'll run that again and now let's add another layer to this so i'm going to have you search again up at the top for a particular image and this one is called global surface water it'll take a little while for it to like search through the catalog if it takes too long then i'll search for something else jrc all right so there is a raster here called grc global surface water mapping layers version 1.0 and that's the one that i want you to you can look at and see like the definition of it is the european commission and joint research center is the one that generated this data set it has more than one band although we're just going to be selecting out a particular one which is the percent occurrence of water is the one that we're going to use but there's you know a lot more uh information within this data set than there was with for the simple elevation but just the same as before we can import this in and then i'm going to rename the object water and in order to get that to display we're going to add another map.addlayer command and then we can put in there water this time we are going to have to specify the bands because there's more than one of them that's in there so i'm going to say in my visualization parameters bands colon and then i'm only going to specify a single one of them for this but currents and this is expressed as uh values between zero and a hundred percent so we'll do a min start off of zero max of a hundred and then let's see what else do we want to add on there i guess we'll just add a name at the end water and then i'm going to just run to see if it produces something other than an air okay so it didn't come back with an error um but right now it's it's it's not very water colored uh so let me try to add a pallet as well to here and actually to make this easier to see i'm gonna use some extra lines in here we will go from light blue to blue for our palette and then i'm going to zoom in to something that is not global one of my favorite places to go for testing a lot of these things is the grand canyon because it has some really nice relief there's a little bit of water there as well so by going there i can see that my visualization parameters for elevation aren't the best because a lot of that's over a thousand meters so let me up that to 3000 all right that's looking a little bit more what i'd expect all right so at this point we have two layers if i uh put my cursor over the layers list on the map we have water and srtm and the water one is kind of interesting if i scroll around here until we get to like one of the reservoirs a little reservoir oh there we go um once i get to down to the reservoir at the lower end of the grand canyon you'll see this coloring that it's not all dark blue and that's because this is sort of like an area what sometimes during a flood there'll be water and depends on the reservoir level it's there's fluctuations so it's not water there all the time and if we want to kind of compare that to the underlying satellite imagery we can so i'm going to turn off both of my earth engine layers and then for the base map we can click on satellite and then i'm going to zoom in a little bit and see what it looks like down there so we can see because vegetation on the side if i turn on water once again okay sometimes it's saying that that vegetation on the side is flooded so probably from a fluctuating water level but it's often uh very useful to go to the underlying uh satellite imagery just to get a reference of like what you're looking at and see if you can understand why it's behaving a certain way yeah sorry sorry for covering that one up okay we are almost into 90 minutes so we're gonna finish up this section and then we're going to come back for the second 90 minutes is that right way through all right maybe we'll push on through the next little section maybe before we do the break all right any question oh i got a question on that um yeah so i'm going to go over here on the side to our docs tab and then the one that we're running right now is map add layer sorry that went off the screen i realized try that again there we go all right so the first parameter is ee object that's some type of object we're going to display on the map the second one is vis parameters and it says for images and image collections c ee data gitmap id for valid parameters so there is a whole language there that is trying to talk uh tell you to go look uh in this case it's referring yet to another command ee data git map data so let's go look at that um where's my ee data there it is ee data it's a little bit confusing because this is a lower case so it occurred after in the list and git map id here now it starts talking about all the parameters that you can pass in here so it has min max there's a gain bias you can apply it to one band or multiple bands opacity format so there's a bunch of things that can be in there and then if we go all the way into the help documentation there's going to be some concrete examples of using different ones but in general the ones that you want to be using are bands min and max those are the basic ones um and that's what i'm using over here right now bands min max actually i guess palette as well that one in there yeah palette down there oh okay all right i understand more now the question is like what are the men in the map max referencing in here and we are basically trying to establish a way that the data that we're displaying is mapped into certain colors and in the case of srtm we are saying for the minimum value we're considering or the minimum color will be associated with zero elevation the maximum color will be associated with 3 000 so you're gonna see a gradation of color anywhere between zero and three thousand meters once you get above three thousand meters it's going to be totally saturated i mean it's not going to change anymore um which is what i was seeing when i did 1000 meters of elevation here and ran it uh everything was white because it's above a thousand meters there's some other tools that you can use for inspecting values it's called the inspector in the upper right so if you go on the inspector tab there and then click on the map it's going to start giving you information about where you clicked and in this case i clicked on an area where the elevation was 1349 so it is above that a thousand meters um and then it's going to give you in the case of water a bunch of information however in this case it's all masked out because this image we're masking all areas out where it's never water but if i clicked for example down in where you got some blue information there then you're gonna see some actual values for water so that's that's the inspector that's that part is called the pixel inspector there's also a whole other section down here called objects and this is going to give you uh once again the the band information for whatever objects you clicked on but cool pixel inspector is very useful yes so when you click on it um whatever is in has been added as a layer to the map is what is going to occur there yep oh i i i'm not a user of our studio so i don't know um but but one thing that's actually useful quite often is that i will add layers uh up here and then i will say false for the visibility because i don't want to see them but i still want to be able to inspect their values and they still appear on the inspector list even though they're not displayed by default on the map yeah you can have it yeah in there without showing up on your map in this case um i should point out too is like all this information you get out of the inspector you could do with code too it's just it's nice to have a gui tool to do the same thing okay so that was my fault there uh scroll on the center console scroll to the to the right i'm seeing the little the little eye icon yeah those people i i found the code there each line if you click on that where the oh this eye yeah yeah okay the other one it turns on like all seven bands on the image interesting i don't use that very often within there yeah yeah okay okay so we are going to um so congratulations we made it to step two out of 16. but it actually has been a lot of good discussion about this so yeah but but i'm being a tax taskmaster when i go through it in about 90 minutes okay so we're going to do a coffee break and we're going to come back here in 25 minutes and restart and yeah we'll move a little faster after this but uh also be aware that all of the scripts are in there if you didn't cool youWatch at: 00:20 / 00:40Watch at: 00:40 / 01:00Watch at: 01:00 / 01:20Watch at: 01:20 / 01:40Watch at: 01:40 / 02:00Watch at: 02:00 / 02:20Watch at: 02:20 / 02:40Watch at: 02:40 / 03:00Watch at: 03:00 / 03:20Watch at: 03:20 / 03:40Watch at: 03:40 / 04:00Watch at: 04:00 / 04:20Watch at: 04:20 / 04:40Watch at: 04:40 / 05:00Watch at: 05:00 / 05:20Watch at: 05:20 / 05:40Watch at: 05:40 / 06:00Watch at: 06:00 / 06:20Watch at: 06:20 / 06:40Watch at: 06:40 / 07:00Watch at: 07:00 / 07:20Watch at: 07:20 / 07:40Watch at: 07:40 / 08:00Watch at: 08:00 / 08:20Watch at: 08:20 / 08:40Watch at: 08:40 / 09:00Watch at: 09:00 / 09:20Watch at: 09:20 / 09:40Watch at: 09:40 / 10:00Watch at: 10:00 / 10:20Watch at: 10:20 / 10:40Watch at: 10:40 / 11:00Watch at: 11:00 / 11:20Watch at: 11:20 / 11:40Watch at: 11:40 / 12:00Watch at: 12:00 / 12:20Watch at: 12:20 / 12:40Watch at: 12:40 / 13:00Watch at: 13:00 / 13:20Watch at: 13:20 / 13:40Watch at: 13:40 / 14:00Watch at: 14:00 / 14:20Watch at: 14:20 / 14:40Watch at: 14:40 / 15:00Watch at: 15:00 / 15:20Watch at: 15:20 / 15:40Watch at: 15:40 / 16:00Watch at: 16:00 / 16:19Watch at: 16:19 / 16:40Watch at: 16:40 / 17:00Watch at: 17:00 / 17:20Watch at: 17:20 / 17:40Watch at: 17:40 / 18:00Watch at: 18:00 / 18:20Watch at: 18:20 / 18:40Watch at: 18:40 / 19:00Watch at: 19:00 / 19:20Watch at: 19:20 / 19:40Watch at: 19:40 / 20:00Watch at: 20:00 / 20:20Watch at: 20:20 / 20:40Watch at: 20:40 / 21:00Watch at: 21:00 / 21:20Watch at: 21:20 / 21:40Watch at: 21:40 / 22:00Watch at: 22:00 / 22:20Watch at: 22:20 / 22:40Watch at: 22:40 / 23:00Watch at: 23:00 / 23:20Watch at: 23:20 / 23:40Watch at: 23:40 / 24:00Watch at: 24:00 / 24:20Watch at: 24:20 / 24:40Watch at: 24:40 / 25:00Watch at: 25:00 / 25:20Watch at: 25:20 / 25:40Watch at: 25:40 / 26:00Watch at: 26:00 / 26:20Watch at: 26:20 / 26:40Watch at: 26:40 / 27:00Watch at: 27:00 / 27:20Watch at: 27:20 / 27:40Watch at: 27:40 / 28:00Watch at: 28:00 / 28:20Watch at: 28:20 / 28:40Watch at: 28:40 / 29:00Watch at: 29:00 / 29:20Watch at: 29:20 / 29:40Watch at: 29:40 / 30:00Watch at: 30:00 / 30:20Watch at: 30:20 / 30:40Watch at: 30:40 / 31:00Watch at: 31:00 / 31:20Watch at: 31:20 / 31:40Watch at: 31:40 / 32:00Watch at: 32:00 / 32:20Watch at: 32:20 / 32:39Watch at: 32:39 / 33:00Watch at: 33:00 / 33:20Watch at: 33:20 / 33:39Watch at: 33:39 / 34:00Watch at: 34:00 / 34:20Watch at: 34:20 / 34:40Watch at: 34:40 / 35:00Watch at: 35:00 / 35:20Watch at: 35:20 / 35:40Watch at: 35:40 / 36:00Watch at: 36:00 / 36:20Watch at: 36:20 / 36:40Watch at: 36:40 / 37:00Watch at: 37:00 / 37:20Watch at: 37:20 / 37:40Watch at: 37:40 / 38:00Watch at: 38:00 / 38:20Watch at: 38:20 / 38:40Watch at: 38:40 / 39:00Watch at: 39:00 / 39:20Watch at: 39:20 / 39:40Watch at: 39:40 / 40:00Watch at: 40:00 / 40:20Watch at: 40:20 / 40:40Watch at: 40:40 / 41:00Watch at: 41:00 / 41:20Watch at: 41:20 / 41:40Watch at: 41:40 / 42:00Watch at: 42:00 / 42:20Watch at: 42:20 / 42:40Watch at: 42:40 / 43:00Watch at: 43:00 / 43:20Watch at: 43:20 / 43:40Watch at: 43:40 / 44:00Watch at: 44:00 / 44:20Watch at: 44:20 / 44:40Watch at: 44:40 / 45:00Watch at: 45:00 / 45:20Watch at: 45:20 / 45:40Watch at: 45:40 / 46:00Watch at: 46:00 / 46:20Watch at: 46:20 / 46:40Watch at: 46:40 / 47:00Watch at: 47:00 / 47:20Watch at: 47:20 / 47:40Watch at: 47:40 / 48:00Watch at: 48:00 / 48:20Watch at: 48:20 / 48:40Watch at: 48:40 / 49:00Watch at: 49:00 / 49:20Watch at: 49:20 / 49:40Watch at: 49:40 / 50:00Watch at: 50:00 / 50:20Watch at: 50:20 / 50:40Watch at: 50:40 / 51:00Watch at: 51:00 / 51:20Watch at: 51:20 / 51:40Watch at: 51:40 / 52:00Watch at: 52:00 / 52:20Watch at: 52:20 / 52:40Watch at: 52:40 / 53:00Watch at: 53:00 / 53:20Watch at: 53:20 / 53:40Watch at: 53:40 / 54:00Watch at: 54:00 / 54:20Watch at: 54:20 / 54:40Watch at: 54:40 / 55:00Watch at: 55:00 / 55:20Watch at: 55:20 / 55:40Watch at: 55:40 / 56:00Watch at: 56:00 / 56:20Watch at: 56:20 / 56:40Watch at: 56:40 / 57:00Watch at: 57:00 / 57:20Watch at: 57:20 / 57:40Watch at: 57:40 / 58:00Watch at: 58:00 / 58:20Watch at: 58:20 / 58:40Watch at: 58:40 / 59:00Watch at: 59:00 / 59:20Watch at: 59:20 / 59:40Watch at: 59:40 / 01:00:00Watch at: 01:00:00 / 01:00:20Watch at: 01:00:20 / 01:00:40Watch at: 01:00:40 / 01:01:00Watch at: 01:01:00 / 01:01:20Watch at: 01:01:20 / 01:01:40Watch at: 01:01:40 / 01:02:00Watch at: 01:02:00 / 01:02:20Watch at: 01:02:20 / 01:02:40Watch at: 01:02:40 / 01:03:00Watch at: 01:03:00 / 01:03:20Watch at: 01:03:20 / 01:03:40Watch at: 01:03:40 / 01:04:00Watch at: 01:04:00 / 01:04:19Watch at: 01:04:19 / 01:04:40Watch at: 01:04:40 / 01:05:00Watch at: 01:05:00 / 01:05:19Watch at: 01:05:19 / 01:05:40Watch at: 01:05:40 / 01:06:00Watch at: 01:06:00 / 01:06:19Watch at: 01:06:19 / 01:06:40Watch at: 01:06:40 / 01:07:00Watch at: 01:07:00 / 01:07:19Watch at: 01:07:19 / 01:07:40Watch at: 01:07:40 / 01:08:00Watch at: 01:08:00 / 01:08:20Watch at: 01:08:20 / 01:08:40Watch at: 01:08:40 / 01:09:00Watch at: 01:09:00 / 01:09:20Watch at: 01:09:20 / 01:09:40Watch at: 01:09:40 / 01:10:00Watch at: 01:10:00 / 01:10:20Watch at: 01:10:20 / 01:10:40Watch at: 01:10:40 / 01:11:00Watch at: 01:11:00 / 01:11:20Watch at: 01:11:20 / 01:11:40Watch at: 01:11:40 / 01:12:00Watch at: 01:12:00 / 01:12:20Watch at: 01:12:20 / 01:12:40Watch at: 01:12:40 / 01:13:00Watch at: 01:13:00 / 01:13:20Watch at: 01:13:20 / 01:13:40Watch at: 01:13:40 / 01:14:00Watch at: 01:14:00 / 01:14:20Watch at: 01:14:20 / 01:14:40Watch at: 01:14:40 / 01:15:00Watch at: 01:15:00 / 01:15:20Watch at: 01:15:20 / 01:15:40Watch at: 01:15:40 / 01:16:00Watch at: 01:16:00 / 01:16:20Watch at: 01:16:20 / 01:16:40Watch at: 01:16:40 / 01:17:00Watch at: 01:17:00 / 01:17:20

About The Author

You Might Be Interested In

Comment (0)

  1. Hi, Google Earth Engine what the coordinate of the image shown at 2:483:41in this clip? Look like really nice sandy beach. How to
    search geographical features from an image on google earth engine?


Your email address will not be published. Required fields are marked *