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/MMGISREADME
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
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:
-
Clone the repo
git clone https://github.com/NASA-AMMOS/MMGIS -
Run:
docker build -t <image tag> .
Preparing
.env
-
Copy
/sample.envto.env
cp sample.env .env -
Open
.envand 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_HOSTto the name of the service (in this casedb)
- If using the postgis/postgres image from within the docker-compose.yml, set the ENV
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
dbservice indocker-compose.yml, set thePOSTGRES_PASSWORDenvironment variable and use this for MMGIS'sDB_PASSENV value. - Fill out the other
environmentvariables within thedocker-compose.ymlas well. - Note, the
/docker-compose.sample.ymlincludes optional STAC and TiTiler services. If any of them are unwanted, they can be removed from the docker-compose-yml and their respective.envvariableWITH_{service}can be set to false.
Running
Run: docker-compose up -d
Stopping
Run: docker-compose down
First Time UI Setup
-
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)
- In your browser, navigate to
-
Now sign in with your Administrator credentials
-
Click
NEW MISSION
Enter a new mission name and clickMAKE 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
