The CSZ@PDX project contains two separate data visualization applications built to enable Civil Engineers to more easily analyze ground motions in the Cascadia Subduction Zone. The aim is to provide information that will help researchers and engineers enhance earthquake resiliency in the Pacific Northwest. These applications are used by organizations including the Oregon Department of Transportation, Oregon Military Department, and researchers at Portland State University.
Tech
Front End Technologies
The front-end applications are contained in a Single Page Application built with TypeScript and React, which queries the back-end via a REST API. It utilizes only functional components with React hooks for state-management. Notable libraries used include:
- Material UI for form input controls, styling, and icons.
- Leaflet is used for drawing and navigating the map.
- D3 is used for drawing the line visualizations and the map data key.
- TurfJS is used for drawing the actual map data shapes with a feature meant for topography. The map data shapes are rendered within a web-worker to ensure the user experience of the site stays snappy.
Back End Technologies
The back-end application is written in Python using the Falcon framework, running under a GUnicorn server. Large datasets are stored in .NC
files, which are loaded and indexed using xarray. In some cases data is pre-processed with Scipy before it's sent to the client.
The API is publicly available at the /api
endpoint and can serve data in a compressed format (for the front-end application) or in common GeoJSON for analysis in external tools.
M9 Application
This application is an interface for exploring and evaluating the huge dataset generated from a series of simulations performed by the University of Washington as a part of the M9, or "Magnitude 9" project.
Much of the dataset for the M9CSZ was generated by a series of simulations performed by researchers at the University of Washington.
Only a small subset of this data is available publicly without logging in.
ARS Application
The ARS application started life as a separate project which existed as a tiny web page with a form processed by PHP that called into MATLAB. This downloaded a file.