• Stars
    star
    136
  • Rank 266,533 (Top 6 %)
  • Language
    JavaScript
  • License
    Apache License 2.0
  • Created over 5 years ago
  • Updated 26 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Multi-Mission Geographical Information System - Web-based Mapping and Spatial Data Infrastructure for Planetary Science Operations - https://nasa-ammos.github.io/MMGIS/

MMGIS (Multi-Mission Geographic Information System)

Spatial Data Infrastructure for Planetary Missions

Example


Features

  • Web-based mapping interface
  • 2D slippy map
  • 3D globe with tiled height data
  • Image viewer capable of showing mosaics with targets
  • 5 fully customizable layer types
  • Easy to use CMS
  • Multi-user vector drawing
  • Elevation profiler
  • Custom projections
  • Tiling scripts
  • And so much more...

Full documentation


Installation

System Requirements

  1. Install the latest version of Node.js v16.13.2+.

  2. Install PostgreSQL v10.14+. Detailed install instructions for all platforms.

  3. Install PostGIS 2.5+. From the above install, you can use the 'Application Stack Builder' to install PostGIS or the default PostGIS install instructions for all platforms.

  4. Make a new PostgreSQL database and remember the user, password and database name. Use 'pgsl' or the 'SQL Shell' to log into Postgres. It will prompt you for the username and password made during the install.

  5. GDAL and Python are weaker dependencies (desirable but, without them, not everything will work)

    • GDAL 2.+ with Python bindings (Windows users may find these helpful)
    • Python 3.6+
      • python -m pip install numpy
      • Note: MMGIS expects and uses the command python only and not python3 or variations.

Setup

/ will always refer to the repo's root directory

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

  2. From within /
    npm install

  3. Copy /sample.env to .env
    cp sample.env .env

  4. Open .env and update the following:

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

    From the install example:

    DB_NAME=mmgis
    DB_USER=postgres
    DB_PASS=<password>
    
  5. Run npm run build to bundle up the code (first time or if there are any changes)

  6. Run npm run start:prod

  7. Setup the admin account:

    • In your browser, navigate to http://localhost:8888/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)
  8. Now sign in with you Administrator credentials

  9. Click NEW MISSION
    Enter a new mission name and click MAKE MISSION
    (Use the mission name "Test" (case-sensitive) to make the sample mission)

Go to http://localhost:8888 to see the Test mission

Note: The development environment (npm start) and only the development environment uses two port numbers 8888 and 8889 (by default) β€” the latter for the main site and the former for the ancillary pages (such as /configure and /docs)


Scripts

Production

  1. Run npm run build to bundle up the code (first time or if there are any changes)

  2. Run npm run start:prod

Development

  1. Run npm start

Test

  1. Run npm run test
    Note: Jest has just been added in v2.0.0 and test suites are still very limited. There is strong interest to move to Playwright.

Documentation

The latest online documentation can be found here.

Additionally, documentation pages are served at http://localhost:8888/docs or immediately within the docs/pages/markdowns directory.


Contributing

Check out our contributing guide here.


Code of Conduct

Check out our code of conduct here.


Installing with Docker

To build the Docker image, run: docker build -t <image tag> .

To run MMGIS in a container, you need to create a directory on the host machine and map this to a directory in the container. On the host machine, create a Missions directory and copy the contents of ./Missions to your directory. Map this directory to /usr/src/app/Missions in the container. For example, if the host directory is /Missions, launch the container with:

docker run -v /Missions:/usr/src/app/Missions <image tag>

This repo contains a docker-compose.yml file that defines a service for the application and a PostgreSQL database with PostGIS installed. Simply set all the env variables in .env and run:

docker-compose up


License: Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0)

Copyright (c) 2023, California Institute of Technology ("Caltech"). U.S. Government sponsorship acknowledged.

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  • Redistributions must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  • Neither the name of Caltech nor its operating division, the Jet Propulsion Laboratory, nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


Contacts

Dr. Fred J. Calef III - [email protected]
Tariq K. Soliman - [email protected]

More Repositories

1

3DTilesRendererJS

Renderer for 3D Tiles in Javascript using three.js
JavaScript
1,380
star
2

