Open idfx opened 3 years ago
tldr - 3D tiles are cool but probably too much effort for not much payoff for this particular project at this time
I was looking at 3D tiles, such as what is possible with Cesium. The JavaScript client, as well as the tile builder and server, are all Apache License v2.0. It would be cool to be able to load our app with recent satellite imagery scenes (e.g. post-disaster), and drape it over an open source of digital elevation data such as the NASA SRTM Plus (30 meter resolution) dataset. Cons: probably complicated?, maybe computationally expensive to process and serve the tiles?, and I’m not sure navigating a 3D map is particularly intuitive for most people (hard without a mouse and even then can be hard to get the zoom, pan, rotate, etc all figured out smoothly).
I think it may be already quite dated, but this blog post from Sep 2018 discusses using Tin-Terrain in combination with CesiumJS to privately or publicly host your own 3D terrain map. In addition to Cesium's offerings, there is harp.gl, an experimental and work in progress open-source 3D map rendering engine written in TypeScript. The experimental and work in progress makes me hesitant to consider this one too seriously at this point.
Mapbox GL JS v2 is sick, with amazing 3D maps and features like a Sky API... "As the Camera API increases map pitch and exposes the horizon, the Sky API simulates the sun’s position based on geographic location and time of day." But there are limitations to the license and I don't think we can use it for a self contained App.
However, we might be able to offer some sense of terrain using elevation data and hill-shading techniques on a 2D map. Mapbox does this with their Streets tile style.
Their controls allow you to tilt the map (and see that it's a flat surface despite the appearance of terrain).
Limiting map navigation to left-right-up-down and in-out, should be easier for majority of users.
For the client, I think there's 3 good options:
For the Server. I think the layer of app data (e.g. image points, extracted road lines) needs to be served as vector tiles for interaction. However, the base map could be either vector or raster. I've found 3 options that seem promising:
Tool data (image points, road lines, etc):
If we wanted a way to allow the user to load a different style sheet, we would probably want vector tiles for the basemap. Two OSS style editors (both mentioned in the t-rex project) are below. Could the app allow the user to change the map base style by uploading a new stylesheet?
Base map data.
I think we should use PostgreSQL + PostGIS for the data storage. So my main questions are:
Assigning to @rahulthewall for visibility
The idea @rahulthewall is that now you can review the alternatives that @danbjoseph outlined here and start a conversation leading to a decision. Sounds good?
Research alternatives for base map solutions to use on the UI. Keep in mind offline work.