Skip to content
/ map-rs Public

A fast, open-source GIS tool for urban analysis, map visualization, and geospatial data processing. Features include area selection, Overpass Turbo data fetching, and customizable layers. Built with Rust and Bevy. 🚀

License

Notifications You must be signed in to change notification settings

SO9010/map-rs

Repository files navigation

Urban Planning GIS App

A fast, open-source GIS tool for urban planning, spatial analysis, and geospatial data visualization. This application allows users to select areas, fetch data from OpenStreetMap (Overpass Turbo), and analyze geographic data with a focus on urban development and sustainability. It utilises LLM chatbots to help the user analyse their workspace.

Showcase

Screencast.From.2025-07-29.11-55-13.mp4

How to Use the Program

To use the program in its current state:

  1. Edit src/workspace/ui.rs and replace "!!! YOUR TOKEN HERE !!!" with your OpenRouter API key from openrouter.ai. This will change very soon to just getting prompted in the app to input your token :)
  2. Select the Selection Tool (second icon from the left).
  3. Use it to select an area on the map.
  4. On the left side, choose the type of Overpass request you want to perform from the dropdown menu.
  5. At the top, select the Workspace.
    • Note: Loading may take a few seconds depending on the size of the response.
      From here you can either Analyse using llm For this simply ask what you want the llm to in the chat box on the right. Do note that it is containerised and will only be able to access data selected for the workspace. Change color
  6. Once the data is loaded, switch back to the Cursor Tool (which also acts as the info tool).
  7. Click on a house or other element.
  8. You can then change its color based on its properties.

Features

🗺️ Map Navigation & Selection

  • Move around and zoom into maps seamlessly.
  • Select an area using circle or polygon tools.
  • Center the selection on the screen for easy analysis.

🤖 AI-Powered Analysis

  • Interactive chat interface for geospatial queries
  • Natural language commands for spatial analysis (population dencity, suitabilty of new houses, etc.)
  • Automated feature summarization and insights
  • Context-aware responses based on current map selection

🛠️ Workspace & Project Management

  • Save and load workspaces with selected areas and layers.
  • Persistent workspace state and configuration.

Building from source (WIP - Currently for Developers Only)

Prerequisites

  1. Rust toolchain (incl. Cargo)

  2. Click on your Linux distribution to see the required dependencies:

Fedora / RHEL / CentOS (dnf)
sudo dnf install alsa-lib-devel libudev-devel fontconfig-devel protobuf-compiler
Ubuntu / Debian (apt)
sudo apt install libasound2-dev libudev-dev libfontconfig1-dev protobuf-compiler
Arch Linux / Manjaro (pacman)
sudo pacman -S alsa-lib libudev fontconfig protobuf
Alpine Linux (apk)
sudo apk add alsa-lib-dev eudev-dev fontconfig-dev protobuf-dev protobuf

Compile project

git clone https://github.com/SO9010/map-rs.git
cd map-rs
cargo build # or 'cargo run', to run the app

AI Chat Setup

To use the AI-powered chat features:

  1. Get an API key from OpenRouter
  2. Edit src/workspace/ui.rs and replace the line:
    workspace.llm_agent.set_token("!!! YOUR TOKEN HERE !!!");
    with your actual API key:
    workspace.llm_agent.set_token("your-actual-api-key-here");
  3. Rebuild the application: cargo build

Note: The application works without an API key, but AI chat functionality will be unavailable.


Contributing

Contributions are welcome! Feel free to fork the repository, submit issues, or suggest new features.

  1. Fork the repository.
  2. Create a new branch: git checkout -b feature-name
  3. Make changes and commit: git commit -m "Added new feature"
  4. Push to your branch: git push origin feature-name
  5. Submit a pull request.

License

Apache 2.0 License

About

A fast, open-source GIS tool for urban analysis, map visualization, and geospatial data processing. Features include area selection, Overpass Turbo data fetching, and customizable layers. Built with Rust and Bevy. 🚀

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •