SkillAgentSearch skills...

MMGIS

Multi-Mission Geographic Information System - A Web-based Mapping and Spatial Data Infrastructure for Earth, Lunar and Planetary Visualization, Research, Science, Planning and Operations.

Install / Use

/learn @NASA-AMMOS/MMGIS

README

<hr> <div align="center"> <h1 align="center"> MMGIS (Multi-Mission Geographic Information System) </h1> </div> <pre align="center">Web-based Mapping for Earth, Lunar and Planetary Visualization, Research, Science, Planning and Operations.</pre> <div align="center"> <a href="https://ammos.nasa.gov/media/NASA-AMMOS-MMGIS.mp4" target="_blank"> <img src="/docs/assets/images/NASA-AMMOS-MMGIS-frame0.png" alt="MMGIS Demo Video" width="100%" /> </a> <p><i>Click to watch the demo video.</i></p> </div> <div align="center">

DOI License Node.js PostgreSQL GitHub Issues GitHub Last Commit GitHub Stars

</div> <div align="center">A free, open source and easily configurable solution for GIS on the web. Run MMGIS via a prebuilt docker image on your server and use the Configure page to setup a new mission map to get started. You completely own your data too but are responsible for any data processing (though provided are a variety of scripts and organization methods to help do so and jump off from)</div> </br> <div align="center"><b>Mapping Together</b></div> <div align="center"> MSL Curiosity Rover &nbsp;·&nbsp; InSight &nbsp;·&nbsp; Mars 2020 Perseverance Rover &nbsp;·&nbsp; Mars Helicopter (Ingenuity) &nbsp;·&nbsp; EMIT &nbsp;·&nbsp; MAIA &nbsp;·&nbsp; BioSCape &nbsp;·&nbsp; FireSense &nbsp;·&nbsp; Lunar VIPER &nbsp;·&nbsp; MGViz &nbsp;·&nbsp; SHIFT &nbsp;·&nbsp; FROZON &nbsp;·&nbsp; Where is the Rover &nbsp;·&nbsp; and more! </div> <div align="center"><img src="/docs/assets/images/divider.png" alt="---" width="100%" /></div>

Table of Contents

Features

Map Visualization

  • 2D/3D rendering - Leaflet-based 2D maps and Cesium/Lithosphere-powered 3D globes with synchronized views
  • Immersive viewers - High-resolution imagery viewer, photospheres, 3D models, PDFs, and videos
  • Custom projections - Support for planetary projections and custom coordinate systems
  • Terrain visualization - Tiled height data generation

Data & Layers

  • 10 layer types - Vector, Tile, Image, Model, Vectortile, Velocity, Video, Data, Header, and Query layers
  • Rich data formats - GeoJSON, Shapefiles, GeoTIFF, COG, OBJ, GLTF, and more
  • Vector/raster tile serving - MVT tile generation with PostGIS backend
  • TiTiler integration - Serve Cloud-Optimized GeoTIFFs (COGs) on-the-fly with dynamic styling and band combinations
  • TiTiler STAC mosaicking - Automatically mosaic multiple COGs from STAC catalogs into seamless, queryable layers
  • STAC catalogs - Spatiotemporal Asset Catalog integration for discovering geospatial data
  • Dynamic styling - Property-based styling with gradients, discrete values, and geologic patterns
  • Hierarchical organization - Nested layer groups with visibility and opacity controls

Interactive Tools

  • Animation - Create animated GIFs and MP4s from map sequences
  • Chemistry - Visualize chemical composition data from planetary samples
  • Curtain - Display ground-penetrating radar subsurface imagery
  • Draw - Multi-user collaborative vector drawing with real-time synchronization
  • Identifier - Query pixel values from rasters and point data
  • Info - Display feature properties and metadata
  • Isochrone - Terrain traversability analysis and reachability mapping
  • Kinds - Configure layer-specific click behaviors
  • Layers - Manage layer visibility, ordering, and properties
  • Legend - Auto-generated legends from layer styling and metadata
  • Measure - Distance measurements, elevation profiles and line-of-sight analysis
  • Query - Spatial and attribute queries across datasets
  • Shade - Solar/Orbiter/Body illumination and shadow visualization via NAIF's SPICE
  • Sites - Quick navigation bookmarks and saved viewpoints
  • TimeControl - Time-enabled data visualization with temporal queries
  • Viewshed - Line-of-sight visibility analysis

Collaboration & Sharing

  • Real-time collaboration - WebSocket-based synchronization across multiple users
  • Live drawing sync - See teammate edits as they happen
  • Layer notifications - Automatic updates when administrators modify layers
  • Configuration coordination - Conflict detection for multi-admin editing

