back to home

galileo-map / galileo

General purpose cross-platform GIS-rendering library written in Rust

591 stars
58 forks
40 issues
RustWGSLJust

AI Architecture Analysis

This repository is indexed by RepoMind. By analyzing galileo-map/galileo in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.

Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.

Source files are only loaded when you start an analysis to optimize performance.

Embed this Badge

Showcase RepoMind's analysis directly in your repository's README.

[![Analyzed by RepoMind](https://img.shields.io/badge/Analyzed%20by-RepoMind-4F46E5?style=for-the-badge)](https://repomind.in/repo/galileo-map/galileo)
Preview:Analyzed by RepoMind

Repository Overview (README excerpt)

Crawler view

**Galileo** is a general purpose cross-platform geo-rendering library. Web examples • Raster tile layer (OSM) • Vector tile layer (Maplibre) • Use buttons at the top to change the style of the map • Click on any object to get information about it • Feature layer • NOTE! Contains large dataset (~16 MB), might take some time to load • Draws 250 countries' borders, consisting of ~4000 polygons with ~500K vertices, plus 40K city points • Move mouse pointer to highlight any country, click on a country to write its name into console • Map in Lambert Equal Area projection • Takes data set (country borders) in Mercator projection and draws it to the map in LAEA projection • Very many points • Enjoy 3.6 million points heat up your room with GPU. Overview General purpose Architecture of **Galileo** is designed specifically to allow different modes of use: • client GUI mapping applications • server modules • CLI tools This does bring certain challenges and adds to complexity. For example, caching of loaded and rendered objects works completely differently in server in client applications. **Galileo** is designed in such a way as to allow the user of the library to make all the relevant decisions and not to force one way. It also does not make any assumptions about tile layer schemas, CRS and datums. Feature layers support transparent re-projecting into the map CRS (support for projecting tile layers is planned but not implemented yet). Cross-platform At the moment Galileo uses backend to render the map. This means that it can be used on any platform that supports: • All major desktop platforms: Linux, MacOS, Windows • Mobile platforms: Android, iOS • Web though compiling to WASM (and using either WebGL or newer and cooler WebGPU) Still, the backend is not integral part of the Galileo design, so we will probably try other promising backends (like vello). FFI At this point, you can develop an application using Galileo only in Rust. But there is a POC example of how we envision future development on other platforms: [wasm_examples/raster_tiles]. When all main features of Galileo are more or less stable (or when a need arises) we will add FFI bindings to other languages using and . This will allow you to create your applications in , , or using common API. Features Galileo is an active WIP, here is the list of the features that are already present: • raster tile layers • vector tile layers with styling • vector geo-data layers (feature layers) with styling • 3d view and 3d object rendering • user-input handling on layers (mouse only at the moment, touch is WIP) • support for different projections and tile schemes • high performance Roadmap There are so many things that we all want from mapping engine, but it's impossible to have them all done at the same time. So here's our current plan and priorities: Proof of Concept v0.1 - usabilitification • [x] Architecture and basic building blocks of the library • [x] Styling of vector tile and feature layers • [x] Support main source types (TMS tiles, 2d geometries, MVT) • [x] Rendering map in different projections v0.2 - bueautification • [ ] Basic styling to be able to use Galileo for simple but useful applications • [ ] Advanced styling for features and vector tiles (image points, gradients, etc.) v0.3 - 3d-fication • [ ] 3d globe, atmosphere and stars around to make your dark hours brighter • [ ] Terrain rendering to draw every mountain you climbed • [ ] 3d models to put your house on those mountains • [ ] Advanced support for projections and CRSs Beta v0.4 • [ ] Stabilize* API for main building blocks (Map, Layer, Renderer) • [ ] Support for main open GIS standards (PostGIS, WMS, WFS, etc.) • [ ] More styling types (clusters, heatmaps, etc) • [ ] Support for custom shaders v0.5 • [ ] Stabilize* API for features and projections • [ ] Ineroperability with main UI frameworks • [ ] FFI bindings v0.6 • [ ] Stabilize* styling • [ ] Interoperability with MapBox styling v1.0 Release • [ ] Testing, documentation and examples \* Stabiliaing before v1.0 doesn't mean that API won't have any breaking changes at all, but rather that the API will be well thought through and tested and all the changes will be tracked, and if anything breaking is introduced, there will be clear instructions how to upgrade. Running examples Rust examples of using Galileo are located at . Refer to the readme for the list, description and run instructions. Web Most of the Galileo examples can be run in browser. You will need to have , and installed on your system: Then just open in your browser. Android Check out this example to run Galileo on Android. Cross-compile from Linux to Windows Install the target: Install cross-linker. For Debian/Ubuntu: And then build it: Sponsoring There is still a lot of work to be done to make Galileo feature-full, production ready and useful for many. And we would love to work on this full-time to bring this to you as soon as possible. So we are looking for sponsors to make it possible. Sponsor funds will help support maintainer's dedicated work and eventually fund freelance contributors. If you think this library can be useful to you or someone you love, consider supporting its development. Sponsoring comes with additional advantages: • Increase development speed. • Make your needs our priority. • See your logo on the project's page. • Current sponsors Thank you Ragarnoy, Tzevet 5, quietlychris, DennisJensen95, proglyk for sponsoring Galileo! Former sponsors Thanks @spencer741, @alexkirsz for your support! License You can use this library without any worries as it is licensed under either of • Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0) • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) at your option. Community Have a question, suggestion, idea or want to share something you created with Galileo? Open a discussion on Github or join our discord server.…