OsmInTile
OsmInTile is an experimental Go-based project for generating indoor vector tiles using OpenStreetMap (OSM) data. This tool is designed to parse OSM data and produce vector tiles suitable for indoor mapping applications, facilitating easier visualization and interaction with indoor spaces.
[!CAUTION]
This project is a work in progress.
See Sec. TODO to see the progress.
Table of Contents
- Introduction
- TODOs
- Installation
- Contributing
- License
- Acknowledgements
Introduction
Indoor mapping presents unique challenges compared to outdoor mapping, primarily due to the complexity and variability of indoor spaces. OsmInTile aims to simplify this by providing a tool that extracts indoor-related data from OSM and transforms it into vector tiles, which are ideal for high-performance rendering in applications like web maps and mobile apps.
TODOs
- OSM Data Parsing:
- Parsing osm
.pbf files
- Parsing osm
.osm-XML files
- Filtering unnecessary features on the fly
- Insert important information into Spatialite
- Optimize inserted data more by filtering unused tags
- Vector Tile Generation:
- Get Vector tiles with basic Room information to the user
- Create Sprites and Texts
- Customizable Output:
- Allow customization of tile properties such as zoom levels, feature selection, and more
- Allow customization of map styles
- Make Demo Frontend removable
- High Performance:
- Create a on-disk and in-memory caching layer to limit requests to sqlite
- Prerender adjacent tiles in spare time
- Allow for rate-limits
- Demo Frontend:
- Create a basic Demo frontend with MapLibre
- Create level selection
- Create Documentation Page for using the indoor map in your project
- Documentation and Distribution:
- Document the usage and configuration
- Create Prebuild binaries
- Distribute via apt and docker hub
Installation
Prerequisites
You will need to have docker installed and running on your system
Installation Steps
- Download your data from Geofabrik in either the
.osm or .pbf format (you may also cut it with osmium)
- Start the Server with
make run --osm-file <path to your file>
- For more information see the help command or code
make help
Contributing
We welcome contributions from the community!
To contribute:
- Fork the repository.
- Create a new branch (
git checkout -b feature/your-feature).
- Commit your changes (
git commit -am 'Add some feature').
- Push to the branch (
git push origin feature/your-feature).
- Create a new Pull Request.
Please ensure your code follows the Go code style guidelines.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgements
OpenStreetMap: For providing the open data that makes this project possible.
@paulmach: For providing great geodata libraries like paulmach/orb and paulmach/osm
Go: For being a powerful and efficient programming language.