From c5408d46c2a79339ef65d80be2b546c8f662a100 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Mon, 6 Apr 2020 12:53:21 -0600 Subject: [PATCH] add observatories endpoint --- geomagio/api/ws/Observatories.py | 34 +++ geomagio/api/ws/app.py | 3 +- geomagio/api/ws/observatory.py | 437 +++++++++++++++++++++++++++++++ 3 files changed, 473 insertions(+), 1 deletion(-) create mode 100644 geomagio/api/ws/Observatories.py create mode 100644 geomagio/api/ws/observatory.py diff --git a/geomagio/api/ws/Observatories.py b/geomagio/api/ws/Observatories.py new file mode 100644 index 000000000..0eb73ebe9 --- /dev/null +++ b/geomagio/api/ws/Observatories.py @@ -0,0 +1,34 @@ +from typing import Dict + +from fastapi import APIRouter + +from .Observatory import OBSERVATORIES + + +router = APIRouter() + + +@router.get("/observatory/") +def get_observatories() -> Dict: + return { + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "id": o.id, + "properties": { + "name": o.name, + "agency": o.agency, + "agency_name": o.agency_name, + "sensor_orientation": o.sensor_orientation, + "sensor_sampling_rate": 0.01, + "declination_base": o.declination_base, + }, + "geometry": { + "type": "Point", + "coordinates": [o.longitude, o.latitude, o.elevation], + }, + } + for o in OBSERVATORIES + ], + } diff --git a/geomagio/api/ws/app.py b/geomagio/api/ws/app.py index 2ab28a600..279e21229 100644 --- a/geomagio/api/ws/app.py +++ b/geomagio/api/ws/app.py @@ -5,7 +5,7 @@ from fastapi.exceptions import RequestValidationError from fastapi.responses import JSONResponse, PlainTextResponse, RedirectResponse from obspy import UTCDateTime -from . import data, elements +from . import data, elements, observatories ERROR_CODE_MESSAGES = { @@ -24,6 +24,7 @@ VERSION = "version" app = FastAPI(docs_url="/docs", openapi_prefix="/ws") app.include_router(data.router) app.include_router(elements.router) +app.include_router(observatories.router) @app.get("/", include_in_schema=False) diff --git a/geomagio/api/ws/observatory.py b/geomagio/api/ws/observatory.py new file mode 100644 index 000000000..dae8dd01e --- /dev/null +++ b/geomagio/api/ws/observatory.py @@ -0,0 +1,437 @@ +from pydantic import BaseModel + + +class Observatory(BaseModel): + id: str + elevation: int + latitude: float + longitude: float + name: str + agency: str + agency_name: str + declination_base: int + sensor_orientation: str + + +OBSERVATORIES = [ + Observatory( + id="BDT", + elevation=1682, + latitude=40.137, + longitude=254.763, + name="Boulder Test", + agency="USGS", + agency_name="United States Geological Survey (USGS)", + declination_base=5527, + sensor_orientation="HDZF", + ), + Observatory( + id="BOU", + elevation=1682, + latitude=40.137, + longitude=254.763, + name="Boulder", + agency="USGS", + agency_name="United States Geological Survey (USGS)", + declination_base=5527, + sensor_orientation="HDZF", + ), + Observatory( + id="TST", + elevation=1682, + latitude=40.137, + longitude=254.763, + name="Boulder Test (ObsRIO)", + agency="USGS", + agency_name="United States Geological Survey (USGS)", + declination_base=5527, + sensor_orientation="HDZF", + ), + Observatory( + id="BRW", + elevation=10, + latitude=203.378, + longitude=71.322, + name="Barrow", + agency="USGS", + agency_name="United States Geological Survey (USGS)", + declination_base=10589, + sensor_orientation="HDZF", + ), + Observatory( + id="BRT", + elevation=10, + latitude=203.378, + longitude=71.322, + name="Barrow Test (ObsRIO)", + agency="USGS", + agency_name="United States Geological Survey (USGS)", + declination_base=10589, + sensor_orientation="HDZF", + ), + Observatory( + id="BSL", + elevation=8, + latitude=30.35, + longitude=270.365, + name="Stennis Space Center", + agency="USGS", + agency_name="United States Geological Survey (USGS)", + declination_base=215772, + sensor_orientation="HDZF", + ), + Observatory( + id="CMO", + elevation=197, + latitude=64.874, + longitude=212.14, + name="College", + agency="USGS", + agency_name="United States Geological Survey (USGS)", + declination_base=12151, + sensor_orientation="HDZF", + ), + Observatory( + id="CMT", + elevation=197, + latitude=64.874, + longitude=212.14, + name="College (ObsRIO)", + agency="USGS", + agency_name="United States Geological Survey (USGS)", + declination_base=12151, + sensor_orientation="HDZF", + ), + Observatory( + id="DED", + elevation=10, + latitude=70.355, + longitude=211.207, + name="Deadhorse", + agency="USGS", + agency_name="United States Geological Survey (USGS)", + declination_base=10755, + sensor_orientation="HDZF", + ), + Observatory( + id="DHT", + elevation=10, + latitude=70.355, + longitude=211.207, + name="Deadhorse Test (ObsRIO)", + agency="USGS", + agency_name="United States Geological Survey (USGS)", + declination_base=10755, + sensor_orientation="HDZF", + ), + Observatory( + id="FRD", + elevation=69, + latitude=38.205, + longitude=282.627, + name="Fredericksburg", + agency="USGS", + agency_name="United States Geological Survey (USGS)", + declination_base=209690, + sensor_orientation="HDZF", + ), + Observatory( + id="FRT", + elevation=69, + latitude=38.205, + longitude=282.627, + name="Fredericksburg Test", + agency="USGS", + agency_name="United States Geological Survey (USGS)", + declination_base=209690, + sensor_orientation="HDZF", + ), + Observatory( + id="FRN", + elevation=331, + latitude=37.091, + longitude=240.282, + name="Fresno", + agency="USGS", + agency_name="United States Geological Survey (USGS)", + declination_base=8097, + sensor_orientation="HDZF", + ), + Observatory( + id="GUA", + elevation=140, + latitude=13.588, + longitude=144.867, + name="Guam", + agency="USGS", + agency_name="United States Geological Survey (USGS)", + declination_base=764, + sensor_orientation="HDZF", + ), + Observatory( + id="HON", + elevation=4, + latitude=21.316, + longitude=202.0, + name="Honolulu", + agency="USGS", + agency_name="United States Geological Survey (USGS)", + declination_base=5982, + sensor_orientation="HDZF", + ), + Observatory( + id="NEW", + elevation=770, + latitude=48.265, + longitude=242.878, + name="Newport", + agency="USGS", + agency_name="United States Geological Survey (USGS)", + declination_base=9547, + sensor_orientation="HDZF", + ), + Observatory( + id="SHU", + elevation=80, + latitude=55.348, + longitude=199.538, + name="Shumagin", + agency="USGS", + agency_name="United States Geological Survey (USGS)", + declination_base=7386, + sensor_orientation="HDZF", + ), + Observatory( + id="SIT", + elevation=24, + latitude=57.058, + longitude=224.675, + name="Sitka", + agency="USGS", + agency_name="United States Geological Survey (USGS)", + declination_base=12349, + sensor_orientation="HDZF", + ), + Observatory( + id="SJG", + elevation=424, + latitude=18.113, + longitude=293.849, + name="San Juan", + agency="USGS", + agency_name="United States Geological Survey (USGS)", + declination_base=208439, + sensor_orientation="HDZF", + ), + Observatory( + id="SJT", + elevation=424, + latitude=18.113, + longitude=293.849, + name="San Juan Test", + agency="USGS", + agency_name="United States Geological Survey (USGS)", + declination_base=208439, + sensor_orientation="HDZF", + ), + Observatory( + id="TUC", + elevation=946, + latitude=32.174, + longitude=249.267, + name="Tucson", + agency="USGS", + agency_name="United States Geological Survey (USGS)", + declination_base=5863, + sensor_orientation="HDZF", + ), + Observatory( + id="USGS", + elevation=1682, + latitude=40.137, + longitude=254.764, + name="USGS", + agency="USGS", + agency_name="United States Geological Survey (USGS)", + declination_base=0, + sensor_orientation="HDZF", + ), + Observatory( + id="BLC", + elevation=0, + latitude=64.3, + longitude=264.0, + name="Baker Lake", + agency="GSC", + agency_name="Geological Survey of Canada (GSC)", + declination_base=0, + sensor_orientation="XYZF", + ), + Observatory( + id="BRD", + elevation=0, + latitude=49.6, + longitude=262.9, + name="Brandon", + agency="GSC", + agency_name="Geological Survey of Canada (GSC)", + declination_base=0, + sensor_orientation="XYZF", + ), + Observatory( + id="CBB", + elevation=0, + latitude=69.2, + longitude=255.0, + name="Cambridge Bay", + agency="GSC", + agency_name="Geological Survey of Canada (GSC)", + declination_base=0, + sensor_orientation="XYZF", + ), + Observatory( + id="EUA", + elevation=0, + latitude=55.3, + longitude=282.3, + name="Eureka", + agency="GSC", + agency_name="Geological Survey of Canada (GSC)", + declination_base=0, + sensor_orientation="XYZF", + ), + Observatory( + id="FCC", + elevation=0, + latitude=58.8, + longitude=265.9, + name="Fort Churchill", + agency="GSC", + agency_name="Geological Survey of Canada (GSC)", + declination_base=0, + sensor_orientation="XYZF", + ), + Observatory( + id="IQA", + elevation=0, + latitude=63.8, + longitude=291.5, + name="Iqaluit", + agency="GSC", + agency_name="Geological Survey of Canada (GSC)", + declination_base=0, + sensor_orientation="XYZF", + ), + Observatory( + id="MEA", + elevation=0, + latitude=54.6, + longitude=246.7, + name="Meanook", + agency="GSC", + agency_name="Geological Survey of Canada (GSC)", + declination_base=0, + sensor_orientation="XYZF", + ), + Observatory( + id="OTT", + elevation=0, + latitude=45.4, + longitude=284.5, + name="Ottawa", + agency="GSC", + agency_name="Geological Survey of Canada (GSC)", + declination_base=0, + sensor_orientation="XYZF", + ), + Observatory( + id="RES", + elevation=0, + latitude=74.7, + longitude=265.1, + name="Resolute Bay", + agency="GSC", + agency_name="Geological Survey of Canada (GSC)", + declination_base=0, + sensor_orientation="XYZF", + ), + Observatory( + id="SNK", + elevation=0, + latitude=62.4, + longitude=245.5, + name="Sanikiluaq", + agency="GSC", + agency_name="Geological Survey of Canada (GSC)", + declination_base=0, + sensor_orientation="XYZF", + ), + Observatory( + id="STJ", + elevation=0, + latitude=47.6, + longitude=307.3, + name="St Johns", + agency="GSC", + agency_name="Geological Survey of Canada (GSC)", + declination_base=0, + sensor_orientation="XYZF", + ), + Observatory( + id="VIC", + elevation=0, + latitude=48.6, + longitude=236.6, + name="Victoria", + agency="GSC", + agency_name="Geological Survey of Canada (GSC)", + declination_base=0, + sensor_orientation="XYZF", + ), + Observatory( + id="YKC", + elevation=0, + latitude=62.4, + longitude=245.5, + name="Yellowknife", + agency="GSC", + agency_name="Geological Survey of Canada (GSC)", + declination_base=0, + sensor_orientation="XYZF", + ), + Observatory( + id="HAD", + elevation=0, + latitude=51.0, + longitude=355.5, + name="Hartland", + agency="BGS", + agency_name="British Geological Survey (BGS)", + declination_base=0, + sensor_orientation="HDZF", + ), + Observatory( + id="HER", + elevation=0, + latitude=-34.4, + longitude=19.2, + name="Hermanus", + agency="SANSA", + agency_name="South African National Space Agency (SANSA)", + declination_base=0, + sensor_orientation="HDZF", + ), + Observatory( + id="KAK", + elevation=36, + latitude=53.77, + longitude=140.18, + name="Kakioka", + agency="JMA", + agency_name="Japan Meteorological Agency (JMA)", + declination_base=0, + sensor_orientation="HDZF", + ), +] + +OBSERVATORY_INDEX = {o.id: o for o in OBSERVATORIES} -- GitLab