• Stars
    star
    1,165
  • Rank 40,073 (Top 0.8 %)
  • Language
    TypeScript
  • License
    Apache License 2.0
  • Created over 10 years ago
  • Updated about 2 months ago

Reviews

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

Repository Details

A library for building rich, web-based geospatial data platforms.

TerriaJS

Build Status Docs

Terria logo

TerriaJS is a library for building rich, web-based geospatial data explorers, used to drive National Map, Digital Earth Australia Map, NSW Spatial Digital Twin and NEII Viewer (and many others). It uses Cesium and WebGL for a full 3D globe in the browser with no plugins. It gracefully falls back to 2D with Leaflet on systems that can't run Cesium. It can handle catalogs of tens of thousands of layers, with dozens of geospatial file and web service types supported. It is almost entirely JavaScript in the browser, meaning it can even be deployed as a static website, making it simple and cheap to host.


We have just released a brand new version of Terria β€” verson 8!

We've put together a list of things we've removed from version 8 and some steps to help you migrate to the new version in our migration guide

Not ready to move to version 8 yet? You can find terriajs version 7 here: https://github.com/TerriaJS/terriajs/tree/terriajs7


Features

  • Nested catalog of layers which can be independently enabled to create mashups of many layers.
  • Supports GeoJSON, KML, CSV (point and region-mapped), GPX, GeoRSS, CZML and zipped shapefile file types natively.
  • Supports WMS, WFS, WMTS, Esri MapServer, Esri FeatureServer, Bing Maps, Carto Maps, Cesium Ion Imagery, OpenStreetMap-style raster tiles, Mapbox, SDMX, 3D Tiles and GTFS and Sensor Observation Service item types.
  • Supports querying WMS, WFS, Esri MapServer, CSW, CKAN, Socrata, OpenDataSoft and SDMX services for groups of items.
  • 3D globe (Cesium) or 2D mode (Leaflet). 3D objects supported in CZML format.
  • Time dimensions supported for CSV, CZML, WMS. Automatically animate layers, or slide the time control forward and backward.
  • Drag-and-drop files from your desktop to the browser, for instant visualisation (no file upload to server required).
  • All ASGS (Australian Statistical Geographic Standard) region types (LGA, SA2, commonwealth electoral district etc) supported for CSV region mapping, plus several others: Primary Health Networks, Statistical Local Areas, ISO 3 letter country codes, etc.
  • Users can generate a reusable URL link of their current map view, to quickly share mashups of web-hosted data.
  • The interface is internationalised and translations are available for French, Italian and Japanese. Partial translations have also been contributed for other languages (see TerriaJS weblate)

Terria screenshot

Who's using TerriaJS?

Sites developed by Data61

Not Data61

Sites we're aware of that are using TerriaJS. These are not endorsements or testimonials.

Technical

  • NodeJS v14 or v16 are supported
  • Built in TypeScript & ES2020+ JavaScript, compiled with Babel to ES5.
  • Supports modern browsers (recent versions of Microsoft Edge, Mozilla Firefox & Google Chrome).
  • TerriaJS Server component runs in NodeJS and provides proxying for web services that don't support CORS or require authentication. Instead of using TerriaJS-Sever proxy service, an alternative proxying service URL can be specified. See Specify an alternative proxy server URL
  • Dependencies are managed in NPM and assembled using WebPack.

Getting Started

The easiest way to build your own Terria-based map is using the TerriaMap starting point. This gives you the HTML structure, server and build processes you need to get a site up and running immediately.

See Getting Started in the Documentation for all the details.

Components and naming

  • Terriaβ„’ is the overall name for the spatial data platform and the team that built TerriaJS.
  • TerriaJS is this TypeScript/JavaScript library consisting of the 2D/3D map, catalog management and many spatial data connectors.
  • Cesium is the 3D WebGL rendering library used by TerriaJS, which provides many low-level functions for loading and displaying imagery and spatial formats such as GeoJSON and KML.
  • TerriaMap is a complete website starting point, using TerriaJS.
  • TerriaJS-Server is a NodeJS-based server that provides proxying and support services for TerriaJS.
  • NationalMap is the flagship Terria deployment, and the origin of the TerriaJS library.

Related components

  • TerriaMapStatic, a pre-built version of TerriaMap, which can be deployed as a static HTML website, such as on Github Pages.

Big Thanks

Hosting and contribution framework for community translations of TerriaJS provided by Weblate under the Libre plan for open source software. See our translation progress for different languages:

Translation status

Join the community

Get in touch!

Publishing TerriaJS

