We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

OnEarth: NASA's Boundless Solution to Rapidly Serving Geographic Imagery

00:00

Formale Metadaten

Titel
OnEarth: NASA's Boundless Solution to Rapidly Serving Geographic Imagery
Serientitel
Anzahl der Teile
188
Autor
Lizenz
CC-Namensnennung 3.0 Deutschland:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen.
Identifikatoren
Herausgeber
Erscheinungsjahr
Sprache
Produzent
Produktionsjahr2014
ProduktionsortPortland, Oregon, United States of America

Inhaltliche Metadaten

Fachgebiet
Genre
Abstract
OnEarth is an open source software package that efficiently serves georeferenced raster imagery with virtually zero latency, independent of image size or spatial resolution. The key to OnEarth's speed lies in the use of a unique, multi-resolution file format (Meta Raster Format, or MRF) combined with supporting open source software packages such as the Geospatial Data Abstraction Library (GDAL) and Apache to serve out images via web service protocols such as Web Map Tile Service (WMTS) and Tiled Web Map Service (TWMS), or visualization formats such as Keyhole Markup Language (KML). The emphasis on performance and scalability were strong drivers for developing this specialized package versus using existing software.While OnEarth is currently deployed operationally at several institutions, powering applications across the Earth Science and planetary spectrum, its active development is managed by NASA's Global Imagery Browse Services (GIBS) project. The purpose of GIBS is to provide a complementary historical and near real time (NRT) image archive to NASA's Earth Science data products for a multitude of uses: GIS ingestion, first responder and NRT applications, data search and discovery, decision support, education and outreach.Released as open source to GitHub in October 2013, NASA is encouraging members of the open source community to participate in the evolution of OnEarth—in the roles of developers, evaluators, and users—as a means to vet and enhance its capabilities. This leveraging of efforts not only benefits those who intend to use the software for their own endeavors, it effectively contributes back to NASA by strengthening GIBS and promoting the use and understanding of NASA's vast archive of science imagery and data. Several tools, including the GIBS reference client, Worldview, will be demonstrated as part of this presentation to illustrate the breadth of application and consistent image access speed across installations.https://github.com/nasa-gibs/onearth
Schlagwörter
HilfesystemOpen SourceSchlüsselverwaltungInformationssystemKonfigurationsraumEinflussgrößeAuflösungsvermögenWeb ServicesDifferenteDateiverwaltungDateiformatTesselationTranslation <Mathematik>PhysikalismusProdukt <Mathematik>PackprogrammAggregatzustandBitGrenzschichtablösungServerMereologieModulare ProgrammierungKontextbezogenes SystemCoxeter-GruppeObjektorientierte ProgrammiersprachePunktInformationsspeicherungKollaboration <Informatik>BenutzerbeteiligungBildauflösungLuenberger-BeobachterSatellitensystemPhysikalisches SystemVerschlingungElektronische PublikationStandardabweichungMaßerweiterungProjektive EbeneCachingSchnittmengeSoftwareentwicklerDatenkompressionGoogolGebäude <Mathematik>Overhead <Kommunikationstechnik>Komponente <Software>Mosaicing <Bildverarbeitung>Virtuelle MaschineClientBildverarbeitungMAPKommunikationsprotokollOrdnung <Mathematik>ZoomSoftwareMeterTreiber <Programm>TypentheorieParkettierungWeb-DesignerMultiplikationsoperatorRuhmasseErhaltungssatzExogene VariableGüte der AnpassungInformationSkalarproduktraumOntologie <Wissensverarbeitung>AbfrageUmwandlungsenthalpieCASE <Informatik>DatenfeldMetrisches SystemFontWort <Informatik>BenutzerschnittstellenverwaltungssystemElektronischer ProgrammführerQuantisierung <Physik>Figurierte ZahlInformation RetrievalAnalogieschlussUnrundheitResiduumKartesische KoordinatenMagnetbandlaufwerkARM <Computerarchitektur>Gruppe <Mathematik>MultiplikationKlasse <Mathematik>BinärcodeGesetz <Physik>Nichtlinearer OperatorInformationsüberlastungTurm <Mathematik>QuaderMusterspracheVakuumpolarisationKette <Mathematik>Sichtenkonzept
BestimmtheitsmaßClientMAPProdukt <Mathematik>Prozess <Informatik>BitInformationLeistungsbewertungProjektive EbeneServerElektronische PublikationKonfigurationsraumElement <Gruppentheorie>MeterOpen SourceComputerspielPhysikalisches SystemGraphfärbungZahlenbereichRechter WinkelGenerator <Informatik>BinärdatenLesen <Datenverarbeitung>Gewicht <Ausgleichsrechnung>KommunikationsprotokollGrenzschichtablösungMereologieDateiformatTesselationRandverteilungCASE <Informatik>IntegralSchar <Mathematik>Automatische IndexierungVorzeichen <Mathematik>PaarvergleichAuflösungsvermögent-TestMinimumRechenwerkp-BlockEinflussgrößeStichprobenumfangDimensionsanalyseUmwandlungsenthalpieÖkonometrieMultiplikationsoperatorMaßerweiterungFigurierte ZahlBilddatenbankKartesische KoordinatenSpezialrechnerSkriptspracheMetadatenDatenkompressionEnergiedichteSoftwareSoftwareentwicklerTurm <Mathematik>Translation <Mathematik>Wort <Informatik>E-MailBinärcodeSingularität <Mathematik>Zeiger <Informatik>Stabilitätstheorie <Logik>PunktCachingAbstraktionsebenePlug inModulare ProgrammierungComputergraphikMetrisches SystemStrömungsrichtungZweiLoginAdditionWeg <Topologie>Computeranimation
SichtenkonzeptClientTesselationSoftwareSharewareComputeranimation
SichtenkonzeptVarietät <Mathematik>DatenkompressionSoftwareClientWeb ServicesFrequenzVorzeichen <Mathematik>SystemaufrufMobiles InternetLineare AbbildungPartikelsystemTouchscreenMinkowski-MetrikStichprobenumfangRückkopplungProjektive EbeneVektorraumUmwandlungsenthalpieMailing-ListeLuenberger-BeobachterZahlenbereichMAPInformationOpen SourceCoxeter-GruppeMomentenproblemKartesische KoordinatenTypentheoriePunktSondierungWeb SiteGrenzschichtablösungGruppe <Mathematik>Offene MengeStandardabweichungAuflösungsvermögenTesselationSoftwareentwicklerZeitreihenanalyseVersionsverwaltungServerVerschlingungFreewareKrümmungsmaßPackprogrammProdukt <Mathematik>OrtsoperatorSkriptspracheSatellitensystemBitmap-GraphikHilfesystemBitQuelle <Physik>Multiplikationsoperator
VerschlingungWeb-SeitePhysikalisches SystemAdressraumPunktInhalt <Mathematik>E-MailVorlesung/Konferenz
ViewerWort <Informatik>MultiplikationsoperatorPunktAttributierte GrammatikDifferenteAggregatzustandElektronische PublikationQuick-SortGewicht <Ausgleichsrechnung>StandardabweichungGenerator <Informatik>Prozess <Informatik>TesselationMailing-ListeServerClientMaßerweiterungGraphfärbungRechter WinkelComputerspielPhysikalische TheorieSichtenkonzeptKommunikationsprotokollGrenzschichtablösungMooresches GesetzBildauflösungGruppe <Mathematik>ParametersystemProdukt <Mathematik>MAPInverser LimesExpertensystemAnalysisKonzentrizitätZeitstempelDateiformatKoordinatenGanze FunktionVorlesung/Konferenz
Transkript: Englisch(automatisch erzeugt)
Good afternoon. Thanks for coming. My name's Joe Roberts. I'm from the NASA Jet Propulsion Laboratory, just like the presenters before me, or JPL. It's managed by the California Institute of Technology. I work on a team called the Global Imagery Browse Services, or GIBS. It's a collaboration between JPL and also the NASA Goddard Flight Center.
Today I'm going to talk about On Earth. Just a brief outline, I'm going to explain what On Earth actually is, a little more details about GIBS, get into some more of the technical stuff about On Earth, a little look at performance and metrics, and if there's time, maybe
do a little preview of some of the client applications that you could build using the On Earth server. At the end, I'm going to just briefly go over our open source project. So what is On Earth? It's basically
an open source image processing and server software package. In other words, it's a tile server. It's intended to provide an out-of-the-box solution for generating geographic imagery. It's a little bit more than just a tile server. We also include components to
build tile pyramids from a global mosaic and then store those pyramids in this image archive. So the intent of the archive is to be able to serve tiles to some client application using standard web protocols. For our case, we use WMTS, Tile WMS, or KML. Tile WMS is actually
an extension of WMS. It was developed at JPL a while back, a long time ago. It's just a way of creating a predefined set of cache tiles. So when you do a WMS request, you already
retrieve a set of cache tiles. And I guess the key selling point of On Earth is that it's designed to be lightweight and very performance driven. We use this special file format called the Metal Raster Format, or MRF. It's essentially not an image format per se. It's an image
container format. And we use this because it has very fast access and we're not limited by image size or resolution. We use a lot of GDAL to generate the MRF. We have this MRF
custom built driver that we use to run GDAL translate from one image format, JPEG or PNG or whatever, and be able to generate these tile pyramids into the MRF format. For the actual image server, it's essentially just an Apache module. We call it Mod On Earth.
And on top of that, we have some configuration tools to just kind of help set up the server. Just a little bit of background about On Earth. It's been around for a while. Its development began originally at JPL in the early 2000s. The lead developer at that time, Luchen,
he's now over at Esri. But luckily being an open source project, we still get some pretty good contributions from all around. It was formerly known as a Tiled WMS Server. This is back at the time we were just using Tiled WMS, but now we've expanded to
more commonly used WMTS specification. Some of the other things On Earth has been used for includes planetarium shows at public museums. It was the first image server to serve out 15 meter global Landsat data or imagery. And for those of you who remember NASA whirlwind,
it was kind of a predecessor to Google Earth. On Earth was used as the actual image server for that application as well. Outside of planet Earth, I guess, we have an image server for Mars and the moon. And respectively, we call that On Mars and On Moon.
PODAC, which is the Physical Oceanography Distributed Active Archive Center. It's based at JPL. They have this state of the oceans tool to present imagery of all the world's oceans. That's also built on this On Earth server. Just a couple years ago, we started this project
Gibbs back in 2011. And On Earth was selected as the primary image server for that project as well. And on top of Gibbs, the client application most commonly used is NASA Worldview. And finally, just last year, we released the software
in open source on GitHub. So it's really available. Anyone could go up and access and download the software. Okay. So a little bit more about Gibbs. So NASA, as you all know, has several Earth observation satellites constantly taking measurements of the Earth.
And we have this really rich and vast image archive. So it's not really useful unless it's available to general public scientists and so forth. So the purpose of Gibbs is to provide the full resolution image archive and access services to get to all these different data products. Currently, there's about over 75 global satellite products. Most of them are available
within four hours. It's part of this Earth observation system data and information system ESDIS. And because it's available to the public, we need something that's really scalable,
fast, responsive, and so forth. So for more information, there's a link down there. We also have another presentation, Gibbs-related, at 4 p.m. that's going to provide some more of the context and historical background of Gibbs. Oops. So I guess one of the key selling points
of on Earth is speed. So the key to the speed and storage is this metaraster format that I mentioned earlier. So most of the overhead in actually getting to the imagery,
or not most, but much of the overhead is having to do with the file system. If you have images sitting on a machine somewhere, just a bunch of PNGs or millions of tiles just sitting on file folders, that introduces some file system latency. So to reduce that, we put everything
into one big data file. So when you're accessing the data, you just have to go to one point without any heavy file system operations. This has been around before. I mean, nowadays there's different image file formats or container formats for tile pyramids such as MBTiles and Geopackage.
So it's been around before that. We didn't really consider anything else during that time. Let's see what else. So with MRF, we can support, oops, sorry about that. With MRF, we can support
multiple projections. For Gibbs, we use geographic lat-long, arctic and antarctic polar stereographic, and also Webmercator for Google Maps, Bing Maps, and so forth. Some of the compression types used, this is for when you pull out the imagery, you could
pull out either JPEG, PNGs, or even just binary data. I don't know of any web clients that actually use TIFF, but primarily it's going to be JPEG or PNG. I mentioned earlier there's a driver for GDAL that we use to generate the MRFs. And to do that, we basically just run GDAL
Translate. We take an image composite and just convert that to an MRF. And on top of that, we run some GDAL commands to build up the different zoom levels of that pyramid in order to get the final product. MRF is not itself by itself a single file. It's actually
composed of three different files. The first being the MRF header is just an XML based file containing the metadata for the MRF itself. There's also this index file, which is basically just a lookup to somewhere in the binary data file, which contains all the images.
So in the metadata file, it's pretty basic actually. It contains just the full base
resolution, some of the compression information, the size of the tiles. We normally use 512 by 512. There's also additional elements besides this. You can have information about the color maps and other projection information as well.
So the data file is pretty simple actually. It's just a bunch of JPEG images or PNGs stitched together side to side, starting from the full base resolution at the bottom of the pyramid and moving upward. Each block itself is the actual JPEG image. So once you pull
the data out, you actually get back that JPEG or PNG. There are some drawbacks to this. Updates are only through appends. So there are ways to go back and update some of the data, but it's a little more complicated to do that. So the index file is just a binary file
containing offset and size. So when you do a lookup for a tile, it works really fast. You just look for the role. So at the top pyramid, you have 00, then 01, 02, and so forth. You scroll down the road, look for the offset, and then read for that particular size of the tile,
and you get back that imagery really, really fast. So moving on to the actual, what I call the on-air server, it's just an Apache module. So basically, you can run this software with
any Apache server. It's just a plugin that you can configure. It contains the cache metadata. It's basically the information we saw in that MRF header that's stored on the server, and we were able to read information about that layer really quick. For cases where there's
no data, so much the Earth, if you only have a layer that's just the oceans or just the land, you might have some empty data. So we have the special index 00 that just returns a blank empty tile. I mentioned earlier about the common protocols. We have the OGC-WMTS,
Tylenum SNKML. If you're familiar with any of those, there's Git capabilities that a client application can read and figure out what layers are available and so forth. This isn't actually done through the Apache module. We have a separate CGI script that will return you the Git capabilities information.
We don't exactly follow the specification for WNTS. We have this added time extension. Much of our data has historical imagery, so we have to go back in time. So we had this little time snippet, if you will, to be able to create back for days in the past.
With KML, just a little pointer, you always get back a global imagery. So when you pull a KML file, it's just for the entire Earth. Whereas with WMTS or Tylenum SNKML, you can get the individual
tiles. The whole purpose of the module is really just to translate HTTP requests and be able to read MRS and return that to your client application. So a little bit of information about
performance. This is sampled from MODIS data. I guess the key thing to get here is it's possible to get speeds of over a thousand tiles per second. This is without network latency. So these numbers are a little bit dated. These are from 2011, back when we were doing
an evaluation for Gibbs. I'm not sure how this compares with other tile servers nowadays. It'll be nice if someone could maybe check it out, give an evaluation, and there's better technology out there. I'd love to know about it as well. So yeah, I encourage just some comparison,
see what you guys think. And just to see how on Earth is working out in the wild, these are some sample metrics from Gibbs. There's about 40 million requests two months ago,
so there's a pretty decent size of visitors hitting the server, and it's not really putting any dent into it, so that's a good thing. Currently there's over 90 image products, and with Gibbs we only have 250 meter data, but in the past we've worked with Landsat 30 meter, 50 meter data before. So to help
configure this server, we have a couple other tools just to make life a little easier if you're using on Earth. So there's this MRF generator. You can use GDAL to
basically generate all your MRF files, but this MRF generator abstracts all that GDAL command stuff away from you if you're kind of shy about using that stuff. It also allows for automated processes. We use XML configuration files, so another system could kick down some XML files
and be able to generate the imagery for you. So there's also this on Earth FLIR configurator. We use that to basically generate the server configurations, the metadata for get capabilities and so forth. And a couple other tools, there's this on Earth legend generator.
You can take your own color map. We have our own Gibbs format for color maps and just be able to generate a nice little color graphic using that tool. And there's also this metrics tool which basically it just converts Apache logs into a
format that's useful for if you're acquiring metrics. And this graphic here kind of summarizes how the system works. You prepare the imagery. This assumes you have the images available or global mosaic and you're able to turn that into an image pyramid. And once that occurs,
there's some configuration involved with the product layer. And you load that into the server and from that point on you can serve out the imagery using these common protocols.
So for Gibbs we use on Earth in conjunction with the software called Tye. It's an image management and workflow system. It helps automate and manage our MRF generation. Another really great thing about it is that it keeps track of the metadata and this is good for data provenance which is important for scientists to be able to go back and track where
the data has come from. Another great thing about Tye is that we can use it for searching and and be able to search on the metadata and so forth. This is also in development at JPL. It's not open source but something good to know about. So I was going to give a little preview of some of
the client applications. Looks like I have some time to maybe check these out. I wasn't sure about the network speeds here. I had a little bit of trouble but let me see if...
So this is world view. We use this as the Gibbs reference client. And what on Earth is really doing is serving the detailed imagery here. If I hit refresh
you can actually see the imagery or the tiles being loaded. But like I mentioned before I think there are some network speed issues. So I'm not going to do a full demo. There's another
presentation coming up at 4 pm exposing NASA's Earth observations I believe it's called. And there's going to be more in-depth talk about world view. So you can actually see that tile showing up here. And that's basically what on Earth is doing. There's a couple more other
client applications. This one's using Google Earth. You can't really see it on screen here. Just do this screen resolution. But then this is showing sea surface temperature. And there's also a 2D version. This I believe is using Leaflet. And it's showing the same thing. Sea surface temperature. There's other satellite layers that
you can look up and so forth. One thing I forgot to mention earlier. This on Earth survey only serves up raster imagery. That doesn't stop you from using a separate server to serve up vector layers. I believe this has some vector information
somewhere. We also have this lunar mapping modeling portal.
It's taking on Earth to the moon I guess. So we have then this is pretty cool. You see just imagery back to the Apollo era. historical archive of imagery of the moon. So just pretty cool.
So those are just a few couple of sample client applications. Here's some links here if you want to check it out on your own free time. See what they're all about.
So here's a list of other known support clients. Showed off world view which uses open layers. Here's Leaflet, Google Maps, Spring Maps. And of course this is also available for GIS clients. Esri ArcGIS Online actually has the Gibbs layers available
through their portal. So you could use that for a variety of GIS applications. And of course there's mobile clients and script level access which is useful for if you
want to suck down a bunch of tiles and build a cloud-free map or something like that. I believe Mapbox did that for their own version of cloud-free maps. So a little bit about our
open source project on GitHub. All of this code is available online. There's a couple other projects as well. There's world view and some samples of how you can build your own clients as well. The primary source for the On Earth software is on this NASA-Gibbs On Earth site. We're also working to separate the MRF code so we could build that into its own standard.
There's some specifications. It's not well documented at this point but there are some specifications up there to provide you with a little bit more information. Most of the code is in C or C++. Some of the non-performance-centric software we use Python
just because it's easier to develop and use. And it would be nice for the open source community to check out the software, provide some feedback whether it's good,
if you like the performance or if there's some other software that maybe could be a benefit. And also if you participate, there's also the sense of helping out the Earth science community and providing some aid to NASA and pushing technology forward.
A little bit of a preview on the future developments. We're working on granule imagery. The challenge is how to be able to serve granules via the On Earth server without sacrificing any performance. There's a couple other items such as multi-day imagery
and several improvements in the MRF specifications. We're getting some help from Esri. They're cloud-friendly, I guess. That's basically the end of the slide, anyway.
I did want to advertise there's an open position. I don't know too much about it. Yeah, yeah, pretty secretive. But yeah, that's basically it.
So I'll leave off with a couple links here. There's just links to our GitHub page.
How to use Gibbs. Basically there's an API. If you want to contact anyone at Gibbs, there's the email address and my personal email address as well up there. So I guess at this point I can
take questions. I assume that the serving is all done from those pre-generated tiles? Like
when you talk about the color map, that's not applied on the fly. That's applied during generation of the tiles? Yeah, yeah, that's correct. All the tiles are pre-generated and during that pre-generation process, we're passing the color map and that sticks with the imagery. So for instance, if you just generate JPEGs, then that's the only thing the server can serve. Is there any interest in doing dynamic conversion? I assume
that kind of defeats some of the performance purpose. Yeah, there is interest but that's the problem is performance. Might be slightly unrelated. Is there a feed of the different data currencies of the different products within the viewer? In other words, how do you best monitor
the freshness of the different data that's available? I'm not sure if I followed that question. The imagery tiles, you know, the recency, how can you best evaluate the recency of the different tiles in the imagery? So for Gibbs Anyway, we serve up daily imagery.
So it's basically just time-stamped into that data. There's not really a way to, if you're looking at sub-daily imagery, to see how, there's not a time stamp for how recent that imagery is.
Are you guys just showing the EO bands or is this any other of the derived products like the sea ice concentration cloud cover analysis, etc. Is that going to go into
to Gibbs, any of that sort of thing? Or is that the other topic? Yeah, there's, so for Gibbs there is, if I go to world view, there's several layers of science products on here. So in this one, you know, oops, you actually, you guys don't see it. Let me try to get here.
So yeah, there's different size parameters that you can get. The list of
compatible clients is quite large. Is that because of the WMS support or do you have, you also support specific other protocols? It's mainly because of the WMS and WMTS, which is
commonly used, or KML. So if, in theory, any client that can, that follows those protocols can deal with that, can access the data. You mentioned that the WMTS had a little extra
thing for time. Is that above and beyond sort of the WMTS standard? And then does the second up question is, does the WMS support the time coordinate or the time parameters?
So WMTS is something we added to, it's not in the WMTS spec, it's something we added. And I think, I'm not a WMS expert, but I think there is a time extension. And so that just follows along. Right, right, right. Oh yeah, yeah. I was just wondering, with the
MRF format, if imagery is updated, you know, four hours from live, and the entire format must
be appended for updates, how does that happen and how have you dealt with that? Is the entire, does the entire file need to be regenerated when the data is updated? Yeah, pretty much at this point. About how long does it take to generate the MRF file?
That totally depends on the size of the imagery. If it's kilometer size, it's pretty quick. But if you're dealing with, say, 3 million Landsat data, that could take hours.
So that's, there is some limitation there if you're dealing with really high resolution imagery, it's going to take a long time, unless you have some really beefy computer power to handle that.
I think all the questions are done.