Skip to content

Latest commit

Β 

History

163 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

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

Map-RS main window: a docked toolbar, layers panel, live map and status bar

The main window β€” tool bar, workspace and tile-source selectors, the layers panel, and a status bar showing zoom, map centre, scale and attribution.

A circular workspace stays sharp while everything around it is blurred

Everything outside the active workspace is blurred, desaturated and dimmed, so the area under study stands out. Selecting a workspace centres the map on it.

The first-run setup wizard, showing where settings are stored

The first-run setup wizard. It walks through tile provider, Overpass endpoint, AI and weather keys, and is reopenable at any time from the βš™ button.

Video walkthrough (older UI)
Screencast.From.2025-07-29.11-55-13.mp4

How to Use the Program

On first launch a setup wizard walks you through the optional API keys β€” tile provider, Overpass endpoint, OpenRouter and the weather services. Everything has a working default, so you can press Skip for now and configure it later from the βš™ button in the toolbar.

  1. Select the Selection Tool (second icon from the left, or press W).
  2. Use it to select an area on the map.
  3. On the left side, choose which layers you want from the Layers panel.
  4. 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
  5. Once the data is loaded, switch back to the Cursor Tool (V, which also acts as the info tool).
  6. Click on a house or other element.
  7. You can then change its color based on its properties.

Keyboard shortcuts

Key Tool
V Pan and select
W Workspace area (press again to cycle circle / rectangle / polygon)
M Measure distance
P Drop a pin

Features

πŸ—ΊοΈ Map Navigation & Selection

  • Move around and zoom into maps seamlessly.
  • Select an area using circle, rectangle or polygon tools.
  • Picking a workspace centres the map on it and starts loading its tiles.
  • Everything outside the active workspace is blurred out, so the area under study stands out. Choose None in the workspace dropdown to see the whole map again.
  • A Fetch data button downloads the layers you have ticked, and tells you when no workspace or no layers are selected.
  • Search for a place by name in the top right to jump to it, framed by its size β€” a country arrives zoomed out, a street zoomed in.
  • Workspaces are sticky: drift a little past the edge and the map eases back; drag firmly and it lets you go.

πŸ“€ Getting data in and out

  • Export β†’ Data as GeoJSON writes every feature in the workspace to a file.
  • Export β†’ Map view as PNG saves the map area, cropped free of the interface.
  • Drop a .geojson file on the window to import it. It becomes a workspace of its own, covering the file's extent, and is opened straight away.
  • Export β†’ Download tiles for offline use caches the workspace's tiles so it still draws with no network. This is a bulk download: OpenStreetMap's tile usage policy does not allow it, so use a provider whose terms do, or your own server. Downloads are capped at 4000 tiles and fetched one at a time.

Exports are written to the platform data directory (~/.local/share/map-rs/exports on Linux); the toolbar shows the path and copies it on click.

πŸ€– 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.

βš™οΈ Configuration

  • First-run setup wizard, reopenable as a Settings dialog.
  • Choose a tile provider (OpenStreetMap, Google, Mapbox, Thunderforest, MapTiler or a custom XYZ URL) and supply its key.
  • Point Overpass and the place-search endpoint at your own instances to avoid the public ones' rate limits.
  • "Test connection" buttons for each endpoint.
  • Keys are stored outside the repository, in the platform config directory, in a file that is owner-readable only (0600 on unix).

Building from source (WIP - Currently for Developers Only)

Prerequisites

  1. Rust 1.95 or newer (Bevy 0.19 requires it)

  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 run # 'cargo build' if you only want the binary

Note: run the app with cargo run, not by invoking target/debug/map-rs directly. Bevy resolves assets/ relative to the manifest directory, so the bare binary cannot find the shaders or fonts.

Configuration and API keys

Nothing needs editing in source. Launch the app and use the setup wizard, or open Settings (βš™ in the toolbar) at any time.

Settings are written to:

Platform Location
Linux ~/.config/map-rs/config.toml
macOS ~/Library/Application Support/dev.map-rs.Map-RS/config.toml
Windows %APPDATA%\map-rs\Map-RS\config\config.toml

Saved workspaces go to the corresponding data directory (~/.local/share/map-rs on Linux) and cached map tiles to the cache directory (~/.cache/map-rs).

For the AI chat, get a key from OpenRouter and paste it into Settings β†’ AI assistant. The application works without any API key β€” only the AI chat is unavailable, and the map falls back to OpenStreetMap tiles.


Screenshots

The images above are generated by the app itself, so they can be refreshed after a UI change without capturing the rest of your desktop:

# Press F12 at any time to save a PNG into the working directory, or script it:
MAP_RS_SCREENSHOT="assets/screenshots/main-ui.png:10" MAP_RS_SCREENSHOT_EXIT=1 cargo run

MAP_RS_SCREENSHOT=<path>[:<seconds>] captures after the given delay (default 8s, to let tiles load); MAP_RS_SCREENSHOT_EXIT=1 quits once the file is written.


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

Stars

7 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages