GNS-Science/solvis

SPIKE: 3D visualisation for solvis/geojson fault surfaces

Closed this issue · 2 comments

We want web-browser visualiation of fault surfaces that will improve the user experience relative to our current 2D leaflet based rupture map explorer:

Features sought:

  • environments: standalone HTML, Jupyter notebooks, React (for Weka/Kororaa)
  • can do everything that Rupture Explorer does:
    • set initial user viewport, zoom etc
    • full-screen option
    • stepping through ruptures in sequence
    • user zoom, pan etc
    • map layer/tiles for flexible surface details
    • multiple geojson layers (fault surface + rupture)
    • click in feature for more info
    • add widget (plots etc)
  • plus 3D

Try:

things to consider:

  • is licensing compatible with GNS NSHM needs
  • independence from proprietary backend server/services
  • ease of use
  • compatability with existing stack
  • customisation
voj commented

Investigated:

  • MapLibre/Mapbox
  • CesiumJs
  • ArcGIS

All libraries fulfill most requirements.

  • MapLibre is an open source fork of MapBox. I did not investigate this in-depth because there's no built-in GeoJSON layer, and this needs to be implemented in three.js.
  • CesiumJS has support for underground rendering, ticks all the boxes. Active community support, Cesium team are actively answering questions in forum. Once I implemented a workaround for navigation, it worked well. Can handle large GeoJSON datasets. There is support for displaying property data in a pop-up. All custom pop-ups will need to be hand-written. It is no problem to overlay HTML.
  • ArcGIS ticks all the boxes. Beautiful underground navigation. We were informed that we can use this for all use-cases considered. Has trouble rendering larger GeoJSON datasets, and is quite inflexible in displaying them (colour, properties popup, etc). While the API is generally very well though out and the documentation is great, this library could not handle the RSQSim patch geometry well enough.

There are demos for CesiumJS and ArcGIS: daily-science/solvis-jupyterlab#1

voj commented

We decided to go with CesiumJS. We will create a new repo for a Juptyer Notebook widget to consolidate the work from the spike.