0

So basically, I am tasked with "recreating" a 3D Earth, comprised of (very small) tiles made of NASA Landsat 8 images (png). Each point on Earth is imaged once every 16 days or so, and the API I'm using serves the latest images (ie they can't be compiled offline and used statically) .

These tiles are ~150kb each, and have a width and height of 0.025 lat/long. This means that I'll probably have to use a static mesh for low zoom levels, and as a user zooms in, Landsat tiles will be dynamically generated based on their viewport.

Have any of you built a 3D Earth with custom tiling before? I was looking at the WebGL Earth API, but it's very limited. I've also taken a look at Cesium, but I'm not sure if it's capable of what I want to do.

Basically, I'm looking for a 3D model of Earth (or even just a sphere) that will allow me to "stick" images to specific lat/lon points. Otherwise, I suppose I'll just have to make a sphere in ThreeJs and do the calculations myself, but I'm afraid that without using a pre-existing map system (like Leaflet), the whole thing will come out totally inaccurate.

j_d
  • 2,818
  • 9
  • 50
  • 91

1 Answers1

2

Cesium can already do exactly what you want quite easily. Depending on the API you are using, there's a good chance we already have an Imagery Provider that can ingest it, most imagery like you describe is usually using one of the major standards. If not, implementing a custom provider is only a couple dozen lines of code.

I would recommend you check out the Imagery Layers tutorial to get started and don't hesitate to ask questions on our forum.

If you can provide more details, I can give you more specific advice.

Matthew Amato
  • 1,992
  • 17
  • 21
  • Thanks, I was leaning towards Cesium. My main concern is that it doesn't seem to be light AT ALL - a 30mb directory to include in my project?? I doubt the API I'm using has an Imagery Provider, as it's a NASA API. I don't mind writing one, though. I've posted another question [here](https://stackoverflow.com/questions/31186819/what-is-the-lightest-possible-method-of-using-cesium) about my concern with Cesium's size. – j_d Jul 02 '15 at 14:08
  • You are mistaken regarding Cesium's size. I'm not sure where you are getting that 30mb number from. Assuming traditional web development (no modules), the primary Cesium.js file is only 432kb gzipped, but I'll go answer your linked question rather than go into the details here. – Matthew Amato Jul 02 '15 at 14:34
  • The latest [Cesium release is 39mb](http://cesiumjs.org/downloads.html), but maybe I'm confused about dependencies. – j_d Jul 02 '15 at 14:44
  • The release zip contains a lot more than what you need to actually deploy your own apps (Examples/Documentation/etc..). For comparison, [Three.js](http://threejs.org/), which is the most popular low-level WebGL library our there is a 123MB to download but a Three app might only pull down 300kb of JavaScript (less than that compressed). As I said, I'm writing up a reply to your other question now. – Matthew Amato Jul 02 '15 at 14:58
  • Yup, I'm familiar with ThreeJs and use it frequently. I included the Cesium script and css, but was getting console errors. I'll look for your response in the separate question, cheers. – j_d Jul 02 '15 at 15:04
  • Can you explain a bit more about creating a custom imagery provider? The NASA API I'm using takes GET requests and sends back a JSON array, one parameter of which is an image url. These images need to be requested via a specific lat/lon point, and each image is 0.025 degrees in width and height; ie one image request for every 0.025x0.025 square on the globe. Clearly this is a lot of requests, so it'd need to be limited to a certain zoom level. – j_d Jul 04 '15 at 12:45