Hello! To be short: I spent quite a time, it uses private game engine. Especially many effort is put to vegetation and landscape generation and rendering. All data sources: OSM (whole planet, vectortile format), NASA BlueMarble (custom sql DB), SRTM-G1 (optionally SRTM 4.1 or GDEM 3 can be used, custom sql DB). Here are some screenshots (looks like as a new user I have limitations in images uploading):
This realy looks like a lot of work!
What programming language and tools do you use? What vector tiles (for building heights i.e.)?
Will it be an native Application? Online on the web? Smartphones?
Core is private C++ game-like engine written from scratch. Vectortile is kind of industrial standard vector-tile-spec/2.1 at master · mapbox/vector-tile-spec · GitHub , it’s way to store data from osm planet pbf in tiles with lods (usually with mercator projection). Desktop application performance is 30-60 fps even when old videocard like Radeon RX 480 is used, but it’s still requires powerful processor with multiple cores to generate additional data for details on fly, I doubt smartphone would handle it. I want to make demo but I need to do some polishing and somehow host 200 GB of data.
Yes, rendering the Earth (partly) is heavy.
Do you generate the tiles yourself, direct from OSM tagging? All Earth? Zoomlevel?
I consider to something alike. Not C++; but the ideas and algorithems are valuable. Difficult! Like: How to place buildings in terrain sloopes.
Do you target Linux and Windows?
If you’re in need of an efficient way to store OSM data locally, check out GeoDesk. The full worldwide dataset takes up less than 100 GB, and queries are extremely fast. The query engine runs in-process, the entire library is less than 250 KB compiled.
For example, to query all buildings in a given bounding box and extract their height and footprint:
#include <geodesk/geodesk.h>
...
Features world("world"); // Open the world.gol database file
Features buildings = world("a[building]");
// All areas (ways and relations) tagged "building"
Box bounds( /* your coordinates here */ );
for(Feature building : buildings(bounds))
{
double height = building["height"];
// or 0 if no "height" tag present
GEOSGeometry* footprint = building.toGeometry(geosContext);
// Create a (multi)polygon (Mercator-projected)
}
GeoDesk integrates with the GEOS library for advanced geometric operations (You can also retrieve the individual nodes of features and assemble the shapes yourself.)
I did not ask for tile making OS but for the application OS. I am curious about how your data flow is from (what) OSM API to the geometries/meshes. But take your time and tell us, if and hiw we can use it.
Feel free to get an account on source.mapcomplete.org and to configure a runner on “lain”. You have a planet file in /data, 96GB ram and about 500 TB available. It is a shared resource though, so don’t hoard it all the time
First of all, I made a typo. There is about 500GB (not TB) HDD available. Should still be enough though.
Also: we are currently having connectivity problems, so the internet is really slow. (as in: kilobytes per second downlink and 20% packet loss), so will be unusuable for this usecase for a few more weeks. But feel free to already sign in though!