fwapg

Extends British Columbia's Freshwater Atlas with PostgreSQL/PostGIS.
https://github.com/smnorris/fwapg

Category: Hydrosphere
Sub Category: Freshwater and Hydrology

Keywords

british-columbia freshwater-atlas fwa lakes linear-referencing postgis rivers streams watersheds

Last synced: about 22 hours ago
JSON representation

Repository metadata

PostgreSQL tools for working with British Columbia's Freshwater Atlas

README.md

fwapg

fwapg extends British Columbia's Freshwater Atlas (FWA) with PostgreSQL/PostGIS. fwapg provides additional tables, indexes and functions to:

  • quickly translate arbitrary point locations (X,Y) to a linear reference positions (blue_line_key, measure) on the stream network
  • enable speedy upstream/downstream queries throughout BC
  • quickly and cleanly generate watershed boundaries upstream of arbitrary locations
  • enable cross-boundary queries by combining FWA data with data from neighbouring jurisdictions
  • enable querying of FWA features via spatial SQL
  • provide gradient values for every FWA stream
  • enable quickly serving FWA features as vector tiles (MVT)
  • enable quickly serving FWA features and custom fwapg functions
  • link additional data to FWA streams (PCIC mean annual discharge, modelled channel width, upstream precipitation)

See documentation for setup and usage details, plus table and function references.

Quickstart

  1. Ensure all requirements/dependencies are met/installed:

    • access to a PostgreSQL (13-16, 17 is not yet supported) database with the PostGIS extension (>=3.1) installed
    • GDAL >=3.4
    • Python 3
    • bcdata
    • make/unzip/curl/awscli/ etc (see Dockerfile)
  2. Ensure you have a DATABASE_URL environment variable set to point to your database, for example:

     export DATABASE_URL=postgresql://username:password@localhost:5432/fwapg
    
  3. Get scripts, load and optimize the data:

     git clone https://github.com/smnorris/fwapg.git
     cd fwapg
     make
    

The full load takes some time - but once complete, you can run fwapg enabled queries with your favorite sql client. For example:

Locate the nearest point on the FWA stream network to a X,Y location on Highway 14:

    SELECT 
      gnis_name, 
      blue_line_key, 
      downstream_route_measure
    FROM FWA_IndexPoint(ST_Transform(ST_GeomFromText('POINT(-123.7028 48.3858)', 4326), 3005));

      gnis_name  | blue_line_key | downstream_route_measure
    -------------+---------------+--------------------------
     Sooke River |     354153927 |        350.2530543284006

Generate the watershed upstream of this location:

    SELECT ST_ASText(geom) FROM FWA_WatershedAtMeasure(354153927, 350);

     st_astext
    --------------
    POLYGON((...

Select all stream upstream of this location:

    SELECT ST_ASText(geom)
    FROM FWA_UpstreamTrace(354153927, 350);

     st_astext
    --------------
    LINESTRINGZM((...

See Usage for more examples.

Tile and feature services

fwapg features and functions are served from hillcrestgeo.ca as GeoJSON or vector tiles via these web services and wrappers:

Source data

Development and testing

Extremely basic tests are included for selected functions.
If changing a covered function, run the individual test. For example:

psql -f tests/test_fwa_upstream.sql

All results should be true.

Documentation

Documentation is built from the markdown files in /docs.
Info in the table reference page (03_tables.md) can be autogenerated from comments in the database. To dump the text to stdout:

cd docs
./table_reference.sh 

Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 8 days ago

Total Commits: 458
Total Committers: 2
Avg Commits per committer: 229.0
Development Distribution Score (DDS): 0.031

Commits in past year: 27
Committers in past year: 1
Avg Commits per committer in past year: 27.0
Development Distribution Score (DDS) in past year: 0.0

Name Email Commits
Simon Norris s****s@h****a 444
franTarkenton k****n@g****a 14

Committer domains:


Issue and Pull Request metadata

Last synced: 2 days ago

Total issues: 109
Total pull requests: 21
Average time to close issues: 2 months
Average time to close pull requests: 2 days
Total issue authors: 5
Total pull request authors: 2
Average comments per issue: 1.23
Average comments per pull request: 0.05
Merged pull request: 18
Bot issues: 0
Bot pull requests: 0

Past year issues: 13
Past year pull requests: 4
Past year average time to close issues: about 1 month
Past year average time to close pull requests: 7 days
Past year issue authors: 2
Past year pull request authors: 1
Past year average comments per issue: 1.31
Past year average comments per pull request: 0.25
Past year merged pull request: 4
Past year bot issues: 0
Past year bot pull requests: 0

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/smnorris/fwapg

Top Issue Authors

  • smnorris (103)
  • joethorley (3)
  • paddleman (1)
  • NewGraphEnvironment (1)
  • heckstra (1)

Top Pull Request Authors

  • smnorris (20)
  • franTarkenton (1)

Top Issue Labels

  • bug (24)
  • enhancement (9)
  • data (2)

Top Pull Request Labels


Dependencies

docs/requirements.txt pypi
  • myst_parser *
  • sphinx_rtd_theme *
.github/workflows/build-docker-image.yml actions
  • actions/checkout v3 composite
  • docker/build-push-action f2a1d5e99d037542a71f64918e516c093c6f3fc4 composite
  • docker/login-action 65b78e6e13532edd9afa3aa52ac7964289d1a9c1 composite
  • docker/metadata-action 9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 composite
.github/workflows/build-docs.yml actions
  • actions/checkout master composite
  • ad-m/github-push-action master composite
  • erpcya/sphinx-action feature/#update-sphinx-base-image composite
Dockerfile docker
  • ghcr.io/osgeo/gdal ubuntu-small-3.8.0 build
docker-compose.yml docker
  • postgis/postgis 16-3.4
  • pramsey/pg_featureserv latest
  • pramsey/pg_tileserv latest

Score: 4.356708826689592