From main using GitHub Actions (preferred method):

  • Checkout and pull main branch of terriajs, run yarn install if necessary.
  • Bump the version number in package.json.
  • Review and edit CHANGES.md.
    • Ensure that entries for new changes are written in the right section by diffing against the last version. Make sure the section name matches the version you set in package.json above.
    • e.g. git diff 8.2.25 HEAD -- CHANGES.md (where 8.2.25 is the previous published version)
    • Or using GitHub web interface https://github.com/TerriaJS/terriajs/compare/8.2.25...main (change the version and master/next to match the previous release and branch)
    • Finalise the heading of the version to be released with version number and date.
    • Add a heading above for upcoming changes to be documented under.
  • Commit and push your changes on a branch and make a PR to main branch.
  • Get someone to review and merge the PR.
  • Wait for slack notification of successful/failed publish.
  • πŸ˜„

Publishing to npm without the GitHub Action (not for standard releases):

This method should not be used to publish versions at the tip of main or another branch that is often used for releases. To publish a new version of TerriaJS to npm with this method, you'll need to be listed as a collaborator here. Existing collaborators can add new ones. Then:

  • Checkout and pull the branch of terriajs to be deployed, run yarn install if necessary.
  • Bump the version number in package.json. Follow semver.
  • Appropriately update CHANGES.md, ensuring that changes are listed in their correct sections.
  • Commit and push your changes and make a PR to the branch to be deployed.
  • Get someone to review and merge the PR.
  • Fetch and checkout the merge commit made by merging the PR.
  • rm -rf wwwroot/build
  • Make sure you don't have any changes in your working directory.
  • gulp lint release
  • npm publish --tag your-tag (for a release not at the tip of main a tag must be set, and it must not be latest or next. For releases on old versions you could use e.g. 6-5-x or 6-x-x as a tag, for upcoming features a short name could be used)
  • Ensure that CHANGES.md on main is also updated to list the release and clearly note the nature and reason for release.

The above will publish a new version to npm and also tag that version on GitHub.

More Repositories

1

TerriaMap

Catalog-based web geospatial visualisation platform.
HTML
322
star
2

nationalmap

Australia's NationalMap
122
star
3

terriajs-server

NodeJS server for TerriaJS, consisting of a CORS proxy, proj4 CRS lookup service, ogr2ogr conversion service, and express static server.
JavaScript
49
star
4

npmgitdev

A wrapper around npm that allows real live git repos to be cloned into node_modules.
JavaScript
23
star
5

aremi-tmy

A tool to work out Typical Meteorological Year (TMY) from ground weather station observations and satellite solar irradiance data.
Java
13
star
6

aremi-natmap

AREMI fork of the NICTA/nationalmap repo.
11
star
7

neii-viewer

Data viewer for National Environmental Information Infrastructure
HTML
8
star
8

NationalMap-Catalog

The catalog (init files) for National Map
6
star
9

vector-tile-server

Configuration and data for Tessera server
JavaScript
6
star
10

terria-cube

TerriaCube - prototype integration of TerriaJS and the Digital Earth Australia
6
star
11

RaPPMap

Fork of TerriaJS/TerriaMap for GEOGLAM RAPP
5
star
12

boundary-tiles

Generate vector tiles from boundary geospatial files
JavaScript
3
star
13

plugin-api

(Experimental) api for TerriaJS plugin components
TypeScript
3
star
14

terrarium

Showcase for Terria maps and features
HTML
3
star
15

Documentation

Automatically generated documentation for TerriaJS. Made by TerriaJS/MakeDocs.
3
star
16

SydneyESP

Environmental Sustainability Portal for the City of Sydney
HTML
2
star
17

saas-catalogs-public

Catalogs for SaaS (until we come up with something better)
JavaScript
2
star
18

DataSourceEditor

JavaScript
2
star
19

generate-terriajs-schema

NodeJS tool which generates JSON schema files from TerriaJS source, used by DataSourceEditor (based on JSONEditor)
JavaScript
2
star
20

InvestorMap

Terria instance for Investor Map (formerly Northern Australia investment map)
JavaScript
2
star
21

catalog-editor

Automatically generated data source editor. Will replace DataSourceEditor after testing.
JavaScript
2
star
22

de-australia-map

Digital Earth Australia platform developed for publishing Satellite Imagery processed by Geoscience Australia (GA) and National Computational Infrastructure (NCI)
2
star
23

GreaterSydneyExplorer

Terria component of Greater Sydney Commission project
HTML
2
star
24

magda-web

JavaScript
1
star
25

magda-ckan

CKAN Crawler for Magda
Scala
1
star
26

thredds-catalog-crawler

A package for crawling THREDDS catalogs
JavaScript
1
star
27

3D-Geospatial-Data-Formats-Field-Guide

1
star
28

magda-registry

JavaScript
1
star
29

plugin-sample

A sample terriajs plugin that adds a mode for drawing 3d boxes
TypeScript
1
star
30

catalog-converter-ui

TypeScript
1
star
31

terriajs-indexer

A tool for generating static search indexes for TerriaJS datasets.
JavaScript
1
star
32

terriajs-schema

The JSON schemas used to validate catalog files and populate the Data Source Editor.
JavaScript
1
star