diff --git a/layers/index.js b/layers/index.js index 411b74e..41f246a 100644 --- a/layers/index.js +++ b/layers/index.js @@ -19,6 +19,7 @@ import trips from './trips/index.js'; import dot_cams from './dot-cams/index.js'; import survey_markers from './survey-markers/index.js'; import tjx from './tjx/index.js'; +import minnesotaAdventureTrails from './minnesota-adventure-trails/index.js'; const layerCategories = [ { // Base maps @@ -90,6 +91,7 @@ const layerCategories = [ }, ] }, + minnesotaAdventureTrails, survey_markers, dot_cams, trips, diff --git a/layers/minnesota-adventure-trails/.gitignore b/layers/minnesota-adventure-trails/.gitignore new file mode 100644 index 0000000..c6e9438 --- /dev/null +++ b/layers/minnesota-adventure-trails/.gitignore @@ -0,0 +1,2 @@ +*.kmz +routes.js diff --git a/layers/minnesota-adventure-trails/get_data.sh b/layers/minnesota-adventure-trails/get_data.sh new file mode 100755 index 0000000..b72767c --- /dev/null +++ b/layers/minnesota-adventure-trails/get_data.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +# SEMAT: https://www.google.com/maps/d/u/0/viewer?mid=1fd5DwCNSTNyd2ijSa3FcKTXfn85wFD8 +# NEMAT: https://www.google.com/maps/d/u/0/viewer?mid=19EWOYHcIlO9HX3Xwc6peFxMwdhsEt78 +# NCMAT: https://www.google.com/maps/d/u/0/viewer?mid=1qtnoqH2w_E4QT8rDYStKw_S1TWI-cRw + +cd $(dirname $0) + +for file in *.kmz; do + zcat "$file" | ogr2ogr -f GeoJSON "$(basename "$file" .kmz).geojson" /vsistdin/ -skipfailures +done + +# hack hack hack +truncate -s 0 routes.js +i=0 +for file in ./*.geojson; do + echo "import _file$i from '$file?url';" >> routes.js + i=$((i+1)) +done +echo >> routes.js +echo "export default {" >> routes.js +i=0 +for file in ./*.geojson; do + basename=$(basename "$file" .geojson) + echo " \"$basename\": _file$i," >> routes.js + i=$((i+1)) +done +echo "};" >> routes.js diff --git a/layers/minnesota-adventure-trails/index.js b/layers/minnesota-adventure-trails/index.js new file mode 100644 index 0000000..5fc610e --- /dev/null +++ b/layers/minnesota-adventure-trails/index.js @@ -0,0 +1,40 @@ +import VectorLayer from 'ol/layer/Vector'; +import {Vector as VectorSource} from 'ol/source.js'; +import GeoJSON from 'ol/format/GeoJSON.js'; + +import {Style, Stroke} from 'ol/style.js'; + +import data from './routes.js'; + +const trails = { + name: "Minnesota Adventure Trails", + details: `https://minnesotaadventuretrails.com/`, + layers: [], +}; + +for (let [chain, url] of Object.entries(data)) { + const colors = '0,0,0'; + const vectorLayer = new VectorLayer({ + source: new VectorSource({ + url: url, + format: new GeoJSON, + }), + style: function(feature, resolution){ + return new Style({ + stroke: new Stroke({ + color: `rgba(${colors},${Math.min(1, Math.pow(resolution/10, 1/4))})`, + width: 10/Math.pow(resolution, 1/4), + }) + }); + }, + }); + + trails.layers.push({ + name: chain, + layer: vectorLayer, + }); +} + +trails.layers.sort((a, b) => a.name > b.name ? 1 : -1); // Names are always unique + +export default trails; diff --git a/layers/states/visited.js b/layers/states/visited.js index 7f4ae7e..d52ee15 100644 --- a/layers/states/visited.js +++ b/layers/states/visited.js @@ -16,7 +16,7 @@ const visitedStatesLists = { 'IL', 'IN', 'KS', - // 'KY', + 'KY', 'LA', 'MA', 'MD', diff --git a/vite.config.js b/vite.config.js index f7e7419..3620447 100644 --- a/vite.config.js +++ b/vite.config.js @@ -4,7 +4,7 @@ export default () => { // https://stackoverflow.com/a/71162041/3814663 const commitDate = childProcess.execSync('git log -1 --format=%cI').toString().trimEnd(); const commitHash = childProcess.execSync('git rev-parse HEAD').toString().trimEnd(); - const fileDates = childProcess.execSync(`find . -iname '*.geojson' -not -path './dist/*' | xargs ls -lh`).toString().trimEnd(); + const fileDates = childProcess.execSync(`find . -iname '*.geojson' -not -path './dist/*' -exec ls -lh {} +`).toString().trimEnd(); process.env.VITE_GIT_COMMIT_DATE = commitDate; process.env.VITE_GIT_COMMIT_HASH = commitHash; process.env.VITE_FILE_DATES = fileDates;