Mission Management

  • Easy-to-use CMS - Graphical configuration interface for mission setup
  • Flexible authentication - Local accounts, OAuth2/SSO, or open access modes
  • Role-based access - SuperAdmin, Admin, and User permission levels
  • Mission-specific access - Control which users can view and edit each mission
  • API token management - Long-term tokens for programmatic access
  • Multiple missions - Host multiple independent mapping projects

Advanced Features

  • Temporal data - Time-based layer filtering and animation
  • Elevation profiling - Extract terrain profiles along paths
  • Spatial queries - PostGIS-powered geospatial analysis
  • Geodataset management - Upload, index, and serve large vector/raster datasets
  • Custom tile generation - Scripts for creating optimized tilesets
  • Plugin architecture - Extend functionality with custom tools and backends
  • Webhook integration - Connect MMGIS to external systems and workflows
<div align="center"><img src="/docs/assets/images/divider.png" alt="---" width="100%" /></div>

Installation

It is recommended to setup MMGIS via docker. However, if you would like to setup MMGIS without docker, please check out: https://nasa-ammos.github.io/MMGIS/setup/installation#installing-without-docker

/ will always refer to the repo's root directory.

Building

Point to a prebuilt image in your docker-compose.yml: https://github.com/NASA-AMMOS/MMGIS/pkgs/container/mmgis

Or build it locally for a custom build:

  1. Clone the repo
    git clone https://github.com/NASA-AMMOS/MMGIS

  2. Run: docker build -t <image tag> .

Preparing

.env

  • Copy /sample.env to .env
    cp sample.env .env

  • Open .env and update the following:

    DB_NAME=<name>
    DB_USER=<user>
    DB_PASS=<password>
    

    From the install example:

    DB_NAME=db
    DB_USER=postgres
    DB_PASS=<POSTGRES_PASSWORD (see below)>
    
  • Set all the ENV variables in .env. More information about the ENVs can be found here.

    • If using the postgis/postgres image from within the docker-compose.yml, set the ENV DB_HOST to the name of the service (in this case db)

docker-compose.yml

This repo contains a /docker-compose.sample.yml file that defines a service for the application and a PostgreSQL database with PostGIS installed

  • Copy this file to a docker-compose.yml.
  • In the db service in docker-compose.yml, set the POSTGRES_PASSWORD environment variable and use this for MMGIS's DB_PASS ENV value.
  • Fill out the other environment variables within the docker-compose.yml as well.
  • Note, the /docker-compose.sample.yml includes optional STAC and TiTiler services. If any of them are unwanted, they can be removed from the docker-compose-yml and their respective .env variable WITH_{service} can be set to false.

Running

Run: docker-compose up -d

Stopping

Run: docker-compose down

First Time UI Setup

  1. Setup the admin account:

    • In your browser, navigate to https://{your-mmgis-domain}/configure
    • Sign up for an Administrator account (The Administrator account is always the first user in the database and you are only prompted to create an Administrator account if there are no other users)
  2. Now sign in with your Administrator credentials

  3. Click NEW MISSION
    Enter a new mission name and click MAKE MISSION

Navigate to https://{your-mmgis-domain}/.

See the configuration documentation for more information on how to use the configure page to customize and add data to MMGIS.

<div align="center"><img src="/docs/assets/images/divider.png" alt="---" width="100%" /></div>

Plugins

MMGIS supports a flexible plugin system for adding custom tools and backend functionality without modifying the core codebase.

Tool Plugins

Place custom tools in directories matching /src/essence/*Private-Tools* or /src/essence/*Plugin-Tools*. These directories are automatically gitignored and loaded when you run npm run build.

Component Plugins

Place miscellaneous custom UI behaviors and components in directories matching /src/essence/*Private-Components* or /src/essence/*Plugin-Components*. These directories are automatically gitignored and loaded when you run npm run build.

Backend Plugins

Place custom backends in directories matching /API/*Private-Backend* or /API/*Plugin-Backend*. These directories are automatically gitignored and loaded when you run npm start.

For detailed plugin development instructions, see the Contributing Guide.

<div align="center"><img src="/docs/assets/images/divider.png" alt="---" width="100%" /></div>

License: Apache 2.0

https://www

Related Skills

View on GitHub
GitHub Stars196
CategoryOperations
Updated11h ago
Forks59

Languages

JavaScript

Security Score

100/100

Audited on Mar 28, 2026

No findings