Unity3DTiles

A 3D Tiles implementation in Unity
C#
223
star
3

aerie

A software framework for modeling spacecraft.
Java
67
star
4

AIT-Core

Python
43
star
5

VICAR

VICAR, which stands for Video Image Communication And Retrieval, is a general purpose image processing software system that has been developed since 1966 to digitally process multi-dimensional imaging data.
C
42
star
6

aerie-ui

The client application for Aerie.
Svelte
28
star
7

LithoSphere

A Tiled 3D Planetary Web-Based GIS JavaScript Library
TypeScript
24
star
8

AIT-GUI

JavaScript
24
star
9

slim

Software Lifecycle Improvement & Modernization
JavaScript
24
star
10

Landform

Terrain mesh processing toolkit that can generate 3DTiles datasets
C#
19
star
11

AIT-DSN

Python
19
star
12

common-workflow-service

JavaScript
17
star
13

3DTilesSampleData

3D Tiles sample data released from NASA JPL
15
star
14

CameraModelUtilsJS

Set of utilities for visualizing camera models and loading image formats commonly used on JPL Mars missions.
JavaScript
13
star
15

CODEX

Complex Data Explorer
JavaScript
11
star
16

slim-starterkit-python

Template for a basic Python application implementing build, release and publish automation.
Python
9
star
17

openmct-mcws

Open Mission Control Technologies (Open MCT) for Mission Control Web Services (MCWS)
JavaScript
8
star
18

MGViz

Multi-Mission Geographic Information System (MMGIS) Global Navigation Satellite System (GNSS) Visualizer
JavaScript
8
star
19

seq-json-schema

Standardized JSON Schema for authoring multi-mission sequences.
TypeScript
7
star
20

labelocity

Flexible, customizable, multimission automated system for PDS4 label production
Shell
7
star
21

timecraftjs

Time conversion using NAIF CSPICE Toolkit in JavaScript via Emscripten.
HCL
6
star
22

slim-starterkit

Repository template / starter-kit for best-practices in repository project setup, including open source essentials like contributing guides, licenses, code of conducts, issue / PR templates, etc.
5
star
23

AIT-CFS

HTML
5
star
24

aerie-gateway

The API gateway for Aerie.
TypeScript
4
star
25

aerie-lander

An example Merlin mission model
Java
4
star
26

aerie-mission-model-template

This is a template project for starting an Aerie mission model.
Java
4
star
27

aerie-cli

An unofficial CLI for interacting with Aerie planning software
Python
3
star
28

aerie-ampcs

Utility functions to convert a standard XML AMPCS command dictionary to JavaScript.
JavaScript
3
star
29

aerie-docs

The main documentation site for Aerie.
JavaScript
3
star
30

AFIDS-POMM

AFIDS-POMM
Python
3
star
31

slim-cli

Command-line Interface for Software Lifecycle Improvement and Modernization (SLIM)
Python
2
star
32

anms-docs

User Guide and Product Guide source for the ANMS
CMake
2
star
33

slim-config-detect-secrets

Additional configuration for the open-source project detect-secrets to enhance secret type detection and streamline the process.
Python
2
star
34

BSL

BPSec Library (BSL)
2
star
35

BSL-docs

BSL-docs
2
star
36

synopsis

Science Yield improvemeNt via Onboard Prioritization and Summary of Information System (SYNOPSIS)
C
1
star
37

slim-leaderboard

Generates a report of SLIM best practices compliance.
Python
1
star
38

DECISION

Data-driven Efficient Configuration of Instruments by Scientific Intent for Operational Needs (DECISION)
HTML
1
star
39

anms-ace

The AMM CODEC Engine (ACE)
Python
1
star
40

anms-camp

C code generator for AMP
Python
1
star
41

AMPCS

AMMOS Mission Data Processing and Control System
1
star
42

anms

Asynchronous Network Management System (ANMS)
JavaScript
1
star
43

aerie-ts-user-code-runner

TypeScript
1
star
44

aerie-simple-model-power

Simple spacecraft power model for the Aerie modeling and simulation framework
Java
1
star
45

aerie-pmc

Aerie Project Management Committee
1
star