Comments (7)
I wouldn't say they form a stack - they're dependencies. Once you've built tilemaker, you have no need to maintain them.
In the majority of vector tile toolchains (as documented by Paul Norman), you need to separately maintain a PostGIS database and continually run a tile-server: that's the stack. With tilemaker, there is no need for a database and no server component (so, for example, you can ship your tiles as part of a mobile app without needing to run a server).
That said, removing dependencies is a noble aim. I would generally say that an acceptable dependency is one that can be installed through apt for a recent Ubuntu LTS release, or through homebrew for macOS. Now that we've removed Luabind, we've reached that happy state and installation should be trivial for Ubuntu and macOS users. If you choose to use another distribution we can hopefully assume you know what you're doing. ;)
Of the dependencies you list, Lua is of course crucial to tilemaker because it provides a programmatic way to create layers; and sqlite3 is required because it enables us to create .mbtiles outputs.
Removing Boost is not feasible as we'd have to write our own geometry library, and that way lies madness. ::geometry, ::program_options and ::variant are header-only, so could in theory be bundled with tilemaker, but ::filesystem is binary and would need to be replaced (which is doable).
Potentially shapelib could be made optional for those who don't want to use shapefiles; and protobuf could be replaced by protozero, which is header-only and therefore could be bundled with tilemaker.
I don't personally have any great ambition to do any of these three, but if someone were so motivated I'd be plenty happy to receive a pull request.
from tilemaker.
Thanks for detailed explanation. My context is native (meaning C++) development for mobile OSs (Android, iOS etc), and over there the "real" stack in your terms is totally impossible. Also all the the additional libraries need to be carefully evaluated, and generally avoided, as there are a lot of additional limitations in storage/memory footprint size, possible version conflicts, licenses etc. Our current used library list is already quite long :)
from tilemaker.
Interesting. The idea of running tilemaker itself on a mobile device had never occurred to me, not least because it's very RAM-intensive. (The programmatic approach taken to generating vector tiles would probably forbid its use on iOS anyway.)
So if you want to use the tiles on mobile (which was partly my reasoning for developing tilemaker in the first place), I'd suggest that you run tilemaker in a server environment and that the mobile app/library then fetches the resulting .mbtiles, rather than the app fetching the .osm.pbf and converting it to vector tiles on-device.
from tilemaker.
::geometry, ::program_options and ::variant are header-only, so could in theory be bundled with tilemaker
Please, no. Checking in a third-party library should be avoided.
I'd also agree that right now, tilemaker is stack-free.
from tilemaker.
It loads all data to RAM before processing? Right, this could be a show-stopper for mobile case, especially for Android which is in many low-RAM devices. For server side we (CARTO) have already a solution - you can upload your data to CARTO service account and get back vector tiles via its Maps API. Certainly this has own limitations, it covers quite different usecases than tilemaker.
My point was really that there is blurry line between what you call stack and other "small" dependencies, depending on your context, they both can be very useful and/or big troubles.
from tilemaker.
Yep - it essentially loads the full .pbf into memory, so you need enough RAM to store all the nodes and ways and that's not really going to be likely on a mobile device.
Closing as not actionable but feel free to ask/comment more!
from tilemaker.
tilemaker is also designed to work from OSM PBF formatted data. It can consume shapefile data, but that's not its primary goal.
from tilemaker.
Related Issues (20)
- Idea for more flexible access to relations HOT 2
- state boundaries have gaps HOT 6
- Could not find node with id HOT 2
- segmentation fault with large file ( > 4gb ) HOT 13
- Failed to solve process cmake HOT 2
- Generating MBTILE with info over 17z HOT 4
- Docker build broken HOT 1
- Weekly update world osm mbtiles HOT 2
- Unable to open landcover SHP HOT 6
- Vector tile generation faulty in edge cases ? HOT 4
- stylesheet HOT 1
- PR575 seems to break shapefile HOT 20
- Geometry clipping - summary issue HOT 2
- Low CPU usage when writing tiles HOT 1
- during writing, much time is spent in seemingly empty tiles HOT 3
- htt HOT 1
- Attribution
- Missing Icons HOT 13
- 3.0 release planning HOT 14
- Improve Lua detection in Makefile
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tilemaker.