From eed4688c3bc8afca1aedca314c6d1f4db8c9b8fc Mon Sep 17 00:00:00 2001 From: Chandler Swift Date: Fri, 28 Jul 2023 13:15:45 -0500 Subject: [PATCH] Add US Public Land (national park/forest) layers --- layers/index.js | 2 ++ layers/national-land/get_data.sh | 22 ++++++++++++++ layers/national-land/index.js | 51 ++++++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100755 layers/national-land/get_data.sh create mode 100644 layers/national-land/index.js diff --git a/layers/index.js b/layers/index.js index 9a7fe5f..eef17c8 100644 --- a/layers/index.js +++ b/layers/index.js @@ -9,6 +9,7 @@ import bikepackingLayer from './bikepacking/layer.js'; import chains from './chains/index.js'; import census_bureau from './census-bureau/index.js'; import states from './states/index.js'; +import national_land from './national-land/index.js'; const layerCategories = [ { // Base maps @@ -75,6 +76,7 @@ const layerCategories = [ chains, census_bureau, states, + national_land, ]; export default layerCategories; diff --git a/layers/national-land/get_data.sh b/layers/national-land/get_data.sh new file mode 100755 index 0000000..ea0f24f --- /dev/null +++ b/layers/national-land/get_data.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +curl --silent --output nps_boundary_geojson.zip http://gstore.unm.edu/apps/rgisarchive/datasets/7bbe8af5-029b-4adf-b06c-134f0dd57226/nps_boundary.derived.geojson +unzip nps_boundary_geojson.zip nps_boundary.geojson +rm nps_boundary_geojson.zip + +# for resolution in 20m 5m; do +# curl --silent --remote-name https://www2.census.gov/geo/tiger/GENZ2022/shp/cb_2022_us_county_${resolution}.zip +# unzip cb_2022_us_county_${resolution}.zip +# ogr2ogr -f GeoJSON us-counties-${resolution}.geojson cb_2022_us_county_${resolution}.shp +# sed -i '/^"crs":/d' us-counties-${resolution}.geojson # TODO: handle this projection properly +# rm cb_2022_us_county_${resolution}.* +# # python cleanup_data.py us-counties-${resolution}.geojson # Only needed for KML files +# done + +# https://data.fs.usda.gov/geodata/edw/datasets.php?xmlKeyword=Original+Proclaimed+National+Forests +curl --silent --remote-name https://data.fs.usda.gov/geodata/edw/edw_resources/shp/S_USA.ProclaimedForest.zip +unzip S_USA.ProclaimedForest.zip +ogr2ogr -f GeoJSON us-national-forests.geojson S_USA.ProclaimedForest.shp +sed -i '/^"crs":/d' us-national-forests.geojson # TODO: handle this projection properly +rm S_USA.ProclaimedForest.* +# TODO: some kind of cleanup to save space? diff --git a/layers/national-land/index.js b/layers/national-land/index.js new file mode 100644 index 0000000..20df671 --- /dev/null +++ b/layers/national-land/index.js @@ -0,0 +1,51 @@ +import GeoJSON from 'ol/format/GeoJSON.js'; +import VectorLayer from 'ol/layer/Vector.js'; +import VectorSource from 'ol/source/Vector.js'; + +import nationalParks from './nps_boundary.geojson?url'; +import nationalForests from './us-national-forests.geojson?url'; + +import { Fill, Stroke, Style, Text } from 'ol/style.js'; + +function style(feature){ + return new Style({ + text: new Text({ + text: feature.get('FORESTNAME') || (feature.get('UNIT_NAME') + " National Park"), + }), + fill: new Fill({ + color: 'rgba(255,255,255,0.4)', + }), + stroke: new Stroke({ + color: '#008800', + width: 1.25, + }), + }); +} + +const layers = { + name: "US Public Land", + layers: [ + { + name: "National Parks", + layer: new VectorLayer({ + source: new VectorSource({ + url: nationalParks, + format: new GeoJSON(), + }), + style: style, + }), + }, + { + name: "National Forests", + layer: new VectorLayer({ + source: new VectorSource({ + url: nationalForests, + format: new GeoJSON(), + }), + style: style, + }), + }, + ], +}; + +export default layers;