diff --git a/.gitignore b/.gitignore index 4ffd683..99cdcdf 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,5 @@ layers/survey-markers/states.js layers/tjx/data/chains.js layers/crop-history/data/counties.js layers/mn-sales-tax/data/history.js -layers/airports/data/types.js .direnv venv diff --git a/layers/airports/get_data.py b/layers/airports/get_data.py deleted file mode 100755 index ec19efd..0000000 --- a/layers/airports/get_data.py +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env python -import csv -import io -import json -import urllib.request - -index_imports = [] - -resp = urllib.request.urlopen("https://davidmegginson.github.io/ourairports-data/airports.csv") -airports = list(csv.DictReader(io.TextIOWrapper(resp))) -types = set([a['type'] for a in airports]) - -for airport_type in types: - - geojson = { - "type": "FeatureCollection", - "features": [], - } - - for airport in airports: - if airport['type'] == airport_type: - f = { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [float(airport['longitude_deg']), float(airport['latitude_deg'])] - }, - "properties": { - "ID": airport['ident'], - "Name": airport['name'], - "City": airport['municipality'], - "Country": airport['iso_country'], - "Region": airport['iso_region'], - "Elevation (ft)": airport['elevation_ft'], - } - } - if airport['wikipedia_link']: - f['properties']['Wikipedia'] = airport['wikipedia_link'] - if airport['home_link']: - f['properties']['Website'] = airport['home_link'] - geojson['features'].append(f) - - with open(f'data/{airport_type}.geojson', 'w') as f: - f.write(json.dumps(geojson)) - -with open("data/types.js", 'w') as f: - for airport_type in types: - f.write(f"import {airport_type} from './{airport_type}.geojson?url';\n") - f.write('\nexport default {\n') - for airport_type in types: - f.write(f" {airport_type}: {airport_type},\n") - f.write("};\n") diff --git a/layers/airports/index.js b/layers/airports/index.js deleted file mode 100644 index 82955d8..0000000 --- a/layers/airports/index.js +++ /dev/null @@ -1,40 +0,0 @@ -import GeoJSON from 'ol/format/GeoJSON.js'; -import VectorLayer from 'ol/layer/Vector.js'; -import VectorSource from 'ol/source/Vector.js'; - -import types from './data/types.js'; - -import { Circle, Fill, Stroke, Style } from 'ol/style.js'; - -const layers = { - name: "Airports", - layers: [], -}; - -for (let [name, url] of Object.entries(types)) { - const layer = new VectorLayer({ - source: new VectorSource({ - url, - format: new GeoJSON, - }), - style: new Style({ - image: new Circle({ - radius: name == 'large_airport' ? 10 : name == "small_airport" ? 3 : 5, - fill: new Fill({ - color: 'rgba(255,255,255,0.4)', - }), - stroke: new Stroke({ - color: 'red', - width: name == 'large_airport' ? 4 : 2, - }), - }), - }), - }); - - layers.layers.push({ - name, - layer, - }); -} - -export default layers; diff --git a/layers/chandler/layer.js b/layers/chandler/layer.js index 6848f36..85ac3f1 100644 --- a/layers/chandler/layer.js +++ b/layers/chandler/layer.js @@ -5,15 +5,24 @@ import {Style} from 'ol/style.js'; import Icon from 'ol/style/Icon.js'; import pinURL from '/layers/chandler/pin.svg?url'; // TODO: remove `?url`? -import { Collection, Feature } from 'ol'; +import { Feature } from 'ol'; import { Point } from 'ol/geom'; import { fromLonLat } from 'ol/proj'; -let features = new Collection(); +const res = await fetch("https://whereis.chandlerswift.com/api/0/last"); +const locs = await res.json(); +const loc = locs[0]; + +let feature = new Feature({ + geometry: new Point(fromLonLat([loc.lon, loc.lat])), + ...loc +}); const vectorLayer = new VectorLayer({ source: new VectorSource({ - features, + features: [ + feature, + ] }), style: new Style({ image: new Icon({ @@ -23,23 +32,12 @@ const vectorLayer = new VectorLayer({ }), }); -async function refresh(){ +setInterval(async function(){ const res = await fetch("https://whereis.chandlerswift.com/api/0/last"); const locs = await res.json(); const loc = locs[0]; - // TODO: I could probably just `features[0] = …` but I'm not sure if that causes problems with re-rendering features - if (features.getLength() == 0) { - features.push(new Feature({ - geometry: new Point(fromLonLat([loc.lon, loc.lat])), - ...loc - })); - } else { - features.item(0).setProperties(loc); // TODO: this won't remove a property if it was in a previous response but not this one - features.item(0).getGeometry().setCoordinates(fromLonLat([loc.lon, loc.lat])); - } -} - -refresh(); -setInterval(refresh, 10 * 1000); + feature.setProperties(loc); // TODO: this won't remove a property if it was in a previous response but not this one + feature.getGeometry().setCoordinates(fromLonLat([loc.lon, loc.lat])); +}, 10 * 1000); export default vectorLayer; diff --git a/layers/index.js b/layers/index.js index cbe48d9..7285f17 100644 --- a/layers/index.js +++ b/layers/index.js @@ -26,7 +26,6 @@ import upsServiceAreas from './ups/index.js'; import fccTowersLayer from './fcc/towers/layer.js'; import mnSalesTaxLayers from './mn-sales-tax/index.js'; import versatilesLayers from './versatiles.js'; -import airports from './airports/index.js'; const layerCategories = [ { // Base maps @@ -119,7 +118,6 @@ const layerCategories = [ tjx, cropHistory, mnSalesTaxLayers, - airports, ]; export default layerCategories; diff --git a/layers/states/visited.js b/layers/states/visited.js index 917fea2..42fa417 100644 --- a/layers/states/visited.js +++ b/layers/states/visited.js @@ -43,7 +43,7 @@ const visitedStatesLists = { 'SD', 'TN', 'TX', - 'UT', + // 'UT', 'VA', 'VT', 'WA', @@ -95,7 +95,7 @@ const visitedStatesLists = { 'SD', 'TN', 'TX', - 'UT', + // 'UT', 'VA', // 'VT', 'WA',