diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 020efab6..a11a0810 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,7 +50,7 @@ jobs: poetry env use 3.13 poetry install - name: Unit test with pytest - run: | + run: | poetry run coverage run -m pytest -m "not integration" tests poetry run coverage report poetry run coverage xml diff --git a/.gitignore b/.gitignore index d66f4de2..2b22b687 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ # Project-specific .env* +.venv* [Ll]ogs/ test_venv/ grib2_to_cb_test/test/2119312000003 diff --git a/compose.yaml b/compose.yaml index 155bbff1..cc3096fb 100644 --- a/compose.yaml +++ b/compose.yaml @@ -1,4 +1,3 @@ -version: "3.2" secrets: CREDENTIALS_FILE: file: ${HOME}/credentials diff --git a/docker/import/Dockerfile b/docker/import/Dockerfile index 01a55b2c..43de08c7 100644 --- a/docker/import/Dockerfile +++ b/docker/import/Dockerfile @@ -27,7 +27,7 @@ RUN groupadd --gid ${ID} ${USERNAME} && \ RUN apt-get update && apt-get upgrade -y && \ # Install runtime deps for the script apt-get install -y curl jq && \ - apt-get clean && rm -rf /var/lib/apt/lists/* + apt-get clean && rm -rf /var/lib/apt/lists/* WORKDIR /app diff --git a/docker/ingest/Dockerfile b/docker/ingest/Dockerfile index f5c73e37..f5f00309 100644 --- a/docker/ingest/Dockerfile +++ b/docker/ingest/Dockerfile @@ -3,12 +3,12 @@ # NOTE - avoid installing python packages via apt - they install an alternate version of Python # The builder image, used for building the virtual environment -FROM python:3.13-slim-bookworm AS builder +FROM python:3.14-slim-bookworm AS builder RUN apt-get update && \ # cftime build deps apt-get install -y build-essential && \ - apt-get clean && rm -rf /var/lib/apt/lists/* + apt-get clean && rm -rf /var/lib/apt/lists/* # Make sure the python tooling is up-to-date for when it's copied into the prod layer RUN pip install --no-cache-dir --upgrade pip setuptools wheel @@ -23,7 +23,8 @@ WORKDIR /app # Install just the runtime dependencies, no dev tooling COPY pyproject.toml poetry.lock ./ -RUN poetry install --without dev --no-root && rm -rf $POETRY_CACHE_DIR +COPY third_party/NCEPLIBS-bufr/wheel_dist ./third_party/NCEPLIBS-bufr/wheel_dist +RUN ls && poetry install --without dev --no-root && rm -rf $POETRY_CACHE_DIR # The dev image, used for testing @@ -44,7 +45,7 @@ ENV VIRTUAL_ENV=/app/.venv \ # The runtime image, used for running just the application with its dependencies -FROM python:3.13-slim-bookworm AS prod +FROM python:3.14-slim-bookworm AS prod ARG COMMITBRANCH=development ARG COMMITSHA=unspecified @@ -80,7 +81,7 @@ RUN groupadd --gid ${ID} ${USERNAME} && \ # Run OS updates RUN apt-get update && apt-get upgrade -y && \ - apt-get clean && rm -rf /var/lib/apt/lists/* + apt-get clean && rm -rf /var/lib/apt/lists/* # Copy just the vxingest app COPY ./src/ /app/ diff --git a/mats_metadata_and_indexes/metadata_files/README.md b/mats_metadata_and_indexes/metadata_files/README.md index 54d51b08..ebb6b2ef 100644 --- a/mats_metadata_and_indexes/metadata_files/README.md +++ b/mats_metadata_and_indexes/metadata_files/README.md @@ -1,13 +1,16 @@ # MATS metadata and ingest documents -The system relies on a couple of kinds of metadata. Ingest builders use ingest documents to control how an output document is created from its input source. The running system relies on various metadata documents to define what data is available and how it should be repesented in a GUI interface. +The system relies on a couple of kinds of metadata. Ingest builders use ingest documents to control how an output document is created from its input source. The running system relies on various metadata documents to define what data is available and how it should be represented in a GUI interface. ## Ingest documents -Ingest documents contain templates that define how a builder should assemble an out document. +Ingest documents contain templates that define how a builder should assemble an output document. ### ingest document Example +NOTE: prepbufr ingest documents have an extra element called "mnemonic_mapping" that maps prepbufr mnemonics to the template variables. This extra step is necessary because prepbufr fields can vary due to an associated program code. +For example a program code of 1 is an initial value and a program code of 8 is a virtual value. The template.mnemonic_mapping section specifies whether the event program code is meaningful and which program code value is desired. Refer to the prepbufr [README.md](https://github.com/NOAA-GSL/VxIngest/blob/72793df75696ef711d79553a82be3b8a6c04653c/src/vxingest/prepbufr_to_cb/README.md) for a complete example and explanation of the prepbufr ingest template. + This is the contents of "MD:V01:METAR:obs:ingest:netcdf". If you intend to use a metadata ingest document you must either be certain that it already exists or you must create it. @@ -62,6 +65,10 @@ be certain that it already exists or you must create it. } ``` +### Ingest Template DSL + +Ingest templates implement a simple DSL (Domain specific Language) described here for a netcdf builder. The same syntax applies to all builder classes. + The line ```"builder_type": "NetcdfObsBuilderV01"``` defines a python class. These builder classes are defined diff --git a/mats_metadata_and_indexes/metadata_files/igra2-station-list.txt b/mats_metadata_and_indexes/metadata_files/igra2-station-list.txt new file mode 100644 index 00000000..e69de29b diff --git a/mats_metadata_and_indexes/metadata_files/version1_raob_stations.json b/mats_metadata_and_indexes/metadata_files/version1_raob_stations.json new file mode 100644 index 00000000..e69de29b diff --git a/mats_metadata_and_indexes/metadata_files/version2_raob_stations.json b/mats_metadata_and_indexes/metadata_files/version2_raob_stations.json new file mode 100644 index 00000000..e69de29b diff --git a/meta_update_middleware/go.mod b/meta_update_middleware/go.mod index 1e4295fc..24e4170b 100644 --- a/meta_update_middleware/go.mod +++ b/meta_update_middleware/go.mod @@ -3,12 +3,12 @@ module meta-update go 1.23.0 require ( - github.com/couchbase/gocb/v2 v2.9.4 + github.com/couchbase/gocb/v2 v2.10.0 gopkg.in/yaml.v3 v3.0.1 ) require ( - github.com/couchbase/gocbcore/v10 v10.6.0 // indirect + github.com/couchbase/gocbcore/v10 v10.7.0 // indirect github.com/couchbase/gocbcoreps v0.1.3 // indirect github.com/couchbase/goprotostellar v1.0.2 // indirect github.com/couchbaselabs/gocbconnstr/v2 v2.0.0-20240607131231-fb385523de28 // indirect @@ -16,6 +16,7 @@ require ( github.com/go-logr/stdr v1.2.2 // indirect github.com/golang/snappy v1.0.0 // indirect github.com/google/uuid v1.6.0 // indirect + github.com/gorilla/websocket v1.5.3 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect diff --git a/meta_update_middleware/go.sum b/meta_update_middleware/go.sum index f12dfda5..f11444dd 100644 --- a/meta_update_middleware/go.sum +++ b/meta_update_middleware/go.sum @@ -4,12 +4,10 @@ github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZx github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/couchbase/gocb/v2 v2.9.4 h1:PNYu6dqLFwIdHlEfZBzYE9Nh9NDtPu1/KLRF76bupdU= -github.com/couchbase/gocb/v2 v2.9.4/go.mod h1:9ASgklWMzKu2IG3By0i7MyQa75qgZhp4yqk6hTvzFJU= -github.com/couchbase/gocbcore/v10 v10.5.4 h1:uD7Lh0qpXI/cm7fUg4LlYaG1L8jlUqmFoY7q6CU1p/U= -github.com/couchbase/gocbcore/v10 v10.5.4/go.mod h1:xtcM+sfxVB6p7ZPoFFH2t/PmZHV7+4HT+LTy9ZvMG2Y= -github.com/couchbase/gocbcore/v10 v10.6.0 h1:JnQtjOgq7I5GA4+CbKzRGtTM0KHY3SiJ3xdH2f4X+9Y= -github.com/couchbase/gocbcore/v10 v10.6.0/go.mod h1:Ssl44kA9WoSjFjJ/zdZoFu9I+qCfA4JiW9qnpOpi+pk= +github.com/couchbase/gocb/v2 v2.10.0 h1:NNxZ4okToU1Ylqp6F8tE41CEJQPhb2WjufryAkeubOk= +github.com/couchbase/gocb/v2 v2.10.0/go.mod h1:OSbMfQkP7ltbKiDZhsT2mGDhkQNmvGXxptKcxAUJQ2Y= +github.com/couchbase/gocbcore/v10 v10.7.0 h1:lAEi0PNeEGKOu8pWrPUdtLOT2oGr1J/UTdGHVPC3r/0= +github.com/couchbase/gocbcore/v10 v10.7.0/go.mod h1:Q8JWVenMCEOuRgrDQKApHbzzPif38HzefGgRVe9apAI= github.com/couchbase/gocbcoreps v0.1.3 h1:fILaKGCjxFIeCgAUG8FGmRDSpdrRggohOMKEgO9CUpg= github.com/couchbase/gocbcoreps v0.1.3/go.mod h1:hBFpDNPnRno6HH5cRXExhqXYRmTsFJlFHQx7vztcXPk= github.com/couchbase/goprotostellar v1.0.2 h1:yoPbAL9sCtcyZ5e/DcU5PRMOEFaJrF9awXYu3VPfGls= @@ -46,10 +44,12 @@ github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -101,12 +101,10 @@ go.opentelemetry.io/otel/metric v1.33.0 h1:r+JOocAyeRVXD8lZpjdQjzMadVZp2M4WmQ+5W go.opentelemetry.io/otel/metric v1.33.0/go.mod h1:L9+Fyctbp6HFTddIxClbQkjtubW6O9QS3Ann/M82u6M= go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk= -go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0= -go.opentelemetry.io/otel/sdk/metric v1.31.0 h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc= -go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8= -go.opentelemetry.io/otel/trace v1.33.0 h1:cCJuF7LRjUFso9LPnEAHJDB2pqzp+hbO8eu1qqW2d/s= -go.opentelemetry.io/otel/trace v1.33.0/go.mod h1:uIcdVUZMpTAmz0tI1z04GoVSezK37CbGV4fr1f2nBck= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= diff --git a/poetry.lock b/poetry.lock index a506f925..2307ef50 100644 --- a/poetry.lock +++ b/poetry.lock @@ -22,14 +22,14 @@ tests-mypy = ["mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" a [[package]] name = "certifi" -version = "2025.1.31" +version = "2025.4.26" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" groups = ["main"] files = [ - {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, - {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, + {file = "certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3"}, + {file = "certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6"}, ] [[package]] @@ -185,116 +185,116 @@ numpy = {version = ">=1.26.0b1", markers = "python_version >= \"3.12.0.rc1\""} [[package]] name = "charset-normalizer" -version = "3.4.1" +version = "3.4.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" groups = ["main"] files = [ - {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-win32.whl", hash = "sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-win32.whl", hash = "sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765"}, - {file = "charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85"}, - {file = "charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c48ed483eb946e6c04ccbe02c6b4d1d48e51944b6db70f697e089c193404941"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2d318c11350e10662026ad0eb71bb51c7812fc8590825304ae0bdd4ac283acd"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9cbfacf36cb0ec2897ce0ebc5d08ca44213af24265bd56eca54bee7923c48fd6"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18dd2e350387c87dabe711b86f83c9c78af772c748904d372ade190b5c7c9d4d"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8075c35cd58273fee266c58c0c9b670947c19df5fb98e7b66710e04ad4e9ff86"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5bf4545e3b962767e5c06fe1738f951f77d27967cb2caa64c28be7c4563e162c"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a6ab32f7210554a96cd9e33abe3ddd86732beeafc7a28e9955cdf22ffadbab0"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b33de11b92e9f75a2b545d6e9b6f37e398d86c3e9e9653c4864eb7e89c5773ef"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8755483f3c00d6c9a77f490c17e6ab0c8729e39e6390328e42521ef175380ae6"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:68a328e5f55ec37c57f19ebb1fdc56a248db2e3e9ad769919a58672958e8f366"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:21b2899062867b0e1fde9b724f8aecb1af14f2778d69aacd1a5a1853a597a5db"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-win32.whl", hash = "sha256:e8082b26888e2f8b36a042a58307d5b917ef2b1cacab921ad3323ef91901c71a"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:f69a27e45c43520f5487f27627059b64aaf160415589230992cec34c5e18a509"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980"}, + {file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cad5f45b3146325bb38d6855642f6fd609c3f7cad4dbaf75549bf3b904d3184"}, + {file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2680962a4848b3c4f155dc2ee64505a9c57186d0d56b43123b17ca3de18f0fa"}, + {file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:36b31da18b8890a76ec181c3cf44326bf2c48e36d393ca1b72b3f484113ea344"}, + {file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4074c5a429281bf056ddd4c5d3b740ebca4d43ffffe2ef4bf4d2d05114299da"}, + {file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9e36a97bee9b86ef9a1cf7bb96747eb7a15c2f22bdb5b516434b00f2a599f02"}, + {file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:1b1bde144d98e446b056ef98e59c256e9294f6b74d7af6846bf5ffdafd687a7d"}, + {file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:915f3849a011c1f593ab99092f3cecfcb4d65d8feb4a64cf1bf2d22074dc0ec4"}, + {file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:fb707f3e15060adf5b7ada797624a6c6e0138e2a26baa089df64c68ee98e040f"}, + {file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:25a23ea5c7edc53e0f29bae2c44fcb5a1aa10591aae107f2a2b2583a9c5cbc64"}, + {file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:770cab594ecf99ae64c236bc9ee3439c3f46be49796e265ce0cc8bc17b10294f"}, + {file = "charset_normalizer-3.4.2-cp37-cp37m-win32.whl", hash = "sha256:6a0289e4589e8bdfef02a80478f1dfcb14f0ab696b5a00e1f4b8a14a307a3c58"}, + {file = "charset_normalizer-3.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6fc1f5b51fa4cecaa18f2bd7a003f3dd039dd615cd69a2afd6d3b19aed6775f2"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76af085e67e56c8816c3ccf256ebd136def2ed9654525348cfa744b6802b69eb"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e45ba65510e2647721e35323d6ef54c7974959f6081b58d4ef5d87c60c84919a"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:046595208aae0120559a67693ecc65dd75d46f7bf687f159127046628178dc45"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75d10d37a47afee94919c4fab4c22b9bc2a8bf7d4f46f87363bcf0573f3ff4f5"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6333b3aa5a12c26b2a4d4e7335a28f1475e0e5e17d69d55141ee3cab736f66d1"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8323a9b031aa0393768b87f04b4164a40037fb2a3c11ac06a03ffecd3618027"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:24498ba8ed6c2e0b56d4acbf83f2d989720a93b41d712ebd4f4979660db4417b"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:844da2b5728b5ce0e32d863af26f32b5ce61bc4273a9c720a9f3aa9df73b1455"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:65c981bdbd3f57670af8b59777cbfae75364b483fa8a9f420f08094531d54a01"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:3c21d4fca343c805a52c0c78edc01e3477f6dd1ad7c47653241cf2a206d4fc58"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:dc7039885fa1baf9be153a0626e337aa7ec8bf96b0128605fb0d77788ddc1681"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-win32.whl", hash = "sha256:8272b73e1c5603666618805fe821edba66892e2870058c94c53147602eab29c7"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:70f7172939fdf8790425ba31915bfbe8335030f05b9913d7ae00a87d4395620a"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:005fa3432484527f9732ebd315da8da8001593e2cf46a3d817669f062c3d9ed4"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e92fca20c46e9f5e1bb485887d074918b13543b1c2a1185e69bb8d17ab6236a7"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50bf98d5e563b83cc29471fa114366e6806bc06bc7a25fd59641e41445327836"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:721c76e84fe669be19c5791da68232ca2e05ba5185575086e384352e2c309597"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82d8fd25b7f4675d0c47cf95b594d4e7b158aca33b76aa63d07186e13c0e0ab7"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3daeac64d5b371dea99714f08ffc2c208522ec6b06fbc7866a450dd446f5c0f"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dccab8d5fa1ef9bfba0590ecf4d46df048d18ffe3eec01eeb73a42e0d9e7a8ba"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:aaf27faa992bfee0264dc1f03f4c75e9fcdda66a519db6b957a3f826e285cf12"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:eb30abc20df9ab0814b5a2524f23d75dcf83cde762c161917a2b4b7b55b1e518"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:c72fbbe68c6f32f251bdc08b8611c7b3060612236e960ef848e0a517ddbe76c5"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:982bb1e8b4ffda883b3d0a521e23abcd6fd17418f6d2c4118d257a10199c0ce3"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-win32.whl", hash = "sha256:43e0933a0eff183ee85833f341ec567c0980dae57c464d8a508e1b2ceb336471"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:d11b54acf878eef558599658b0ffca78138c8c3655cf4f3a4a673c437e67732e"}, + {file = "charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0"}, + {file = "charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63"}, ] [[package]] name = "click" -version = "8.1.8" +version = "8.2.1" description = "Composable command line interface toolkit" optional = false -python-versions = ">=3.7" +python-versions = ">=3.10" groups = ["main"] files = [ - {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, - {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, + {file = "click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b"}, + {file = "click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202"}, ] [package.dependencies] @@ -392,116 +392,120 @@ test-no-images = ["pytest", "pytest-cov", "pytest-rerunfailures", "pytest-xdist" [[package]] name = "couchbase" -version = "4.3.5" +version = "4.4.0" description = "Python Client for Couchbase" optional = false python-versions = ">=3.7" groups = ["main"] files = [ - {file = "couchbase-4.3.5-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:7b354e59ebd3da994b54fa48859116e59d72394307f52783b83cb76d125414d5"}, - {file = "couchbase-4.3.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3a701989e3539faf8b50278337a1df88c6713b1da2d4eb7c1161c0c73c618a3a"}, - {file = "couchbase-4.3.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:80144ead758494e353d79ac939cdfd8d567f08d5c49c6c3633b4d30f5cb1bb34"}, - {file = "couchbase-4.3.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2981c90cb222809513333d7edcfdff4cda16eb7144cd100775552900109d22d9"}, - {file = "couchbase-4.3.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2ca0bf5d0a4a70747c5bb8284efb9e7631dfbfd671b2c1847715cc338c4cf17b"}, - {file = "couchbase-4.3.5-cp310-cp310-win_amd64.whl", hash = "sha256:e21fe0d38828db02271ece96359cc6b4f2bbc17b3a7f617c799987c6fdea6920"}, - {file = "couchbase-4.3.5-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:21cb325b4a5b017581ee038dc2362865bcd59b3aa65685432a362f9f8e8f3276"}, - {file = "couchbase-4.3.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5f063f79af8fe2425025ac9675e95bc914329db72f40adfd609451dcaf177920"}, - {file = "couchbase-4.3.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c28c05189c138408693d926211d80e0cb82fae02ac5e4619cb37efeb26349c1c"}, - {file = "couchbase-4.3.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:caf8f30cd1d587829685cffe575ec2b0f750a10611fe9f14e615070c1756079b"}, - {file = "couchbase-4.3.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0aaef43bac983332e8bd8484a286a9576a878a95b4e5bfc6bf9c4aa8b3ff71b4"}, - {file = "couchbase-4.3.5-cp311-cp311-win_amd64.whl", hash = "sha256:07deb48cd32e726088d2b2b93bb52fdca0b26e3e36b7d8b3728ea993a90b4327"}, - {file = "couchbase-4.3.5-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:5c9f5754d7391ad3c53adb46a8b401bfd4e0db38aba707a5ed6daad295091afd"}, - {file = "couchbase-4.3.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:92cea5d666d484c3801c2186ba2e0dd9df1bc654296c5862c94bf7a56e7e1e34"}, - {file = "couchbase-4.3.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f471b746cf13e9789de13fccd1ba4fbd3ae95e72710c3b07eb98cf8d72a5053b"}, - {file = "couchbase-4.3.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:80de6c8ddf39c4ee380d093fcf83a6300e837db8a6f60a8ddb7df6fcbb662595"}, - {file = "couchbase-4.3.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9ce0c9e073a616cc6353ea93e9bac0fe6f79ff6df03fccf0c846f19b5ddf957b"}, - {file = "couchbase-4.3.5-cp312-cp312-win_amd64.whl", hash = "sha256:b78f98001f40450ef1bbaf7d73fa28f0734e9bd72b38b96c18eb2090a09094fb"}, - {file = "couchbase-4.3.5-cp313-cp313-macosx_10_15_x86_64.whl", hash = "sha256:4f1462a0a353a13203f21313b17b30a5e13a2f86205b5437b4f5bd86878ad2aa"}, - {file = "couchbase-4.3.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d13924326834f81eae2ecb820119bc80460d6b556eb9cad63c5214ddd12e408e"}, - {file = "couchbase-4.3.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c12ffcdbf11ab959c69f6e96f9e2aa9259c84ef9771cd3f10fa3930dade2fb2f"}, - {file = "couchbase-4.3.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9deee11a39765455a326fd66d570163543cdaf65dc95e0e44c257dd14febdd3e"}, - {file = "couchbase-4.3.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:693675658668e83685f6e3d8a969ffb0447a48e74efe6fa77dadca281fa72b8d"}, - {file = "couchbase-4.3.5-cp313-cp313-win_amd64.whl", hash = "sha256:3b6aaeb3aea49c2b8f891e3dbaf8e5d73d049badee784bef14c6f24098528db9"}, - {file = "couchbase-4.3.5-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:5f25329baa41b013802b8fe8f978cf5603891afc8024dc0cda4ca3e52ec26bfe"}, - {file = "couchbase-4.3.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8129d25c1bbcb78c32fc73e2480cb2beaf50dd5938fb8fa671ab63f89482528f"}, - {file = "couchbase-4.3.5-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:26e9447e9dfc6e33d78a72f306830261147b0e62aebf5789f4b4b4ba9b86b3ef"}, - {file = "couchbase-4.3.5-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2c01c5e835bb397525686d6c8e90ecf62a4510b71488e2a407c8bd76573f89ba"}, - {file = "couchbase-4.3.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:57fec6e1ef686804336664ca679b7550c6aa4fab14609a265151afd31e2b5707"}, - {file = "couchbase-4.3.5-cp39-cp39-win_amd64.whl", hash = "sha256:679c92733d4ff421f72a54481608e7b005b87e93eae95af184e8212d88dca262"}, - {file = "couchbase-4.3.5.tar.gz", hash = "sha256:2e2f239b2959ece983195e3ee17a9142bc75b23b0f6733031198648a5f1107ed"}, + {file = "couchbase-4.4.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:b287bf9a6780545d0c0f68b27f2957d17d7672a2f11b8c27a210fb70538e061a"}, + {file = "couchbase-4.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a16813b6329ca0c8e4aad68e801bf8c8ef3c60383dfb7db88a8d9e193a8d0924"}, + {file = "couchbase-4.4.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3c4327e9c2ac4f968aef0d63ebfdf4fec667163b0560d340b3b50b27a44186cf"}, + {file = "couchbase-4.4.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:82cde7cca3039d84c30242ce739042afcc6e713e9dbe6e29f2cedb8fd09ff29b"}, + {file = "couchbase-4.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d4314fe9bfad09002c8359fcb11811b152760ec812db689104154e329ed0f19d"}, + {file = "couchbase-4.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:5a099e46584240b9c73c47e33928333a7ec2d60ad5286cffb211290ac74407c1"}, + {file = "couchbase-4.4.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:8b068c5e0fe25f51fb5e4d7411a8d0df5d571f858e5a1df25f8ef6dda52acf78"}, + {file = "couchbase-4.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ad5d45d74473951b1c7c7a580279dec390750d760dfd9f2b709fc51a88fc7644"}, + {file = "couchbase-4.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5782f50d8612b04a5f03875003a50344b47df5357a046db044ee04d0d8bdf66f"}, + {file = "couchbase-4.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:95906185b789d98d345210a318eccdb8a1f8f810f90a2d61be0ca210708cfe19"}, + {file = "couchbase-4.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bd9d5130f27621557df7e80c54d3ef98b86d86a58f4daa61939c0b5e584e726"}, + {file = "couchbase-4.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:b867e4071c94193af0e19fe08c23d06d894e2fb7920c1d732681ac63ca15c46a"}, + {file = "couchbase-4.4.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:f30555553ef45ac86dbf26e4d52eaf23545e9e0ea88420a6fccfc5a1f05fd035"}, + {file = "couchbase-4.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ff4d1a963440e8a3095368b8c9a6a06a6c009ae9bcbea25b4f43b9c0cbecf867"}, + {file = "couchbase-4.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f5fba44d95092018dc9e716cc2c38591931d4329136729a0d8dd59a709335305"}, + {file = "couchbase-4.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:40b6896dac903185668953597cebc4c4cf825393da76611d67e1b7173433406b"}, + {file = "couchbase-4.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2b178cce7e3ea0f97596c4368bdc7a5ed2a491d5cea2dc12be788535a30ddc5a"}, + {file = "couchbase-4.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:54d949da4dd8afe30458dc30b2a85a12e6a1bdc5c4d1c97d04907e37db642b67"}, + {file = "couchbase-4.4.0-cp313-cp313-macosx_10_15_x86_64.whl", hash = "sha256:40d38e482b8250614e5ae3631d5e7c7738597053598f73ccb2426da1d4cdb196"}, + {file = "couchbase-4.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9e1ae9df770f9248a85148683306fad80126ad5c34cc591b346577a08517ed78"}, + {file = "couchbase-4.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5c0661cd5e95b03525077ce97b40ee9aa0bfc6cf3d1a71ea29fc39636030dbd0"}, + {file = "couchbase-4.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:aadfdd7c920ddcfb0b6491eeadc63dceeda2f74360fea4971c011b2c7b4d18f2"}, + {file = "couchbase-4.4.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:43884a5cb0ccaadb6d484e0a0d8adc11bdd6b617ca0cd66854d63eaebda3bf73"}, + {file = "couchbase-4.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:671bdfc74383f76890744bef12b06721faccc3206c689058a2c5c72eaccfb0bc"}, + {file = "couchbase-4.4.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:ec3f39c52aacc3274ce139336f62fbe71eb8e3a1c0d91a2312d0f6291c5814c0"}, + {file = "couchbase-4.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:22efd68e086923da20ed2f05e0085a1818e37e95548f1e067d76a16e18180cdb"}, + {file = "couchbase-4.4.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b957d4e455f0128f80514748c066d488cbbc2a58ab7c7db0b72f2d254745bffa"}, + {file = "couchbase-4.4.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:40977de413c8ce25e1400e741af0bc7ab013fd101e9a5bc0c35aa54154846237"}, + {file = "couchbase-4.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c26f609570d849f46415d00457ce805bb111074c15c0e2ac2c54c2405f2e87dc"}, + {file = "couchbase-4.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:9cc46792d0dc7d552268c0e731a175740f787830e26896f936995cd556e601e9"}, + {file = "couchbase-4.4.0.tar.gz", hash = "sha256:5234dfa0a500ec1dd9b89318b8ca6303f587cc2d2b4772341f937f1473bbaa96"}, ] [[package]] name = "coverage" -version = "7.8.0" +version = "7.8.2" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "coverage-7.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2931f66991175369859b5fd58529cd4b73582461877ecfd859b6549869287ffe"}, - {file = "coverage-7.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:52a523153c568d2c0ef8826f6cc23031dc86cffb8c6aeab92c4ff776e7951b28"}, - {file = "coverage-7.8.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c8a5c139aae4c35cbd7cadca1df02ea8cf28a911534fc1b0456acb0b14234f3"}, - {file = "coverage-7.8.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a26c0c795c3e0b63ec7da6efded5f0bc856d7c0b24b2ac84b4d1d7bc578d676"}, - {file = "coverage-7.8.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:821f7bcbaa84318287115d54becb1915eece6918136c6f91045bb84e2f88739d"}, - {file = "coverage-7.8.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a321c61477ff8ee705b8a5fed370b5710c56b3a52d17b983d9215861e37b642a"}, - {file = "coverage-7.8.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:ed2144b8a78f9d94d9515963ed273d620e07846acd5d4b0a642d4849e8d91a0c"}, - {file = "coverage-7.8.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:042e7841a26498fff7a37d6fda770d17519982f5b7d8bf5278d140b67b61095f"}, - {file = "coverage-7.8.0-cp310-cp310-win32.whl", hash = "sha256:f9983d01d7705b2d1f7a95e10bbe4091fabc03a46881a256c2787637b087003f"}, - {file = "coverage-7.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:5a570cd9bd20b85d1a0d7b009aaf6c110b52b5755c17be6962f8ccd65d1dbd23"}, - {file = "coverage-7.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e7ac22a0bb2c7c49f441f7a6d46c9c80d96e56f5a8bc6972529ed43c8b694e27"}, - {file = "coverage-7.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bf13d564d310c156d1c8e53877baf2993fb3073b2fc9f69790ca6a732eb4bfea"}, - {file = "coverage-7.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5761c70c017c1b0d21b0815a920ffb94a670c8d5d409d9b38857874c21f70d7"}, - {file = "coverage-7.8.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5ff52d790c7e1628241ffbcaeb33e07d14b007b6eb00a19320c7b8a7024c040"}, - {file = "coverage-7.8.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d39fc4817fd67b3915256af5dda75fd4ee10621a3d484524487e33416c6f3543"}, - {file = "coverage-7.8.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b44674870709017e4b4036e3d0d6c17f06a0e6d4436422e0ad29b882c40697d2"}, - {file = "coverage-7.8.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8f99eb72bf27cbb167b636eb1726f590c00e1ad375002230607a844d9e9a2318"}, - {file = "coverage-7.8.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b571bf5341ba8c6bc02e0baeaf3b061ab993bf372d982ae509807e7f112554e9"}, - {file = "coverage-7.8.0-cp311-cp311-win32.whl", hash = "sha256:e75a2ad7b647fd8046d58c3132d7eaf31b12d8a53c0e4b21fa9c4d23d6ee6d3c"}, - {file = "coverage-7.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:3043ba1c88b2139126fc72cb48574b90e2e0546d4c78b5299317f61b7f718b78"}, - {file = "coverage-7.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bbb5cc845a0292e0c520656d19d7ce40e18d0e19b22cb3e0409135a575bf79fc"}, - {file = "coverage-7.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4dfd9a93db9e78666d178d4f08a5408aa3f2474ad4d0e0378ed5f2ef71640cb6"}, - {file = "coverage-7.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f017a61399f13aa6d1039f75cd467be388d157cd81f1a119b9d9a68ba6f2830d"}, - {file = "coverage-7.8.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0915742f4c82208ebf47a2b154a5334155ed9ef9fe6190674b8a46c2fb89cb05"}, - {file = "coverage-7.8.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a40fcf208e021eb14b0fac6bdb045c0e0cab53105f93ba0d03fd934c956143a"}, - {file = "coverage-7.8.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a1f406a8e0995d654b2ad87c62caf6befa767885301f3b8f6f73e6f3c31ec3a6"}, - {file = "coverage-7.8.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:77af0f6447a582fdc7de5e06fa3757a3ef87769fbb0fdbdeba78c23049140a47"}, - {file = "coverage-7.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f2d32f95922927186c6dbc8bc60df0d186b6edb828d299ab10898ef3f40052fe"}, - {file = "coverage-7.8.0-cp312-cp312-win32.whl", hash = "sha256:769773614e676f9d8e8a0980dd7740f09a6ea386d0f383db6821df07d0f08545"}, - {file = "coverage-7.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:e5d2b9be5b0693cf21eb4ce0ec8d211efb43966f6657807f6859aab3814f946b"}, - {file = "coverage-7.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5ac46d0c2dd5820ce93943a501ac5f6548ea81594777ca585bf002aa8854cacd"}, - {file = "coverage-7.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:771eb7587a0563ca5bb6f622b9ed7f9d07bd08900f7589b4febff05f469bea00"}, - {file = "coverage-7.8.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42421e04069fb2cbcbca5a696c4050b84a43b05392679d4068acbe65449b5c64"}, - {file = "coverage-7.8.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:554fec1199d93ab30adaa751db68acec2b41c5602ac944bb19187cb9a41a8067"}, - {file = "coverage-7.8.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5aaeb00761f985007b38cf463b1d160a14a22c34eb3f6a39d9ad6fc27cb73008"}, - {file = "coverage-7.8.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:581a40c7b94921fffd6457ffe532259813fc68eb2bdda60fa8cc343414ce3733"}, - {file = "coverage-7.8.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f319bae0321bc838e205bf9e5bc28f0a3165f30c203b610f17ab5552cff90323"}, - {file = "coverage-7.8.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:04bfec25a8ef1c5f41f5e7e5c842f6b615599ca8ba8391ec33a9290d9d2db3a3"}, - {file = "coverage-7.8.0-cp313-cp313-win32.whl", hash = "sha256:dd19608788b50eed889e13a5d71d832edc34fc9dfce606f66e8f9f917eef910d"}, - {file = "coverage-7.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:a9abbccd778d98e9c7e85038e35e91e67f5b520776781d9a1e2ee9d400869487"}, - {file = "coverage-7.8.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:18c5ae6d061ad5b3e7eef4363fb27a0576012a7447af48be6c75b88494c6cf25"}, - {file = "coverage-7.8.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:95aa6ae391a22bbbce1b77ddac846c98c5473de0372ba5c463480043a07bff42"}, - {file = "coverage-7.8.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e013b07ba1c748dacc2a80e69a46286ff145935f260eb8c72df7185bf048f502"}, - {file = "coverage-7.8.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d766a4f0e5aa1ba056ec3496243150698dc0481902e2b8559314368717be82b1"}, - {file = "coverage-7.8.0-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad80e6b4a0c3cb6f10f29ae4c60e991f424e6b14219d46f1e7d442b938ee68a4"}, - {file = "coverage-7.8.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b87eb6fc9e1bb8f98892a2458781348fa37e6925f35bb6ceb9d4afd54ba36c73"}, - {file = "coverage-7.8.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:d1ba00ae33be84066cfbe7361d4e04dec78445b2b88bdb734d0d1cbab916025a"}, - {file = "coverage-7.8.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f3c38e4e5ccbdc9198aecc766cedbb134b2d89bf64533973678dfcf07effd883"}, - {file = "coverage-7.8.0-cp313-cp313t-win32.whl", hash = "sha256:379fe315e206b14e21db5240f89dc0774bdd3e25c3c58c2c733c99eca96f1ada"}, - {file = "coverage-7.8.0-cp313-cp313t-win_amd64.whl", hash = "sha256:2e4b6b87bb0c846a9315e3ab4be2d52fac905100565f4b92f02c445c8799e257"}, - {file = "coverage-7.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fa260de59dfb143af06dcf30c2be0b200bed2a73737a8a59248fcb9fa601ef0f"}, - {file = "coverage-7.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:96121edfa4c2dfdda409877ea8608dd01de816a4dc4a0523356067b305e4e17a"}, - {file = "coverage-7.8.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b8af63b9afa1031c0ef05b217faa598f3069148eeee6bb24b79da9012423b82"}, - {file = "coverage-7.8.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:89b1f4af0d4afe495cd4787a68e00f30f1d15939f550e869de90a86efa7e0814"}, - {file = "coverage-7.8.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94ec0be97723ae72d63d3aa41961a0b9a6f5a53ff599813c324548d18e3b9e8c"}, - {file = "coverage-7.8.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8a1d96e780bdb2d0cbb297325711701f7c0b6f89199a57f2049e90064c29f6bd"}, - {file = "coverage-7.8.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f1d8a2a57b47142b10374902777e798784abf400a004b14f1b0b9eaf1e528ba4"}, - {file = "coverage-7.8.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:cf60dd2696b457b710dd40bf17ad269d5f5457b96442f7f85722bdb16fa6c899"}, - {file = "coverage-7.8.0-cp39-cp39-win32.whl", hash = "sha256:be945402e03de47ba1872cd5236395e0f4ad635526185a930735f66710e1bd3f"}, - {file = "coverage-7.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:90e7fbc6216ecaffa5a880cdc9c77b7418c1dcb166166b78dbc630d07f278cc3"}, - {file = "coverage-7.8.0-pp39.pp310.pp311-none-any.whl", hash = "sha256:b8194fb8e50d556d5849753de991d390c5a1edeeba50f68e3a9253fbd8bf8ccd"}, - {file = "coverage-7.8.0-py3-none-any.whl", hash = "sha256:dbf364b4c5e7bae9250528167dfe40219b62e2d573c854d74be213e1e52069f7"}, - {file = "coverage-7.8.0.tar.gz", hash = "sha256:7a3d62b3b03b4b6fd41a085f3574874cf946cb4604d2b4d3e8dca8cd570ca501"}, + {file = "coverage-7.8.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bd8ec21e1443fd7a447881332f7ce9d35b8fbd2849e761bb290b584535636b0a"}, + {file = "coverage-7.8.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4c26c2396674816deaeae7ded0e2b42c26537280f8fe313335858ffff35019be"}, + {file = "coverage-7.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1aec326ed237e5880bfe69ad41616d333712c7937bcefc1343145e972938f9b3"}, + {file = "coverage-7.8.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5e818796f71702d7a13e50c70de2a1924f729228580bcba1607cccf32eea46e6"}, + {file = "coverage-7.8.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:546e537d9e24efc765c9c891328f30f826e3e4808e31f5d0f87c4ba12bbd1622"}, + {file = "coverage-7.8.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ab9b09a2349f58e73f8ebc06fac546dd623e23b063e5398343c5270072e3201c"}, + {file = "coverage-7.8.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fd51355ab8a372d89fb0e6a31719e825cf8df8b6724bee942fb5b92c3f016ba3"}, + {file = "coverage-7.8.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0774df1e093acb6c9e4d58bce7f86656aeed6c132a16e2337692c12786b32404"}, + {file = "coverage-7.8.2-cp310-cp310-win32.whl", hash = "sha256:00f2e2f2e37f47e5f54423aeefd6c32a7dbcedc033fcd3928a4f4948e8b96af7"}, + {file = "coverage-7.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:145b07bea229821d51811bf15eeab346c236d523838eda395ea969d120d13347"}, + {file = "coverage-7.8.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b99058eef42e6a8dcd135afb068b3d53aff3921ce699e127602efff9956457a9"}, + {file = "coverage-7.8.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5feb7f2c3e6ea94d3b877def0270dff0947b8d8c04cfa34a17be0a4dc1836879"}, + {file = "coverage-7.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:670a13249b957bb9050fab12d86acef7bf8f6a879b9d1a883799276e0d4c674a"}, + {file = "coverage-7.8.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0bdc8bf760459a4a4187b452213e04d039990211f98644c7292adf1e471162b5"}, + {file = "coverage-7.8.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07a989c867986c2a75f158f03fdb413128aad29aca9d4dbce5fc755672d96f11"}, + {file = "coverage-7.8.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2db10dedeb619a771ef0e2949ccba7b75e33905de959c2643a4607bef2f3fb3a"}, + {file = "coverage-7.8.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e6ea7dba4e92926b7b5f0990634b78ea02f208d04af520c73a7c876d5a8d36cb"}, + {file = "coverage-7.8.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ef2f22795a7aca99fc3c84393a55a53dd18ab8c93fb431004e4d8f0774150f54"}, + {file = "coverage-7.8.2-cp311-cp311-win32.whl", hash = "sha256:641988828bc18a6368fe72355df5f1703e44411adbe49bba5644b941ce6f2e3a"}, + {file = "coverage-7.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:8ab4a51cb39dc1933ba627e0875046d150e88478dbe22ce145a68393e9652975"}, + {file = "coverage-7.8.2-cp311-cp311-win_arm64.whl", hash = "sha256:8966a821e2083c74d88cca5b7dcccc0a3a888a596a04c0b9668a891de3a0cc53"}, + {file = "coverage-7.8.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e2f6fe3654468d061942591aef56686131335b7a8325684eda85dacdf311356c"}, + {file = "coverage-7.8.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76090fab50610798cc05241bf83b603477c40ee87acd358b66196ab0ca44ffa1"}, + {file = "coverage-7.8.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bd0a0a5054be160777a7920b731a0570284db5142abaaf81bcbb282b8d99279"}, + {file = "coverage-7.8.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da23ce9a3d356d0affe9c7036030b5c8f14556bd970c9b224f9c8205505e3b99"}, + {file = "coverage-7.8.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9392773cffeb8d7e042a7b15b82a414011e9d2b5fdbbd3f7e6a6b17d5e21b20"}, + {file = "coverage-7.8.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:876cbfd0b09ce09d81585d266c07a32657beb3eaec896f39484b631555be0fe2"}, + {file = "coverage-7.8.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3da9b771c98977a13fbc3830f6caa85cae6c9c83911d24cb2d218e9394259c57"}, + {file = "coverage-7.8.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9a990f6510b3292686713bfef26d0049cd63b9c7bb17e0864f133cbfd2e6167f"}, + {file = "coverage-7.8.2-cp312-cp312-win32.whl", hash = "sha256:bf8111cddd0f2b54d34e96613e7fbdd59a673f0cf5574b61134ae75b6f5a33b8"}, + {file = "coverage-7.8.2-cp312-cp312-win_amd64.whl", hash = "sha256:86a323a275e9e44cdf228af9b71c5030861d4d2610886ab920d9945672a81223"}, + {file = "coverage-7.8.2-cp312-cp312-win_arm64.whl", hash = "sha256:820157de3a589e992689ffcda8639fbabb313b323d26388d02e154164c57b07f"}, + {file = "coverage-7.8.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ea561010914ec1c26ab4188aef8b1567272ef6de096312716f90e5baa79ef8ca"}, + {file = "coverage-7.8.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cb86337a4fcdd0e598ff2caeb513ac604d2f3da6d53df2c8e368e07ee38e277d"}, + {file = "coverage-7.8.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26a4636ddb666971345541b59899e969f3b301143dd86b0ddbb570bd591f1e85"}, + {file = "coverage-7.8.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5040536cf9b13fb033f76bcb5e1e5cb3b57c4807fef37db9e0ed129c6a094257"}, + {file = "coverage-7.8.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc67994df9bcd7e0150a47ef41278b9e0a0ea187caba72414b71dc590b99a108"}, + {file = "coverage-7.8.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6e6c86888fd076d9e0fe848af0a2142bf606044dc5ceee0aa9eddb56e26895a0"}, + {file = "coverage-7.8.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:684ca9f58119b8e26bef860db33524ae0365601492e86ba0b71d513f525e7050"}, + {file = "coverage-7.8.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8165584ddedb49204c4e18da083913bdf6a982bfb558632a79bdaadcdafd0d48"}, + {file = "coverage-7.8.2-cp313-cp313-win32.whl", hash = "sha256:34759ee2c65362163699cc917bdb2a54114dd06d19bab860725f94ef45a3d9b7"}, + {file = "coverage-7.8.2-cp313-cp313-win_amd64.whl", hash = "sha256:2f9bc608fbafaee40eb60a9a53dbfb90f53cc66d3d32c2849dc27cf5638a21e3"}, + {file = "coverage-7.8.2-cp313-cp313-win_arm64.whl", hash = "sha256:9fe449ee461a3b0c7105690419d0b0aba1232f4ff6d120a9e241e58a556733f7"}, + {file = "coverage-7.8.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8369a7c8ef66bded2b6484053749ff220dbf83cba84f3398c84c51a6f748a008"}, + {file = "coverage-7.8.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:159b81df53a5fcbc7d45dae3adad554fdbde9829a994e15227b3f9d816d00b36"}, + {file = "coverage-7.8.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6fcbbd35a96192d042c691c9e0c49ef54bd7ed865846a3c9d624c30bb67ce46"}, + {file = "coverage-7.8.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:05364b9cc82f138cc86128dc4e2e1251c2981a2218bfcd556fe6b0fbaa3501be"}, + {file = "coverage-7.8.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46d532db4e5ff3979ce47d18e2fe8ecad283eeb7367726da0e5ef88e4fe64740"}, + {file = "coverage-7.8.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4000a31c34932e7e4fa0381a3d6deb43dc0c8f458e3e7ea6502e6238e10be625"}, + {file = "coverage-7.8.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:43ff5033d657cd51f83015c3b7a443287250dc14e69910577c3e03bd2e06f27b"}, + {file = "coverage-7.8.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:94316e13f0981cbbba132c1f9f365cac1d26716aaac130866ca812006f662199"}, + {file = "coverage-7.8.2-cp313-cp313t-win32.whl", hash = "sha256:3f5673888d3676d0a745c3d0e16da338c5eea300cb1f4ada9c872981265e76d8"}, + {file = "coverage-7.8.2-cp313-cp313t-win_amd64.whl", hash = "sha256:2c08b05ee8d7861e45dc5a2cc4195c8c66dca5ac613144eb6ebeaff2d502e73d"}, + {file = "coverage-7.8.2-cp313-cp313t-win_arm64.whl", hash = "sha256:1e1448bb72b387755e1ff3ef1268a06617afd94188164960dba8d0245a46004b"}, + {file = "coverage-7.8.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:496948261eaac5ac9cf43f5d0a9f6eb7a6d4cb3bedb2c5d294138142f5c18f2a"}, + {file = "coverage-7.8.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:eacd2de0d30871eff893bab0b67840a96445edcb3c8fd915e6b11ac4b2f3fa6d"}, + {file = "coverage-7.8.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b039ffddc99ad65d5078ef300e0c7eed08c270dc26570440e3ef18beb816c1ca"}, + {file = "coverage-7.8.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e49824808d4375ede9dd84e9961a59c47f9113039f1a525e6be170aa4f5c34d"}, + {file = "coverage-7.8.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b069938961dfad881dc2f8d02b47645cd2f455d3809ba92a8a687bf513839787"}, + {file = "coverage-7.8.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:de77c3ba8bb686d1c411e78ee1b97e6e0b963fb98b1637658dd9ad2c875cf9d7"}, + {file = "coverage-7.8.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1676628065a498943bd3f64f099bb573e08cf1bc6088bbe33cf4424e0876f4b3"}, + {file = "coverage-7.8.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:8e1a26e7e50076e35f7afafde570ca2b4d7900a491174ca357d29dece5aacee7"}, + {file = "coverage-7.8.2-cp39-cp39-win32.whl", hash = "sha256:6782a12bf76fa61ad9350d5a6ef5f3f020b57f5e6305cbc663803f2ebd0f270a"}, + {file = "coverage-7.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:1efa4166ba75ccefd647f2d78b64f53f14fb82622bc94c5a5cb0a622f50f1c9e"}, + {file = "coverage-7.8.2-pp39.pp310.pp311-none-any.whl", hash = "sha256:ec455eedf3ba0bbdf8f5a570012617eb305c63cb9f03428d39bf544cb2b94837"}, + {file = "coverage-7.8.2-py3-none-any.whl", hash = "sha256:726f32ee3713f7359696331a18daf0c3b3a70bb0ae71141b9d3c52be7c595e32"}, + {file = "coverage-7.8.2.tar.gz", hash = "sha256:a886d531373a1f6ff9fad2a2ba4a045b68467b779ae729ee0b3b10ac20033b27"}, ] [package.extras] @@ -616,62 +620,54 @@ test = ["pytest", "pytest-cov", "pytest-mpl", "pytest-subtests"] [[package]] name = "fonttools" -version = "4.57.0" +version = "4.58.1" description = "Tools to manipulate font files" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["main"] files = [ - {file = "fonttools-4.57.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:babe8d1eb059a53e560e7bf29f8e8f4accc8b6cfb9b5fd10e485bde77e71ef41"}, - {file = "fonttools-4.57.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:81aa97669cd726349eb7bd43ca540cf418b279ee3caba5e2e295fb4e8f841c02"}, - {file = "fonttools-4.57.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0e9618630edd1910ad4f07f60d77c184b2f572c8ee43305ea3265675cbbfe7e"}, - {file = "fonttools-4.57.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34687a5d21f1d688d7d8d416cb4c5b9c87fca8a1797ec0d74b9fdebfa55c09ab"}, - {file = "fonttools-4.57.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:69ab81b66ebaa8d430ba56c7a5f9abe0183afefd3a2d6e483060343398b13fb1"}, - {file = "fonttools-4.57.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d639397de852f2ccfb3134b152c741406752640a266d9c1365b0f23d7b88077f"}, - {file = "fonttools-4.57.0-cp310-cp310-win32.whl", hash = "sha256:cc066cb98b912f525ae901a24cd381a656f024f76203bc85f78fcc9e66ae5aec"}, - {file = "fonttools-4.57.0-cp310-cp310-win_amd64.whl", hash = "sha256:7a64edd3ff6a7f711a15bd70b4458611fb240176ec11ad8845ccbab4fe6745db"}, - {file = "fonttools-4.57.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3871349303bdec958360eedb619169a779956503ffb4543bb3e6211e09b647c4"}, - {file = "fonttools-4.57.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c59375e85126b15a90fcba3443eaac58f3073ba091f02410eaa286da9ad80ed8"}, - {file = "fonttools-4.57.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967b65232e104f4b0f6370a62eb33089e00024f2ce143aecbf9755649421c683"}, - {file = "fonttools-4.57.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39acf68abdfc74e19de7485f8f7396fa4d2418efea239b7061d6ed6a2510c746"}, - {file = "fonttools-4.57.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9d077f909f2343daf4495ba22bb0e23b62886e8ec7c109ee8234bdbd678cf344"}, - {file = "fonttools-4.57.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:46370ac47a1e91895d40e9ad48effbe8e9d9db1a4b80888095bc00e7beaa042f"}, - {file = "fonttools-4.57.0-cp311-cp311-win32.whl", hash = "sha256:ca2aed95855506b7ae94e8f1f6217b7673c929e4f4f1217bcaa236253055cb36"}, - {file = "fonttools-4.57.0-cp311-cp311-win_amd64.whl", hash = "sha256:17168a4670bbe3775f3f3f72d23ee786bd965395381dfbb70111e25e81505b9d"}, - {file = "fonttools-4.57.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:889e45e976c74abc7256d3064aa7c1295aa283c6bb19810b9f8b604dfe5c7f31"}, - {file = "fonttools-4.57.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0425c2e052a5f1516c94e5855dbda706ae5a768631e9fcc34e57d074d1b65b92"}, - {file = "fonttools-4.57.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44c26a311be2ac130f40a96769264809d3b0cb297518669db437d1cc82974888"}, - {file = "fonttools-4.57.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84c41ba992df5b8d680b89fd84c6a1f2aca2b9f1ae8a67400c8930cd4ea115f6"}, - {file = "fonttools-4.57.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ea1e9e43ca56b0c12440a7c689b1350066595bebcaa83baad05b8b2675129d98"}, - {file = "fonttools-4.57.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84fd56c78d431606332a0627c16e2a63d243d0d8b05521257d77c6529abe14d8"}, - {file = "fonttools-4.57.0-cp312-cp312-win32.whl", hash = "sha256:f4376819c1c778d59e0a31db5dc6ede854e9edf28bbfa5b756604727f7f800ac"}, - {file = "fonttools-4.57.0-cp312-cp312-win_amd64.whl", hash = "sha256:57e30241524879ea10cdf79c737037221f77cc126a8cdc8ff2c94d4a522504b9"}, - {file = "fonttools-4.57.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:408ce299696012d503b714778d89aa476f032414ae57e57b42e4b92363e0b8ef"}, - {file = "fonttools-4.57.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bbceffc80aa02d9e8b99f2a7491ed8c4a783b2fc4020119dc405ca14fb5c758c"}, - {file = "fonttools-4.57.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f022601f3ee9e1f6658ed6d184ce27fa5216cee5b82d279e0f0bde5deebece72"}, - {file = "fonttools-4.57.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4dea5893b58d4637ffa925536462ba626f8a1b9ffbe2f5c272cdf2c6ebadb817"}, - {file = "fonttools-4.57.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dff02c5c8423a657c550b48231d0a48d7e2b2e131088e55983cfe74ccc2c7cc9"}, - {file = "fonttools-4.57.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:767604f244dc17c68d3e2dbf98e038d11a18abc078f2d0f84b6c24571d9c0b13"}, - {file = "fonttools-4.57.0-cp313-cp313-win32.whl", hash = "sha256:8e2e12d0d862f43d51e5afb8b9751c77e6bec7d2dc00aad80641364e9df5b199"}, - {file = "fonttools-4.57.0-cp313-cp313-win_amd64.whl", hash = "sha256:f1d6bc9c23356908db712d282acb3eebd4ae5ec6d8b696aa40342b1d84f8e9e3"}, - {file = "fonttools-4.57.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:9d57b4e23ebbe985125d3f0cabbf286efa191ab60bbadb9326091050d88e8213"}, - {file = "fonttools-4.57.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:579ba873d7f2a96f78b2e11028f7472146ae181cae0e4d814a37a09e93d5c5cc"}, - {file = "fonttools-4.57.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e3e1ec10c29bae0ea826b61f265ec5c858c5ba2ce2e69a71a62f285cf8e4595"}, - {file = "fonttools-4.57.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1968f2a2003c97c4ce6308dc2498d5fd4364ad309900930aa5a503c9851aec8"}, - {file = "fonttools-4.57.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:aff40f8ac6763d05c2c8f6d240c6dac4bb92640a86d9b0c3f3fff4404f34095c"}, - {file = "fonttools-4.57.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:d07f1b64008e39fceae7aa99e38df8385d7d24a474a8c9872645c4397b674481"}, - {file = "fonttools-4.57.0-cp38-cp38-win32.whl", hash = "sha256:51d8482e96b28fb28aa8e50b5706f3cee06de85cbe2dce80dbd1917ae22ec5a6"}, - {file = "fonttools-4.57.0-cp38-cp38-win_amd64.whl", hash = "sha256:03290e818782e7edb159474144fca11e36a8ed6663d1fcbd5268eb550594fd8e"}, - {file = "fonttools-4.57.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7339e6a3283e4b0ade99cade51e97cde3d54cd6d1c3744459e886b66d630c8b3"}, - {file = "fonttools-4.57.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:05efceb2cb5f6ec92a4180fcb7a64aa8d3385fd49cfbbe459350229d1974f0b1"}, - {file = "fonttools-4.57.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a97bb05eb24637714a04dee85bdf0ad1941df64fe3b802ee4ac1c284a5f97b7c"}, - {file = "fonttools-4.57.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:541cb48191a19ceb1a2a4b90c1fcebd22a1ff7491010d3cf840dd3a68aebd654"}, - {file = "fonttools-4.57.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:cdef9a056c222d0479a1fdb721430f9efd68268014c54e8166133d2643cb05d9"}, - {file = "fonttools-4.57.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3cf97236b192a50a4bf200dc5ba405aa78d4f537a2c6e4c624bb60466d5b03bd"}, - {file = "fonttools-4.57.0-cp39-cp39-win32.whl", hash = "sha256:e952c684274a7714b3160f57ec1d78309f955c6335c04433f07d36c5eb27b1f9"}, - {file = "fonttools-4.57.0-cp39-cp39-win_amd64.whl", hash = "sha256:a2a722c0e4bfd9966a11ff55c895c817158fcce1b2b6700205a376403b546ad9"}, - {file = "fonttools-4.57.0-py3-none-any.whl", hash = "sha256:3122c604a675513c68bd24c6a8f9091f1c2376d18e8f5fe5a101746c81b3e98f"}, - {file = "fonttools-4.57.0.tar.gz", hash = "sha256:727ece10e065be2f9dd239d15dd5d60a66e17eac11aea47d447f9f03fdbc42de"}, + {file = "fonttools-4.58.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4ebd423034ac4f74196c1ae29f8ed3b862f820345acbf35600af8596ebf62573"}, + {file = "fonttools-4.58.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9dc36f4b4044d95e6fb358da4c3e6a5c07c9b6f4c1e8c396e89bee3b65dae902"}, + {file = "fonttools-4.58.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc4b74d7bb84189fe264d56a544ac5c818f8f1e8141856746768691fe185b229"}, + {file = "fonttools-4.58.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3aa4fa41e9cb43f78881a5896d6e41b6a0ec54e9d68e7eaaff6d7a1769b17017"}, + {file = "fonttools-4.58.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:91335202f19c9edc04f2f6a7d9bb269b0a435d7de771e3f33c3ea9f87f19c8d4"}, + {file = "fonttools-4.58.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e6b0ec2171e811a0d9e467225dc06b0fac39a84b4704f263c2d538c3c67b99b2"}, + {file = "fonttools-4.58.1-cp310-cp310-win32.whl", hash = "sha256:a788983d522d02a9b457cc98aa60fc631dabae352fb3b30a56200890cd338ca0"}, + {file = "fonttools-4.58.1-cp310-cp310-win_amd64.whl", hash = "sha256:c8c848a2d5961d277b85ac339480cecea90599059f72a42047ced25431e8b72a"}, + {file = "fonttools-4.58.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9966e14729669bcfbb56f83b747a2397c4d97c6d4798cb2e2adc28f9388fa008"}, + {file = "fonttools-4.58.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:64cc1647bbe83dea57f5496ec878ad19ccdba7185b0dd34955d3e6f03dc789e6"}, + {file = "fonttools-4.58.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:464f790ce681d08d1583df0735776aa9cb1999594bf336ddd0bf962c17b629ac"}, + {file = "fonttools-4.58.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c53c6a720ee70cc25746d511ba88c45c95ec510fd258026ed209b0b9e3ba92f"}, + {file = "fonttools-4.58.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b6823a633bbce29cf3033508ebb54a433c473fb9833eff7f936bfdc5204fd98d"}, + {file = "fonttools-4.58.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5701fe66a1408c1974d2f78c00f964f8aad17cccbc32bc041e1b81421f31f448"}, + {file = "fonttools-4.58.1-cp311-cp311-win32.whl", hash = "sha256:4cad2c74adf9ee31ae43be6b0b376fdb386d4d50c60979790e32c3548efec051"}, + {file = "fonttools-4.58.1-cp311-cp311-win_amd64.whl", hash = "sha256:7ade12485abccb0f6b6a6e2a88c50e587ff0e201e48e0153dd9b2e0ed67a2f38"}, + {file = "fonttools-4.58.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f56085a65769dc0100822c814069327541db9c3c4f21e599c6138f9dbda75e96"}, + {file = "fonttools-4.58.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:19c65a88e522c9f1be0c05d73541de20feada99d23d06e9b5354023cc3e517b0"}, + {file = "fonttools-4.58.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b01bb37006e97703300bfde7a73d1c7038574dd1df9d8d92ca99af151becf2ca"}, + {file = "fonttools-4.58.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d629dea240f0fc826d8bb14566e95c663214eece21b5932c9228d3e8907f55aa"}, + {file = "fonttools-4.58.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ef0b33ff35421a04a638e736823c2dee9d200cdd275cfdb43e875ca745150aae"}, + {file = "fonttools-4.58.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4db9399ee633855c718fe8bea5eecbdc5bf3fdbed2648e50f67f8946b943ed1c"}, + {file = "fonttools-4.58.1-cp312-cp312-win32.whl", hash = "sha256:5cf04c4f73d36b30ea1cff091a7a9e65f8d5b08345b950f82679034e9f7573f4"}, + {file = "fonttools-4.58.1-cp312-cp312-win_amd64.whl", hash = "sha256:4a3841b59c67fa1f739542b05211609c453cec5d11d21f863dd2652d5a81ec9b"}, + {file = "fonttools-4.58.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:68379d1599fc59569956a97eb7b07e0413f76142ac8513fa24c9f2c03970543a"}, + {file = "fonttools-4.58.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8631905657de4f9a7ae1e12186c1ed20ba4d6168c2d593b9e0bd2908061d341b"}, + {file = "fonttools-4.58.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2ecea7289061c2c71468723409a8dd6e70d1ecfce6bc7686e5a74b9ce9154fe"}, + {file = "fonttools-4.58.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b8860f8cd48b345bd1df1d7be650f600f69ee971ffe338c5bd5bcb6bdb3b92c"}, + {file = "fonttools-4.58.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7c9a0acdefcb8d7ccd7c59202056166c400e797047009ecb299b75ab950c2a9c"}, + {file = "fonttools-4.58.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1e1fac0be6be3e4309058e156948cb73196e5fd994268b89b5e3f5a26ee2b582"}, + {file = "fonttools-4.58.1-cp313-cp313-win32.whl", hash = "sha256:aed7f93a9a072f0ce6fb46aad9474824ac6dd9c7c38a72f8295dd14f2215950f"}, + {file = "fonttools-4.58.1-cp313-cp313-win_amd64.whl", hash = "sha256:b27d69c97c20c9bca807f7ae7fc7df459eb62994859ff6a2a489e420634deac3"}, + {file = "fonttools-4.58.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:927762f9fe39ea0a4d9116353251f409389a6b58fab58717d3c3377acfc23452"}, + {file = "fonttools-4.58.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:761ac80efcb7333c71760458c23f728d6fe2dff253b649faf52471fd7aebe584"}, + {file = "fonttools-4.58.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deef910226f788a4e72aa0fc1c1657fb43fa62a4200b883edffdb1392b03fe86"}, + {file = "fonttools-4.58.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ff2859ca2319454df8c26af6693269b21f2e9c0e46df126be916a4f6d85fc75"}, + {file = "fonttools-4.58.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:418927e888e1bcc976b4e190a562f110dc27b0b5cac18033286f805dc137fc66"}, + {file = "fonttools-4.58.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a907007a8b341e8e129d3994d34d1cc85bc8bf38b3a0be65eb14e4668f634a21"}, + {file = "fonttools-4.58.1-cp39-cp39-win32.whl", hash = "sha256:455cb6adc9f3419273925fadc51a6207046e147ce503797b29895ba6bdf85762"}, + {file = "fonttools-4.58.1-cp39-cp39-win_amd64.whl", hash = "sha256:2e64931258866df187bd597b4e9fff488f059a0bc230fbae434f0f112de3ce46"}, + {file = "fonttools-4.58.1-py3-none-any.whl", hash = "sha256:db88365d0962cd6f5bce54b190a4669aeed9c9941aa7bd60a5af084d8d9173d6"}, + {file = "fonttools-4.58.1.tar.gz", hash = "sha256:cbc8868e0a29c3e22628dfa1432adf7a104d86d1bc661cecc3e9173070b6ab2d"}, ] [package.extras] @@ -807,46 +803,46 @@ files = [ [[package]] name = "matplotlib" -version = "3.10.1" +version = "3.10.3" description = "Python plotting package" optional = false python-versions = ">=3.10" groups = ["main"] files = [ - {file = "matplotlib-3.10.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:ff2ae14910be903f4a24afdbb6d7d3a6c44da210fc7d42790b87aeac92238a16"}, - {file = "matplotlib-3.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0721a3fd3d5756ed593220a8b86808a36c5031fce489adb5b31ee6dbb47dd5b2"}, - {file = "matplotlib-3.10.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0673b4b8f131890eb3a1ad058d6e065fb3c6e71f160089b65f8515373394698"}, - {file = "matplotlib-3.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e875b95ac59a7908978fe307ecdbdd9a26af7fa0f33f474a27fcf8c99f64a19"}, - {file = "matplotlib-3.10.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2589659ea30726284c6c91037216f64a506a9822f8e50592d48ac16a2f29e044"}, - {file = "matplotlib-3.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:a97ff127f295817bc34517255c9db6e71de8eddaab7f837b7d341dee9f2f587f"}, - {file = "matplotlib-3.10.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:057206ff2d6ab82ff3e94ebd94463d084760ca682ed5f150817b859372ec4401"}, - {file = "matplotlib-3.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a144867dd6bf8ba8cb5fc81a158b645037e11b3e5cf8a50bd5f9917cb863adfe"}, - {file = "matplotlib-3.10.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56c5d9fcd9879aa8040f196a235e2dcbdf7dd03ab5b07c0696f80bc6cf04bedd"}, - {file = "matplotlib-3.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f69dc9713e4ad2fb21a1c30e37bd445d496524257dfda40ff4a8efb3604ab5c"}, - {file = "matplotlib-3.10.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4c59af3e8aca75d7744b68e8e78a669e91ccbcf1ac35d0102a7b1b46883f1dd7"}, - {file = "matplotlib-3.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:11b65088c6f3dae784bc72e8d039a2580186285f87448babb9ddb2ad0082993a"}, - {file = "matplotlib-3.10.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:66e907a06e68cb6cfd652c193311d61a12b54f56809cafbed9736ce5ad92f107"}, - {file = "matplotlib-3.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b4bb156abb8fa5e5b2b460196f7db7264fc6d62678c03457979e7d5254b7be"}, - {file = "matplotlib-3.10.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1985ad3d97f51307a2cbfc801a930f120def19ba22864182dacef55277102ba6"}, - {file = "matplotlib-3.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c96f2c2f825d1257e437a1482c5a2cf4fee15db4261bd6fc0750f81ba2b4ba3d"}, - {file = "matplotlib-3.10.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:35e87384ee9e488d8dd5a2dd7baf471178d38b90618d8ea147aced4ab59c9bea"}, - {file = "matplotlib-3.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:cfd414bce89cc78a7e1d25202e979b3f1af799e416010a20ab2b5ebb3a02425c"}, - {file = "matplotlib-3.10.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c42eee41e1b60fd83ee3292ed83a97a5f2a8239b10c26715d8a6172226988d7b"}, - {file = "matplotlib-3.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4f0647b17b667ae745c13721602b540f7aadb2a32c5b96e924cd4fea5dcb90f1"}, - {file = "matplotlib-3.10.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa3854b5f9473564ef40a41bc922be978fab217776e9ae1545c9b3a5cf2092a3"}, - {file = "matplotlib-3.10.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e496c01441be4c7d5f96d4e40f7fca06e20dcb40e44c8daa2e740e1757ad9e6"}, - {file = "matplotlib-3.10.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5d45d3f5245be5b469843450617dcad9af75ca50568acf59997bed9311131a0b"}, - {file = "matplotlib-3.10.1-cp313-cp313-win_amd64.whl", hash = "sha256:8e8e25b1209161d20dfe93037c8a7f7ca796ec9aa326e6e4588d8c4a5dd1e473"}, - {file = "matplotlib-3.10.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:19b06241ad89c3ae9469e07d77efa87041eac65d78df4fcf9cac318028009b01"}, - {file = "matplotlib-3.10.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:01e63101ebb3014e6e9f80d9cf9ee361a8599ddca2c3e166c563628b39305dbb"}, - {file = "matplotlib-3.10.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f06bad951eea6422ac4e8bdebcf3a70c59ea0a03338c5d2b109f57b64eb3972"}, - {file = "matplotlib-3.10.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3dfb036f34873b46978f55e240cff7a239f6c4409eac62d8145bad3fc6ba5a3"}, - {file = "matplotlib-3.10.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dc6ab14a7ab3b4d813b88ba957fc05c79493a037f54e246162033591e770de6f"}, - {file = "matplotlib-3.10.1-cp313-cp313t-win_amd64.whl", hash = "sha256:bc411ebd5889a78dabbc457b3fa153203e22248bfa6eedc6797be5df0164dbf9"}, - {file = "matplotlib-3.10.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:648406f1899f9a818cef8c0231b44dcfc4ff36f167101c3fd1c9151f24220fdc"}, - {file = "matplotlib-3.10.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:02582304e352f40520727984a5a18f37e8187861f954fea9be7ef06569cf85b4"}, - {file = "matplotlib-3.10.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3809916157ba871bcdd33d3493acd7fe3037db5daa917ca6e77975a94cef779"}, - {file = "matplotlib-3.10.1.tar.gz", hash = "sha256:e8d2d0e3881b129268585bf4765ad3ee73a4591d77b9a18c214ac7e3a79fb2ba"}, + {file = "matplotlib-3.10.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:213fadd6348d106ca7db99e113f1bea1e65e383c3ba76e8556ba4a3054b65ae7"}, + {file = "matplotlib-3.10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d3bec61cb8221f0ca6313889308326e7bb303d0d302c5cc9e523b2f2e6c73deb"}, + {file = "matplotlib-3.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c21ae75651c0231b3ba014b6d5e08fb969c40cdb5a011e33e99ed0c9ea86ecb"}, + {file = "matplotlib-3.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a49e39755580b08e30e3620efc659330eac5d6534ab7eae50fa5e31f53ee4e30"}, + {file = "matplotlib-3.10.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cf4636203e1190871d3a73664dea03d26fb019b66692cbfd642faafdad6208e8"}, + {file = "matplotlib-3.10.3-cp310-cp310-win_amd64.whl", hash = "sha256:fd5641a9bb9d55f4dd2afe897a53b537c834b9012684c8444cc105895c8c16fd"}, + {file = "matplotlib-3.10.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0ef061f74cd488586f552d0c336b2f078d43bc00dc473d2c3e7bfee2272f3fa8"}, + {file = "matplotlib-3.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96985d14dc5f4a736bbea4b9de9afaa735f8a0fc2ca75be2fa9e96b2097369d"}, + {file = "matplotlib-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c5f0283da91e9522bdba4d6583ed9d5521566f63729ffb68334f86d0bb98049"}, + {file = "matplotlib-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdfa07c0ec58035242bc8b2c8aae37037c9a886370eef6850703d7583e19964b"}, + {file = "matplotlib-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c0b9849a17bce080a16ebcb80a7b714b5677d0ec32161a2cc0a8e5a6030ae220"}, + {file = "matplotlib-3.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:eef6ed6c03717083bc6d69c2d7ee8624205c29a8e6ea5a31cd3492ecdbaee1e1"}, + {file = "matplotlib-3.10.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ab1affc11d1f495ab9e6362b8174a25afc19c081ba5b0775ef00533a4236eea"}, + {file = "matplotlib-3.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a818d8bdcafa7ed2eed74487fdb071c09c1ae24152d403952adad11fa3c65b4"}, + {file = "matplotlib-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748ebc3470c253e770b17d8b0557f0aa85cf8c63fd52f1a61af5b27ec0b7ffee"}, + {file = "matplotlib-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed70453fd99733293ace1aec568255bc51c6361cb0da94fa5ebf0649fdb2150a"}, + {file = "matplotlib-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dbed9917b44070e55640bd13419de83b4c918e52d97561544814ba463811cbc7"}, + {file = "matplotlib-3.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:cf37d8c6ef1a48829443e8ba5227b44236d7fcaf7647caa3178a4ff9f7a5be05"}, + {file = "matplotlib-3.10.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9f2efccc8dcf2b86fc4ee849eea5dcaecedd0773b30f47980dc0cbeabf26ec84"}, + {file = "matplotlib-3.10.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3ddbba06a6c126e3301c3d272a99dcbe7f6c24c14024e80307ff03791a5f294e"}, + {file = "matplotlib-3.10.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748302b33ae9326995b238f606e9ed840bf5886ebafcb233775d946aa8107a15"}, + {file = "matplotlib-3.10.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a80fcccbef63302c0efd78042ea3c2436104c5b1a4d3ae20f864593696364ac7"}, + {file = "matplotlib-3.10.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:55e46cbfe1f8586adb34f7587c3e4f7dedc59d5226719faf6cb54fc24f2fd52d"}, + {file = "matplotlib-3.10.3-cp313-cp313-win_amd64.whl", hash = "sha256:151d89cb8d33cb23345cd12490c76fd5d18a56581a16d950b48c6ff19bb2ab93"}, + {file = "matplotlib-3.10.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:c26dd9834e74d164d06433dc7be5d75a1e9890b926b3e57e74fa446e1a62c3e2"}, + {file = "matplotlib-3.10.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:24853dad5b8c84c8c2390fc31ce4858b6df504156893292ce8092d190ef8151d"}, + {file = "matplotlib-3.10.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68f7878214d369d7d4215e2a9075fef743be38fa401d32e6020bab2dfabaa566"}, + {file = "matplotlib-3.10.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6929fc618cb6db9cb75086f73b3219bbb25920cb24cee2ea7a12b04971a4158"}, + {file = "matplotlib-3.10.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6c7818292a5cc372a2dc4c795e5c356942eb8350b98ef913f7fda51fe175ac5d"}, + {file = "matplotlib-3.10.3-cp313-cp313t-win_amd64.whl", hash = "sha256:4f23ffe95c5667ef8a2b56eea9b53db7f43910fa4a2d5472ae0f72b64deab4d5"}, + {file = "matplotlib-3.10.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:86ab63d66bbc83fdb6733471d3bff40897c1e9921cba112accd748eee4bce5e4"}, + {file = "matplotlib-3.10.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a48f9c08bf7444b5d2391a83e75edb464ccda3c380384b36532a0962593a1751"}, + {file = "matplotlib-3.10.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb73d8aa75a237457988f9765e4dfe1c0d2453c5ca4eabc897d4309672c8e014"}, + {file = "matplotlib-3.10.3.tar.gz", hash = "sha256:2f82d2c5bb7ae93aaaa4cd42aca65d76ce6376f83304fa3a630b569aca274df0"}, ] [package.dependencies] @@ -865,77 +861,78 @@ dev = ["meson-python (>=0.13.1,<0.17.0)", "pybind11 (>=2.13.2,!=2.13.3)", "setup [[package]] name = "metpy" -version = "1.6.3" +version = "1.7.0" description = "Collection of tools for reading, visualizing and performing calculations with weather data." optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["main"] files = [ - {file = "MetPy-1.6.3-py3-none-any.whl", hash = "sha256:9946436197394d63647aac4310191028707bd644d4a8e41ee310d6d77c0f71f8"}, - {file = "metpy-1.6.3.tar.gz", hash = "sha256:23df14a9a67206fd1ffe6d5d3208587941d6abf9778c04dc7a3a1dc7a9a60766"}, + {file = "metpy-1.7.0-py3-none-any.whl", hash = "sha256:9403eb3ff1860096fd758418dd17271d5bfbb10006f2031c694543f74eb73330"}, + {file = "metpy-1.7.0.tar.gz", hash = "sha256:aad7e03dc735cf8bfd870d16aca24920a707152de6caa24dbaf4da695c6f6ae4"}, ] [package.dependencies] matplotlib = ">=3.5.0" -numpy = ">=1.20.0" +numpy = ">=1.23.0" pandas = ">=1.4.0" pint = ">=0.17" pooch = ">=1.2.0" -pyproj = ">=3.0.0" +pyproj = ">=3.3.0" scipy = ">=1.8.0" -traitlets = ">=5.0.5" -xarray = ">=0.21.0" +traitlets = ">=5.1.0" +xarray = ">=2022.6.0" [package.extras] doc = ["metpy[examples]", "myst-parser", "netCDF4", "pydata-sphinx-theme", "sphinx", "sphinx-design", "sphinx-gallery (>=0.4)"] examples = ["geopandas (>=0.6.0)", "metpy[extras]"] -extras = ["cartopy (>=0.21.0)", "dask (>=2020.12.0)", "shapely (>=1.6.4)"] -test = ["netCDF4", "packaging (>=21.0)", "pytest (>=6.2)", "pytest-mpl"] +extras = ["boto3 (>=1.26.45)", "cartopy (>=0.21.0)", "dask (>=2020.12.0)", "shapely (>=1.6.4)"] +test = ["netCDF4", "packaging (>=21.0)", "pytest (>=7.0)", "pytest-mpl", "vcrpy (>=4.3.1)"] [[package]] name = "mypy" -version = "1.15.0" +version = "1.16.0" description = "Optional static typing for Python" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "mypy-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:979e4e1a006511dacf628e36fadfecbcc0160a8af6ca7dad2f5025529e082c13"}, - {file = "mypy-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c4bb0e1bd29f7d34efcccd71cf733580191e9a264a2202b0239da95984c5b559"}, - {file = "mypy-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be68172e9fd9ad8fb876c6389f16d1c1b5f100ffa779f77b1fb2176fcc9ab95b"}, - {file = "mypy-1.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c7be1e46525adfa0d97681432ee9fcd61a3964c2446795714699a998d193f1a3"}, - {file = "mypy-1.15.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2e2c2e6d3593f6451b18588848e66260ff62ccca522dd231cd4dd59b0160668b"}, - {file = "mypy-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:6983aae8b2f653e098edb77f893f7b6aca69f6cffb19b2cc7443f23cce5f4828"}, - {file = "mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f"}, - {file = "mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5"}, - {file = "mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e"}, - {file = "mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c"}, - {file = "mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f"}, - {file = "mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f"}, - {file = "mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd"}, - {file = "mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f"}, - {file = "mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464"}, - {file = "mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee"}, - {file = "mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e"}, - {file = "mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22"}, - {file = "mypy-1.15.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93faf3fdb04768d44bf28693293f3904bbb555d076b781ad2530214ee53e3445"}, - {file = "mypy-1.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:811aeccadfb730024c5d3e326b2fbe9249bb7413553f15499a4050f7c30e801d"}, - {file = "mypy-1.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:98b7b9b9aedb65fe628c62a6dc57f6d5088ef2dfca37903a7d9ee374d03acca5"}, - {file = "mypy-1.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c43a7682e24b4f576d93072216bf56eeff70d9140241f9edec0c104d0c515036"}, - {file = "mypy-1.15.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:baefc32840a9f00babd83251560e0ae1573e2f9d1b067719479bfb0e987c6357"}, - {file = "mypy-1.15.0-cp313-cp313-win_amd64.whl", hash = "sha256:b9378e2c00146c44793c98b8d5a61039a048e31f429fb0eb546d93f4b000bedf"}, - {file = "mypy-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e601a7fa172c2131bff456bb3ee08a88360760d0d2f8cbd7a75a65497e2df078"}, - {file = "mypy-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:712e962a6357634fef20412699a3655c610110e01cdaa6180acec7fc9f8513ba"}, - {file = "mypy-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f95579473af29ab73a10bada2f9722856792a36ec5af5399b653aa28360290a5"}, - {file = "mypy-1.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8f8722560a14cde92fdb1e31597760dc35f9f5524cce17836c0d22841830fd5b"}, - {file = "mypy-1.15.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1fbb8da62dc352133d7d7ca90ed2fb0e9d42bb1a32724c287d3c76c58cbaa9c2"}, - {file = "mypy-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:d10d994b41fb3497719bbf866f227b3489048ea4bbbb5015357db306249f7980"}, - {file = "mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e"}, - {file = "mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43"}, + {file = "mypy-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7909541fef256527e5ee9c0a7e2aeed78b6cda72ba44298d1334fe7881b05c5c"}, + {file = "mypy-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e71d6f0090c2256c713ed3d52711d01859c82608b5d68d4fa01a3fe30df95571"}, + {file = "mypy-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:936ccfdd749af4766be824268bfe22d1db9eb2f34a3ea1d00ffbe5b5265f5491"}, + {file = "mypy-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4086883a73166631307fdd330c4a9080ce24913d4f4c5ec596c601b3a4bdd777"}, + {file = "mypy-1.16.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:feec38097f71797da0231997e0de3a58108c51845399669ebc532c815f93866b"}, + {file = "mypy-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:09a8da6a0ee9a9770b8ff61b39c0bb07971cda90e7297f4213741b48a0cc8d93"}, + {file = "mypy-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9f826aaa7ff8443bac6a494cf743f591488ea940dd360e7dd330e30dd772a5ab"}, + {file = "mypy-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:82d056e6faa508501af333a6af192c700b33e15865bda49611e3d7d8358ebea2"}, + {file = "mypy-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:089bedc02307c2548eb51f426e085546db1fa7dd87fbb7c9fa561575cf6eb1ff"}, + {file = "mypy-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6a2322896003ba66bbd1318c10d3afdfe24e78ef12ea10e2acd985e9d684a666"}, + {file = "mypy-1.16.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:021a68568082c5b36e977d54e8f1de978baf401a33884ffcea09bd8e88a98f4c"}, + {file = "mypy-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:54066fed302d83bf5128632d05b4ec68412e1f03ef2c300434057d66866cea4b"}, + {file = "mypy-1.16.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c5436d11e89a3ad16ce8afe752f0f373ae9620841c50883dc96f8b8805620b13"}, + {file = "mypy-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f2622af30bf01d8fc36466231bdd203d120d7a599a6d88fb22bdcb9dbff84090"}, + {file = "mypy-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d045d33c284e10a038f5e29faca055b90eee87da3fc63b8889085744ebabb5a1"}, + {file = "mypy-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b4968f14f44c62e2ec4a038c8797a87315be8df7740dc3ee8d3bfe1c6bf5dba8"}, + {file = "mypy-1.16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:eb14a4a871bb8efb1e4a50360d4e3c8d6c601e7a31028a2c79f9bb659b63d730"}, + {file = "mypy-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:bd4e1ebe126152a7bbaa4daedd781c90c8f9643c79b9748caa270ad542f12bec"}, + {file = "mypy-1.16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a9e056237c89f1587a3be1a3a70a06a698d25e2479b9a2f57325ddaaffc3567b"}, + {file = "mypy-1.16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0b07e107affb9ee6ce1f342c07f51552d126c32cd62955f59a7db94a51ad12c0"}, + {file = "mypy-1.16.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c6fb60cbd85dc65d4d63d37cb5c86f4e3a301ec605f606ae3a9173e5cf34997b"}, + {file = "mypy-1.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a7e32297a437cc915599e0578fa6bc68ae6a8dc059c9e009c628e1c47f91495d"}, + {file = "mypy-1.16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:afe420c9380ccec31e744e8baff0d406c846683681025db3531b32db56962d52"}, + {file = "mypy-1.16.0-cp313-cp313-win_amd64.whl", hash = "sha256:55f9076c6ce55dd3f8cd0c6fff26a008ca8e5131b89d5ba6d86bd3f47e736eeb"}, + {file = "mypy-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f56236114c425620875c7cf71700e3d60004858da856c6fc78998ffe767b73d3"}, + {file = "mypy-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:15486beea80be24ff067d7d0ede673b001d0d684d0095803b3e6e17a886a2a92"}, + {file = "mypy-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f2ed0e0847a80655afa2c121835b848ed101cc7b8d8d6ecc5205aedc732b1436"}, + {file = "mypy-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eb5fbc8063cb4fde7787e4c0406aa63094a34a2daf4673f359a1fb64050e9cb2"}, + {file = "mypy-1.16.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a5fcfdb7318c6a8dd127b14b1052743b83e97a970f0edb6c913211507a255e20"}, + {file = "mypy-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:2e7e0ad35275e02797323a5aa1be0b14a4d03ffdb2e5f2b0489fa07b89c67b21"}, + {file = "mypy-1.16.0-py3-none-any.whl", hash = "sha256:29e1499864a3888bca5c1542f2d7232c6e586295183320caa95758fc84034031"}, + {file = "mypy-1.16.0.tar.gz", hash = "sha256:84b94283f817e2aa6350a14b4a8fb2a35a53c286f97c9d30f53b63620e7af8ab"}, ] [package.dependencies] mypy_extensions = ">=1.0.0" +pathspec = ">=0.9.0" typing_extensions = ">=4.6.0" [package.extras] @@ -957,16 +954,59 @@ files = [ {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, ] +[[package]] +name = "mysql-connector-python" +version = "9.3.0" +description = "A self-contained Python driver for communicating with MySQL servers, using an API that is compliant with the Python Database API Specification v2.0 (PEP 249)." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "mysql-connector-python-9.3.0.tar.gz", hash = "sha256:8b16d51447e3603f18478fb5a19b333bfb73fb58f872eb055a105635f53d2345"}, + {file = "mysql_connector_python-9.3.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:f979e712187796ad57cd0bef76666dd48ed4887104775833c9489ea837144ad8"}, + {file = "mysql_connector_python-9.3.0-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:ee1a901c287471013570e29cdf5ca7159898af31cf3a582180eadd41c96b42c9"}, + {file = "mysql_connector_python-9.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:5508ff6b79d8d46b15791401784a1b5abd10c8e05aec2684c4a50e92c5893cd2"}, + {file = "mysql_connector_python-9.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:d47a0d5b2b9b02f06647d5d7bbb19e237f234d6be91d0e0c935629faacf0797f"}, + {file = "mysql_connector_python-9.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:e24be22a5d96f3535afa5dd331166b02bf72655ea6ed6a2a0eb548c313548788"}, + {file = "mysql_connector_python-9.3.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:e8b0131006608e533b8eab20078f9e65486068c984ed3efd28413d350d241f44"}, + {file = "mysql_connector_python-9.3.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:cb72fcda90b616f0b2d3dae257441e06e8896b2780c3dddc6a65275ec1408d9a"}, + {file = "mysql_connector_python-9.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9cc8d3c2f45d16b064b0063db857f8a7187b8659253dd32e3f19df1bf1d55ea0"}, + {file = "mysql_connector_python-9.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:9c898c5f3e34314ed825f2ffdd52d674e03d59c45d02ac8083a8ec5173c1e0f8"}, + {file = "mysql_connector_python-9.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:f10fe89397e8da81026d8143e17fc5c12ae5e66e51753a0f49e1db179c4f7113"}, + {file = "mysql_connector_python-9.3.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:2589af070babdff9c920ee37f929218d80afa704f4e2a99f1ddcb13d19de4450"}, + {file = "mysql_connector_python-9.3.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:1916256ecd039f4673715550d28138416bac5962335e06d36f7434c47feb5232"}, + {file = "mysql_connector_python-9.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:d33e2f88e1d4b15844cfed2bb6e90612525ba2c1af2fb10b4a25b2c89a1fe49a"}, + {file = "mysql_connector_python-9.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:0aedee809e1f8dbab6b2732f51ee1619b54a56d15b9070655bc31fb822c1a015"}, + {file = "mysql_connector_python-9.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:3853799f4b719357ea25eba05f5f278a158a85a5c8209b3d058947a948bc9262"}, + {file = "mysql_connector_python-9.3.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:9516a4cdbaee3c9200f0e7d9aafb31057692f45c202cdcb43a3f9b37c94e7c84"}, + {file = "mysql_connector_python-9.3.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:495798dd34445d749991fb3a2aa87b4205100676939556d8d4aab5d5558e7a1f"}, + {file = "mysql_connector_python-9.3.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:be0ef15f6023ae2037347498f005a4471f694f8a6b8384c3194895e153120286"}, + {file = "mysql_connector_python-9.3.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:4364d3a37c449f1c0bb9e52fd4eddc620126b9897b6b9f2fd1b3f33dacc16356"}, + {file = "mysql_connector_python-9.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:2a5de57814217077a8672063167b616b1034a37b614b93abcb602cc0b8c6fade"}, + {file = "mysql_connector_python-9.3.0-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:8c79b500f1f9f12761426199d0498309ee5d20c94ed94fc8ae356679667f8181"}, + {file = "mysql_connector_python-9.3.0-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:d87c9e8b5aa9a16cefebe017ee45ddfbad53e668f94d01fe2e055bb8daab9353"}, + {file = "mysql_connector_python-9.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:ac70a7128f7e690dc0f4376be8366c7e5c8fa47a785232b8abba948576f016ff"}, + {file = "mysql_connector_python-9.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:66d48ec0ee903a84bcaf5d4d1901ed536fdd90ce6ecae0686f094b4530faf545"}, + {file = "mysql_connector_python-9.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:55d4a8ace6f97d58d9318d1250d903b0d3b100a6b798442a99c4ac966b974d12"}, + {file = "mysql_connector_python-9.3.0-py2.py3-none-any.whl", hash = "sha256:8ab7719d614cf5463521082fab86afc21ada504b538166090e00eeaa1ff729bc"}, +] + +[package.extras] +dns-srv = ["dnspython (==2.6.1)"] +fido2 = ["fido2 (==1.1.2)"] +gssapi = ["gssapi (==1.8.3)"] +telemetry = ["opentelemetry-api (==1.18.0)", "opentelemetry-exporter-otlp-proto-http (==1.18.0)", "opentelemetry-sdk (==1.18.0)"] + [[package]] name = "narwhals" -version = "1.35.0" +version = "1.41.0" description = "Extremely lightweight compatibility layer between dataframe libraries" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "narwhals-1.35.0-py3-none-any.whl", hash = "sha256:7562af132fa3f8aaaf34dc96d7ec95bdca29d1c795e8fcf14e01edf1d32122bc"}, - {file = "narwhals-1.35.0.tar.gz", hash = "sha256:07477d18487fbc940243b69818a177ed7119b737910a8a254fb67688b48a7c96"}, + {file = "narwhals-1.41.0-py3-none-any.whl", hash = "sha256:d958336b40952e4c4b7aeef259a7074851da0800cf902186a58f2faeff97be02"}, + {file = "narwhals-1.41.0.tar.gz", hash = "sha256:0ab2e5a1757a19b071e37ca74b53b0b5426789321d68939738337dfddea629b5"}, ] [package.extras] @@ -979,8 +1019,28 @@ pandas = ["pandas (>=0.25.3)"] polars = ["polars (>=0.20.3)"] pyarrow = ["pyarrow (>=11.0.0)"] pyspark = ["pyspark (>=3.5.0)"] +pyspark-connect = ["pyspark[connect] (>=3.5.0)"] sqlframe = ["sqlframe (>=3.22.0)"] +[[package]] +name = "ncepbufr" +version = "12.2.0" +description = "packaging the ncepbufr library for use in python" +optional = false +python-versions = ">=3.13,<4.0" +groups = ["main"] +files = [ + {file = "ncepbufr-12.2.0-py313-none-macosx_15_0_arm64.whl", hash = "sha256:d11a3da73d0485b151f4b704ee26845600de163c2230cd2e1b5cb17acf78994f"}, +] + +[package.dependencies] +netcdf4 = ">=1,<2" +numpy = ">=2,<3" + +[package.source] +type = "file" +url = "third_party/NCEPLIBS-bufr/wheel_dist/ncepbufr-12.2.0-py313-none-macosx_15_0_arm64.whl" + [[package]] name = "netcdf4" version = "1.7.2" @@ -1031,67 +1091,67 @@ tests = ["Cython", "packaging", "pytest"] [[package]] name = "numpy" -version = "2.2.5" +version = "2.2.6" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.10" groups = ["main"] files = [ - {file = "numpy-2.2.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1f4a922da1729f4c40932b2af4fe84909c7a6e167e6e99f71838ce3a29f3fe26"}, - {file = "numpy-2.2.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b6f91524d31b34f4a5fee24f5bc16dcd1491b668798b6d85585d836c1e633a6a"}, - {file = "numpy-2.2.5-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:19f4718c9012e3baea91a7dba661dcab2451cda2550678dc30d53acb91a7290f"}, - {file = "numpy-2.2.5-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:eb7fd5b184e5d277afa9ec0ad5e4eb562ecff541e7f60e69ee69c8d59e9aeaba"}, - {file = "numpy-2.2.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6413d48a9be53e183eb06495d8e3b006ef8f87c324af68241bbe7a39e8ff54c3"}, - {file = "numpy-2.2.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7451f92eddf8503c9b8aa4fe6aa7e87fd51a29c2cfc5f7dbd72efde6c65acf57"}, - {file = "numpy-2.2.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0bcb1d057b7571334139129b7f941588f69ce7c4ed15a9d6162b2ea54ded700c"}, - {file = "numpy-2.2.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:36ab5b23915887543441efd0417e6a3baa08634308894316f446027611b53bf1"}, - {file = "numpy-2.2.5-cp310-cp310-win32.whl", hash = "sha256:422cc684f17bc963da5f59a31530b3936f57c95a29743056ef7a7903a5dbdf88"}, - {file = "numpy-2.2.5-cp310-cp310-win_amd64.whl", hash = "sha256:e4f0b035d9d0ed519c813ee23e0a733db81ec37d2e9503afbb6e54ccfdee0fa7"}, - {file = "numpy-2.2.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c42365005c7a6c42436a54d28c43fe0e01ca11eb2ac3cefe796c25a5f98e5e9b"}, - {file = "numpy-2.2.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:498815b96f67dc347e03b719ef49c772589fb74b8ee9ea2c37feae915ad6ebda"}, - {file = "numpy-2.2.5-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:6411f744f7f20081b1b4e7112e0f4c9c5b08f94b9f086e6f0adf3645f85d3a4d"}, - {file = "numpy-2.2.5-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:9de6832228f617c9ef45d948ec1cd8949c482238d68b2477e6f642c33a7b0a54"}, - {file = "numpy-2.2.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:369e0d4647c17c9363244f3468f2227d557a74b6781cb62ce57cf3ef5cc7c610"}, - {file = "numpy-2.2.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:262d23f383170f99cd9191a7c85b9a50970fe9069b2f8ab5d786eca8a675d60b"}, - {file = "numpy-2.2.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:aa70fdbdc3b169d69e8c59e65c07a1c9351ceb438e627f0fdcd471015cd956be"}, - {file = "numpy-2.2.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37e32e985f03c06206582a7323ef926b4e78bdaa6915095ef08070471865b906"}, - {file = "numpy-2.2.5-cp311-cp311-win32.whl", hash = "sha256:f5045039100ed58fa817a6227a356240ea1b9a1bc141018864c306c1a16d4175"}, - {file = "numpy-2.2.5-cp311-cp311-win_amd64.whl", hash = "sha256:b13f04968b46ad705f7c8a80122a42ae8f620536ea38cf4bdd374302926424dd"}, - {file = "numpy-2.2.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ee461a4eaab4f165b68780a6a1af95fb23a29932be7569b9fab666c407969051"}, - {file = "numpy-2.2.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ec31367fd6a255dc8de4772bd1658c3e926d8e860a0b6e922b615e532d320ddc"}, - {file = "numpy-2.2.5-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:47834cde750d3c9f4e52c6ca28a7361859fcaf52695c7dc3cc1a720b8922683e"}, - {file = "numpy-2.2.5-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:2c1a1c6ccce4022383583a6ded7bbcda22fc635eb4eb1e0a053336425ed36dfa"}, - {file = "numpy-2.2.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d75f338f5f79ee23548b03d801d28a505198297534f62416391857ea0479571"}, - {file = "numpy-2.2.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a801fef99668f309b88640e28d261991bfad9617c27beda4a3aec4f217ea073"}, - {file = "numpy-2.2.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:abe38cd8381245a7f49967a6010e77dbf3680bd3627c0fe4362dd693b404c7f8"}, - {file = "numpy-2.2.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5a0ac90e46fdb5649ab6369d1ab6104bfe5854ab19b645bf5cda0127a13034ae"}, - {file = "numpy-2.2.5-cp312-cp312-win32.whl", hash = "sha256:0cd48122a6b7eab8f06404805b1bd5856200e3ed6f8a1b9a194f9d9054631beb"}, - {file = "numpy-2.2.5-cp312-cp312-win_amd64.whl", hash = "sha256:ced69262a8278547e63409b2653b372bf4baff0870c57efa76c5703fd6543282"}, - {file = "numpy-2.2.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:059b51b658f4414fff78c6d7b1b4e18283ab5fa56d270ff212d5ba0c561846f4"}, - {file = "numpy-2.2.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:47f9ed103af0bc63182609044b0490747e03bd20a67e391192dde119bf43d52f"}, - {file = "numpy-2.2.5-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:261a1ef047751bb02f29dfe337230b5882b54521ca121fc7f62668133cb119c9"}, - {file = "numpy-2.2.5-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:4520caa3807c1ceb005d125a75e715567806fed67e315cea619d5ec6e75a4191"}, - {file = "numpy-2.2.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d14b17b9be5f9c9301f43d2e2a4886a33b53f4e6fdf9ca2f4cc60aeeee76372"}, - {file = "numpy-2.2.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba321813a00e508d5421104464510cc962a6f791aa2fca1c97b1e65027da80d"}, - {file = "numpy-2.2.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4cbdef3ddf777423060c6f81b5694bad2dc9675f110c4b2a60dc0181543fac7"}, - {file = "numpy-2.2.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:54088a5a147ab71a8e7fdfd8c3601972751ded0739c6b696ad9cb0343e21ab73"}, - {file = "numpy-2.2.5-cp313-cp313-win32.whl", hash = "sha256:c8b82a55ef86a2d8e81b63da85e55f5537d2157165be1cb2ce7cfa57b6aef38b"}, - {file = "numpy-2.2.5-cp313-cp313-win_amd64.whl", hash = "sha256:d8882a829fd779f0f43998e931c466802a77ca1ee0fe25a3abe50278616b1471"}, - {file = "numpy-2.2.5-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:e8b025c351b9f0e8b5436cf28a07fa4ac0204d67b38f01433ac7f9b870fa38c6"}, - {file = "numpy-2.2.5-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:8dfa94b6a4374e7851bbb6f35e6ded2120b752b063e6acdd3157e4d2bb922eba"}, - {file = "numpy-2.2.5-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:97c8425d4e26437e65e1d189d22dff4a079b747ff9c2788057bfb8114ce1e133"}, - {file = "numpy-2.2.5-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:352d330048c055ea6db701130abc48a21bec690a8d38f8284e00fab256dc1376"}, - {file = "numpy-2.2.5-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b4c0773b6ada798f51f0f8e30c054d32304ccc6e9c5d93d46cb26f3d385ab19"}, - {file = "numpy-2.2.5-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55f09e00d4dccd76b179c0f18a44f041e5332fd0e022886ba1c0bbf3ea4a18d0"}, - {file = "numpy-2.2.5-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:02f226baeefa68f7d579e213d0f3493496397d8f1cff5e2b222af274c86a552a"}, - {file = "numpy-2.2.5-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c26843fd58f65da9491165072da2cccc372530681de481ef670dcc8e27cfb066"}, - {file = "numpy-2.2.5-cp313-cp313t-win32.whl", hash = "sha256:1a161c2c79ab30fe4501d5a2bbfe8b162490757cf90b7f05be8b80bc02f7bb8e"}, - {file = "numpy-2.2.5-cp313-cp313t-win_amd64.whl", hash = "sha256:d403c84991b5ad291d3809bace5e85f4bbf44a04bdc9a88ed2bb1807b3360bb8"}, - {file = "numpy-2.2.5-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b4ea7e1cff6784e58fe281ce7e7f05036b3e1c89c6f922a6bfbc0a7e8768adbe"}, - {file = "numpy-2.2.5-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:d7543263084a85fbc09c704b515395398d31d6395518446237eac219eab9e55e"}, - {file = "numpy-2.2.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0255732338c4fdd00996c0421884ea8a3651eea555c3a56b84892b66f696eb70"}, - {file = "numpy-2.2.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d2e3bdadaba0e040d1e7ab39db73e0afe2c74ae277f5614dad53eadbecbbb169"}, - {file = "numpy-2.2.5.tar.gz", hash = "sha256:a9c0d994680cd991b1cb772e8b297340085466a6fe964bc9d4e80f5e2f43c291"}, + {file = "numpy-2.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb"}, + {file = "numpy-2.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90"}, + {file = "numpy-2.2.6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163"}, + {file = "numpy-2.2.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf"}, + {file = "numpy-2.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83"}, + {file = "numpy-2.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915"}, + {file = "numpy-2.2.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680"}, + {file = "numpy-2.2.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289"}, + {file = "numpy-2.2.6-cp310-cp310-win32.whl", hash = "sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d"}, + {file = "numpy-2.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3"}, + {file = "numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae"}, + {file = "numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a"}, + {file = "numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42"}, + {file = "numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491"}, + {file = "numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a"}, + {file = "numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf"}, + {file = "numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1"}, + {file = "numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab"}, + {file = "numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47"}, + {file = "numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303"}, + {file = "numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff"}, + {file = "numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c"}, + {file = "numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3"}, + {file = "numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282"}, + {file = "numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87"}, + {file = "numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249"}, + {file = "numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49"}, + {file = "numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de"}, + {file = "numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4"}, + {file = "numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2"}, + {file = "numpy-2.2.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0811bb762109d9708cca4d0b13c4f67146e3c3b7cf8d34018c722adb2d957c84"}, + {file = "numpy-2.2.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:287cc3162b6f01463ccd86be154f284d0893d2b3ed7292439ea97eafa8170e0b"}, + {file = "numpy-2.2.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f1372f041402e37e5e633e586f62aa53de2eac8d98cbfb822806ce4bbefcb74d"}, + {file = "numpy-2.2.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:55a4d33fa519660d69614a9fad433be87e5252f4b03850642f88993f7b2ca566"}, + {file = "numpy-2.2.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f92729c95468a2f4f15e9bb94c432a9229d0d50de67304399627a943201baa2f"}, + {file = "numpy-2.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bc23a79bfabc5d056d106f9befb8d50c31ced2fbc70eedb8155aec74a45798f"}, + {file = "numpy-2.2.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e3143e4451880bed956e706a3220b4e5cf6172ef05fcc397f6f36a550b1dd868"}, + {file = "numpy-2.2.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4f13750ce79751586ae2eb824ba7e1e8dba64784086c98cdbbcc6a42112ce0d"}, + {file = "numpy-2.2.6-cp313-cp313-win32.whl", hash = "sha256:5beb72339d9d4fa36522fc63802f469b13cdbe4fdab4a288f0c441b74272ebfd"}, + {file = "numpy-2.2.6-cp313-cp313-win_amd64.whl", hash = "sha256:b0544343a702fa80c95ad5d3d608ea3599dd54d4632df855e4c8d24eb6ecfa1c"}, + {file = "numpy-2.2.6-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0bca768cd85ae743b2affdc762d617eddf3bcf8724435498a1e80132d04879e6"}, + {file = "numpy-2.2.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:fc0c5673685c508a142ca65209b4e79ed6740a4ed6b2267dbba90f34b0b3cfda"}, + {file = "numpy-2.2.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:5bd4fc3ac8926b3819797a7c0e2631eb889b4118a9898c84f585a54d475b7e40"}, + {file = "numpy-2.2.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:fee4236c876c4e8369388054d02d0e9bb84821feb1a64dd59e137e6511a551f8"}, + {file = "numpy-2.2.6-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1dda9c7e08dc141e0247a5b8f49cf05984955246a327d4c48bda16821947b2f"}, + {file = "numpy-2.2.6-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f447e6acb680fd307f40d3da4852208af94afdfab89cf850986c3ca00562f4fa"}, + {file = "numpy-2.2.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:389d771b1623ec92636b0786bc4ae56abafad4a4c513d36a55dce14bd9ce8571"}, + {file = "numpy-2.2.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8e9ace4a37db23421249ed236fdcdd457d671e25146786dfc96835cd951aa7c1"}, + {file = "numpy-2.2.6-cp313-cp313t-win32.whl", hash = "sha256:038613e9fb8c72b0a41f025a7e4c3f0b7a1b5d768ece4796b674c8f3fe13efff"}, + {file = "numpy-2.2.6-cp313-cp313t-win_amd64.whl", hash = "sha256:6031dd6dfecc0cf9f668681a37648373bddd6421fff6c66ec1624eed0180ee06"}, + {file = "numpy-2.2.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d"}, + {file = "numpy-2.2.6-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db"}, + {file = "numpy-2.2.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543"}, + {file = "numpy-2.2.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00"}, + {file = "numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd"}, ] [[package]] @@ -1189,6 +1249,18 @@ sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-d test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] xml = ["lxml (>=4.9.2)"] +[[package]] +name = "pathspec" +version = "0.12.1" +description = "Utility library for gitignore style pattern matching of file paths." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, +] + [[package]] name = "pillow" version = "11.2.1" @@ -1321,14 +1393,14 @@ xarray = ["xarray"] [[package]] name = "platformdirs" -version = "4.3.7" +version = "4.3.8" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "platformdirs-4.3.7-py3-none-any.whl", hash = "sha256:a03875334331946f13c549dbd8f4bac7a13a50a895a0eb1e8c6a8ace80d40a94"}, - {file = "platformdirs-4.3.7.tar.gz", hash = "sha256:eb437d586b6a0986388f0d6f74aa0cde27b48d0e3d66843640bfb6bdcdb6e351"}, + {file = "platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4"}, + {file = "platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc"}, ] [package.extras] @@ -1338,14 +1410,14 @@ type = ["mypy (>=1.14.1)"] [[package]] name = "plotly" -version = "6.0.1" +version = "6.1.2" description = "An open-source interactive data visualization library for Python" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "plotly-6.0.1-py3-none-any.whl", hash = "sha256:4714db20fea57a435692c548a4eb4fae454f7daddf15f8d8ba7e1045681d7768"}, - {file = "plotly-6.0.1.tar.gz", hash = "sha256:dd8400229872b6e3c964b099be699f8d00c489a974f2cfccfad5e8240873366b"}, + {file = "plotly-6.1.2-py3-none-any.whl", hash = "sha256:f1548a8ed9158d59e03d7fed548c7db5549f3130d9ae19293c8638c202648f6d"}, + {file = "plotly-6.1.2.tar.gz", hash = "sha256:4fdaa228926ba3e3a213f4d1713287e69dcad1a7e66cf2025bd7d7026d5014b4"}, ] [package.dependencies] @@ -1353,23 +1425,25 @@ narwhals = ">=1.15.1" packaging = "*" [package.extras] +dev = ["black (==25.1.0)"] express = ["numpy"] +kaleido = ["kaleido (==1.0.0rc13)"] [[package]] name = "pluggy" -version = "1.5.0" +version = "1.6.0" description = "plugin and hook calling mechanisms for python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, + {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, + {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, ] [package.extras] dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] +testing = ["coverage", "pytest", "pytest-benchmark"] [[package]] name = "pooch" @@ -1420,6 +1494,21 @@ files = [ {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, ] +[[package]] +name = "pygments" +version = "2.19.1" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, + {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, +] + +[package.extras] +windows-terminal = ["colorama (>=0.4.6)"] + [[package]] name = "pyparsing" version = "3.2.3" @@ -1483,24 +1572,25 @@ certifi = "*" [[package]] name = "pytest" -version = "8.3.5" +version = "8.4.0" description = "pytest: simple powerful testing with Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820"}, - {file = "pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845"}, + {file = "pytest-8.4.0-py3-none-any.whl", hash = "sha256:f40f825768ad76c0977cbacdf1fd37c6f7a468e460ea6a0636078f8972d4517e"}, + {file = "pytest-8.4.0.tar.gz", hash = "sha256:14d920b48472ea0dbf68e45b96cd1ffda4705f33307dcc86c676c1b5104838a6"}, ] [package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -iniconfig = "*" -packaging = "*" +colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} +iniconfig = ">=1" +packaging = ">=20" pluggy = ">=1.5,<2" +pygments = ">=2.7.2" [package.extras] -dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] [[package]] name = "python-dateutil" @@ -1616,86 +1706,86 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "ruff" -version = "0.11.6" +version = "0.11.12" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "ruff-0.11.6-py3-none-linux_armv6l.whl", hash = "sha256:d84dcbe74cf9356d1bdb4a78cf74fd47c740bf7bdeb7529068f69b08272239a1"}, - {file = "ruff-0.11.6-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9bc583628e1096148011a5d51ff3c836f51899e61112e03e5f2b1573a9b726de"}, - {file = "ruff-0.11.6-py3-none-macosx_11_0_arm64.whl", hash = "sha256:f2959049faeb5ba5e3b378709e9d1bf0cab06528b306b9dd6ebd2a312127964a"}, - {file = "ruff-0.11.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63c5d4e30d9d0de7fedbfb3e9e20d134b73a30c1e74b596f40f0629d5c28a193"}, - {file = "ruff-0.11.6-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:26a4b9a4e1439f7d0a091c6763a100cef8fbdc10d68593df6f3cfa5abdd9246e"}, - {file = "ruff-0.11.6-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b5edf270223dd622218256569636dc3e708c2cb989242262fe378609eccf1308"}, - {file = "ruff-0.11.6-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f55844e818206a9dd31ff27f91385afb538067e2dc0beb05f82c293ab84f7d55"}, - {file = "ruff-0.11.6-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d8f782286c5ff562e4e00344f954b9320026d8e3fae2ba9e6948443fafd9ffc"}, - {file = "ruff-0.11.6-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:01c63ba219514271cee955cd0adc26a4083df1956d57847978383b0e50ffd7d2"}, - {file = "ruff-0.11.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15adac20ef2ca296dd3d8e2bedc6202ea6de81c091a74661c3666e5c4c223ff6"}, - {file = "ruff-0.11.6-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:4dd6b09e98144ad7aec026f5588e493c65057d1b387dd937d7787baa531d9bc2"}, - {file = "ruff-0.11.6-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:45b2e1d6c0eed89c248d024ea95074d0e09988d8e7b1dad8d3ab9a67017a5b03"}, - {file = "ruff-0.11.6-py3-none-musllinux_1_2_i686.whl", hash = "sha256:bd40de4115b2ec4850302f1a1d8067f42e70b4990b68838ccb9ccd9f110c5e8b"}, - {file = "ruff-0.11.6-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:77cda2dfbac1ab73aef5e514c4cbfc4ec1fbef4b84a44c736cc26f61b3814cd9"}, - {file = "ruff-0.11.6-py3-none-win32.whl", hash = "sha256:5151a871554be3036cd6e51d0ec6eef56334d74dfe1702de717a995ee3d5b287"}, - {file = "ruff-0.11.6-py3-none-win_amd64.whl", hash = "sha256:cce85721d09c51f3b782c331b0abd07e9d7d5f775840379c640606d3159cae0e"}, - {file = "ruff-0.11.6-py3-none-win_arm64.whl", hash = "sha256:3567ba0d07fb170b1b48d944715e3294b77f5b7679e8ba258199a250383ccb79"}, - {file = "ruff-0.11.6.tar.gz", hash = "sha256:bec8bcc3ac228a45ccc811e45f7eb61b950dbf4cf31a67fa89352574b01c7d79"}, + {file = "ruff-0.11.12-py3-none-linux_armv6l.whl", hash = "sha256:c7680aa2f0d4c4f43353d1e72123955c7a2159b8646cd43402de6d4a3a25d7cc"}, + {file = "ruff-0.11.12-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:2cad64843da9f134565c20bcc430642de897b8ea02e2e79e6e02a76b8dcad7c3"}, + {file = "ruff-0.11.12-py3-none-macosx_11_0_arm64.whl", hash = "sha256:9b6886b524a1c659cee1758140138455d3c029783d1b9e643f3624a5ee0cb0aa"}, + {file = "ruff-0.11.12-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cc3a3690aad6e86c1958d3ec3c38c4594b6ecec75c1f531e84160bd827b2012"}, + {file = "ruff-0.11.12-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f97fdbc2549f456c65b3b0048560d44ddd540db1f27c778a938371424b49fe4a"}, + {file = "ruff-0.11.12-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:74adf84960236961090e2d1348c1a67d940fd12e811a33fb3d107df61eef8fc7"}, + {file = "ruff-0.11.12-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:b56697e5b8bcf1d61293ccfe63873aba08fdbcbbba839fc046ec5926bdb25a3a"}, + {file = "ruff-0.11.12-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4d47afa45e7b0eaf5e5969c6b39cbd108be83910b5c74626247e366fd7a36a13"}, + {file = "ruff-0.11.12-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:692bf9603fe1bf949de8b09a2da896f05c01ed7a187f4a386cdba6760e7f61be"}, + {file = "ruff-0.11.12-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08033320e979df3b20dba567c62f69c45e01df708b0f9c83912d7abd3e0801cd"}, + {file = "ruff-0.11.12-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:929b7706584f5bfd61d67d5070f399057d07c70585fa8c4491d78ada452d3bef"}, + {file = "ruff-0.11.12-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:7de4a73205dc5756b8e09ee3ed67c38312dce1aa28972b93150f5751199981b5"}, + {file = "ruff-0.11.12-py3-none-musllinux_1_2_i686.whl", hash = "sha256:2635c2a90ac1b8ca9e93b70af59dfd1dd2026a40e2d6eebaa3efb0465dd9cf02"}, + {file = "ruff-0.11.12-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:d05d6a78a89166f03f03a198ecc9d18779076ad0eec476819467acb401028c0c"}, + {file = "ruff-0.11.12-py3-none-win32.whl", hash = "sha256:f5a07f49767c4be4772d161bfc049c1f242db0cfe1bd976e0f0886732a4765d6"}, + {file = "ruff-0.11.12-py3-none-win_amd64.whl", hash = "sha256:5a4d9f8030d8c3a45df201d7fb3ed38d0219bccd7955268e863ee4a115fa0832"}, + {file = "ruff-0.11.12-py3-none-win_arm64.whl", hash = "sha256:65194e37853158d368e333ba282217941029a28ea90913c67e558c611d04daa5"}, + {file = "ruff-0.11.12.tar.gz", hash = "sha256:43cf7f69c7d7c7d7513b9d59c5d8cafd704e05944f978614aa9faff6ac202603"}, ] [[package]] name = "scipy" -version = "1.15.2" +version = "1.15.3" description = "Fundamental algorithms for scientific computing in Python" optional = false python-versions = ">=3.10" groups = ["main"] files = [ - {file = "scipy-1.15.2-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:a2ec871edaa863e8213ea5df811cd600734f6400b4af272e1c011e69401218e9"}, - {file = "scipy-1.15.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:6f223753c6ea76983af380787611ae1291e3ceb23917393079dcc746ba60cfb5"}, - {file = "scipy-1.15.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:ecf797d2d798cf7c838c6d98321061eb3e72a74710e6c40540f0e8087e3b499e"}, - {file = "scipy-1.15.2-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:9b18aa747da280664642997e65aab1dd19d0c3d17068a04b3fe34e2559196cb9"}, - {file = "scipy-1.15.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87994da02e73549dfecaed9e09a4f9d58a045a053865679aeb8d6d43747d4df3"}, - {file = "scipy-1.15.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69ea6e56d00977f355c0f84eba69877b6df084516c602d93a33812aa04d90a3d"}, - {file = "scipy-1.15.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:888307125ea0c4466287191e5606a2c910963405ce9671448ff9c81c53f85f58"}, - {file = "scipy-1.15.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9412f5e408b397ff5641080ed1e798623dbe1ec0d78e72c9eca8992976fa65aa"}, - {file = "scipy-1.15.2-cp310-cp310-win_amd64.whl", hash = "sha256:b5e025e903b4f166ea03b109bb241355b9c42c279ea694d8864d033727205e65"}, - {file = "scipy-1.15.2-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:92233b2df6938147be6fa8824b8136f29a18f016ecde986666be5f4d686a91a4"}, - {file = "scipy-1.15.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:62ca1ff3eb513e09ed17a5736929429189adf16d2d740f44e53270cc800ecff1"}, - {file = "scipy-1.15.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:4c6676490ad76d1c2894d77f976144b41bd1a4052107902238047fb6a473e971"}, - {file = "scipy-1.15.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:a8bf5cb4a25046ac61d38f8d3c3426ec11ebc350246a4642f2f315fe95bda655"}, - {file = "scipy-1.15.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a8e34cf4c188b6dd004654f88586d78f95639e48a25dfae9c5e34a6dc34547e"}, - {file = "scipy-1.15.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28a0d2c2075946346e4408b211240764759e0fabaeb08d871639b5f3b1aca8a0"}, - {file = "scipy-1.15.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:42dabaaa798e987c425ed76062794e93a243be8f0f20fff6e7a89f4d61cb3d40"}, - {file = "scipy-1.15.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6f5e296ec63c5da6ba6fa0343ea73fd51b8b3e1a300b0a8cae3ed4b1122c7462"}, - {file = "scipy-1.15.2-cp311-cp311-win_amd64.whl", hash = "sha256:597a0c7008b21c035831c39927406c6181bcf8f60a73f36219b69d010aa04737"}, - {file = "scipy-1.15.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c4697a10da8f8765bb7c83e24a470da5797e37041edfd77fd95ba3811a47c4fd"}, - {file = "scipy-1.15.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:869269b767d5ee7ea6991ed7e22b3ca1f22de73ab9a49c44bad338b725603301"}, - {file = "scipy-1.15.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:bad78d580270a4d32470563ea86c6590b465cb98f83d760ff5b0990cb5518a93"}, - {file = "scipy-1.15.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:b09ae80010f52efddb15551025f9016c910296cf70adbf03ce2a8704f3a5ad20"}, - {file = "scipy-1.15.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a6fd6eac1ce74a9f77a7fc724080d507c5812d61e72bd5e4c489b042455865e"}, - {file = "scipy-1.15.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b871df1fe1a3ba85d90e22742b93584f8d2b8e6124f8372ab15c71b73e428b8"}, - {file = "scipy-1.15.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:03205d57a28e18dfd39f0377d5002725bf1f19a46f444108c29bdb246b6c8a11"}, - {file = "scipy-1.15.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:601881dfb761311045b03114c5fe718a12634e5608c3b403737ae463c9885d53"}, - {file = "scipy-1.15.2-cp312-cp312-win_amd64.whl", hash = "sha256:e7c68b6a43259ba0aab737237876e5c2c549a031ddb7abc28c7b47f22e202ded"}, - {file = "scipy-1.15.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:01edfac9f0798ad6b46d9c4c9ca0e0ad23dbf0b1eb70e96adb9fa7f525eff0bf"}, - {file = "scipy-1.15.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:08b57a9336b8e79b305a143c3655cc5bdbe6d5ece3378578888d2afbb51c4e37"}, - {file = "scipy-1.15.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:54c462098484e7466362a9f1672d20888f724911a74c22ae35b61f9c5919183d"}, - {file = "scipy-1.15.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:cf72ff559a53a6a6d77bd8eefd12a17995ffa44ad86c77a5df96f533d4e6c6bb"}, - {file = "scipy-1.15.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9de9d1416b3d9e7df9923ab23cd2fe714244af10b763975bea9e4f2e81cebd27"}, - {file = "scipy-1.15.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb530e4794fc8ea76a4a21ccb67dea33e5e0e60f07fc38a49e821e1eae3b71a0"}, - {file = "scipy-1.15.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5ea7ed46d437fc52350b028b1d44e002646e28f3e8ddc714011aaf87330f2f32"}, - {file = "scipy-1.15.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:11e7ad32cf184b74380f43d3c0a706f49358b904fa7d5345f16ddf993609184d"}, - {file = "scipy-1.15.2-cp313-cp313-win_amd64.whl", hash = "sha256:a5080a79dfb9b78b768cebf3c9dcbc7b665c5875793569f48bf0e2b1d7f68f6f"}, - {file = "scipy-1.15.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:447ce30cee6a9d5d1379087c9e474628dab3db4a67484be1b7dc3196bfb2fac9"}, - {file = "scipy-1.15.2-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:c90ebe8aaa4397eaefa8455a8182b164a6cc1d59ad53f79943f266d99f68687f"}, - {file = "scipy-1.15.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:def751dd08243934c884a3221156d63e15234a3155cf25978b0a668409d45eb6"}, - {file = "scipy-1.15.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:302093e7dfb120e55515936cb55618ee0b895f8bcaf18ff81eca086c17bd80af"}, - {file = "scipy-1.15.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cd5b77413e1855351cdde594eca99c1f4a588c2d63711388b6a1f1c01f62274"}, - {file = "scipy-1.15.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d0194c37037707b2afa7a2f2a924cf7bac3dc292d51b6a925e5fcb89bc5c776"}, - {file = "scipy-1.15.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:bae43364d600fdc3ac327db99659dcb79e6e7ecd279a75fe1266669d9a652828"}, - {file = "scipy-1.15.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f031846580d9acccd0044efd1a90e6f4df3a6e12b4b6bd694a7bc03a89892b28"}, - {file = "scipy-1.15.2-cp313-cp313t-win_amd64.whl", hash = "sha256:fe8a9eb875d430d81755472c5ba75e84acc980e4a8f6204d402849234d3017db"}, - {file = "scipy-1.15.2.tar.gz", hash = "sha256:cd58a314d92838f7e6f755c8a2167ead4f27e1fd5c1251fd54289569ef3495ec"}, + {file = "scipy-1.15.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:a345928c86d535060c9c2b25e71e87c39ab2f22fc96e9636bd74d1dbf9de448c"}, + {file = "scipy-1.15.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:ad3432cb0f9ed87477a8d97f03b763fd1d57709f1bbde3c9369b1dff5503b253"}, + {file = "scipy-1.15.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:aef683a9ae6eb00728a542b796f52a5477b78252edede72b8327a886ab63293f"}, + {file = "scipy-1.15.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:1c832e1bd78dea67d5c16f786681b28dd695a8cb1fb90af2e27580d3d0967e92"}, + {file = "scipy-1.15.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:263961f658ce2165bbd7b99fa5135195c3a12d9bef045345016b8b50c315cb82"}, + {file = "scipy-1.15.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2abc762b0811e09a0d3258abee2d98e0c703eee49464ce0069590846f31d40"}, + {file = "scipy-1.15.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ed7284b21a7a0c8f1b6e5977ac05396c0d008b89e05498c8b7e8f4a1423bba0e"}, + {file = "scipy-1.15.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5380741e53df2c566f4d234b100a484b420af85deb39ea35a1cc1be84ff53a5c"}, + {file = "scipy-1.15.3-cp310-cp310-win_amd64.whl", hash = "sha256:9d61e97b186a57350f6d6fd72640f9e99d5a4a2b8fbf4b9ee9a841eab327dc13"}, + {file = "scipy-1.15.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:993439ce220d25e3696d1b23b233dd010169b62f6456488567e830654ee37a6b"}, + {file = "scipy-1.15.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:34716e281f181a02341ddeaad584205bd2fd3c242063bd3423d61ac259ca7eba"}, + {file = "scipy-1.15.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b0334816afb8b91dab859281b1b9786934392aa3d527cd847e41bb6f45bee65"}, + {file = "scipy-1.15.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6db907c7368e3092e24919b5e31c76998b0ce1684d51a90943cb0ed1b4ffd6c1"}, + {file = "scipy-1.15.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721d6b4ef5dc82ca8968c25b111e307083d7ca9091bc38163fb89243e85e3889"}, + {file = "scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39cb9c62e471b1bb3750066ecc3a3f3052b37751c7c3dfd0fd7e48900ed52982"}, + {file = "scipy-1.15.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:795c46999bae845966368a3c013e0e00947932d68e235702b5c3f6ea799aa8c9"}, + {file = "scipy-1.15.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:18aaacb735ab38b38db42cb01f6b92a2d0d4b6aabefeb07f02849e47f8fb3594"}, + {file = "scipy-1.15.3-cp311-cp311-win_amd64.whl", hash = "sha256:ae48a786a28412d744c62fd7816a4118ef97e5be0bee968ce8f0a2fba7acf3bb"}, + {file = "scipy-1.15.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6ac6310fdbfb7aa6612408bd2f07295bcbd3fda00d2d702178434751fe48e019"}, + {file = "scipy-1.15.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:185cd3d6d05ca4b44a8f1595af87f9c372bb6acf9c808e99aa3e9aa03bd98cf6"}, + {file = "scipy-1.15.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:05dc6abcd105e1a29f95eada46d4a3f251743cfd7d3ae8ddb4088047f24ea477"}, + {file = "scipy-1.15.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:06efcba926324df1696931a57a176c80848ccd67ce6ad020c810736bfd58eb1c"}, + {file = "scipy-1.15.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05045d8b9bfd807ee1b9f38761993297b10b245f012b11b13b91ba8945f7e45"}, + {file = "scipy-1.15.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271e3713e645149ea5ea3e97b57fdab61ce61333f97cfae392c28ba786f9bb49"}, + {file = "scipy-1.15.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cfd56fc1a8e53f6e89ba3a7a7251f7396412d655bca2aa5611c8ec9a6784a1e"}, + {file = "scipy-1.15.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ff17c0bb1cb32952c09217d8d1eed9b53d1463e5f1dd6052c7857f83127d539"}, + {file = "scipy-1.15.3-cp312-cp312-win_amd64.whl", hash = "sha256:52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed"}, + {file = "scipy-1.15.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c620736bcc334782e24d173c0fdbb7590a0a436d2fdf39310a8902505008759"}, + {file = "scipy-1.15.3-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:7e11270a000969409d37ed399585ee530b9ef6aa99d50c019de4cb01e8e54e62"}, + {file = "scipy-1.15.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:8c9ed3ba2c8a2ce098163a9bdb26f891746d02136995df25227a20e71c396ebb"}, + {file = "scipy-1.15.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:0bdd905264c0c9cfa74a4772cdb2070171790381a5c4d312c973382fc6eaf730"}, + {file = "scipy-1.15.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79167bba085c31f38603e11a267d862957cbb3ce018d8b38f79ac043bc92d825"}, + {file = "scipy-1.15.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9deabd6d547aee2c9a81dee6cc96c6d7e9a9b1953f74850c179f91fdc729cb7"}, + {file = "scipy-1.15.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dde4fc32993071ac0c7dd2d82569e544f0bdaff66269cb475e0f369adad13f11"}, + {file = "scipy-1.15.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f77f853d584e72e874d87357ad70f44b437331507d1c311457bed8ed2b956126"}, + {file = "scipy-1.15.3-cp313-cp313-win_amd64.whl", hash = "sha256:b90ab29d0c37ec9bf55424c064312930ca5f4bde15ee8619ee44e69319aab163"}, + {file = "scipy-1.15.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3ac07623267feb3ae308487c260ac684b32ea35fd81e12845039952f558047b8"}, + {file = "scipy-1.15.3-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:6487aa99c2a3d509a5227d9a5e889ff05830a06b2ce08ec30df6d79db5fcd5c5"}, + {file = "scipy-1.15.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:50f9e62461c95d933d5c5ef4a1f2ebf9a2b4e83b0db374cb3f1de104d935922e"}, + {file = "scipy-1.15.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:14ed70039d182f411ffc74789a16df3835e05dc469b898233a245cdfd7f162cb"}, + {file = "scipy-1.15.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a769105537aa07a69468a0eefcd121be52006db61cdd8cac8a0e68980bbb723"}, + {file = "scipy-1.15.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db984639887e3dffb3928d118145ffe40eff2fa40cb241a306ec57c219ebbbb"}, + {file = "scipy-1.15.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:40e54d5c7e7ebf1aa596c374c49fa3135f04648a0caabcb66c52884b943f02b4"}, + {file = "scipy-1.15.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5e721fed53187e71d0ccf382b6bf977644c533e506c4d33c3fb24de89f5c3ed5"}, + {file = "scipy-1.15.3-cp313-cp313t-win_amd64.whl", hash = "sha256:76ad1fb5f8752eabf0fa02e4cc0336b4e8f021e2d5f061ed37d6d264db35e3ca"}, + {file = "scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf"}, ] [package.dependencies] @@ -1703,7 +1793,7 @@ numpy = ">=1.23.5,<2.5" [package.extras] dev = ["cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy (==1.10.0)", "pycodestyle", "pydevtool", "rich-click", "ruff (>=0.0.292)", "types-psutil", "typing_extensions"] -doc = ["intersphinx_registry", "jupyterlite-pyodide-kernel", "jupyterlite-sphinx (>=0.16.5)", "jupytext", "matplotlib (>=3.5)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (>=0.15.2)", "sphinx (>=5.0.0,<8.0.0)", "sphinx-copybutton", "sphinx-design (>=0.4.0)"] +doc = ["intersphinx_registry", "jupyterlite-pyodide-kernel", "jupyterlite-sphinx (>=0.19.1)", "jupytext", "matplotlib (>=3.5)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (>=0.15.2)", "sphinx (>=5.0.0,<8.0.0)", "sphinx-copybutton", "sphinx-design (>=0.4.0)"] test = ["Cython", "array-api-strict (>=2.0,<2.1.1)", "asv", "gmpy2", "hypothesis (>=6.30)", "meson", "mpmath", "ninja ; sys_platform != \"emscripten\"", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] [[package]] @@ -1718,6 +1808,21 @@ files = [ {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, ] +[[package]] +name = "tabulate" +version = "0.9.0" +description = "Pretty-print tabular data" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f"}, + {file = "tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c"}, +] + +[package.extras] +widechars = ["wcwidth"] + [[package]] name = "traitlets" version = "5.14.3" @@ -1736,26 +1841,26 @@ test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0, [[package]] name = "types-pyyaml" -version = "6.0.12.20250402" +version = "6.0.12.20250516" description = "Typing stubs for PyYAML" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "types_pyyaml-6.0.12.20250402-py3-none-any.whl", hash = "sha256:652348fa9e7a203d4b0d21066dfb00760d3cbd5a15ebb7cf8d33c88a49546681"}, - {file = "types_pyyaml-6.0.12.20250402.tar.gz", hash = "sha256:d7c13c3e6d335b6af4b0122a01ff1d270aba84ab96d1a1a1063ecba3e13ec075"}, + {file = "types_pyyaml-6.0.12.20250516-py3-none-any.whl", hash = "sha256:8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530"}, + {file = "types_pyyaml-6.0.12.20250516.tar.gz", hash = "sha256:9f21a70216fc0fa1b216a8176db5f9e0af6eb35d2f2932acb87689d03a5bf6ba"}, ] [[package]] name = "typing-extensions" -version = "4.13.2" -description = "Backported and Experimental Type Hints for Python 3.8+" +version = "4.14.0" +description = "Backported and Experimental Type Hints for Python 3.9+" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["main", "dev"] files = [ - {file = "typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c"}, - {file = "typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef"}, + {file = "typing_extensions-4.14.0-py3-none-any.whl", hash = "sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af"}, + {file = "typing_extensions-4.14.0.tar.gz", hash = "sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4"}, ] [[package]] @@ -1790,14 +1895,14 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "xarray" -version = "2025.3.1" +version = "2025.4.0" description = "N-D labeled arrays and datasets in Python" optional = false python-versions = ">=3.10" groups = ["main"] files = [ - {file = "xarray-2025.3.1-py3-none-any.whl", hash = "sha256:3404e313930c226db70a945377441ea3c957225d8ba2d429e764c099bb91a546"}, - {file = "xarray-2025.3.1.tar.gz", hash = "sha256:0252c96a73528b29d1ed7f0ab28d928d2ec00ad809e47369803b184dece1e447"}, + {file = "xarray-2025.4.0-py3-none-any.whl", hash = "sha256:b27defd082c5cb85d32c695708de6bb05c2838fb7caaf3f952982e602a35b9b8"}, + {file = "xarray-2025.4.0.tar.gz", hash = "sha256:2a89cd6a1dfd589aa90ac45f4e483246f31fc641836db45dd2790bb78bd333dc"}, ] [package.dependencies] @@ -1811,10 +1916,10 @@ complete = ["xarray[accel,etc,io,parallel,viz]"] etc = ["sparse"] io = ["cftime", "fsspec", "h5netcdf", "netCDF4", "pooch", "pydap ; python_version < \"3.10\"", "scipy", "zarr"] parallel = ["dask[complete]"] -types = ["pandas-stubs", "types-PyYAML", "types-Pygments", "types-colorama", "types-decorator", "types-defusedxml", "types-docutils", "types-networkx", "types-openpyxl", "types-pexpect", "types-psutil", "types-pycurl", "types-python-dateutil", "types-pytz", "types-setuptools"] +types = ["pandas-stubs", "scipy-stubs", "types-PyYAML", "types-Pygments", "types-colorama", "types-decorator", "types-defusedxml", "types-docutils", "types-networkx", "types-openpyxl", "types-pexpect", "types-psutil", "types-pycurl", "types-python-dateutil", "types-pytz", "types-setuptools"] viz = ["cartopy", "matplotlib", "nc-time-axis", "seaborn"] [metadata] lock-version = "2.1" python-versions = "^3.13" -content-hash = "db1c22484c661e43773b6fb99b5616550156de4952475865658c1a174fb472d9" +content-hash = "0f03f7e37b521861fad662dc46380b00e052b1d1664baecd0cda81fdb8db98ed" diff --git a/pyproject.toml b/pyproject.toml index 1d841601..254baf82 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,22 +11,28 @@ readme = "README.md" [tool.poetry.dependencies] python = "^3.13" pyyaml = "^6.0.2" -xarray = "^2025.3.1" +xarray = "^2025.4.0" netcdf4 = "^1.7.2" cfgrib = "^0.9.15.0" couchbase = "^4.3.5" pyproj = "^3.7.0" -numpy = "^2.2.4" -metpy = "1.6.3" -prometheus-client = "^0.21.1" +numpy = "^2.2.6" +metpy = "1.7.0" +prometheus-client = "^0.22.0" +ncepbufr = [{ file = "./third_party/NCEPLIBS-bufr/wheel_dist/ncepbufr-12.2.0-py313-none-macosx_15_0_arm64.whl", platform = "Darwin", markers = "platform_machine == 'arm64' "}, + {file = "./third_party/NCEPLIBS-bufr/wheel_dist/ncepbufr-12.2.0-py313-none-linux_x86_64.whl", platform = "Linux" , markers = "platform_machine == 'x86_64' "}, + {file = "./third_party/NCEPLIBS-bufr/wheel_dist/ncepbufr-12.2.0-py313-none-linux_aarch64.whl", platform = "Linux", markers = "platform_machine == 'aarch64' " } + ] [tool.poetry.group.dev.dependencies] pytest = "^8.3.5" -types-pyyaml = "^6.0.12.20250326" -ruff = "^0.11.2" -coverage = "^7.8.0" -mypy = "^1.15.0" -plotly = "^6.0.1" +types-pyyaml = "^6.0.12.20250516" +ruff = "^0.11.12" +coverage = "^7.8.2" +mypy = "^1.16.0" +plotly = "^6.1.2" +mysql-connector-python = "^9.3.0" +tabulate = "^0.9.0" [build-system] requires = ["poetry-core"] diff --git a/src/vxingest/builder_common/ingest_manager.py b/src/vxingest/builder_common/ingest_manager.py index 18f66e4a..5aaa4363 100644 --- a/src/vxingest/builder_common/ingest_manager.py +++ b/src/vxingest/builder_common/ingest_manager.py @@ -123,9 +123,13 @@ def connect_cb(self): self.collection = self.cluster.bucket( self.cb_credentials["bucket"] ).collection(self.cb_credentials["collection"]) + self.common_collection = self.cluster.bucket( + self.cb_credentials["bucket"] + ).collection(self.cb_credentials["common_collection"]) # stash the database connection for the builders to reuse self.load_spec["cluster"] = self.cluster self.load_spec["collection"] = self.collection + self.load_spec["common_collection"] = self.common_collection logger.info("Couchbase connection success") except Exception as _e: logger.exception( diff --git a/src/vxingest/builder_common/vx_ingest.py b/src/vxingest/builder_common/vx_ingest.py index a37b0ec1..369b0f6d 100644 --- a/src/vxingest/builder_common/vx_ingest.py +++ b/src/vxingest/builder_common/vx_ingest.py @@ -57,6 +57,7 @@ def __init__(self): self.ingest_document_id = None self.cb_credentials = {} self.collection = None + self.common_collection = None self.cluster = None self.ingest_document_id = None self.ingest_document = None @@ -150,9 +151,14 @@ def connect_cb(self): raise CouchbaseException( "Could not connect to couchbase after 3 attempts" ) + # The common collection is always "COMMON" so we can hardcode it here + self.cb_credentials["common_collection"] = "COMMON" self.collection = self.cluster.bucket( self.cb_credentials["bucket"] ).collection(self.cb_credentials["collection"]) + self.common_collection = self.cluster.bucket( + self.cb_credentials["bucket"] + ).collection(self.cb_credentials["common_collection"]) # stash the credentials for the VxIngestManager - see NOTE at the top of this file. self.load_spec["cb_credentials"] = self.cb_credentials logger.info("%s: Couchbase connection success") diff --git a/src/vxingest/grib2_to_cb/raob_grib_model_builder.py b/src/vxingest/grib2_to_cb/raob_grib_model_builder.py new file mode 100644 index 00000000..93a88d09 --- /dev/null +++ b/src/vxingest/grib2_to_cb/raob_grib_model_builder.py @@ -0,0 +1,20 @@ +import sys + +from vxingest.grib2_to_cb.grib_builder import GribModelBuilderV01 + + +class RaobGribModelBuilder(GribModelBuilderV01): + """ + Builder for RAOB (upper air sounding) model data ingested from GRIB2 files. + Inherits all functionality from GribModelBuilderV01. + Extend this class with RAOB-specific handlers or overrides as needed. + """ + + def __init__(self, load_spec, ingest_document, number_stations=None): + super().__init__( + load_spec, + ingest_document, + number_stations=number_stations + if number_stations is not None + else sys.maxsize, + ) diff --git a/src/vxingest/grib2_to_cb/raob_model_native_builder.py b/src/vxingest/grib2_to_cb/raob_model_native_builder.py new file mode 100644 index 00000000..a43cdd62 --- /dev/null +++ b/src/vxingest/grib2_to_cb/raob_model_native_builder.py @@ -0,0 +1,44 @@ +import sys + +from vxingest.grib2_to_cb.grib_builder import GribModelBuilderV01 +from vxingest.grib2_to_cb.raob_grib_model_builder import RaobGribModelBuilder + + +class RaobModelNativeLevelBuilderV01(RaobGribModelBuilder): + """This is the builder for model data that is ingested from grib2 NATIVE levels files. + It is a concrete builder specifically for the model raob data that are organized based + on the models preset vertical levels. This varies quite a bit from model to model + and is dependent on the configuration set up before the model runs. + This builder is a subclass of the GribModelBuilderV01 class. + The primary differences between the RaobModelNativeBuilderV01 and the + RaobModelPressureLevelBuilderV01 are the handlers that derive the pressure level. + The pressure level needs to be interpolated according to a specific algorithm along with + the corresponding variable values. + + + Args: + load_spec (Object): The load spec used to init the parent + ingest_document (Object): the ingest document + number_stations (int, optional): the maximum number of stations to process (for debugging). Defaults to sys.maxsize. + + Note: The entry point for this class is the build_document method from the ancestor class GribBuilder in grib_builder.py. + The RaobModelPressureLevelBuilderV01 is a subclass of the RaobGribModelBuilder class. + The RaobGribModelBuilder is a subclass of the GribModelBuilderV01 class. + The GribModelBuilderV01 is a subclass of the GribBuilder class. + The GribBuilder class is the base class for all grib builders and is a subclass of the + AbstractGribBuilder class. + The AbstractGribBuilder class is the base class for all builders. + """ + + def __init__( + self, + load_spec, + ingest_document, + number_stations=sys.maxsize, + ): + GribModelBuilderV01.__init__( + self, + load_spec, + ingest_document, + number_stations=number_stations, + ) diff --git a/src/vxingest/grib2_to_cb/raob_model_pressure_level_builder.py b/src/vxingest/grib2_to_cb/raob_model_pressure_level_builder.py new file mode 100644 index 00000000..014bc37d --- /dev/null +++ b/src/vxingest/grib2_to_cb/raob_model_pressure_level_builder.py @@ -0,0 +1,43 @@ +import sys + +from vxingest.grib2_to_cb.grib_builder import GribModelBuilderV01 +from vxingest.grib2_to_cb.raob_grib_model_builder import RaobGribModelBuilder + + +class RaobModelPressureLevelBuilderV01(RaobGribModelBuilder): + """This is the builder for model data that is ingested from grib2 PRESSURE level files. + It is a concrete builder specifically for the model raob data that are organized + by isobaric level (pressure). While they can differ from model to model, these levels + are mainly standardized below 100 mb to every 25 mb. + This builder is a subclass of the GribModelBuilderV01 class. + The primary differences between the RaobModelNativeBuilderV01 and the + RaobModelPressureLevelBuilderV01 are the handlers that derive the pressure level. + The pressure level needs to be interpolated according to a specific algorithm along with + the corresponding variable values. + + Args: + load_spec (Object): The load spec used to init the parent + ingest_document (Object): the ingest document + number_stations (int, optional): the maximum number of stations to process (for debugging). Defaults to sys.maxsize. + + Note: The entry point for this class is the build_document method from the ancestor class GribBuilder in grib_builder.py. + The RaobModelPressureLevelBuilderV01 is a subclass of the RaobGribModelBuilder class. + The RaobGribModelBuilder is a subclass of the GribModelBuilderV01 class. + The GribModelBuilderV01 is a subclass of the GribBuilder class. + The GribBuilder class is the base class for all grib builders and is a subclass of the + AbstractGribBuilder class. + The AbstractGribBuilder class is the base class for all builders. + """ + + def __init__( + self, + load_spec, + ingest_document, + number_stations=sys.maxsize, + ): + GribModelBuilderV01.__init__( + self, + load_spec, + ingest_document, + number_stations=number_stations, + ) diff --git a/src/vxingest/grib2_to_cb/run_ingest_threads.py b/src/vxingest/grib2_to_cb/run_ingest_threads.py index 2d201266..1837e196 100644 --- a/src/vxingest/grib2_to_cb/run_ingest_threads.py +++ b/src/vxingest/grib2_to_cb/run_ingest_threads.py @@ -75,6 +75,8 @@ from pathlib import Path from typing import Callable +from couchbase.exceptions import DocumentNotFoundException + from vxingest.builder_common.vx_ingest import CommonVxIngest from vxingest.grib2_to_cb.vx_ingest_manager import VxIngestManager from vxingest.log_config import configure_logging, worker_log_configurer @@ -187,10 +189,19 @@ def runit(self, args, log_queue: Queue, log_configurer: Callable[[Queue], None]) # put the real credentials into the load_spec self.cb_credentials = self.get_credentials(self.load_spec) # establish connections to cb, collection + # determine the subset from the job_id and connect to the collection self.connect_cb() # load the ingest document ids into the load_spec (this might be redundant) - ingest_document_result = self.collection.get(self.job_document_id) + common_collection = self.cluster.bucket( + self.cb_credentials["bucket"] + ).collection("COMMON") + # get the ingest document ids from the job document + ingest_document_result = common_collection.get(self.job_document_id) ingest_document = ingest_document_result.content_as[dict] + # reset the collection based on the subset in the JOB document + self.collection = self.cluster.bucket( + self.cb_credentials["bucket"] + ).collection(ingest_document["subset"]) self.load_spec["ingest_document_ids"] = ingest_document[ "ingest_document_ids" ] @@ -198,7 +209,7 @@ def runit(self, args, log_queue: Queue, log_configurer: Callable[[Queue], None]) # put all the ingest documents into the load_spec too self.load_spec["ingest_documents"] = {} for _id in self.load_spec["ingest_document_ids"]: - self.load_spec["ingest_documents"][_id] = self.collection.get( + self.load_spec["ingest_documents"][_id] = common_collection.get( _id ).content_as[dict] # load the fmask and input_data_path into the load_spec @@ -208,7 +219,13 @@ def runit(self, args, log_queue: Queue, log_configurer: Callable[[Queue], None]) self.load_spec["input_data_path"] = self.path # stash the load_job in the load_spec self.load_spec["load_job_doc"] = self.build_load_job_doc("madis") - except (RuntimeError, TypeError, NameError, KeyError): + except ( + RuntimeError, + TypeError, + NameError, + KeyError, + DocumentNotFoundException, + ): logger.error( "*** Error occurred in Main reading load_spec: %s ***", str(sys.exc_info()), diff --git a/src/vxingest/grib2_to_cb/vx_ingest_manager.py b/src/vxingest/grib2_to_cb/vx_ingest_manager.py index 1e71230e..ab12d37a 100644 --- a/src/vxingest/grib2_to_cb/vx_ingest_manager.py +++ b/src/vxingest/grib2_to_cb/vx_ingest_manager.py @@ -40,6 +40,12 @@ from vxingest.builder_common.ingest_manager import CommonVxIngestManager from vxingest.grib2_to_cb import grib_builder as my_builder +from vxingest.grib2_to_cb.raob_model_native_builder import ( + RaobModelNativeLevelBuilderV01 as RaobModelNativeLevelBuilderV01, +) +from vxingest.grib2_to_cb.raob_model_pressure_level_builder import ( + RaobModelPressureLevelBuilderV01 as RaobModelPressureLevelBuilderV01, +) # Get a logger with this module's name to help with debugging logger = logging.getLogger(__name__) diff --git a/src/vxingest/main.py b/src/vxingest/main.py index 7f8669b2..a4817c43 100644 --- a/src/vxingest/main.py +++ b/src/vxingest/main.py @@ -34,6 +34,7 @@ ) from vxingest.netcdf_to_cb.run_ingest_threads import VXIngest as NetCDFIngest from vxingest.partial_sums_to_cb.run_ingest_threads import VXIngest as PartialSumsIngest +from vxingest.prepbufr_to_cb.run_ingest_threads import VXIngest as PrepbufrRAOBIngest # Get a logger with this module's name to help with debugging logger = logging.getLogger(__name__) @@ -45,7 +46,7 @@ prom_registry = CollectorRegistry() # Use a gauge because we're doing 1 file per job run, a histogram could be more appropriate. -# Note - if we used a historgram or summary, we could apply a decorator directly to the function we're interested in +# Note - if we used a histogram or summary, we could apply a decorator directly to the function we're interested in prom_duration = Gauge( "run_ingest_duration", "The duration of an ingest run, in seconds", @@ -451,11 +452,7 @@ def process_jobs( log_configurer, ) except SystemExit as e: - if e.code == 0: - # Job succeeded - job_succeeded = True - else: - job_succeeded = True + job_succeeded = bool(e.code == 0) case "netcdf": # FIXME: Update calling code to raise instead of calling sys.exit try: @@ -466,11 +463,7 @@ def process_jobs( log_configurer, ) except SystemExit as e: - if e.code == 0: - # Job succeeded - job_succeeded = True - else: - job_succeeded = True + job_succeeded = bool(e.code == 0) case "ctc": # FIXME: Update calling code to raise instead of calling sys.exit try: @@ -495,6 +488,17 @@ def process_jobs( log_queue, log_configurer, ) + except SystemExit as e: + job_succeeded = bool(e.code == 0) + case "prepbufr_raob": + # FIXME: Update calling code to raise instead of calling sys.exit + try: + prepbufr_raob_ingest = PrepbufrRAOBIngest() + prepbufr_raob_ingest.runit( + config, + log_queue, + log_configurer, + ) except SystemExit as e: if e.code == 0: # Job succeeded diff --git a/src/vxingest/netcdf_to_cb/netcdf_builder_parent.py b/src/vxingest/netcdf_to_cb/netcdf_builder_parent.py index 77c98134..2e77964d 100644 --- a/src/vxingest/netcdf_to_cb/netcdf_builder_parent.py +++ b/src/vxingest/netcdf_to_cb/netcdf_builder_parent.py @@ -58,10 +58,10 @@ def get_database_connection_details(self, queue_element): bucket = self.load_spec["cb_connection"]["bucket"] scope = self.load_spec["cb_connection"]["scope"] collection = self.load_spec["cb_connection"]["collection"] - + common_collection = self.load_spec["cb_connection"]["common_collection"] # stash the file_name so that it can be used later self.file_name = Path(queue_element).name - return bucket, scope, collection + return bucket, scope, collection, common_collection def build_document_map( self, queue_element: str, base_var_name: str, origin_type: str = None @@ -270,6 +270,11 @@ def translate_template_item(self, variable, base_var_index: int) -> str: Umatch = re.compile(".*U.*") if len(replacements) > 0: for _ri in replacements: + if _ri in self.ncdf_data_set.ncattrs(): + # it is a global attribute - replace ' ' with '_' + tmp_value = self.ncdf_data_set.getncattr(_ri) + value = str(tmp_value).replace(" ", "_") + return value vtype = str(self.ncdf_data_set.variables[_ri].dtype) if Smatch.match(vtype) or Umatch.match(vtype): make_str = True @@ -951,7 +956,7 @@ def get_standard_levels(self): try: docid = "MD:STANDARD_LEVELS:COMMON:V01" self.standard_levels = ( - self.load_spec["collection"] + self.load_spec["common_collection"] .lookup_in(docid, (SD.get("TROPOE"),)) .content_as[list](0) ) diff --git a/src/vxingest/netcdf_to_cb/netcdf_metar_obs_builder.py b/src/vxingest/netcdf_to_cb/netcdf_metar_obs_builder.py index 42216d4e..ad715e52 100644 --- a/src/vxingest/netcdf_to_cb/netcdf_metar_obs_builder.py +++ b/src/vxingest/netcdf_to_cb/netcdf_metar_obs_builder.py @@ -68,8 +68,8 @@ def build_document(self, queue_element: str) -> dict: """ try: - bucket, scope, collection = self.get_database_connection_details( - queue_element + bucket, scope, collection, common_collection = ( + self.get_database_connection_details(queue_element) ) self.ncdf_data_set = nc.Dataset(queue_element) diff --git a/src/vxingest/netcdf_to_cb/netcdf_tropoe_obs_builder.py b/src/vxingest/netcdf_to_cb/netcdf_tropoe_obs_builder.py index 23e0ce9f..29994395 100644 --- a/src/vxingest/netcdf_to_cb/netcdf_tropoe_obs_builder.py +++ b/src/vxingest/netcdf_to_cb/netcdf_tropoe_obs_builder.py @@ -8,6 +8,7 @@ import datetime as dt import logging +import re import netCDF4 as nc @@ -46,7 +47,6 @@ def build_document(self, queue_element: str) -> dict: return {} try: self.same_time_rows = {} - # bucket, scope, collection = self.get_database_connection_details(queue_element) self.ncdf_data_set = nc.Dataset(queue_element) document_map = self.build_3d_document_map(queue_element, "time", "tropoe") return document_map @@ -112,18 +112,14 @@ def get_tropoe_valid_time_ISO(self, params_dict): ) return None - # # add the height and load the raw data into the document - convert km to m - # data_elem["height"] = [ - # i * 1000 for i in self.ncdf_data_set["height"][:].tolist() - # ] - # doc["raw_data"] = data_elem - # # interpolate the data - # interpolated_data = self.interpolate_3d_data(data_elem) - # flat_interpolated_data = {} - # flat_interpolated_data["levels"] = list(interpolated_data[key].keys()) - # for key in interpolated_data: - # flat_interpolated_data[key] = list(interpolated_data[key].values()) - # doc["data"] = flat_interpolated_data + def to_snake_case(self, term): + return "_".join( + re.sub( + "([A-Z][a-z]+)", + r" \1", + re.sub("([A-Z]+)", r" \1", term.replace("-", " ")), + ).split() + ).lower() def get_raw_data(self, params_dict): raw_data = {} @@ -135,7 +131,8 @@ def get_raw_data(self, params_dict): variables.append(k) try: for variable in variables: - raw_data[variable] = self.ncdf_data_set[variable][ + snake_variable = self.to_snake_case(variable) + raw_data[snake_variable] = self.ncdf_data_set[variable][ base_var_index ].tolist() # add the height @@ -173,9 +170,10 @@ def get_interpolated_data(self, params_dict): lower_index = flat_interpolated_data["levels"].index(lower) upper_index = flat_interpolated_data["levels"].index(upper) for key in interpolated_data: - flat_interpolated_data[key] = list(interpolated_data[key].values())[ - lower_index:upper_index - ] + snake_key = self.to_snake_case(key) + flat_interpolated_data[snake_key] = list( + interpolated_data[key].values() + )[lower_index:upper_index] except Exception as _e: logger.error(f"*** get_interpolated_data: Exception: {str(_e)}") raise _e diff --git a/src/vxingest/netcdf_to_cb/run_ingest_threads.py b/src/vxingest/netcdf_to_cb/run_ingest_threads.py index 5ae2d2e7..2e1d75db 100644 --- a/src/vxingest/netcdf_to_cb/run_ingest_threads.py +++ b/src/vxingest/netcdf_to_cb/run_ingest_threads.py @@ -146,6 +146,7 @@ def __init__(self): self.load_spec = {} self.cb_credentials = None self.collection = None + self.common_collection = None self.cluster = None self.ingest_document_id = None self.ingest_document = None @@ -178,8 +179,8 @@ def runit(self, args, log_queue: Queue, log_configurer: Callable[[Queue], None]) collection = self.load_spec["cb_connection"]["collection"] bucket = self.load_spec["cb_connection"]["bucket"] scope = self.load_spec["cb_connection"]["scope"] - # load the ingest document ids into the load_spec (this might be redundant) - ingest_document_result = self.collection.get(self.job_document_id) + # load the ingest document ids into the load_spec (this might be redundant) - from COMMON + ingest_document_result = self.common_collection.get(self.job_document_id) ingest_document = ingest_document_result.content_as[dict] self.load_spec["ingest_document_ids"] = ingest_document[ "ingest_document_ids" @@ -187,12 +188,12 @@ def runit(self, args, log_queue: Queue, log_configurer: Callable[[Queue], None]) # put all the ingest documents into the load_spec too self.load_spec["ingest_documents"] = {} for _id in self.load_spec["ingest_document_ids"]: - self.load_spec["ingest_documents"][_id] = self.collection.get( + self.load_spec["ingest_documents"][_id] = self.common_collection.get( _id ).content_as[dict] # load the fmask and input_data_path into the load_spec - self.fmask = ingest_document["file_mask"] - self.path = ingest_document["input_data_path"] + self.fmask = ingest_document.get("file_mask", None) + self.path = ingest_document.get("input_data_path", None) self.load_spec["fmask"] = self.fmask self.load_spec["input_data_path"] = self.path # stash the load_job in the load_spec diff --git a/src/vxingest/prepbufr_to_cb/README.md b/src/vxingest/prepbufr_to_cb/README.md new file mode 100644 index 00000000..83e09e10 --- /dev/null +++ b/src/vxingest/prepbufr_to_cb/README.md @@ -0,0 +1,361 @@ +# prepbufr ingest to couchbase + +## purpose + +These programs are intended to import prepbufr data into Couchbase taking advantage of the GSL Couchbase data schema +that has been developed by the GSL AVID model verification team. + +## Approach + +These programs use a JOB document to define which ingest templates are to be used, a credentials file to provide database authentication, command line parameters for run time options, and the associated ingest template documents from the database that are specified in the JOB document. + +The ingest_document_ids: ['MD:V01:RAOB:obs:ingest:prepbufr'] line defines +a list of metadata documents (might be just one). These documents define how the program will operate. +The 'MD:V01:RAOB:obs:ingest:prepbufr' value is the id of a couchbase metadata document. +This document MUST exist on the couchbase cluster defined by cb_host in an associated credentials file (the name of which is provided as a command line parameter) and MUST be readable by the cb_user. + +The prepbufr ingest documents have an additional section "mnemonic_mapping" that serves the purpose of mapping prepbufr mnemonics to the variables used in +the template DSL. The DSL syntax is described in the metadata_files/README.md in the section "Ingest Template DSL" [here](https://github.com/NOAA-GSL/VxIngest/blob/b43bb43838716d365eb19d76189d9ae40a4a395b/mats_metadata_and_indexes/metadata_files/README.md) + +This issue demonstrates ways to make a query of a map of maps +See [issue](https://www.couchbase.com/forums/t/querying-a-map-of-maps-with-a-dynamic-key/30019) +For example: + +```SQL +WITH ks AS (["70026", "70026"]) +SELECT ARRAY r.data.[v] FOR v IN ks END AS station +FROM vxdata._default.RAOB AS r USE KEYS "DD:V01:RAOB:obs:prepbufr:170:1717567200"; +``` + +## stations + +The station documents in the RAOB collection are RAOB stations. They all have ids like "MD:V01:RAOB:station:1001". + +example + +```json +{ + "id": "MD:V01:RAOB:station:1001", + "wmoid": 1001, + "name": "ENJA", + "geo": [ + { + "lat": 70.93, + "lon": -8.67, + "elev": 9, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JAN MAYEN(NOR-NAVY)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} + ``` + +## station geo list + +The geo list is based on the lowest height (highest pressure) lat / lon values which should most closely represent the lat / lon of the station. The handle_station +handler method will create a new station if it can find the station data in the station reference document "MD:V01:RAOB:stationReference", which contains the latest set of stations from raob.com. If it cannot find the station the data for this "unknown" station will be thrown away. If the highest pressure lat / lon values are significantly different from the latest ones in the geo list, a new geo list entry will be added to the station under the assumption that the station launch site has moved. + +## data extraction from the prepbufr files + +We need to take MASS values from the MASS report (120) and the WIND values from the wind report (220) and merge them into our data for the particular site and launch. + +This website describes the report types. +[report types](https://www.nco.ncep.noaa.gov/sib/decoders/BUFRLIB/toc/prepbufr/) + +We are assuming that the wind data are always in report 220 (which is WIND Report - Rawinsonde ) and the other variables are in report 120 - the MASS report. It's a little vague when it says "does not always contain" but if it doesn't contain both we have to mask the part that isn't present or through the whole station data away. + +> To begin with, a PREPBUFR file does not always contain, within each single data subset, the data for an entire report! Instead, for reports which contain mass (i.e. temperature, moisture, etc.) as well as wind (i.e. direction and speed, U and V component, etc.) data values, such data values are stored within two separate but adjacent (within the overall file) data subsets, where each related subset, quite obviously, contains the same report time, location, station identification, etc. information as the other, but where the "mass" subset contains the pressures and/or height levels at which "mass" data values occur, while the corresponding "wind" subset contains the levels at which "wind" data values occur. While it is true that this may, in some cases, cause the same pressure and/or height level to appear in both subsets, this separation is nonetheless maintained for historical reasons peculiar to NCEP. + +The report types are described here [report_types](https://www.emc.ncep.noaa.gov/emc/pages/infrastructure/bufrlib/tables/CodeFlag_0_STDv41_LOC7.html#055007) + +```text +120 MASS Report - Rawinsonde +. . . +220 WIND Report - Rawinsonde +``` + +We assume that we always have to take MASS values from the MASS report (120) and the WIND values from the wind report (220). +We also assume that if there is no wind report wind data should just be masked in our data. + +## Builder class + +The builder is [PrepbufrBuilder](https://github.com/NOAA-GSL/VxIngest/tree/main/src/vxingest) + +There is a base PrepbufrBuilder which has the generic code for reading a prepbufr file and a specialized PrepbufrRaobsObsBuilderV01 class which knows how to build RAOBS from a prepbufr file. + +## Region list + +I'm only putting this here temporarily so that I don't lose it before it gets implemented. + +* RUC domain +* RRFS North American domain +* Great Lakes +* Global (all lat/lon) +* Tropics (-20 <= lat <= +20) +* Southern Hemisphere (-80 <= lat < -20) +* Northern Hemisphere (+20 < lat <= +80) +* Arctic (lat >= +70) -- Might want to change this to lat >= 60N to match EMC? +* Antarctic (lat <= -70) -- Might want to change this to lat <= 60S to match EMC? +* Alaska +* Hawaii +* HRRR domain +* Eastern HRRR domain +* Western HRRR domain +* CONUS +* Eastern CONUS (lon <= 100W) +* Western CONUS (lon <= 100W) +* Northeastern CONUS +* Southeastern CONUS +* Central CONUS +* Southern CONUS +* Northwest CONUS +* Southern Plain + +## Ingest template + +The ingest template for prepbufr RAOBS is "MD:V01:RAOB:obs:ingest:prepbufr". +It follows the same small Domain Specific Language (DSL) that all ingest templates follow. Refer to [this](https://github.com/NOAA-GSL/VxIngest/blob/main/mats_metadata_and_indexes/metadata_files/README.md) for a more complete description. + +### Template DSL + +This is the template portion... + +```json +"template": { + "data": { + "*stationName": { + "temperature": "*temperature", + "dewpoint": "*dewpoint", + "relative_humidity": "*relative_humidity", + "specific_humidity": "*specific_humidity", + "pressure": "*pressure", + "height": "*height", + "wind_speed": "&knots_to_meters_per_second|*wind_speed", + "U-Wind": "*U-Wind", + "V-Wind": "*V-Wind", + "wind_direction": "*wind_direction", + "stationName": "&handle_station|*stationName" + } + }, + "units": { + "temperature": "deg F", + "dewpoint": "deg F", + "relative_humidity": "percent", + "specific_humidity": "m/kg", + "pressure": "mb", + "height": "meters", + "wind_speed": "mph", + "U-Wind": "mph", + "V-Wind": "mph", + "wind_direction": "degrees" + }, + "level": "*level", + "dataSourceId": "GDAS", + "docType": "obs", + "subDocType": "prepbufr", + "fcstValidISO": "&get_valid_time_iso", + "fcstValidEpoch": "&get_valid_time_epoch", + "id": "DD:V01:RAOB:obs:prepbufr:*level:&get_valid_time_epoch", + "subset": "RAOB", + "type": "DD", + "version": "V01" + }, + ``` + +The variable names will not be found in any prepbufr file. They are the kind of variable names that we use in our Couchbase schema. +To map those names into the prepbufr data there is another section in the ingest document - "mnemonic_mapping". +For each element there is a mnemonic, and an intent. The mnemonic identifies the actual bufr mnemonic to be found in the prepbufr file. +The intent indicates what data type the variable is to be translated into - str, float, or int. The events flag indicates whether +the builder should consider event program types when decoding the field. If the events flag is True there must also be +an "event_program_code_mnemonic" , and an "event_value". The event_program_code_mnemonic indicates what mnemonic the program code will be found under. +The value indicates the desired value. For example for temperature... + +```json +"temperature": { + "mnemonic": "TOB", the mnemonic for temperature + "event_program_code_mnemonic": "TPC", the associated event program code for temperature + "intent": "float", temperature should be decoded to a float + "event_value": 1 the event program code that is desired is 1 (which is initial temperature, 8 would be virtual temp) + }, +``` + +This way any of the voluminous data that is contained in a prepbufr RAOB file can be succinctly decoded. +There are four sections of mappings. + +1. `header` basic header data like lat, lon, and station name +2. `q_marker` quality data +3. `obs_err` observation error data +4. `obs_data_120` observation MASS data +5. `obs_data_220` observation WIND data + +```json + "mnemonic_mapping": { + "bufr_msg_type": "ADPUPA", This is the subset type of interest - in this case radiosonde data + "bufr_report_types": [ + 120, This is the MASS report identifier. The MASS report contains variable data like temperature and dewpoint + 220 This is the WIND report + ], + "header": { This is the header section + "events": false, + "station_id": { + "mnemonic": "SID", Station name + "intent": "str" + }, + "lon": { + "mnemonic": "XOB", + "intent": "float" + }, + "lat": { + "mnemonic": "YOB", + "intent": "float" + }, + "obs-cycle_time": { + "mnemonic": "DHR", + "intent": "float" + }, + "elevation": { + "mnemonic": "ELV", + "intent": "float" + }, + "data_dump_report_type": { + "TYP": 220, + "mnemonic": "T29", + "intent": "int" + }, + "report_type": { + "mnemonic": "TYP", + "intent": "int" + } + }, + "q_marker": { + "events": false, + "pressure_q_marker": { + "mnemonic": "PQM", + "intent": "int" + }, + "specific_humidity_q_marker": { + "mnemonic": "QQM", + "intent": "int" + }, + "temperature_q_marker": { + "mnemonic": "TQM", + "intent": "int" + }, + "height_q_marker": { + "mnemonic": "ZQM", + "intent": "int" + }, + "u_v_wind_q_marker": { + "mnemonic": "WQM", + "intent": "int" + }, + "wind_direction_q_marker": { + "mnemonic": "DFP", + "intent": "int" + }, + "u_v_component_wind_q_marker": { + "mnemonic": "WPC", + "intent": "int" + } + }, + "obs_err": { + "events": false, + "pressure_obs_err": { + "mnemonic": "POE", + "intent": "float" + }, + "height_obs_err": { + "mnemonic": "ZOE", + "intent": "float" + }, + "relative_humidity_obs_err": { + "mnemonic": "QOE", + "intent": "float" + }, + "temperature_obs_err": { + "mnemonic": "TOE", + "intent": "float" + }, + "winds_obs_err": { + "mnemonic": "WOE", + "intent": "float" + } + }, + "obs_data_120": { + "events": true, + "temperature": { + "mnemonic": "TOB", + "event_program_code_mnemonic": "TPC", + "intent": "float", + "event_value": 1 + }, + "dewpoint": { + "mnemonic": "TDO", + "intent": "float", + "event_value": 1 + }, + "relative_humidity": { + "mnemonic": "RHO", + "intent": "float" + }, + "specific_humidity": { + "mnemonic": "QOB", + "event_program_code_mnemonic": "QPC", + "intent": "float", + "event_value": 1 + }, + "pressure": { + "mnemonic": "POB", + "event_program_code_mnemonic": "PPC", + "intent": "float", + "event_value": 1 + }, + "height": { + "mnemonic": "ZOB", + "event_program_code_mnemonic": "ZPC", + "intent": "float", + "event_value": 1 + } + }, + "obs_data_220": { + "events": true, + "pressure": { + "mnemonic": "POB", + "event_program_code_mnemonic": "PPC", + "intent": "float", + "event_value": 1 + }, + "wind_speed": { + "mnemonic": "FFO", + "intent": "float" + }, + "U-Wind": { + "mnemonic": "UOB", + "event_program_code_mnemonic": "WPC", + "intent": "float", + "event_value": 1 + }, + "V-Wind": { + "mnemonic": "VOB", + "event_program_code_mnemonic": "WPC", + "intent": "float", + "event_value": 1 + }, + "wind_direction": { + "mnemonic": "DDO", + "event_program_code_mnemonic": "DFP", + "intent": "float", + "event_value": 1 + } + } + } + `` + \ No newline at end of file diff --git a/src/vxingest/prepbufr_to_cb/import datetime as dt.py b/src/vxingest/prepbufr_to_cb/import datetime as dt.py new file mode 100644 index 00000000..08cb4db3 --- /dev/null +++ b/src/vxingest/prepbufr_to_cb/import datetime as dt.py @@ -0,0 +1,129 @@ +import datetime as dt +import os +import pathlib +import sys + +import plotly.graph_objects as go +import pytest +import yaml +from couchbase.auth import PasswordAuthenticator +from couchbase.cluster import Cluster +from couchbase.collection import GetSpec as SD +from couchbase.options import ClusterOptions, ClusterTimeoutOptions +from plotly.subplots import make_subplots + +""" + _summary_ + This test will retrieve a tropoe observation from the couchbase database and then + compare the raw observation data to the interpolated observation data that is stored in the couchbase database. + Special note on test data: + The test produces a plot of the raw data and the interpolated data on the local browser. + """ + + +@pytest.mark.integration +def test_int_tropoe_visual(): + credentials_file = os.environ["CREDENTIALS"] + if not pathlib.Path(credentials_file).is_file(): + pytest.fail( + "*** credentials_file file " + credentials_file + " can not be found!" + ) + with pathlib.Path(credentials_file).open(encoding="utf-8") as _f: + _yaml_data = yaml.load(_f, yaml.SafeLoader) + host = _yaml_data["cb_host"] + user = _yaml_data["cb_user"] + password = _yaml_data["cb_password"] + bucket = _yaml_data["cb_bucket"] + collection = "TROPOE" + try: + timeout_options = ClusterTimeoutOptions( + kv_timeout=dt.timedelta(seconds=25), + query_timeout=dt.timedelta(seconds=120), + ) + options = ClusterOptions( + PasswordAuthenticator(user, password), + timeout_options=timeout_options, + ) + cluster = Cluster(host, options) + collection = cluster.bucket(bucket).collection(collection) + except Exception as _e: + sys.exit( + "*** builder_common.CommonVxIngest Error in connect_cb *** %s", str(_e) + ) + + # add 21600 to each document time to get 6 hours intervals + try: + epoch = 1622851502 + for i in range(0, 3): + epoch = epoch + i * 21600 + doc_id = f"DD-TEST:V01:TROPOE:obs:{epoch}" + # doc_id = "DD-TEST:V01:TROPOE:obs:1622851502" + try: + res = collection.lookup_in(doc_id, (SD.get(f"data.{epoch}.raw"),)) + data = res.content_as[dict](0) + index = 0 + while index < len(data["height"]): + if data["height"][index] >= 5000: + break + index += 1 + raw_data = {} + for variable in [ + "temperature", + "sigma_temperature", + "waterVapor", + "sigma_waterVapor", + "height", + ]: + raw_data[variable] = data[variable][:index] + + intrp_data = {} + res = collection.lookup_in( + doc_id, (SD.get(f"data.{epoch}.interpolated"),) + ) + intrp_data = res.content_as[dict](0) + + fig = make_subplots(specs=[[{"secondary_y": True}]]) + fig.add_trace( + go.Line( + y=raw_data["height"], + x=raw_data["temperature"], + name="raw data temperature", + ), + ) + fig.add_trace( + go.Line( + y=intrp_data["levels"], + x=intrp_data["temperature"], + name="interpolated data temperature", + ), + ) + fig.add_trace( + go.Line( + y=raw_data["height"], + x=raw_data["waterVapor"], + name="raw data waterVapor", + ), + ) + fig.add_trace( + go.Line( + y=intrp_data["levels"], + x=intrp_data["waterVapor"], + name="interpolated data waterVapor", + ), + ) + time_str = str(dt.datetime.utcfromtimestamp(epoch).isoformat()) + fig.update_layout( + title=f"fireweather raw data vs interpolated data {time_str}" + ) + fig.update_traces(mode="lines+markers") + fig.update_traces(marker=dict(size=5)) + fig.update_xaxes(title_text="temperature degC / waterVapor g/kg") + fig.update_yaxes(title_text="height/levels meters") + fig.show() + except Exception as _e: + pytest.fail( + f"*** builder_common.CommonVxIngest Error in connect_cb *** {str(_e)}" + ) + finally: + cluster.close() + print("Connection closed") diff --git a/src/vxingest/prepbufr_to_cb/import unittest.py b/src/vxingest/prepbufr_to_cb/import unittest.py new file mode 100644 index 00000000..dcd22432 --- /dev/null +++ b/src/vxingest/prepbufr_to_cb/import unittest.py @@ -0,0 +1,116 @@ +import unittest +from unittest.mock import MagicMock, patch + +import pytest + +from vxingest.netcdf_to_cb.netcdf_builder_parent import NetcdfBuilder + + +class TestNetcdfBuilder(unittest.TestCase): + def setUp(self): + """Set up a mock NetcdfBuilder instance for testing.""" + load_spec = { + "cb_connection": { + "bucket": "test_bucket", + "scope": "test_scope", + "collection": "test_collection", + }, + "load_job_doc": {"id": "test_job_id"}, + } + ingest_document = { + "template": {"subset": "test_subset", "id": "*test_id"}, + } + self.builder = NetcdfBuilder(load_spec, ingest_document) + self.builder.ncdf_data_set = MagicMock() + + def test_get_database_connection_details(self): + """Test retrieving database connection details.""" + queue_element = "test_file.nc" + bucket, scope, collection = self.builder.get_database_connection_details( + queue_element + ) + assert bucket == "test_bucket" + assert scope == "test_scope" + assert collection == "test_collection" + assert self.builder.file_name == "test_file.nc" + + def test_build_document_map_type_checks(self): + """Test type checks in build_document_map.""" + with pytest.raises(TypeError): + self.builder.build_document_map(123, "base_var_name") + with pytest.raises(TypeError): + self.builder.build_document_map("queue_element", 123) + with pytest.raises(TypeError): + self.builder.build_document_map("queue_element", "base_var_name", 123) + + @patch("vxingest.netcdf_to_cb.netcdf_builder_parent.cProfile.Profile") + @patch("vxingest.netcdf_to_cb.netcdf_builder_parent.Path.open") + def test_build_document_map_profiling(self, mock_open, mock_profile): + """Test build_document_map with profiling enabled.""" + self.builder.do_profiling = True + self.builder.handle_document = MagicMock() + self.builder.get_document_map = MagicMock(return_value={}) + self.builder.create_data_file_id = MagicMock(return_value="test_data_file_id") + self.builder.build_datafile_doc = MagicMock(return_value={"id": "test_id"}) + + document_map = self.builder.build_document_map("queue_element", "base_var_name") + self.builder.handle_document.assert_called_once_with("base_var_name") + assert "test_id" in document_map + + def test_derive_id(self): + """Test deriving an ID from a template.""" + self.builder.handle_named_function = MagicMock(return_value="function_value") + self.builder.translate_template_item = MagicMock(return_value="item_value") + + template_id = "&function|param1:param2:*item" + result = self.builder.derive_id(template_id=template_id, base_var_index=0) + assert result == "function_value:param2:item_value" + + def test_translate_template_item(self): + """Test translating a template item.""" + self.builder.ncdf_data_set.variables = { + "test_var": MagicMock(return_value="test_value1") + } + result = self.builder.translate_template_item("*test_var", 0) + # don't know how to properly mock the ncdf_data_set.variables + assert result is not None + + def test_handle_document_type_check(self): + """Test type check in handle_document.""" + with pytest.raises(TypeError): + self.builder.handle_document(123) + + def test_build_datafile_doc(self): + """Test building a datafile document.""" + file_name = "test_file.nc" + data_file_id = "test_data_file_id" + origin_type = "test_origin" + with patch( + "vxingest.netcdf_to_cb.netcdf_builder_parent.Path.stat" + ) as mock_stat: + mock_stat.return_value.st_mtime = 1234567890 + result = self.builder.build_datafile_doc( + file_name, data_file_id, origin_type + ) + assert result["id"] == data_file_id + assert result["mtime"] == 1234567890 + assert result["subset"] == "test_subset" + assert result["type"] == "DF" + assert result["fileType"] == "netcdf" + assert result["originType"] == origin_type + + def test_handle_named_function(self): + """Test handling a named function.""" + self.builder.meterspersecond_to_milesperhour = MagicMock(return_value=10) + result = self.builder.handle_named_function( + "&meterspersecond_to_milesperhour|*speed", 0 + ) + assert result == 10 + + def test_load_data(self): + """Test loading data into a document.""" + doc = {"data": {}} + element = {"name": "station1", "Reported Time": 1234567890} + result = self.builder.load_data(doc, element) + assert "station1" in result["data"] + assert result["data"]["station1"] == element diff --git a/src/vxingest/prepbufr_to_cb/prepbufr_builder.py b/src/vxingest/prepbufr_to_cb/prepbufr_builder.py new file mode 100644 index 00000000..73ffd403 --- /dev/null +++ b/src/vxingest/prepbufr_to_cb/prepbufr_builder.py @@ -0,0 +1,2283 @@ +""" +Program Name: Class PrepbufrBuilder.py +Contact(s): Randy Pierce +History Log: Initial version +Copyright 2019 UCAR/NCAR/RAL, CSU/CIRES, Regents of the University of +Colorado, NOAA/OAR/ESRL/GSL +""" + +import abc +import collections +import contextlib +import copy +import cProfile +import datetime +import itertools +import logging +import math +import pathlib +from pathlib import Path +from pstats import Stats + +import metpy.calc +import ncepbufr +import numpy as np +import numpy.ma as ma +from metpy.units import units + +from vxingest.builder_common.builder import Builder +from vxingest.builder_common.builder_utilities import ( + convert_to_iso, +) + +# Get a logger with this module's name to help with debugging +logger = logging.getLogger(__name__) + + +# custom validation Exception for all masked data in a given level +class AllMaskedException(Exception): + def __init__(self, message): + super().__init__(message) + + +# ApiBuilder← RaobObsBuilder ← RaobsGslObsBuilder +class PrepbufrBuilder(Builder): + """parent class for Prepbufr builders""" + + def __init__(self, load_spec, ingest_document): + # builders do not init the ingest_document. That happens in build_document + super().__init__(load_spec, ingest_document) + + self.load_spec = load_spec + self.domain_stations = [] + self.ingest_document = None + self.template = None + self.subset = None + self.model = None + self.sub_doc_type = None + self.model_fcst_valid_epochs = [] + self.stations = {} + self.interpolated_data = {} + self.levels = [] + # used to stash each fcstValidEpoch obs_data for the handlers + self.obs_station_names = [] # used to stash sorted obs names for the handlers + self.thresholds = None + self.not_found_stations = set() + self.not_found_station_count = 0 + self.bucket = None + self.scope = None + self.collection = None + + @abc.abstractmethod + def read_data_from_file(self, queue_element, templates): + """read data from the prepbufr file, filter messages for appropriate ones, + and load them raw into a dictionary structure, so that they can be post processed + for interpolations.""" + return + + def derive_id(self, **kwargs): + """ + This is a private method to derive a document id from the current valid_fcst_time and level. + A *field represents a direct substitution and a &function|params... + represents a handler function. + Args: + template_id (string): this is an id template string + Returns: + [string]: The processed id with substitutions made for elements in the id template + """ + try: + template_id = kwargs["template_id"] + level = round(kwargs["level"]) + stationName = kwargs["stationName"] + parts = template_id.split(":") + new_parts = [] + for part in parts: + if "level" in part: + value = str(level) + else: + if "stationName" in part: + value = stationName + else: + if part.startswith("&"): + value = str( + self.handle_named_function(stationName, level, part) + ) + else: + if part.startswith("*"): + value = str( + self.translate_template_item( + stationName, level, part + ) + ) + else: + value = str(part) + new_parts.append(value) + new_id = ":".join(new_parts) + return new_id + except Exception as _e: + logger.exception("ApiBuilder.derive_id: Exception error: %s") + return None + + def translate_template_item(self, stationName, level, variable): + """ + This method translates template replacements (*item). + It can translate keys or values. + :param stationName: the station name + :param level: the level + :param variable: a value from the template - should be a record field + :param api_record + :return: + """ + replacements = [] + # noinspection PyBroadException + try: + # level_idx = self.get_mandatory_levels().index(level) + if isinstance(variable, str): + replacements = variable.split("*")[1:] + # this is a literal, doesn't need to be returned + if len(replacements) == 0: + return variable + # pre assign these in case it isn't a replacement - makes it easier + value = variable + if len(replacements) > 0: + for _ri in replacements: + # _ri is the template field name. + # this is the place where it happens + # we need to find the value in the raw_obs_data + # looking in report_type 120 for non wind data + # and in report_type 220 for wind data. + + if _ri == "stationName": + return stationName + if "wind" in _ri.lower(): + # look in report_type 220 + if ( + 220 not in self.interpolated_data[stationName] + or not self.interpolated_data[stationName][220]["data"] + ): + # this one has no data + value = None + else: + try: + value = ( + self.interpolated_data[stationName][220]["data"][ + _ri + ][level] + if self.interpolated_data[stationName][220]["data"][ + _ri + ] + else None + ) + except KeyError as _ke: + # this level doesn't exist for this variable + value = None + else: + # look in report_type 120 + if ( + 120 not in self.interpolated_data[stationName] + or not self.interpolated_data[stationName][120]["data"] + ): + # this one has no data + return None + else: + try: + value = ( + self.interpolated_data[stationName][120]["data"][ + _ri + ][level] + if self.interpolated_data[stationName][120]["data"][ + _ri + ] + else None + ) + + except KeyError as _ke: + # this level doesn't exist for this variable + return None + # convert each station value to iso if necessary + if _ri.startswith("{ISO}"): + value = variable.replace("*" + _ri, convert_to_iso(value)) + else: + value = ( + variable.replace("*" + _ri, str(value)) + if value is not None + else None + ) + try: # make sure we have a number, if possible - except for stationNames + value = float(value) if value is not None else None + except ValueError: + return value + return value + except Exception as _e: + logger.error( + "PrepBufrBuilder.translate_template_item: Exception error: %s", str(_e) + ) + return None + + def interpolate_variable_for_level( + self, + variable, + nearest_higher_pressure_index, + nearest_lower_pressure_index, + obs_data, + wanted_pressure_level_mb, + ): + """ + This method interpolates the data for a given variable to the wanted level + using the nearest higher and lower pressure indexes. This method assumes that the variables + are masked arrays with the same shape. The wanted pressure is a mandatory level provided in mb + and the pressure masked array is also assumed to be in mb. + :param variable: the variable to interpolate + :param nearest_higher_pressure_index: the nearest higher pressure index + :param nearest_lower_pressure_index: the nearest lower pressure index + :param wanted_pressure_level_mb: the wanted pressure level in mb + :return: the interpolated value for the variable at the wanted pressure level + """ + try: + value = None + nearest_higher_pressure = obs_data["pressure"][ + nearest_higher_pressure_index + ] + nearest_lower_pressure = obs_data["pressure"][nearest_lower_pressure_index] + try: + weight = (float)( + ( + math.log(nearest_higher_pressure) + - math.log(wanted_pressure_level_mb) + ) + / ( + math.log(nearest_higher_pressure) + - math.log(nearest_lower_pressure) + ) + ) + except Exception as _e1: + if not isinstance(_e1, ZeroDivisionError): + # don't log divide by zero (two adjacent levels with same) + logger.error( + "PrepBufrBuilder.interpolate_variable_for_level: Exception error: %s", + str(_e1), + ) + return None + if variable == "wind_direction": # if it is a wind_direction do this + # interpolates wind directions in the range 0 - 359 degrees + if not self.is_a_number(nearest_lower_pressure) or not self.is_a_number( + nearest_higher_pressure + ): + return None + + next_higher_pressure_direction = obs_data["wind_direction"][ + nearest_higher_pressure_index + ] + next_lower_pressure_direction = obs_data["wind_direction"][ + nearest_lower_pressure_index + ] + if not self.is_a_number( + next_lower_pressure_direction + ) or not self.is_a_number(next_higher_pressure_direction): + return None + + dir_dif = next_lower_pressure_direction - next_higher_pressure_direction + if dir_dif > 180: + dir_dif -= 360 + else: + if dir_dif < -180: + dir_dif += 360 + # round the possible floating point number to the nearest integer + value = round(next_higher_pressure_direction + weight * (dir_dif)) + if value < 0: + value += 360 + else: + if value >= 360: + value -= 360 + return value + else: # if it isn't a wind_direction do this + next_higher_pressure_variable_value = obs_data[variable][ + nearest_higher_pressure_index + ] + next_lower_pressure_variable_value = obs_data[variable][ + nearest_lower_pressure_index + ] + if not self.is_a_number( + next_higher_pressure_variable_value + ) or not self.is_a_number(next_lower_pressure_variable_value): + return None + else: + value = next_higher_pressure_variable_value + weight * ( + next_lower_pressure_variable_value + - next_higher_pressure_variable_value + ) + return value + except Exception as _e: + logger.error( + "PrepBufrBuilder.interpolate_level: Exception error: %s", str(_e) + ) + return None + + def interpolate_data(self, raw_obs_data): + """fill in the mandatory levels with interpolated data using the log difference interpolation method. + For each pressure level in the mandatory levels, find the nearest higher and lower pressure levels + and interpolate the data for each variable at the mandatory level. Set the pressure level to the mandatory level. + Args: + raw_data (): this is the raw data from the prepbufr file with missing heights having been interpolated + using the hypsometric equation for thickness. + Returns: the interpolated_data + """ + try: + interpolated_data = {} + mandatory_levels = self.get_mandatory_levels() + for station in raw_obs_data: + if station not in interpolated_data: + interpolated_data[station] = {} + for report in raw_obs_data[station]: + if report not in interpolated_data[station]: + interpolated_data[station][report] = {} + if "data" not in interpolated_data[station][report]: + interpolated_data[station][report]["data"] = {} + if raw_obs_data[station][report][ + "obs_data" + ] is None or not isinstance( + raw_obs_data[station][report]["obs_data"]["pressure"], + list, + ): + # I cannot process this station - there is no array of pressure data + del interpolated_data[station] + break + for variable in raw_obs_data[station][report]["obs_data"]: + # create masked array for the variable with ALL the mandatory levels + # though the levels below the bottom level and above the top level will be masked + if report == 120 and "wind" in variable.lower(): + # skip this one - it is handled in the 220 report + continue + if ( + report == 220 + and variable.lower() != "pressure" + and "wind" not in variable.lower() + ): + # skip this one - it is handled in the 120 report - except for pressure + continue + if variable not in interpolated_data[station][report]["data"]: + interpolated_data[station][report]["data"][variable] = {} + if ( + raw_obs_data[station][report]["obs_data"][variable] is None + or len(raw_obs_data[station][report]["obs_data"][variable]) + == 0 + ): + # can't do this, there is no raw data for this variable + interpolated_data[station][report]["data"][variable] = None + continue + # now we can interpolate the levels for each variable + for level in mandatory_levels: + # find the nearest higher and lower pressure to this level + p_arr = np.asarray( + raw_obs_data[station][report]["obs_data"]["pressure"] + ) + if ( + np.isnan(p_arr).all() + or level > p_arr.max() + or level < p_arr.min() + ): + # this level is outside the range of the data - have to skip it + interpolated_data[station][report]["data"][variable][ + level + ] = None + continue + p_no_nan_arr = p_arr[~np.isnan(p_arr)] + if level > p_no_nan_arr.max() or level < p_no_nan_arr.min(): + # this level is outside the range of the data - have to skip it + interpolated_data[station][report]["data"][variable][ + level + ] = None + continue + nearest_higher_pressure = p_no_nan_arr[ + p_no_nan_arr >= level + ].min() + nearest_higher_i = raw_obs_data[station][report][ + "obs_data" + ]["pressure"].index(nearest_higher_pressure) + nearest_lower_pressure = p_no_nan_arr[ + p_no_nan_arr <= level + ].max() + nearest_lower_i = raw_obs_data[station][report]["obs_data"][ + "pressure" + ].index(nearest_lower_pressure) + + if ( + nearest_higher_i == nearest_lower_i + and nearest_higher_pressure == level + ): + # this is the level we want - it matches the mandatory level + interpolated_data[station][report]["data"][variable][ + level + ] = ( + raw_obs_data[station][report]["obs_data"][variable][ + nearest_lower_i + ] + if self.is_a_number( + raw_obs_data[station][report]["obs_data"][ + variable + ][nearest_lower_i] + ) + else None + ) + continue + # have to interpolate the data for this variable and level + try: + interpolated_data[station][report]["data"][variable][ + level + ] = self.interpolate_variable_for_level( + variable, + nearest_higher_i, + nearest_lower_i, + raw_obs_data[station][report]["obs_data"], + level, + ) + except Exception as _e: + logger.error( + "PrepBufrBuilder.interpolate_data: Exception error: %s", + str(_e), + ) + interpolated_data[station][report]["data"][variable][ + level + ] = None + except Exception as _e: + logger.error( + "PrepBufrBuilder.interpolate_data: Exception error: %s", str(_e) + ) + # set the pressure levels to the mandatory levels now that the data has all been interpolated to mandatory levels + for station in raw_obs_data: + for report in raw_obs_data[station]: + for _l in mandatory_levels: + if station not in interpolated_data: + continue + interpolated_data[station][report]["data"]["pressure"][_l] = _l + return interpolated_data + + def handle_document(self): + """ + This routine processes the complete document (essentially a complete bufr file) + which includes a new document for each mandatory level. The data section of each document + is a dictionary keyed by the station name. The handle_data method is called and it will + process each station in the interpolated_data and reconcile station locations with the + couchbase station documents. If a station is not found in the couchbase database + a new station document will be created and added to the document map. + :return: The modified document_map + The document map should be a dictionary keyed by the document id + and each document id should look like DD:V01:RAOB:obs:prepbufr:500:1625097600 + + where the type is "DD", the version is "V01", the subset is "RAOB", the docType is "obs", + the docSubType is "prepbufr", the level is "500 (in mb)", and the valid time epoch is "1625097600". + + Each Document shall have a data dictionary that is keyed by the station name. The data section is defined by + the template in the ingest document. + + The existence of the level key in the template indicates that the template is a multilevel template. + """ + # noinspection PyBroadException + try: + for level in self.get_mandatory_levels(): + new_document = copy.deepcopy(self.template) + # make a copy of the template, which will become the new document + # once all the translations have occurred + # set the level right away (it is needed for the handle_data) + # clean out the data template from the data portion of the newDocument + new_document["data"] = {} + for key in self.template: + if key == "level": + new_document["level"] = level + continue + if key == "data": + try: + self.handle_data(level, doc=new_document) + except AllMaskedException as _ame: + # this data is all masked at this level. Cannot use this document. + break + continue + # handle the key for this level that isn't data and isn't level + # level is the same for all the variables and all the stations + # variables will be handled in the data section for every station + new_document = self.handle_key(new_document, level, key) + # put new document into document map + if new_document["id"]: + logger.info( + "PrepbufrBuilder.handle_document - adding document %s", + new_document["id"], + ) + self.document_map[new_document["id"]] = new_document + else: + logger.info( + "PrepbufrBuilder.handle_document - cannot add document with key %s", + str(new_document["id"]), + ) + self.document_map[new_document["id"]] = new_document + except Exception as _e: + logger.error( + "PrepbufrBuilder.handle_document: Exception instantiating builder: %s error: %s", + self.__class__.__name__, + str(_e), + ) + raise _e + + def handle_key(self, doc, level, key, stationName=None): + """ + This routine handles keys by substituting + the data that correspond to the key into the values + in the template that begin with * + :param doc: the current document + :param level: the current level + :param stationName: The current station - only necessary for the data section + :param _key: A key to be processed, This can be a key to a primitive, + or to another dictionary, or to a named function + """ + # noinspection PyBroadException + try: + if key == "id": + an_id = self.derive_id( + template_id=self.template["id"], + level=level, + stationName=stationName, + ) + if an_id not in doc: + doc["id"] = an_id + return doc + if isinstance(doc[key], dict): + # process an embedded dictionary + # find the key in the template and process it (might not be a key in the top level of the template) + if key in self.template: + val = self.template[key] + else: + for k in self.template: + if key in self.template[k]: + val = self.template[k][key] + break + tmp_doc = copy.deepcopy(val) + for sub_key in tmp_doc: + tmp_doc = self.handle_key( + tmp_doc, level, sub_key, stationName + ) # recursion + doc[key] = tmp_doc + if ( + not isinstance(doc[key], dict) + and isinstance(doc[key], str) + and doc[key].startswith("&") + ): + doc[key] = self.handle_named_function(stationName, level, doc[key]) + else: + doc[key] = self.translate_template_item(stationName, level, doc[key]) + return doc + except Exception as _e: + logger.exception( + "%s ApiBuilder.handle_key: Exception in builder", + self.__class__.__name__, + ) + return doc + + def handle_named_function(self, stationName, level, named_function_def): + """ + This routine processes a named function entry from a template. + :param _named_function_def - this can be either a template key or a template value. + :param stationName - the current station + :param level - the current level + The _named_function_def looks like "&named_function:*field1,*field2,*field3..." + where named_function is the literal function name of a defined function. + The name of the function and the function parameters are separated by a ":" and + the parameters are separated by a ','. + It is expected that field1, field2, and field3 etc are all valid variable names. + Each field will be translated from the interpolated_data for every mandatory level + into value1, value2 etc. The method "named_function" will be called like... + named_function({field1:value1, field2:value2, ... field_n:value_n}) and the return value from named_function + will be substituted into each level document. + """ + + func = None + try: + func = named_function_def.split("|")[0].replace("&", "") + if len(named_function_def.split("|")) > 1: + params = named_function_def.split("|")[1].split(",") + else: + params = [] + dict_params = {} + for _p in params: + # be sure to slice the * off of the front of the param + dict_params[_p[1:]] = self.translate_template_item( + stationName, level, _p + ) + dict_params["level"] = level + dict_params["stationName"] = stationName + # call the named function using getattr + if not dict_params: + replace_with = getattr(self, func)() + else: + replace_with = getattr(self, func)(dict_params) + except ValueError as _ve: + if not isinstance(_ve, ValueError): + logger.error( + "%s handle_named_function: %s params %s: ValueError instantiating builder: %s", + self.__class__.__name__, + func, + params, + str(_ve), + ) + raise _ve + except Exception as _e: + logger.exception( + "%s handle_named_function: %s params %s: Exception instantiating builder:", + self.__class__.__name__, + func, + params, + ) + return replace_with + + def handle_data(self, level, **kwargs): + """This method must handle each station. For each station this method iterates + the template entries, deciding for each entry to either + handle_named_function (if the entry starts with a '&') or to translate_template_item + if it starts with an '*'. It handles both keys and values for each template entry. The level + and the station are included in the params for the named function or the template item. + The inclusion of level and station is what allows the proper access to the interpolated data for the station. + Args: + doc (Object): this is the data document that is being built + Returns: + (Object): this is the data document that is being built + Raises: AllMaskedException if all the data is masked for a given level + ValueError if the data is not valid. + Either exception will cause the document to be skipped. + """ + try: + doc = kwargs["doc"] + for _station_name in self.interpolated_data: + data_elem = {} + data_template = self.template["data"]["*stationName"] + try: + for _data_key in data_template: + try: + value = data_template[_data_key] + # values can be null... + if ( + value + and not isinstance(value, dict) + and value.startswith("&") + ): + replace_value = self.handle_named_function( + _station_name, level, value + ) + else: + replace_value = self.translate_template_item( + _station_name, level, value + ) + data_elem[_data_key] = replace_value + except ValueError as _ve: + # this was logged already - dont log it again + raise _ve + except Exception as _e: + replace_value = None + logger.warning( + "%s Builder.handle_data - value is None", + self.__class__.__name__, + ) + raise _e # probably cannot use this document - throw it away + except ValueError as _ve: + continue # do not use this one - we didn't have enough data to create a new station document + doc["data"][_station_name] = data_elem + return doc + except AllMaskedException as _ame: + raise _ame + except Exception as _e: + logger.exception( + "%s handle_data: Exception instantiating builder", + self.__class__.__name__, + ) + return doc + + def build_document(self, queue_element): + """This is the entry point for the Builders from the ingestManager. + These documents are id'd by fcstValidEpoch and level. The data section is a dictionary + keyed by station name each element of which contains variable data and the station name. + To process this raob_data object we need to iterate the data and process the station + name along with all the other variables in the template. + Args: + queue_element - a prepbufr file name + Returns: + [dict]: document + + 1) read the prepbufr file to get all the obs data into a raw data dict interpolating missing heights with the hypsometric equation for thickness. + 2) add the raw data to the document map + 2) interpolate the data into mandatory 10mb levels + see https://docs.google.com/document/d/1-L-1FMKGDRXNGmAZhdZb3_vZT41kOWte8ufqd2c_CvQ/edit?usp=sharing + For each level interpolate the data to the mandatory levels, if necessary and build a document for each level + that has all the data for that level. Add the document to the document map. + """ + # noinspection PyBroadException + try: + # read the api for all data for this valid fcst hour. + bucket = self.load_spec["cb_connection"]["bucket"] + scope = self.load_spec["cb_connection"]["scope"] + # collection is set to "RAOB" in the run_ingest + collection = self.load_spec["cb_connection"]["collection"] + mnemonic_mapping = self.mnemonic_mapping + self.raw_obs_data = self.read_data_from_file( + queue_element, mnemonic_mapping + ) + try: + self.interpolated_data = self.interpolate_data(self.raw_obs_data) + except Exception as _e: + logger.error( + "PrepBufrBuilder.build_document: Exception error: %s", str(_e) + ) + return {} + if len(self.stations) == 0: + stmnt = f"""SELECT {self.subset}.* + FROM `{bucket}`.{scope}.{collection} + WHERE type = 'MD' + AND docType = 'station' + AND subset = '{self.subset}' + AND version = 'V01';""" + result = self.load_spec["cluster"].query(stmnt) + self.stations = list(result) + + self.initialize_document_map() + logger.info( + "%s building documents for file %s", + self.__class__.__name__, + queue_element, + ) + if self.do_profiling: + with cProfile.Profile() as _pr: + # derive and add the documents (one per mandatory level) to the document map with profiling + self.handle_document() + with Path.open("profiling_stats.txt", "w") as stream: + stats = Stats(_pr, stream=stream) + stats.strip_dirs() + stats.sort_stats("time") + stats.dump_stats("profiling_stats.prof") + stats.print_stats() + else: + # derive and add the documents (one per mandatory level) to the document map without profiling + self.handle_document() + document_map = self.get_document_map() + # add the datafile doc to the document map + data_file_id = self.create_data_file_id( + self.subset, "GDAS", "prepbufr", queue_element + ) + data_file_doc = self.build_datafile_doc( + file_name=queue_element, data_file_id=data_file_id, origin_type="GDAS" + ) + document_map[data_file_doc["id"]] = data_file_doc + return document_map + except Exception as _e: + logger.exception( + "%s: Exception with builder build_document: file_name: %s", + self.__class__.__name__, + queue_element, + ) + return {} + + +# Concrete builders +class PrepbufrRaobsObsBuilderV01(PrepbufrBuilder): + """ + This is the builder for RAOBS observation data that is ingested from prepbufr files + """ + + def __init__(self, load_spec, ingest_document): + """ + This builder creates a set of V01 obs documents using the V01 raob station documents. + This builder loads V01 station data into memory, and associates a station with an observation + lat, lon, point. + In each document the observation data is an array of objects each of which is the obs data + for a specific station. + If a station from a prepbufr file does not exist in the couchbase database + a station document will be created from the prepbufr record data and + the station document will be added to the document map. If a station location has changed + the geo element will be updated to have an additional geo element that has the new location + and time bracket for the location. + :param ingest_document: the document from the ingest document + :param load_spec: the load specification + """ + PrepbufrBuilder.__init__(self, load_spec, ingest_document) + self.same_time_rows = [] + self.time = 0 + self.interpolated_time = 0 + self.template = ingest_document["template"] + self.mnemonic_mapping = ingest_document["mnemonic_mapping"] + self.subset = self.template["subset"] + self.raw_obs_data = {} + self.interpolated_data = {} + self.mandatory_levels = [] + self.station_reference = {} + + self.print_debug_station_report = False + # self.print_debug_station_report = True + self.report_file = None + self.report_station_file_name = "/tmp/station_report.txt" + if self.print_debug_station_report: + with contextlib.suppress(OSError): + Path(self.station_report_file_name).unlink() + print(f"debug station report is in {self.station_report_file_name}") + # self.do_profiling = True # set to True to enable build_document profiling + self.do_profiling = False # set to True to enable build_document profiling + + self.write_data_for_debug_station_list = None # used for debugging + self.current_station = None # used for debugging + + # used for debugging - mostly for setting breakpoints + def set_write_data_for_debug_station_list(self, station_list): + self.write_data_for_debug_station_list = station_list + + def get_mandatory_levels(self): + """ + This method gets the mandatory levels for the raw data set. + :param report: the bufr report i.e. the subset.report_type + :return: the mandatory levels + """ + if not self.mandatory_levels: + self.mandatory_levels = list(range(1010, 10, -10)) + return self.mandatory_levels + + def get_svpWobus(self, tx): + """_summary_ + From legacy code: svpWobus + static public float svpWobus(double tk) { + double tx = tk-273.15; + double pol = 0.99999683 + tx*(-0.90826951e-02 + + tx*(0.78736169e-04 + tx*(-0.61117958e-06 + + tx*(0.43884187e-08 + tx*(-0.29883885e-10 + + tx*(0.21874425e-12 + tx*(-0.17892321e-14 + + tx*(0.11112018e-16 + tx*(-0.30994571e-19))))))))); + double esw_pascals = 6.1078/Math.pow(pol,8.) *100.; + return((float)esw_pascals); + } + + Args: + t (float): either temp or dewpoint in degC + """ + tx = math.nan if tx is ma.masked else tx + _pol = 0.99999683 + tx * ( + -0.90826951e-02 + + tx + * ( + 0.78736169e-04 + + tx + * ( + -0.61117958e-06 + + tx + * ( + 0.43884187e-08 + + tx + * ( + -0.29883885e-10 + + tx + * ( + 0.21874425e-12 + + tx + * ( + -0.17892321e-14 + + tx * (0.11112018e-16 + tx * (-0.30994571e-19)) + ) + ) + ) + ) + ) + ) + ) + esw_pascals = 6.1078 / math.pow(_pol, 8.0) * 100.0 + return esw_pascals + + def get_relative_humidity_wobus(self, temperature, dewpoint): + """_summary_ + From legacy code: svpWobusRH + rh[i] = svpWobus(tdk)/svpWobus(tk) * 100; NOTE tdk is dewpoint and tk is temperature IN KELVIN + where tdk is the dewpoint and tk is the temperature. + Args: + temperature (list temp): list of temperatures degC + dewpoint (list dp): list of dewpoint deg C + """ + if temperature is None or dewpoint is None: + return None + else: + return [ + round((self.get_svpWobus(dp) / self.get_svpWobus(t)) * 100, 4) + for dp, t in zip(dewpoint, temperature) + ] + + def get_relative_humidity(self, pressure, temperature, specific_humidity): + """ + This method calculates the relative humidity from the specific humidity, if necessary + :param pressure: the pressure data (list) + :param temperature: the temperature data (list) + :param specific_humidity: the specific humidity data (list) + :return: the relative humidity data + + example: + The list parameters must be converted to masked arrays. + relative_humidity_from_specific_humidity(pressure, temperature, specific_humidity) all pint.Quantity + relative_humidity_from_specific_humidity(1013.25 * units.hPa, 30 * units.degC, 18/1000).to('percent') + + WOBUS values: + The legacy svpWobus value is derived from saturationVaporPressure and temperature using the Wobus formula. + It is provided here for reference only. The svpWobusRH will be included in the raw data. + """ + try: + if pressure is None or temperature is None or specific_humidity is None: + # cannot process this + return None + relative_humidity = [ + None + if not self.is_a_number(p) + or not self.is_a_number(t) + or not self.is_a_number(s) + else np.round( + metpy.calc.relative_humidity_from_specific_humidity( + p * units.hPa, + t * units.degC, + s / 1000 * units("g/kg"), + ) + .to("percent") + .to_tuple()[0], + 4, + ) + for p, t, s in zip(pressure, temperature, specific_humidity) + ] + return relative_humidity + except Exception as _e: + logger.error( + "PrepBufrBuilder.get_relative_humidity: Exception error: %s", str(_e) + ) + return None + + def interpolate_heights_hypsometric( + self, height, pressure, temperature, specific_humidity + ): + """ + This method interpolates the heights using the hypsometric thickness equation. + There is the possibility that a height value is missing for a given pressure level. + There is the assumption that the pressure levels are more correct than the heights. + We will use the highest pressure level as the bottom and the lowest pressure level as the top, + making sure that the temperature, pressure, and mixing_ratio lists are all homogeneous. + Using that data we will use the metpy.calc.thickness_hydrostatic to calculate the thickness of each layer + adding it to the previous height to get the interpolated height. + + :param height: list of float - the height data (may have elements that are ma.masked or None) in meters. + :param pressure: list of float - the pressure data atmospheric profile in units.hPa. + :param temperature: list of float - the temperature data atmospheric profile in units.degC. + :param specific_humidity - list of float - the specific_humidity atmospheric profile in units("mg/kg"). + :return: the interpolated heights nd_array (in meters) or None if the interpolation fails. + + examples: (from https://unidata.github.io/MetPy/latest/api/generated/metpy.calc.thickness_hydrostatic.html) + + mixing ratio from specific humidity: + sh = [4.77, 12.14, 6.16, 15.29, 12.25] * units('g/kg') + mixing_ratio_from_specific_humidity(sh).to('g/kg') + + + thickness_hydrostatic with mixing ratio: + # pressure + p = [1008., 1000., 950., 900., 850., 800., 750., 700., 650., 600., + 550., 500., 450., 400., 350., 300., 250., 200., + 175., 150., 125., 100., 80., 70., 60., 50., + 40., 30., 25., 20.] * units.hPa + # temperature + T = [29.3, 28.1, 23.5, 20.9, 18.4, 15.9, 13.1, 10.1, 6.7, 3.1, + -0.5, -4.5, -9.0, -14.8, -21.5, -29.7, -40.0, -52.4, + -59.2, -66.5, -74.1, -78.5, -76.0, -71.6, -66.7, -61.3, + -56.3, -51.7, -50.7, -47.5] * units.degC + # specify a layer + layer = (p <= 1000 * units.hPa) & (p >= 500 * units.hPa) + # compute the hydrostatic thickness + mpcalc.thickness_hydrostatic(p[layer], T[layer]) + + """ + if ( + height is None + or pressure is None + or temperature is None + or specific_humidity is None + ): + # if there aren't data I don't know what to do. + return None + try: + # don't use invalid data at the top or bottom of the profile + # if any of the needed values are invalid make them all math.nan at that position. + # Make invalid values math.nan because the metpy.calc routine likes them that way. + # also don't use data that is more than one level away from the bottom of the mandatory levels (1000mb). + i = 0 + while i < len(pressure) and ( + not self.is_a_number(pressure[i]) + or not self.is_a_number(temperature[i]) + or not self.is_a_number(specific_humidity[i]) + or not self.is_a_number(height[i]) + or (pressure[i] > 1010 and pressure[i + 1] > 1010) + ): + temperature[i] = math.nan + pressure[i] = math.nan + specific_humidity[i] = math.nan + i = i + 1 + if i == len(pressure): + # all the pressure data is invalid - cannot interpolate + return None + _first_bottom_i = i + i = len(pressure) - 1 + while ( + not self.is_a_number(pressure[i]) + or not self.is_a_number(temperature[i]) + or not self.is_a_number(specific_humidity[i]) + ): + temperature[i] = math.nan + pressure[i] = math.nan + specific_humidity[i] = math.nan + i = i - 1 + _last_top_i = i + + # create pint.Quantity sequences for the data + sh = [ + s if self.is_a_number(s) else math.nan for s in specific_humidity + ] * units("mg/kg") + mr = metpy.calc.mixing_ratio_from_specific_humidity(sh).to("g/kg") + p = [ + p1 if self.is_a_number(p1) else math.nan for p1 in pressure + ] * units.hPa + t = [ + t1 if self.is_a_number(t1) else math.nan for t1 in temperature + ] * units.degC + h = [ + h1 if self.is_a_number(h1) else math.nan for h1 in height + ] * units.meter + + # now determine the layer by finding the bottom valid pressure that has corresponding valid data for + # temperature, pressure, and mixing ratio. + _bottom_i = _first_bottom_i + _top_i = _bottom_i + 1 + while _top_i < _last_top_i: + while math.isnan(pressure[_top_i]): + _top_i = _top_i + 1 + layer = (p <= pressure[_bottom_i] * units.hPa) & ( + p >= pressure[_top_i] * units.hPa + ) + _thickness = metpy.calc.thickness_hydrostatic( + p[layer], + t[layer], + mr[layer], + molecular_weight_ratio=0.6219569100577033, + ) + if not self.is_a_number(_thickness.magnitude): + # Could not derive the thickness from the hypsometric equation + if self.is_a_number(height[_top_i]): + # The provided height is valid - so use that + h[_top_i] = height[_top_i] * units.meter + else: + # cannot do anything - the derived thickness is invalid and so is the provided + # radiosonde height - so invalidate this level + h[_top_i] = math.nan + else: + # Thickness is valid - could derive the thickness from the hypsometric equation + # check the previous derived height - is it a valid number? + if self.is_a_number(h[_top_i - 1].magnitude): + # The previous derived height was also valid so use the previous derived height as a base reference + # for adding to the thickness + h[_top_i] = _thickness + h[_top_i - 1] + else: + # the previous derived height is not a valid number - is the previous provided (radiosonde) height? + if self.is_a_number(height[_top_i - 1]): + # The previous provided (radiosonde) height is valid - so + # use it as a base reference for adding to the thickness + h[_top_i] = _thickness + height[_top_i - 1] * units.meter + else: + # we have a valid thickness but no valid valid base reference for + # the height to add to the thickness + # so we have to invalidate this height + h[_top_i] = math.nan + _bottom_i = _top_i + _top_i = _top_i + 1 + return [_h1 if self.is_a_number(_h1) else None for _h1 in list(h.magnitude)] + except Exception as _e1: + logger.error( + "PrepBufrBuilder.interpolate_heights: RuntimeWarning error: %s", + str(_e1), + ) + return None + + def get_data_from_bufr_for_field( + self, + events, + bufr_data, + mnemonics, # mnemonics is a multidimensional np.array of variable, program_code, q_marker mnemonics + mnemonic=None, + program_code_q_marker_keep_values=None, + ): + """ + This method gets the value from the bufr data at the index for the specific field + :param events: Bool - whether the bufr has events or not + :param bufr_data: the bufr data + :param mnemonics: the variable mnemonic list + :param mnemonic: the specific mnemonic + :program_code_q_marker_keep_values: a dict that is keyed by the program code with a list of acceptable quality codes as values + example: "1": [ + 0, + 1, + 2, + 15 + ] + when the program code is 1 the quality marker must be 0, 1, 2, or 15 for the value to be kept. + :return: If events are False the variable value will be read from the bufr_data at the mnemonic_index. + If events are True the variable value will be read from the bufr_data at the mnemonic_index and the event dimension + will be used to find the value that corresponds to the event_value that is passed in, e.g. 1 is 'Initial' and 8 is 'Virtual' + see https://www.emc.ncep.noaa.gov/mmb/data_processing/table_local_await-val.htm#0-12-247 + An event_value of None will cause the value of the first event to be returned, regardless of the events actual value. + An event_value is the value of the corresponding event program code at the event index. The event program code is the + value for the event_program_code mnemonic. + example: + as an example consider the following bufr data decoded from a prepbufr file 241570000.gdas.t00z.prepbufr.nr which + is the 0 hour UTC readings for the GDAS data set from 2024 June 5th. + The data was loaded in read_data_from_file with bufr = ncepbufr.open(queue_element), bufr.load_subset(), and bufr.advance(). + In this routine the data for a subset is read with the following code... + For example purposes consider using two different read_subset calls, one for events-False and one for events=True. + bdne = bufr.read_subset(mnemonics_str, events=False).squeeze() + bdwe = bufr.read_subset(mnemonics_str, events=True).squeeze() + consider the following mnemonics_str for debugging purposes + - no events mnemonics_str = 'TOB TDO RHO QOB POB ZOB' (temp, dewpoint, relative humidity, specific humidity, pressure, height) + - with events mnemonics_str = 'TOB TPC TDO RHO QOB QPC POB PPC ZOB ZPC' (temp, temp program code, dewpoint, relative humidity, specific humidity, specific humidity program code, pressure, pressure program code, height, height program code) + + bdne=bufr.read_subset('TOB TDO RHO QOB POB ZOB', events=False) + bdwe=bufr.read_subset('TOB TPC TDO RHO QOB QPC POB PPC ZOB ZPC', events=True) + bdne.shape + (6, 43) + > bdwe.shape + (6, 43, 255) + bdne is a masked array for the temperature TOB i.e. the first mnemonic i.e. variable_index==0. There are 43 elements i.e. levels + > bdne[0] + masked_array(data=[--, --, --, 26.8, 25.200000000000003, 16.7, + 11.200000000000001, -4.4, -5.4, -12.200000000000001, + ...., + -51.7, -49.1], + mask=[ True, True, True, False, False, False, False, False, + ....., + False, False, False], + fill_value=100000000000.0) + the 26th element is -76.7 degrees C + > bdne[0][26] + -76.7 + bdwe is a masked array for the temperature TOB i.e. the first mnemonic. There are 43 elements i.e. levels, and an additional element for each of 255 potential events. + > bdwe.shape + (6, 43, 255) + there are two events for the 26th level and all the others are masked + > bdwe[0][26].count() + 2 + for this example the first event is 0 and the second event is 1 and the corresponding data values are identical + > bdwe[0][26][0] + -76.7 + > bdwe[0][26][1] + -76.7 + > bdwe[0][26][2] + masked + to get all the first event pressures... + > [i[0] for i in bdwe[6]] + > [1000.0, 925.0, 850.0, 773.0, 772.0, 700.0, 654.0, 515.0, 500.0, 440.0, 431.0, 428.0, 400.0, 383.0, 342.0, 329.0, 326.0, 320.0, 300.0, 264.0, 250.0, 208.0, 200.0, 185.0, 150.0, 149.0, 100.0, 97.5, 71.9, 70.0, 68.60000000000001, 64.4, 56.6, 50.0, 42.300000000000004, 36.5, 32.300000000000004, 30.900000000000002, 30.0, 25.3, 22.3, 20.0, 16.7] + to get all the second event pressures (note that all but the first two are masked)... + > i[1] for i in bdwe[6]] + [1000.0, 925.0, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked, masked] + to find the index of the 500 mb level (it is the ninth element - index 8) ... + [i[0] for i in bdwe[6]].index(500) + 8 + so to find the temperature that corresponds to the pressure level 500 mb use the index 8... + > bdwe[0][8][0] + -5.4 (this is the first event value) + bdwe[0][8][1] + -6.1000000000000005 (this is the second event value) + now to find out what the temperature event program code is for the first or second event use the TPC value i.e. 1 ... + > bdwe[1][8][0] + The program event code table is at https://www.emc.ncep.noaa.gov/mmb/data_processing/table_local_await-val.htm#0-12-247 + 8.0 (from the code table we know that this is the temperature event program code for Virtual Temp) + > bdwe[1][8][1] + 1.0 (from the code table we know that this is the temperature event program code for Initial Temp reading) + So the initial temp reading is -6.1 degrees C - bdwe[0][8][1] and the virtual temp is -5.4 degrees C - bdwe[0][8][0] + + For some of the templates the events variable will be set to false and for others it will be set to true. + For those set to true we will look for the initial (event program code value == 1) data values not the virtual ones. + For those set to false we will look for the first data value. + + """ + # _mnemonics = mnemonics[0] + # event_program_code_mnemonics = _mnemonics[1] + # q_marker_mnemonics = _mnemonics[2] + + # have to remember that the mnemonics are a 3-d array with the first dimension being the variable, + # 2nd the event_program_code mnemonics, and 3rd the q_marker_mnemonics + # The bufr was read with a concatenation of these three arrays so the bufr data index for the variable mnemonic + # is offset by 0, the bufr data for the event_program_code mnemonic is offset by the length of the variable mnemonic array, + # and the bufr data q_marker_mnemonic index is offset by the length of the variable and event_program_code mnemonics. + # Those lengths should all be the same i.e. mnemonics.shape[0]. Missing elements in the event_program_code and q_marker mnemonics + # are None. + + mnemonic_index = list(mnemonics[0]).index(mnemonic) + # if it isn't a masked array just return the data + if not ma.isMaskedArray(bufr_data[mnemonic_index]): + return bufr_data[mnemonic_index] + # if it is all masked return None + if np.ma.array(bufr_data[mnemonic_index]).mask.all(): + return None + # do we need to check for events + if ( + events is False + or program_code_q_marker_keep_values is None + or mnemonics[1][mnemonic_index] is None + ): + # don't consider events just return the data for the field + if len(bufr_data[mnemonic_index].shape) == 1: + # no events present + return [ + i if i is not ma.masked else np.nan + for i in bufr_data[mnemonic_index] + ] + if len(bufr_data[mnemonic_index].shape) > 1: + # there is an event dimension but we are ignoring it - just return the first event + return [i[0] for i in bufr_data[mnemonic_index]] + else: + if bufr_data[mnemonic_index].shape == (): + # this data is not multidimensional + return [bufr_data[mnemonic_index].item()] + else: + # Need to consider events and q_markers. + # Go through each level and find the value that corresponds to the event_value, + # then use the event program code mnemonic to find the index of the desired event program code value, + # then use that event index to find the corresponding value for the variable. These bufr + # events should have the variable value, and the q_marker in the same event index. + event_program_code_mnemonic_index = len(mnemonics[0]) + mnemonic_index + q_marker_mnemonic_index = len(mnemonics[0]) * 2 + mnemonic_index + # Make a copy of the bufr_data for the mnemonic - the program will modify the data + # in the copy to reflect the correct event value and qualify it with the q_marker value + # the copy wont have multiple events, just the data for the correct event mnemonic value + bufr_data_for_mnemonic = bufr_data[mnemonic_index].copy() + for level_index in range(0, bufr_data.shape[1]): + if bufr_data[mnemonic_index][level_index].shape == (): # scalar + return [bufr_data[mnemonic_index][level_index].item()] + if ( + len( + bufr_data[event_program_code_mnemonic_index][ + level_index + ].compressed() + ) + == 1 + ): + # ignore the events, there is only one event anyway, just return like there weren't events. + # This deserves explanation. The bufr data is a 3-d array with the first dimension being the variable (or q_marker) + # the second dimension being the level and the third dimension being the event. If there is only one event + # then the third dimension is irrelevant. + q_marker_code = ( + int(bufr_data[q_marker_mnemonic_index][level_index][0]) + if not ma.is_masked( + bufr_data[q_marker_mnemonic_index][level_index][0] + ) + and self.is_a_number( + bufr_data[q_marker_mnemonic_index][level_index][0] + ) + else None + ) + # use all the keep values for the program code + q_marker_keep_values = list( + itertools.chain.from_iterable( + program_code_q_marker_keep_values.values() + ) + ) + bufr_data_for_mnemonic[level_index] = ( + bufr_data[mnemonic_index][level_index] + if program_code_q_marker_keep_values is None + or q_marker_code in q_marker_keep_values + else np.nan + ) + continue + try: + # now we have multiple events so we have to consider them - so find the index of the expected event_value + # need to consider the event values and q_marker values + event_program_codes = [ + int(v) for v in list(program_code_q_marker_keep_values.keys()) + ] + _event_value_found = False + for e_index in range(0, bufr_data.shape[2]): + if ( + bufr_data[event_program_code_mnemonic_index][level_index][ + e_index + ] + is ma.masked + ): + # do not consider this masked event - just use the bufr_data for the mnemonic + bufr_data_for_mnemonic[level_index] = bufr_data[ + mnemonic_index + ][level_index] # is masked + continue + program_code = int( + bufr_data[event_program_code_mnemonic_index][level_index][ + e_index + ] + ) + if program_code in event_program_codes: + _event_value_found = True + q_marker_keep_values = program_code_q_marker_keep_values[ + str(program_code) + ] + break + # using the found event value index find the correct value for this field and level + # qualify the value by the corresponding q_marker value + # if the q_marker value is not in the program_code_q_marker_keep_values then set the field value to None i.e. disqualified + if _event_value_found is True: + if ( + bufr_data[mnemonic_index][level_index][e_index] + is not ma.masked + ): + q_marker = int( + bufr_data[q_marker_mnemonic_index][level_index][e_index] + ) + if ( + q_marker_keep_values is None + or q_marker in q_marker_keep_values + ): + # for the copy we only have one value for the mnemonic[level] so we can just set it + # with the correct event value (lose the event dimension) + bufr_data_for_mnemonic[level_index][0] = bufr_data[ + mnemonic_index + ][level_index][e_index] + else: + # the correct event value failed the q_marker test - gets a nan for that level + # This means the the interpolation will have to interpolate the value for this level + bufr_data_for_mnemonic[level_index][0] = np.nan + else: + # could not find the desired event value - return None + bufr_data_for_mnemonic[level_index][0] = np.nan + except IndexError as _ie: + logger.error( + f"PrepBufrBuilder.get_data_from_bufr_for_field: IndexError for mnemonic {mnemonic}", + ) + # bad data - return None + return None + # return the data for the mnemonic converted to a list + return [i[0] for i in bufr_data_for_mnemonic] + + def read_data_from_bufr(self, bufr, template): + """ + This method reads the data from the bufr file according to a provided template. + A template is a dict keyed by the desired field name with a value that is a + dict with a mnemonic and an intent. The mnemonic is the bufr mnemonic for the field + and the intent is the datatype of the field in the resulting data document. + For example station_id "SID" often returns a float but the intent is str. + :param bufr: the bufr file + :template: a dictionary of header keys with their corresponding mnemonics and intended types + refer to https://www.emc.ncep.noaa.gov/emc/pages/infrastructure/bufrlib/tables/bufrtab_tableb.html + example: see prepbufr_raob_template.json + + :return: a data object: each key is a field name and the value is the data array (not masked) for that field, + None values should be np.nan in the data array. + """ + # see read_subset https://github.com/NOAA-EMC/NCEPLIBS-bufr/blob/a8108e591c6cb1e21ddc7ddb6715df1b3801fff8/python/ncepbufr/__init__.py#L449 + variable_mnemonics = [] + event_program_code_mnemonics = [] + q_marker_mnemonics = [] + for o in template.values(): + if isinstance(o, dict): + variable_mnemonics.append(o["mnemonic"]) + event_program_code_mnemonics.append( + o.get("event_program_code_mnemonic", "") + ) + q_marker_mnemonics.append(o.get("q_marker_mnemonic", "")) + mnemonics = np.array( + (variable_mnemonics, event_program_code_mnemonics, q_marker_mnemonics), + dtype=str, + ) + mnemonics_str = " ".join( + variable_mnemonics + event_program_code_mnemonics + q_marker_mnemonics + ).strip() + events = template["events"] is True + # see https://github.com/NOAA-EMC/NCEPLIBS-bufr/blob/a8108e591c6cb1e21ddc7ddb6715df1b3801fff8/python/ncepbufr/__init__.py#L449 + # for reference on read_subset + # if `events=True`, `ufbevn` is used to read prepbufr "events", and a 3-d array is returned. + # The shape of the (events=False) array is `(nm,nlevs)`, where where `nm` is the number of elements in the specified + # mnemonics string, and `nlevs` is the number of levels in the report. + # If `events=True`, a 3rd dimension representing the prepbufr event codes is added giving a shape of `(nm,nlevs,events)`. The + # 'events' has the same length as the number of events in the report and has the values of the event program codes, provided + # that event program code mnemonics are provided in the mnemonic list. If there are no event + # program codes in the mnemonics list, the events dimension is masked, the values of the data mnemonic are present but you cannot determine which + # event program code applies to which event or which data value. + # The q_marker_mnemonics are available to use to ignore values that are not valid. + bufr_data = bufr.read_subset(mnemonics_str, events=events).squeeze() + data = {} + height = None + temperature = None + pressure = None + specific_humidity = None + relative_humidity = None + dewpoint = None + for mnemonic in variable_mnemonics: + try: + # uncomment this for debugging - makes a good place for a breakpoint + # if 'temperature' in template: + # print(f"station:{self.current_station} mnemonic:{mnemonic}\n") + field = self.get_field_for_mnemonic(template, mnemonic) + match field: + case "relative_humidity": + pressure = self.get_raw_pressure( + template, + mnemonics, + events, + bufr_data, + pressure, + ) + temperature = self.get_raw_temperature( + template, + mnemonics, + events, + bufr_data, + temperature, + ) + specific_humidity = self.get_raw_specific_humidity( + template, + mnemonics, + events, + bufr_data, + specific_humidity, + ) + dewpoint = self.get_raw_dewpoint( + template, + mnemonics, + events, + bufr_data, + dewpoint, + ) + relative_humidity = self.get_raw_relative_humidity( + data, temperature, pressure, specific_humidity, dewpoint + ) + data["relative_humidity"] = relative_humidity + case "height": + height = self.get_raw_height( + template, + mnemonics, + events, + bufr_data, + height, + ) + pressure = self.get_raw_pressure( + template, + mnemonics, + events, + bufr_data, + pressure, + ) + temperature = self.get_raw_temperature( + template, + mnemonics, + events, + bufr_data, + temperature, + ) + specific_humidity = self.get_raw_specific_humidity( + template, + mnemonics, + events, + bufr_data, + specific_humidity, + ) + # how many heights can be masked before this is a useless exercise? + if ( + len(pressure) < 2 + ): # cannot interpolate with less than 2 pressure levels - throw this away + return None + _interpolated_height = self.interpolate_heights_hypsometric( + height, + pressure, + temperature, + specific_humidity, + ) + data["height"] = _interpolated_height + case "temperature": + temperature = self.get_raw_temperature( + template, + mnemonics, + events, + bufr_data, + temperature, + ) + data["temperature"] = temperature + case "pressure": + pressure = self.get_raw_pressure( + template, + mnemonics, + events, + bufr_data, + pressure, + ) + data["pressure"] = pressure + case "dewpoint": + dewpoint = self.get_raw_dewpoint( + template, + mnemonics, + events, + bufr_data, + dewpoint, + ) + data["dewpoint"] = dewpoint + case "specific_humidity": + specific_humidity = self.get_raw_specific_humidity( + template, + mnemonics, + events, + bufr_data, + specific_humidity, + ) + data["specific_humidity"] = specific_humidity + case _: + data[field] = self.get_data_from_bufr_for_type_field( + template, + events, + bufr_data, + mnemonics, + mnemonic, + field, + ) + # capture the station_id for debugging + if field == "station_id": + self.current_station = data[field] + except Exception as _e: + logger.error( + "PrepBufrBuilder.read_data_from_bufr: Exception error: %s", str(_e) + ) + data[field] = None + return data + + def get_field_for_mnemonic(self, template, mnemonic): + for k, v in template.items(): + if isinstance(v, dict) and mnemonic == v["mnemonic"]: + return k + return k + + def get_raw_height( + self, + template, + mnemonics, + events, + bufr_data, + height, + ): + if height is None: + # need to get some specific fields to interpolate the height + height_mnemonic = template["height"]["mnemonic"] + height_program_code_q_marker_keep_values = template["height"].get( + "program_code_q_marker_keep", None + ) + + height = self.get_data_from_bufr_for_field( + events, + bufr_data, + mnemonics, + mnemonic=height_mnemonic, + program_code_q_marker_keep_values=height_program_code_q_marker_keep_values, + ) + return height + + def get_raw_relative_humidity( + self, data, temperature, pressure, specific_humidity, dewpoint + ): + _rh = self.get_relative_humidity( + pressure, + temperature, + specific_humidity, + ) + # data["rh_wobus"] = self.get_relative_humidity_wobus(temperature, dewpoint) + return _rh + + def get_raw_dewpoint( + self, + template, + mnemonics, + events, + bufr_data, + dewpoint, + ): + if dewpoint is None: + dewpoint_mnemonic = template["dewpoint"]["mnemonic"] + dewpoint_program_code_q_marker_keep_values = template["dewpoint"].get( + "program_code_q_marker_keep", None + ) + dewpoint = self.get_data_from_bufr_for_field( + events, + bufr_data, + mnemonics, + mnemonic=dewpoint_mnemonic, + program_code_q_marker_keep_values=dewpoint_program_code_q_marker_keep_values, + ) + return dewpoint + + def get_raw_specific_humidity( + self, + template, + mnemonics, + events, + bufr_data, + specific_humidity, + ): + if specific_humidity is None: + specific_humidity_mnemonic = template["specific_humidity"]["mnemonic"] + specific_humidity_program_code_q_marker_keep_values = template[ + "specific_humidity" + ].get("program_code_q_marker_keep", None) + specific_humidity = self.get_data_from_bufr_for_field( + events, + bufr_data, + mnemonics, + mnemonic=specific_humidity_mnemonic, + program_code_q_marker_keep_values=specific_humidity_program_code_q_marker_keep_values, + ) + return specific_humidity + + def get_raw_temperature( + self, + template, + mnemonics, + events, + bufr_data, + temperature, + ): + if temperature is None: + temperature_mnemonic = template["temperature"]["mnemonic"] + temperature_program_code_q_marker_keep_values = template["temperature"].get( + "program_code_q_marker_keep", None + ) + temperature = self.get_data_from_bufr_for_field( + events, + bufr_data, + mnemonics, + mnemonic=temperature_mnemonic, + program_code_q_marker_keep_values=temperature_program_code_q_marker_keep_values, + ) + return temperature + + def get_raw_pressure( + self, + template, + mnemonics, + events, + bufr_data, + pressure, + ): + if pressure is None: + pressure_mnemonic = template["pressure"]["mnemonic"] + pressure_program_code_q_marker_keep_values = template["pressure"].get( + "program_code_q_marker_keep", None + ) + pressure = self.get_data_from_bufr_for_field( + events, + bufr_data, + mnemonics, + mnemonic=pressure_mnemonic, + program_code_q_marker_keep_values=pressure_program_code_q_marker_keep_values, + ) + return pressure + + def get_data_from_bufr_for_type_field( + self, + template, + events, + bufr_data, + mnemonics, + mnemonic, + field, + ): + data = [] + try: + match template[field]["intent"]: + case "int": + try: + b_data = self.get_data_from_bufr_for_field( + events, + bufr_data, + mnemonics, + mnemonic=mnemonic, + program_code_q_marker_keep_values=template[field].get( + "program_code_q_marker_keep", None + ), + ) + if b_data is None: + return None + if not isinstance( + b_data, collections.abc.Sequence + ) and not isinstance(b_data, np.ndarray): + return int(b_data) + else: + return [int(i) if i is not None else None for i in b_data] + except Exception as _e: + logger.error( + "PrepBufrBuilder.get_data_from_bufr_for_type_field: Exception error: %s", + str(_e), + ) + return None + case "float": + try: + b_data = self.get_data_from_bufr_for_field( + events, + bufr_data, + mnemonics, + mnemonic=mnemonic, + program_code_q_marker_keep_values=template[field].get( + "program_code_q_marker_keep", None + ), + ) + mnemonic_index = list(mnemonics[0]).index(mnemonic) + if b_data is None: + return None + if not isinstance( + b_data, collections.abc.Sequence + ) and not isinstance(b_data, np.ndarray): + data = round(b_data, 3) + else: + data = [ + round(i, 3) + if i is not None and i is not ma.masked + else None + for i in b_data + ] + except Exception as _e: + logger.error( + "PrepBufrBuilder.get_data_from_bufr_for_type_field: Exception error: %s", + str(_e), + ) + data = None + case "str": + try: + data = str( + self.get_data_from_bufr_for_field( + events, + bufr_data, + mnemonics, + mnemonic=mnemonic, + program_code_q_marker_keep_values=template[field].get( + "program_code_q_marker_keep", None + ), + ), + encoding="utf-8", + ).strip() + except Exception as _e: + logger.error( + "PrepBufrBuilder.get_data_from_bufr_for_type_field: Exception error: %s", + str(_e), + ) + data = None + case _: + data = bufr_data[mnemonic_index] + except Exception as _e: + logger.error( + "PrepBufrBuilder.get_data_from_bufr_for_type_field: Exception error: %s", + str(_e), + ) + return None + return data + + def get_fcst_valid_epoch_from_msg(self, bufr): + """this method gets the forecast valid epoch from the message + + Args: + bufr (_type_): _description_ + + Returns: + int: epoch representing the date + """ + date_str = ( + bufr.msg_date + ) # date is a datetime object i.e. 2024041012 is 2024-04-10 12:00:00 + _dt = datetime.datetime.strptime(str(date_str), "%Y%m%d%H").replace( + tzinfo=datetime.timezone.utc + ) + _epoch = int(_dt.timestamp()) + return _epoch + + def read_data_from_file(self, queue_element, templates): + """read data from the prepbufr file, filter messages for appropriate ones, + and load them raw into a raw dictionary structure. Use hypsometric equation to + calculate heights from pressure for determining unknown heights. Load everything into + a dictionary structure, so that mandatory levels can be interpolated for every 10mb + using weighted logarithmic interpolation. + Args: + queue_element: the file name to read + Transformations: 1) pressure to height 2) temperature to dewpoint 3) knots to meters per second + creates a self raw document_map + NOTE: for report_type see https://www.emc.ncep.noaa.gov/emc/pages/infrastructure/bufrlib/tables/CodeFlag_0_STDv41_LOC7.html#055007 + 120 - MASS REPORT - Rawinsonde + 220 - WIND REPORT - Rawinsonde + """ + bufr = ncepbufr.open(queue_element) + raw_bufr_data = {} + # loop over messages, each new subset is a new station. Each subset has all the recorded levels for that station. + while bufr.advance() == 0: + if bufr.msg_type != templates["bufr_msg_type"]: + continue + # see load subset https://github.com/NOAA-EMC/NCEPLIBS-bufr/blob/a8108e591c6cb1e21ddc7ddb6715df1b3801fff8/python/ncepbufr/__init__.py#L389 + # we use the bufr.msg_date to get the forecast valid epoch for the entire message + self.fcst_valid_epoch = self.get_fcst_valid_epoch_from_msg(bufr) + while bufr.load_subset() == 0: # loop over subsets in message. + try: + subset_data = {} + # read the header data + header_data = self.read_data_from_bufr(bufr, templates["header"]) + # only save report types that are in the template + # if we already have data for this station - skip it + if header_data["report_type"] not in templates["bufr_report_types"]: + continue + subset_data["station_id"] = header_data["station_id"] + subset_data["report_type"] = round(header_data["report_type"]) + subset_data["fcst_valid_epoch"] = self.fcst_valid_epoch + subset_data["header"] = header_data + # read the obs_err data + obs_err_data = self.read_data_from_bufr(bufr, templates["obs_err"]) + subset_data["obs_err"] = obs_err_data + # read the obs data + logger.debug( + f"{subset_data['station_id']}, {subset_data['report_type']}" + ) + # use the template for the specific report type to read the obs data + # see https://www.emc.ncep.noaa.gov/emc/pages/infrastructure/bufrlib/tables/CodeFlag_0_STDv42_LOC7.html#007246 + obs_data = self.read_data_from_bufr( + bufr, templates["obs_data_" + str(header_data["report_type"])] + ) + subset_data["obs_data"] = obs_data + + raw_bufr_data[subset_data["station_id"]] = raw_bufr_data.get( + subset_data["station_id"], {} + ) + raw_bufr_data[subset_data["station_id"]][ + subset_data["report_type"] + ] = raw_bufr_data[subset_data["station_id"]].get( + subset_data["report_type"], {} + ) + station_id = subset_data["station_id"] + report_type = subset_data["report_type"] + # if there is no data for this station and report type - save the subset data + if raw_bufr_data[station_id][report_type] == {}: + raw_bufr_data[station_id][report_type] = subset_data + else: + # It is possible to have multiple reports for the same station and report type + # We have made a policy decision to always take the largest report i.e. the one with most pressure fields + if len(subset_data["obs_data"]["pressure"]) > len( + raw_bufr_data[station_id][report_type]["obs_data"][ + "pressure" + ] + ): + # replace with the larger new subset + raw_bufr_data[station_id][report_type] = subset_data + except Exception as _e: + logger.error( + "PrepBufrBuilder.read_data_from_file: Exception error: %s", + str(_e), + ) + bufr.close() + return raw_bufr_data + + def build_datafile_doc(self, file_name, data_file_id, origin_type): + """ + This method will build a dataFile document for prepbufr builder. The dataFile + document will represent the file that is ingested by the prepbufr builder. The document + is intended to be added to the output folder and imported with the other documents. + The VxIngest will examine the existing dataFile documents to determine if a specific file + has already been ingested. + """ + mtime = Path(file_name).stat().st_mtime + df_doc = { + "id": data_file_id, + "mtime": mtime, + "subset": self.subset, + "type": "DF", + "fileType": "prepbufr", + "originType": origin_type, + "loadJobId": self.load_spec["load_job_doc"]["id"], + "dataSourceId": "NCEP", + "url": file_name, + "projection": "lambert_conformal_conic", + "interpolation": "nearest 4 weighted average", + } + return df_doc + + def initialize_document_map(self): + """ + reset the document_map for a new file + """ + self.document_map = {} + + def get_document_map(self): + """ + In case there are leftovers we have to process them first. + :return: the document_map + """ + try: + if len(self.same_time_rows) != 0: + self.handle_document() + return self.document_map + except Exception as _e: + logger.exception( + "%s get_document_map: Exception in get_document_map: %s", + self.__class__.__name__, + str(_e), + ) + return None + + # named functions + def meterspersecond_to_milesperhour(self, params_dict): + """Converts meters per second to mile per hour performing any translations that are necessary + Args: + params_dict (dict): named function parameters + Returns: + [type]: [description] + """ + # Meters/second to miles/hour + try: + value = next(iter(params_dict.items()))[1] + # value might have been masked (there is probably a better way to deal with this) + if not self.is_a_number(value): + return None + else: + value = (float(value) - 273.15) * 1.8 + 32 + return value + except Exception as _e: + logger.error( + "%s handle_data: Exception in named function meterspersecond_to_milesperhour: error: %s", + self.__class__.__name__, + str(_e), + ) + return None + + return None + + def knots_to_meters_per_second(self, params_dict): + """Converts knots to meters per second performing any translations that are necessary + Args: + params_dict (dict): named function parameters + Returns: + float: value converted from knots to meters per second + """ + try: + value = next(iter(params_dict.items()))[1] + # value might have been masked (there is probably a better way to deal with this) + if not self.is_a_number(value): + return None + else: + value = round(float(value) * 0.5144444444, 4) + return value + except Exception as _e: + logger.error( + "%s handle_data: Exception in named function knots_to_meters_per_second: error: %s", + self.__class__.__name__, + str(_e), + ) + return None + + def celsius_to_fahrenheit(self, params_dict): + """Converts celsius to fahrenheit performing any translations that are necessary + Args: + params_dict (dict): named function parameters + Returns: + [type]: [description] + """ + + try: + value = next(iter(params_dict.items()))[1] + # value might have been masked (there is probably a better way to deal with this) + if not self.is_a_number(value): + return None + else: + value = float(value) * 1.8 + 32 + return value + except Exception as _e: + logger.error( + "%s handle_data: Exception in named function celsius_to_fahrenheit: error: %s", + self.__class__.__name__, + str(_e), + ) + return None + + def mg_per_kg_to_g_per_kg(self, params_dict): + """Converts mg per kg to g per kg performing any translations that are necessary + Args: + params_dict (dict): named function parameters + Returns: + [type]: [description] + """ + try: + value = next(iter(params_dict.items()))[1] + # value might have been masked (there is probably a better way to deal with this) + if not self.is_a_number(value): + return None + else: + value = float(value) / 1000 + return value + except Exception as _e: + logger.error( + "%s handle_data: Exception in named function mg_per_kg_to_g_per_kg: error: %s", + self.__class__.__name__, + str(_e), + ) + return None + + def kelvin_to_fahrenheit(self, params_dict): + """Converts kelvin to fahrenheit performing any translations that are necessary + Args: + params_dict (dict): named function parameters + Returns: + [type]: [description] + """ + try: + value = next(iter(params_dict.items()))[1] + # value might have been masked (there is probably a better way to deal with this) + if not self.is_a_number(value): + return None + else: + value = (float(value) - 273.15) * 1.8 + 32 + return value + except Exception as _e: + logger.error( + "%s handle_data: Exception in named function kelvin_to_fahrenheit: error: %s", + self.__class__.__name__, + str(_e), + ) + return None + + def get_station_reference(self): + """ + This method returns the station reference metadata from the station Reference document + :return: the station reference metadata + """ + if not self.station_reference: + self.station_reference = ( + self.load_spec["collection"] + .get("MD:V01:RAOB:stationReference") + .content_as[dict] + ) + return self.station_reference + + def handle_station(self, params_dict): + """ + This method uses the station name in the params_dict + to find a station with that name from self.stations (which are all the station documents + from couchbase). + If the station does not exist it will be created with data from the + prepbufr file. If the station exists the lat, lon, and elev from the prepbufr file + will be compared to that in the existing station and if an update of the geo list is required it will be updated. + Any modified or newly created stations get added to the document_map and automatically upsert'ed. + :param params_dict: {'bufr_subset': 'bufr_subset_loaded`} + :return: + """ + try: + station_id = params_dict["stationName"] + level = params_dict["level"] + if ( + 120 not in self.raw_obs_data[station_id] + or 220 not in self.raw_obs_data[station_id] + ): + # we don't need to process the station for lack of data + raise ValueError("bad wmoid in handle_station - no data") + fcst_valid_epoch = self.raw_obs_data[station_id][120]["fcst_valid_epoch"] + header = self.raw_obs_data[station_id][120]["header"] + highest_interpolated_level = max( + list(self.interpolated_data[station_id][120]["data"]["pressure"].keys()) + ) + an_id = None + if level != highest_interpolated_level: + # we don't need to process the station except at the highest interpolated level + return station_id + # process the station to see if the geo is correct etc. + elev = header["elevation"] + lat = header["lat"] + lon = header["lon"] + if lon > 180: + lon = round((360 - lon), 4) * -1 + header["lon"] = lon + station = None + station_index = None + for idx, a_station in enumerate(self.stations): + if str(a_station["wmoid"]) == station_id: + station = a_station + station_index = idx + break + if station is None: + # station does not exist in reference but does exist in the prepbufr file + # Throw this data away. We don't have enough information to create a station + raise ValueError("bad wmoid in handle_station") + # station does exist but is there a matching geo for the lowest height lat/lon ? + # If this is a new location then we need to add a new geo to the station + # but only if this is a new location close to the ground + # if there is not a matching geo create a new geo + # if there is a matching geo then update the matching geo time range + for geo_index in range(len(self.stations[station_index]["geo"])): + geo = self.stations[station_index]["geo"][geo_index] + # is the level close to the station elevation? The lat? The lon? + # if not then don't use this data (the balloon probably isn't close to the station) + # 1° = 111 km so 0.01 degrees is about 1.1 kilometers ~ 1 km. + # assume ~ 2km (0.02 degrees) distance is close to the station if the altitude is under 100 meters + # this is all totally arbitrary, but math.dist can give us the approximate distance between two points. + + if ( + math.dist([lat, lon], [geo["lat"], geo["lon"]]) < 0.02 + and abs(geo["elev"] - elev) <= 100 + ): + # update the matching geo time range for this station + # with the fcst_valid_epoch. + # make firstTime the earliest and lastTime the latest + if ( + fcst_valid_epoch + <= self.stations[station_index]["geo"][geo_index]["firstTime"] + ): + self.stations[station_index]["geo"][geo_index]["firstTime"] = ( + fcst_valid_epoch + ) + else: + self.stations[station_index]["geo"][geo_index]["lastTime"] = ( + fcst_valid_epoch + ) + else: + # This station might require a new geo because there are no matching locations i.e. the location has changed + # unless the level is not close to the highest pressure level for an accurate location match - close to the ground. + # The highest level is actually the highest pressure, the closest to the ground, + # apparently sometimes the pressure data is not an array! + + if self.print_debug_station_report: + self.write_dbg_station_rpt( + params_dict, + station_id, + header, + elev, + lat, + lon, + station, + highest_interpolated_level, + ) + if False: # we cannot be changing the stations `geo` list until we + # have a better understanding of the location differences in the prepbufr data + self.stations[station_index]["geo"].append( + { + "firstTime": fcst_valid_epoch, + "elev": elev, + "lat": lat, + "lon": lon, + "lastTime": fcst_valid_epoch, + } + ) + # add the modified station to the document map with its existing id + # the station will be upserted. It might have only had times changed + # but it might have had a new geo added. + self.stations[station_index]["updateTime"] = fcst_valid_epoch + an_id = self.stations[station_index]["id"] + self.document_map[an_id] = self.stations[station_index] + return station_id + except ValueError as _e: + logger.info( + "%s PrepbufrRaobsObsBuilderV01.handle_station: Exception bad wmoid in handle_station: params: %s", + self.__class__.__name__, + str(params_dict), + ) + raise _e + except Exception as _e: + logger.error( + "%s PrepbufrRaobsObsBuilderV01.handle_station: Exception finding or creating station to match station_name: params: %s", + self.__class__.__name__, + str(params_dict), + _e, + ) + raise _e + + def write_dbg_station_rpt( + self, + params_dict, + station_id, + header, + elev, + lat, + lon, + station, + highest_interpolated_level, + ): + """ + Used for debugging stations. + This method writes a debug report to a file. You can turn this on by setting self.print_debug_report to True. + :param params_dict: the params_dict + :param station_id: the station_id + :param header: the header + :param elev: the elevation + :param lat: the latitude + :param lon: the longitude + :param station: the station + :param highest_interpolated_level: the highest interpolated level + :return: None + The output is a file in {self.station+report_file_name} that will be overwritten each time this is used. + The output is a series of lines that show the differences between the station and the raob data, with + the particular columns separated by a space. + You can grep and sort the output to get more specific views of the data. + for example: + grep header /tmp/station_report.txt | sort -n -k 15 (sort numerically on the 15th space separated column) + ... will show the header data sorted by the distance of the station to the raob data. + NOTE: to get data directly from the prepbufr file for comparison you can use the following: + cd ...VxIngest + . .venv/bin/activate + python /Users/randy.pierce/VxIngest/third_party/NCEPLIBS-bufr/tests/dump_by_mnemonic.py /opt/data/prepbufr_to_cb/input_files/241011200.gdas.t12z.prepbufr.nr ADPUPA > /tmp/adpupa-verbose.txt + + """ + try: + if self.report_file is None: + with pathlib.Path(self.station_report_file_name).open( + "a" + ) as report_file: + self.report_file = report_file + self.report_file.write("------\n") + self.report_file.write( + f"""geo:{station["geo"]} wmoid:{station["wmoid"]} currentYear:{station["currentYear"]} raob-lat:{lat} raob-lon:{lon} raob-elev:{elev}\n""" + ) + self.report_file.write( + f"""header: station_id:{header["station_id"]} h-lat:{header["lat"]} h-lon:{header["lon"]} h-elev:{header["elevation"]} station-lat:{station["geo"][-1]["lat"]} station-lon:{station["geo"][-1]["lon"]} station-elev:{station["geo"][-1]["elev"]}""" + + f""" highest_interpolated_level:{highest_interpolated_level} level-diff:{round(abs(params_dict["level"] - highest_interpolated_level), 4)}""" + + f""" lat-diff:{round(abs(lat - station["geo"][0]["lat"]), 4)} lon-diff:{round(abs(lon - station["geo"][0]["lon"]), 4)} elev-diff:{round(abs(elev - station["geo"][0]["elev"]), 4)}""" + + f""" distance_km {round(math.dist([lat, lon], [station["geo"][0]["lat"], station["geo"][0]["lon"]]) * 111, 4)}\n""" + ) + self.report_file.write("observation pressures:") + op_str = [] + op_str = [] + for n in self.raw_obs_data[station_id][120]["obs_data"][ + "pressure" + ].compressed(): + op_str.append(f"{str(n)} ") + self.report_file.write(f""" {op_str} \n""") + + self.report_file.write("interpolated pressures:") + op_str = [] + for n in self.interpolated_data[station_id][120]["data"]["pressure"]: + op_str.append(f"{str(n)} ") + self.report_file.write(f""" {op_str} \n""") + except Exception as _e: + logger.error( + "%s PrepbufrRaobsObsBuilderV01.print_dbg_rpt: Exception error: %s", + self.__class__.__name__, + str(_e), + ) + + def get_valid_time_iso(self, params_dict=None): + """ + This routine returns the valid time epoch converted to an iso string + """ + # convert the file name to an epoch using the mask + try: + epoch = self.fcst_valid_epoch + iso = convert_to_iso(epoch) + return iso + except Exception as _e: + logger.error( + "%s : Exception in named function derive_valid_time_iso: error: %s", + self.__class__.__name__, + str(_e), + ) + return None + + def get_valid_time_epoch(self, params_dict=None): + """ + This routine returns the valid time epoch + """ + # convert the file name to an epoch using the mask + try: + epoch = self.fcst_valid_epoch + return int(epoch) + except Exception as _e: + logger.error( + "%s : Exception in named function derive_valid_time_epoch: error: %s", + self.__class__.__name__, + str(_e), + ) + return None diff --git a/src/vxingest/prepbufr_to_cb/run_ingest_threads.py b/src/vxingest/prepbufr_to_cb/run_ingest_threads.py new file mode 100644 index 00000000..b84b2a98 --- /dev/null +++ b/src/vxingest/prepbufr_to_cb/run_ingest_threads.py @@ -0,0 +1,316 @@ +""" +Program Name: main script for VXingest +Contact(s): Randy Pierce +Abstract: + +History Log: Initial version + +Usage: +run_ingest_threads -j job_document_id -c credentials_file [-o output_dir -t thread_count -f file_pattern -n number_stations] +This script processes arguments which specify a job document id, +a defaults file (for credentials), an optional output directory, thread count, and file matching pattern. +The job document id is the id of a job document in the couchbase database. +The job document might look like this... +{ + "id": "JOB:V01:RAOB:PREPBUFR:OBS", + "status": "active", + "type": "JOB", + "version": "V01", + "subset": "RAOB", + "subDocType": "PREPBUFR", + "subDoc": "OBS", + "run_priority": 1, + "file_mask": "%Y%m%d_%H%M", + "schedule": "0 * * * *", + "offset_minutes": 0, + "ingest_document_ids": [ + "MD:V01:RAOB:obs:ingest:PREPBUFR" + ] +} +The important run time fields are "file_mask" and "ingest_document_ids". +The file mask is a python time.strftime that specifies how the code will +decipher a file name for time. These file names are derived from the file +modification time, according to a specific mask. +The ingest_document_ids specify a list of ingest_document ids that a job +must process. +The script maintains a thread pool of VxIngestManagers and a queue of +filenames that are derived from the path and the optional file_pattern parameter. +If a file_pattern is provided - as a parameter - then globbing will be used to +determine which which filenames in the input_path are included for ingesting. +The default file_pattern is "*", which will include all files. +The number of threads in the thread pool is set to the -t n (or --threads n) +argument, where n is the number of threads to start. The default is one thread. +Each thread will run a VxIngestManager which will pull filenames, one at a time, +from the filename queue and fully process that input file. +When the queue is empty each NetcdfIngestManager will gracefully die. +Only files that do not have a DataFile entry in the database will be added to the file queue. +When a file is processed a datafile entry will be made for that file and added to the result documents to ne imported. + +The file_mask is a python time.strftime format e.g. '%y%j%H%M.gdas.t%Hz.prepbufr.nr' +would match '241001800.gdas.t18z.prepbufr.nr' which is a prepbufr file for 2024 April 10 at 18:00 UTC. +The file_pattern is a file glob string. e.g. '2410*.gdas.t*z.prepbufr.nr'. +The optional output_dir specifies the directory where output files will be written instead +of writing them directly to couchbase. If the output_dir is not specified data will be written +to couchbase cluster specified in the cb_connection. +Files in the path will be enqueued if there is no corresponding dataFile entry in the database. + +This is an example credentials file. The keys should match +the keys in the connection clauses of the load_spec. +defaults: + cb_host: my_cb_host.some_subdomain.some_domain + cb_user: some_cb_user_name + cb_password: password_for_some_cb_user_name + +Copyright 2019 UCAR/NCAR/RAL, CSU/CIRES, Regents of the University of +Colorado, NOAA/OAR/ESRL/GSL +""" + +import argparse +import logging +import os +import sys +import time +from datetime import datetime, timedelta +from multiprocessing import JoinableQueue, Queue, set_start_method +from pathlib import Path +from typing import Callable + +from vxingest.builder_common.vx_ingest import CommonVxIngest +from vxingest.log_config import configure_logging, worker_log_configurer +from vxingest.prepbufr_to_cb.vx_ingest_manager import VxIngestManager + +# Get a logger with this module's name to help with debugging +logger = logging.getLogger(__name__) + + +def parse_args(args): + """ + Parse command line arguments + """ + parser = argparse.ArgumentParser() + parser.add_argument( + "-j", + "--job_id", + type=str, + help="Please provide required Job document id", + ) + parser.add_argument( + "-c", + "--credentials_file", + type=str, + help="Please provide required credentials_file", + ) + parser.add_argument( + "-t", "--threads", type=int, default=1, help="Number of threads to use" + ) + parser.add_argument( + "-f", + "--file_pattern", + type=str, + default="*", + help="Specify the file name pattern for the input files ()", + ) + parser.add_argument( + "-o", + "--output_dir", + type=str, + default="/tmp", + help="Specify the output directory to put the json output files", + ) + # Set to produce a report for the following stations + # write_data_for_station_list = stations + parser.add_argument( + "-s", + "--stations_list", + type=list, + default=[], + help="Specify the list of stations to produce a report for", + ) + # Set to produce a report for the following levels + # write_data_for_levels = [200, 300, 500, 700, 900] + parser.add_argument( + "-l", + "--levels_list", + type=list, + default=[], + help="Specify the list of levels to produce a report for", + ) + + # get the command line arguments + args = parser.parse_args(args) + return args + + +class VXIngest(CommonVxIngest): + """ + This class is the commandline mechanism for using the builder. + This class will maintain the couchbase collection and cluster objects for all + the ingest managers that this thread will use. There will be VxIngestManagers started + to match the threadcount that is passed in. The default number of threads is one. + Args: + object ([dict]): [parsed cmdline arguments] + Raises: + _e: [general exception] + """ + + def __init__(self): + self.load_time_start = time.perf_counter() + self.credentials_file = "" + self.thread_count = "" + self.path = None + self.fmask = None + self.file_pattern = "*" + self.output_dir = None + self.job_document_id = None + self.load_job_id = None + self.load_spec = {} + self.cb_credentials = None + self.collection = None + self.cluster = None + self.ingest_document_id = None + self.ingest_document = None + self.write_data_for_station_list = None + self.write_data_for_levels = None + + super().__init__() + + def runit(self, args, log_queue: Queue, log_configurer: Callable[[Queue], None]): + """ + This is the entry point for run_ingest_threads.py + """ + begin_time = str(datetime.now()) + logger.info("--- *** --- Start --- *** ---") + logger.info("Begin a_time: %s", begin_time) + + self.credentials_file = args["credentials_file"].strip() + self.thread_count = args["threads"] + self.output_dir = args["output_dir"].strip() + self.job_document_id = args["job_id"].strip() + if "file_pattern" in args: + self.file_pattern = args["file_pattern"].strip() + if "stations_list" in args: + self.write_data_for_station_list = args["stations_list"] + if "levels_list" in args: + self.write_data_for_levels = args["levels_list"] + try: + # put the real credentials into the load_spec + logger.info("getting cb_credentials") + self.cb_credentials = self.get_credentials(self.load_spec) + # override the collection because these are RAOB documents with subset 'RAOB' + self.load_spec["cb_credentials"]["collection"] = "RAOB" + self.cb_credentials["collection"] = "RAOB" + # establish connections to cb, collection + self.connect_cb() + logger.info("connected to cb") + bucket = self.load_spec["cb_connection"]["bucket"] + scope = self.load_spec["cb_connection"]["scope"] + # get the collection from the cb_connection + collection = self.load_spec["cb_connection"]["collection"] + # load the ingest document ids into the load_spec (this might be redundant) + ingest_document_result = self.collection.get(self.job_document_id) + ingest_document = ingest_document_result.content_as[dict] + self.load_spec["ingest_document_ids"] = ingest_document[ + "ingest_document_ids" + ] + # put all the ingest documents into the load_spec too + self.load_spec["ingest_documents"] = {} + for _id in self.load_spec["ingest_document_ids"]: + self.load_spec["ingest_documents"][_id] = self.collection.get( + _id + ).content_as[dict] + # load the fmask and input_data_path into the load_spec + self.fmask = ingest_document["file_mask"] + self.path = ingest_document["input_data_path"] + self.load_spec["fmask"] = self.fmask + self.load_spec["input_data_path"] = self.path + # stash the load_job in the load_spec + self.load_spec["load_job_doc"] = self.build_load_job_doc("madis") + except (RuntimeError, TypeError, NameError, KeyError): + logger.error( + "*** Error occurred in Main reading load_spec: %s ***", + str(sys.exc_info()), + ) + sys.exit("*** Error reading load_spec:") + + # load the my_queue with filenames that match the mask and have not already been ingested + # (do not have associated datafile documents) + # Constructor for an infinite size FIFO my_queue + _q = JoinableQueue() + file_names = [] + # get the urls (full_file_names) from all the datafiles for this type of ingest + # for prepbufr type ingests there is only one ingest document so we can just use the first + # subset + subset = self.load_spec["ingest_documents"][ + self.load_spec["ingest_document_ids"][0] + ]["subset"] + file_query = f""" + SELECT url, mtime + FROM `{bucket}`.{scope}.{collection} + WHERE + subset='{subset}' + AND type='DF' + AND fileType='prepbufr' + AND originType='madis' order by url; + """ + # file_pattern is a glob string not a python file match string + file_names = self.get_file_list( + file_query, self.path, self.file_pattern, self.fmask + ) + for _f in file_names: + _q.put(_f) + + # instantiate ingest_manager pool - each ingest_manager is a process + # thread that uses builders to process one file at a time from the queue + # Make the Pool of ingest_managers + ingest_manager_list = [] + for thread_count in range(int(self.thread_count)): + try: + ingest_manager_thread = VxIngestManager( + "VxIngestManager-" + str(thread_count), + self.load_spec, + _q, + self.output_dir, + log_queue, # Queue to pass logging messages back to the main process on + log_configurer, # Config function to set up the logger in the multiprocess Process + write_data_for_station_list=self.write_data_for_station_list, + write_data_for_levels=self.write_data_for_levels, + ) + ingest_manager_list.append(ingest_manager_thread) + ingest_manager_thread.start() + except Exception as _e: + logger.error("*** Error in VXIngest %s***", str(_e)) + # be sure to join all the threads to wait on them + finished = [proc.join() for proc in ingest_manager_list] + self.write_load_job_to_files() + logger.info("finished starting threads") + load_time_end = time.perf_counter() + load_time = timedelta(seconds=load_time_end - self.load_time_start) + logger.info(" finished %s", str(finished)) + logger.info(" >>> Total load a_time: %s", str(load_time)) + logger.info("End a_time: %s", str(datetime.now())) + logger.info("--- *** --- End --- *** ---") + + def main(self): + """ + This is the entry for run_ingest_threads + """ + # Force new processes to start with a clean environment + # "fork" is the default on Linux and can be unsafe + set_start_method("spawn") + + # Setup logging for the main process so we can use the "logger" + log_queue = Queue() + runtime = datetime.now() + log_queue_listener = configure_logging( + log_queue, Path(f"all_logs-{runtime.strftime('%Y-%m-%dT%H:%M:%S%z')}.log") + ) + logger.info("PYTHONPATH: %s", os.environ["PYTHONPATH"]) + args = parse_args(sys.argv[1:]) + self.runit(vars(args), log_queue, worker_log_configurer) + logger.info("*** FINISHED ***") + log_queue_listener.stop() + sys.exit(0) + + +if __name__ == "__main__": + VXIngest().main() diff --git a/src/vxingest/prepbufr_to_cb/vx_ingest_manager.py b/src/vxingest/prepbufr_to_cb/vx_ingest_manager.py new file mode 100644 index 00000000..63eded95 --- /dev/null +++ b/src/vxingest/prepbufr_to_cb/vx_ingest_manager.py @@ -0,0 +1,396 @@ +""" +Program Name: Class IngestManager +Contact(s): Randy Pierce +Abstract: + +History Log: Initial version + +Usage: The IngestManager extends Process - python multiprocess thread - +and runs as a Process and pulls from a queue of file names. It uses the collection and the cluster +objects that are passed from the run_ingest_threads (VXIngest class). +It finishes when the file_name_queue is empty. + +It gets file names serially from a queue that is shared by a +thread pool of data_type_manager's and processes them one at a a_time. It gets +the concrete builder type from the metadata document and uses a +concrete builder to process the file. + +The builders are instantiated once and kept in a map of objects for the +duration of the programs life. For IngestManager it is likely that +each file will require only one builder type to be instantiated. +When IngestManager finishes a document specification it writes the document to the output directory, +if an output directory was specified. + + Attributes: + name -a threadName for logging and debugging purposes. + credentials, first and last epoch, + file_name_queue a shared queue of filenames. + output_dir where the output documents will be written + collection couchbase collection object for data service access + cluster couchbase cluster object for query service access + number_stations=sys.maxsize (you can limit how many stations will be processed - for debugging) + +Copyright 2019 UCAR/NCAR/RAL, CSU/CIRES, Regents of the University of +Colorado, NOAA/OAR/ESRL/GSD +""" + +import contextlib +import json +import logging +import pathlib +import re +import sys +import time +from pathlib import Path + +import mysql.connector +from tabulate import tabulate + +from vxingest.builder_common.ingest_manager import CommonVxIngestManager +from vxingest.prepbufr_to_cb import prepbufr_builder as my_builder + +# Get a logger with this module's name to help with debugging +logger = logging.getLogger(__name__) + + +class VxIngestManager(CommonVxIngestManager): + """ + IngestManager is a Process Thread that manages an object pool of + builders to ingest data from GSD grib2 files or netcdf files into documents that can be + inserted into couchbase or written to json files in the specified output directory. + + This class will process data by retrieving an ingest_document specified + by an ingest_document_id and instantiating a builder class of the type specified in the + ingest_document. + The ingest document specifies the builder class, and a template that defines + how to place the variable values into a couchbase document and how to + construct the couchbase data document id. + + It will then read file_names, one by one, + from the file_name_queue. The builders use the template to create documents for + each filename and put them into the document map. + + When all of the result set entries for a file are processed, the IngestManager upsert + the document(s) to couchbase, or writes to an output directory and retrieves a new filename from + the queue and starts over. + + Each builder is kept in an object pool so that they do not need to be re instantiated. + When the queue has been emptied the IngestManager closes its connections + and dies. + """ + + def __init__( + self, + name, + load_spec, + element_queue, + output_dir, + logging_queue, + logging_configurer, + write_data_for_station_list=None, # used for debugging + write_data_for_levels=None, # used for debugging + ): + """constructor for VxIngestManager + Args: + name (string): the thread name for this IngestManager + load_spec (Object): contains Couchbase credentials + element_queue (Queue): reference to the element Queue + output_dir (string): output directory path + """ + # The Constructor for the RunCB class. + self.thread_name = name + self.load_spec = load_spec + self.cb_credentials = self.load_spec["cb_connection"] + self.ingest_document_ids = self.load_spec["ingest_document_ids"] + # use the first one, there aren't multiples anyway + self.ingest_document = self.load_spec["ingest_documents"][ + self.ingest_document_ids[0] + ] + self.ingest_type_builder_name = None + self.queue = element_queue + self.builder_map = {} + self.cluster = None + self.collection = None + self.output_dir = output_dir + self.write_data_for_debug_station_list = write_data_for_station_list + self.write_data_for_debug_levels = write_data_for_levels + + super().__init__( + self.thread_name, + self.load_spec, + self.queue, + self.output_dir, + logging_queue, + logging_configurer, + ) + + if self.write_data_for_debug_station_list: + self.debug_station_file = None + self.debug_station_file_name = ( + f"/tmp/debug_data_for_stations_{str(int(time.time()))}.txt" + ) + with contextlib.suppress(OSError): + Path(self.debug_station_file_name).unlink() + print( + f"debug data for stations {str(self.write_data_for_debug_station_list)} is in {self.debug_station_file_name}" + ) + + def get_my_result_final(self, my_sql, i0, i1): + """get the result from the object, returning None if it isn't there""" + try: + return str(my_sql[i0][i1]) + except Exception as _ignore: + return None + + def write_data_for_debug(self, builder, document_map): + """ + write the raw data and interpolated for a specific set of stations for debugging purposes + """ + try: + pb_interpolated_120 = {} + pb_interpolated_220 = {} + if self.debug_station_file is None: + with pathlib.Path(self.debug_station_file_name).open( + "a" + ) as self.debug_station_file: + self.debug_station_file.write("------\n") + + for station in self.write_data_for_debug_station_list: + try: + self.debug_station_file.write( + f""" station: {station}\n\n""" + ) + + pb_interpolated_120 = builder.interpolated_data[station][ + 120 + ]["data"] + pb_interpolated_220 = builder.interpolated_data[station][ + 220 + ]["data"] + + for level in self.write_data_for_debug_levels: + # MASS report type 120 raw_obs_data + self.debug_station_file.write( + f"MASS report type 120 raw_obs_data for station:{station} and level:{level}\n" + ) + # interpolated data + # MASS report type 120 interpolated data + self.debug_station_file.write( + f"\nMASS report type 120 interpolated data station:{station} level:{level}\n" + ) + if level in pb_interpolated_120["pressure"]: + for variable in sorted( + list(pb_interpolated_120.keys()) + ): + self.debug_station_file.write( + f"level:{level} {variable}: {pb_interpolated_120[variable].get(level, None) if pb_interpolated_120[variable] is not None else None}\n" + ) + + # interpolated data + # WIND report type 220 interpolated data + self.debug_station_file.write( + f"\nWIND report type 220 interpolated data station:{station} level:{level}\n" + ) + if level in pb_interpolated_220["pressure"]: + for variable in sorted( + list(pb_interpolated_220.keys()) + ): + self.debug_station_file.write( + f"level:{level} {variable}: {builder.interpolated_data[station][220]['data'][variable].get(level, None)}\n" + ) + + # write station data + self.debug_station_file.write( + f"\ndocument_map data for station:{station} level:{level}\n" + ) + r = re.compile(f"DD:V01:RAOB:obs:prepbufr:{level}:.*") + key = list(filter(r.match, document_map.keys()))[0] + pb_final = document_map[key]["data"][station] + self.debug_station_file.write("\n") + self.debug_station_file.write( + json.dumps( + pb_final, + indent=2, + ) + ) + date = document_map[key]["fcstValidISO"].split("T")[0] + stmnt_mysql = f'select wmoid,press,z,t,dp,rh,wd,ws from ruc_ua_pb.RAOB where date = "{date}" and press = {level} and wmoid = "{station}";' + _mysql_db = mysql.connector.connect( + host=self.load_spec["_mysql_host"], + user=self.load_spec["_mysql_user"], + password=self.load_spec["_mysql_pwd"], + ) + my_cursor = _mysql_db.cursor() + my_cursor.execute(stmnt_mysql) + my_result_final = my_cursor.fetchall() + + table = [ + [ + "source", + "press", + "temperature", + "dewpoint", + "relative_humidity", + "rh_wobus", + "specific_humidity", + "height", + "wind speed", + "wind direction,", + "U-Wind", + "V-Wind", + ], + [ + "pb_interpolated", + pb_interpolated_120["pressure"].get( + level, None + ), + pb_interpolated_120["temperature"].get( + level, None + ), + pb_interpolated_120["dewpoint"].get( + level, None + ), + pb_interpolated_120["relative_humidity"].get( + level, None + ), + pb_interpolated_120["rh_wobus"].get( + level, None + ), + pb_interpolated_120["specific_humidity"].get( + level, None + ), + pb_interpolated_120["height"].get(level, None), + pb_interpolated_220["wind_speed"].get( + level, None + ), + pb_interpolated_220["wind_direction"].get( + level, None + ), + pb_interpolated_220["U-Wind"].get(level, None), + pb_interpolated_220["V-Wind"].get(level, None), + ], + [ + "pb_final", + pb_final["pressure"], + pb_final["temperature"], + pb_final["dewpoint"], + pb_final["relative_humidity"], + "--", + pb_final["specific_humidity"], + pb_final["height"], + pb_final["wind_speed"], + pb_final["wind_direction"], + pb_final["U-Wind"], + pb_final["V-Wind"], + ], + [ + # wmoid,press,z,t,dp,rh,wd,ws + "mysql_final", + self.get_my_result_final(my_result_final, 0, 1), + self.get_my_result_final(my_result_final, 0, 3), + self.get_my_result_final(my_result_final, 0, 4), + self.get_my_result_final(my_result_final, 0, 5), + "--", + "--", + self.get_my_result_final(my_result_final, 0, 2), + self.get_my_result_final(my_result_final, 0, 7), + self.get_my_result_final(my_result_final, 0, 6), + "--", + "--", + ], + ] + + self.debug_station_file.write("\nCOMPARE THE DATA\n") + self.debug_station_file.write( + tabulate( + table, headers="firstrow", tablefmt="fancy_grid" + ) + ) + self.debug_station_file.write("\n------\n") + self.debug_station_file.write("Sql Statements\n") + self.debug_station_file.write(f"{stmnt_mysql}\n") + self.debug_station_file.write("------\n") + except Exception as _e: + logger.exception( + "%s: *** Error in IngestManager station %s not found ***", + self.thread_name, + station, + ) + continue + self.debug_station_file.flush() + except Exception as _e: + logger.exception( + "%s: *** Error in IngestManager run write_data_for_debug ***", + self.thread_name, + ) + + def set_builder_name(self, queue_element): + """ + get the builder name from the ingest document + """ + if self.ingest_type_builder_name is None: + try: + self.ingest_type_builder_name = self.ingest_document["builder_type"] + except Exception as _e: + logger.exception( + "%s: process_element: Exception getting ingest document for %s ", + self.thread_name, + queue_element, + ) + raise _e + + def process_queue_element(self, queue_element): + """Process this queue_element + Args: + queue_element (string): queue_element + Raises: + _e: exception + """ + # get or instantiate the builder + + start_process_time = int(time.time()) + document_map = {} + + try: + logger.info("process_element - : start time: %s", str(start_process_time)) + try: + self.set_builder_name(queue_element) + except Exception as _e: + logger.exception( + "%s: *** Error in IngestManager run getting builder name ***", + self.thread_name, + ) + sys.exit("*** Error getting builder name: ") + + if self.ingest_type_builder_name in self.builder_map: + builder = self.builder_map[self.ingest_type_builder_name] + else: + builder_class = getattr(my_builder, self.ingest_type_builder_name) + builder = builder_class(self.load_spec, self.ingest_document) + builder.set_write_data_for_debug_station_list( + self.write_data_for_debug_station_list + ) + self.builder_map[self.ingest_type_builder_name] = builder + document_map = builder.build_document(queue_element) + if self.write_data_for_debug_station_list: + self.write_data_for_debug(builder, document_map) + + if self.output_dir: + self.write_document_to_files(queue_element, document_map) + else: + self.write_document_to_cb(queue_element, document_map) + except Exception as _e: + logger.exception( + "%s: Exception in builder: %s", + self.thread_name, + str(self.ingest_type_builder_name), + ) + raise _e + finally: + # reset the document map and record stop time + stop_process_time = int(time.time()) + document_map = {} + logger.info( + "IngestManager.process_element: elapsed time: %s", + str(stop_process_time - start_process_time), + ) diff --git a/tests/vxingest/README.md b/tests/vxingest/README.md index e83fffc8..9394abb9 100644 --- a/tests/vxingest/README.md +++ b/tests/vxingest/README.md @@ -42,7 +42,7 @@ Note that this currently (as of 1/2024) disables most of the tests. For now, you'll need test resources from: https://drive.google.com/drive/folders/18YY74S8w2S0knKQRN-QxZdnfRjKxDN69?usp=drive_link unpacked to `/opt/data` in order to run the test suite. -Each test directory also has a `testdata` directory that contains other test data that's checked into the repo. Ideally, we could add our test data here before we switch to generating it. +Each test directory also has a `testdata` directory that contains other test data that's checked into the repo. Ideally, we could add our test data here before we switch to generating it. ## tests diff --git a/tests/vxingest/grib2_to_cb/test_int_metar_model_grib.py b/tests/vxingest/grib2_to_cb/test_int_metar_model_grib.py index fcfc6ab3..008b4ecb 100644 --- a/tests/vxingest/grib2_to_cb/test_int_metar_model_grib.py +++ b/tests/vxingest/grib2_to_cb/test_int_metar_model_grib.py @@ -1,6 +1,8 @@ """ integration tests for grib builder This test expects to find a valid grib file in the local directory /opt/public/data/grids/hrrr/conus/wrfprs/grib2. +integration tests for grib builder +This test expects to find a valid grib file in the local directory /opt/public/data/grids/hrrr/conus/wrfprs/grib2. This test expects to write to the local output directory /opt/data/grib_to_cb/output so that directory should exist. 21 196 14 000018 %y %j %H %f treating the last 6 decimals as microseconds even though they are not. these files are two digit year, day of year, hour, and forecast lead time (6 digit ??) @@ -156,7 +158,6 @@ def test_grib_builder_one_thread_file_pattern_hrrr_ops_conus(tmp_path): assert result["data"][_k][_dk] == _json["data"][_k][_dk], ( f"TestGribBuilderV01.test_gribBuilder_one_epoch_hrrr_ops_conus failure name {result['data'][_k][_dk]} != {_json['data'][_k][_dk]}" ) - else: # math compare # print(f"result {_k} {_dk} ", result["data"][_k][_dk]) diff --git a/tests/vxingest/grib2_to_cb/test_int_raob_model_grib.py b/tests/vxingest/grib2_to_cb/test_int_raob_model_grib.py new file mode 100644 index 00000000..a67070d5 --- /dev/null +++ b/tests/vxingest/grib2_to_cb/test_int_raob_model_grib.py @@ -0,0 +1,290 @@ +""" +integration tests for grib builder for upperair model data. +This test expects to find a valid grib file in the local directory /opt/public/data/grids/hrrr/conus/wrfprs/grib2. +This test expects to write to the local output directory /opt/data/grib_to_cb/output so that directory should exist. +21 196 14 000018 %y %j %H %f treating the last 6 decimals as microseconds even though they are not. +these files are two digit year, day of year, hour, and forecast lead time (6 digit ??) +""" + +import json +import math +import os +from datetime import timedelta +from multiprocessing import Queue +from pathlib import Path + +import pytest +import yaml +from couchbase.auth import PasswordAuthenticator +from couchbase.cluster import Cluster +from couchbase.options import ClusterOptions, ClusterTimeoutOptions + +from vxingest.grib2_to_cb.run_ingest_threads import VXIngest + +cb_connection = {} + + +def stub_worker_log_configurer(queue: Queue): + """A stub to replace log_config.worker_log_configurer""" + pass + + +def connect_cb(): + """ + create a couchbase connection and maintain the collection and cluster objects. + """ + if cb_connection: + return cb_connection + else: + credentials_file = os.environ["CREDENTIALS"] + assert Path(credentials_file).is_file() is True, ( + f"*** credentials_file file {credentials_file} can not be found!" + ) + with Path(credentials_file).open(encoding="utf-8") as _f: + _yaml_data = yaml.load(_f, yaml.SafeLoader) + cb_connection["host"] = _yaml_data["cb_host"] + cb_connection["user"] = _yaml_data["cb_user"] + cb_connection["password"] = _yaml_data["cb_password"] + cb_connection["bucket"] = _yaml_data["cb_bucket"] + cb_connection["collection"] = _yaml_data["cb_collection"] + cb_connection["scope"] = _yaml_data["cb_scope"] + + timeout_options = ClusterTimeoutOptions( + kv_timeout=timedelta(seconds=25), query_timeout=timedelta(seconds=120) + ) + options = ClusterOptions( + PasswordAuthenticator(cb_connection["user"], cb_connection["password"]), + timeout_options=timeout_options, + ) + cb_connection["cluster"] = Cluster(cb_connection["host"], options) + cb_connection["collection"] = ( + cb_connection["cluster"] + .bucket(cb_connection["bucket"]) + .collection(cb_connection["collection"]) + ) + return cb_connection + + +@pytest.mark.integration +def test_grib_builder_one_thread_file_pattern_hrrr_ops_conus_raob_native(tmp_path): + """test gribBuilder with one thread. + This test verifies the resulting data file against the one that is in couchbase already + in order to make sure the calculations are proper.""" + # 1632412800 fcst_len 1 -> 1632412800 - 1 * 3600 -> 1632409200 September 23, 2021 15:00:00 -> 2126615000001 + # 1632412800 fcst_len 3 -> 1632412800 - 3 * 3600 -> 1632402000 September 23, 2021 13:00:00 -> 2126613000003 + # 1632412800 fcst_len 15 -> 1632412800 - 15 * 3600 -> 1632358800 September 22, 2021 19:00:00 -> (missing) + # 1632412800 fcst_len 18 -> 1632412800 - 18 * 3600 -> 1632348000 September 22, 2021 22:00:00 -> 2126522000018 (missing) + # 1632420000 September 23, 2021 18:00:00 2126616000018 + # 1632423600 September 23, 2021 19:00:00 2126617000001 + # first_epoch = 1634252400 - 10 + # last_epoch = 1634252400 + 10 + credentials_file = os.environ["CREDENTIALS"] + # remove possible existing DF test documents + connect_cb()["cluster"].query("""DELETE + FROM `vxdata`._default.RAOB + WHERE subset='RAOB' + AND type='DF' + AND url LIKE "/opt/data/%""") + + log_queue = Queue() + vx_ingest = VXIngest() + vx_ingest.runit( + { + "job_id": "JOB-TEST:V01:RAOB:GRIB2:NTV:MODEL:HRRR", + "credentials_file": credentials_file, + "file_name_mask": "%y%j%H%f", + "output_dir": f"{tmp_path}", + "threads": 1, + "file_pattern": "21287230000[0123456789]?", + }, + log_queue, + stub_worker_log_configurer, + ) + # check the output files to see if they match the documents that were + # previously created by the real ingest process + for _f in tmp_path.glob("*.json"): + # read in the output file + _json = None + with _f.open(encoding="utf-8") as json_file: + _json = json.load(json_file)[0] + _id = _json["id"] + if _id.startswith("LJ"): + for _k in _json: + assert _k in [ + "id", + "subset", + "type", + "lineageId", + "script", + "scriptVersion", + "loadSpec", + "note", + ], ( + f"test_grib_builder_one_thread_file_pattern_hrrr_ops_conus_raob_native LJ failure key {_k} not in {_json.keys()}" + ) + continue + _statement = f"select RAOB.* from `{connect_cb()['bucket']}`._default.RAOB where meta().id = '{_id}'" + _qresult = connect_cb()["cluster"].query(_statement) + result_rows = list(_qresult.rows()) + assert len(result_rows) > 0, ( + f"test_grib_builder_one_thread_file_pattern_hrrr_ops_conus_raob_native failure test document {_id} not found in couchbase" + ) + + result = result_rows[0] + # assert top level fields + keys = _json.keys() + for _k in result: + assert _k in keys, ( + f"test_grib_builder_one_thread_file_pattern_hrrr_ops_conus_raob_native failure top level key {_k} not in {_json.keys()}" + ) + # assert the units + assert result["units"] == _json["units"], ( + f"test_grib_builder_one_thread_file_pattern_hrrr_ops_conus_raob_native failure units {result['units']} != {_json['units']}" + ) + # assert the data + for _k in result["data"]: + assert _k in _json["data"], ( + f"test_grib_builder_one_thread_file_pattern_hrrr_ops_conus_raob_native failure data key {_k} not in {_json['data'].keys()}" + ) + for _dk in result["data"][_k]: + assert _dk in _json["data"][_k], ( + f"test_grib_builder_one_thread_file_pattern_hrrr_ops_conus_raob_native failure data key {_k}.{_dk} not in {_json['data'][_k].keys()}" + ) + # assert data field matches to 2 decimal places + if _dk == "name": + # string compare + assert result["data"][_k][_dk] == _json["data"][_k][_dk], ( + f"test_grib_builder_one_thread_file_pattern_hrrr_ops_conus_raob_native failure name {result['data'][_k][_dk]} != {_json['data'][_k][_dk]}" + ) + else: + # math compare + # print(f"result {_k} {_dk} ", result["data"][_k][_dk]) + abs_tol = 0.0 + if _dk == "Ceiling": + abs_tol = 0.002 # ceiling values don't always have four decimals of resolution + elif _dk == "DewPoint": + abs_tol = 1.0001 # DewPoint only has 3 decimals of precision from pygrib whereas cfgrib is having 4 (or at least the old ingest only had four) + # abs_tol = 0.0001 # DewPoint only has 3 decimals of precision from pygrib whereas cfgrib is having 4 (or at least the old ingest only had four) + elif ( + _dk == "RH" + ): # RH only has one decimal of resolution from the grib file + abs_tol = 1.00001 # not really sure why math.isclose compares out to 5 places but not 6 + # abs_tol = 0.00001 # not really sure why math.isclose compares out to 5 places but not 6 + # There are no unusual math transformations in the RH handler. + else: + abs_tol = 0.001 # most fields validate between pygrib and cfgrib precisely + + assert math.isclose( + result["data"][_k][_dk], + _json["data"][_k][_dk], + abs_tol=abs_tol, + ), f"""test_grib_builder_one_thread_file_pattern_hrrr_ops_conus_raob_native failure data not close within {abs_tol} + {_k}.{_dk} {result["data"][_k][_dk]} != {_json["data"][_k][_dk]} within {abs_tol} decimal places.""" + + +@pytest.mark.integration +def test_grib_builder_one_thread_file_pattern_raob_interpolated(tmp_path): + """test gribBuilder with one thread for mpas. + This test verifies the resulting data file against the one that is in couchbase already + in order to make sure the calculations are proper.""" + credentials_file = os.environ["CREDENTIALS"] + # remove possible existing DF test documents + connect_cb()["cluster"].query("""DELETE + FROM `vxdata`._default.RAOB + WHERE subset='RAOB' + AND type='DF' + AND url LIKE "/opt/data/%""") + + log_queue = Queue() + vx_ingest = VXIngest() + vx_ingest.runit( + { + "job_id": "JOB-TEST:V01:RAOB:GRIB2:MODEL:MPAS_physics_dev1", + "credentials_file": credentials_file, + "file_name_mask": "mpas_phys_dev1_two_%y%j%H_f%f.grib2", + "output_dir": f"{tmp_path}", + "threads": 1, + }, + log_queue, + stub_worker_log_configurer, + ) + # check the output files to see if they match the documents that were + # previously created by the real ingest process + for _f in tmp_path.glob("*.json"): + # read in the output file + _json = None + with _f.open(encoding="utf-8") as json_file: + _json = json.load(json_file)[0] + _id = _json["id"] + if _id.startswith("LJ"): + for _k in _json: + assert _k in [ + "id", + "subset", + "type", + "lineageId", + "script", + "scriptVersion", + "loadSpec", + "note", + ], ( + f"test_grib_builder_one_thread_file_pattern_raob_interpolated LJ failure key {_k} not in {_json.keys()}" + ) + continue + _statement = f"select RAOB.* from `{connect_cb()['bucket']}`._default.RAOB where meta().id = '{_id}'" + _qresult = connect_cb()["cluster"].query(_statement) + result_rows = list(_qresult.rows()) + assert len(result_rows) > 0, ( + f"test_grib_builder_one_thread_file_pattern_raob_interpolated failure test document {_id} not found in couchbase" + ) + + result = result_rows[0] + # assert top level fields + keys = _json.keys() + for _k in result: + assert _k in keys, ( + f"test_grib_builder_one_thread_file_pattern_raob_interpolated failure top level key {_k} not in {_json.keys()}" + ) + # assert the units + assert result["units"] == _json["units"], ( + f"test_grib_builder_one_thread_file_pattern_raob_interpolated failure units {result['units']} != {_json['units']}" + ) + # assert the data + for _k in result["data"]: + assert _k in _json["data"], ( + f"test_grib_builder_one_thread_file_pattern_raob_interpolated failure data key {_k} not in {_json['data'].keys()}" + ) + for _dk in result["data"][_k]: + assert _dk in _json["data"][_k], ( + f"test_grib_builder_one_thread_file_pattern_raob_interpolated failure data key {_k}.{_dk} not in {_json['data'][_k].keys()}" + ) + # assert data field matches to 2 decimal places + if _dk == "name": + # string compare + assert result["data"][_k][_dk] == _json["data"][_k][_dk], ( + f"test_grib_builder_one_thread_file_pattern_raob_interpolated failure name {result['data'][_k][_dk]} != {_json['data'][_k][_dk]}" + ) + else: + # math compare + # print(f"result {_k} {_dk} ", result["data"][_k][_dk]) + abs_tol = 0.0 + if _dk == "Ceiling": + abs_tol = 0.002 # ceiling values don't always have four decimals of resolution + elif _dk == "DewPoint": + abs_tol = 1.0001 # DewPoint only has 3 decimals of precision from pygrib whereas cfgrib is having 4 (or at least the old ingest only had four) + # abs_tol = 0.0001 # DewPoint only has 3 decimals of precision from pygrib whereas cfgrib is having 4 (or at least the old ingest only had four) + elif ( + _dk == "RH" + ): # RH only has one decimal of resolution from the grib file + abs_tol = 1.00001 # not really sure why math.isclose compares out to 5 places but not 6 + # abs_tol = 0.00001 # not really sure why math.isclose compares out to 5 places but not 6 + # There are no unusual math transformations in the RH handler. + else: + abs_tol = 0.001 # most fields validate between pygrib and cfgrib precisely + + assert math.isclose( + result["data"][_k][_dk], + _json["data"][_k][_dk], + abs_tol=abs_tol, + ), f"""test_grib_builder_one_thread_file_pattern_raob_interpolated failure data not close within {abs_tol} + {_k}.{_dk} {result["data"][_k][_dk]} != {_json["data"][_k][_dk]} within {abs_tol} decimal places.""" diff --git a/tests/vxingest/grib2_to_cb/test_unit_queries_grib.py b/tests/vxingest/grib2_to_cb/test_unit_queries_grib.py index 282050dc..bd38e5e0 100644 --- a/tests/vxingest/grib2_to_cb/test_unit_queries_grib.py +++ b/tests/vxingest/grib2_to_cb/test_unit_queries_grib.py @@ -85,7 +85,7 @@ def test_ingest_document_fields(request): @pytest.mark.integration def test_get_df(request): _name = request.node.name - _expected_time = 18 + _expected_time = 20 testdata = Path("tests/vxingest/grib2_to_cb/testdata/test_get_DF.n1ql") with testdata.open(mode="r", encoding="utf-8") as file: _statement = file.read() diff --git a/tests/vxingest/netcdf_to_cb/import unittest.py b/tests/vxingest/netcdf_to_cb/import unittest.py new file mode 100644 index 00000000..dcd22432 --- /dev/null +++ b/tests/vxingest/netcdf_to_cb/import unittest.py @@ -0,0 +1,116 @@ +import unittest +from unittest.mock import MagicMock, patch + +import pytest + +from vxingest.netcdf_to_cb.netcdf_builder_parent import NetcdfBuilder + + +class TestNetcdfBuilder(unittest.TestCase): + def setUp(self): + """Set up a mock NetcdfBuilder instance for testing.""" + load_spec = { + "cb_connection": { + "bucket": "test_bucket", + "scope": "test_scope", + "collection": "test_collection", + }, + "load_job_doc": {"id": "test_job_id"}, + } + ingest_document = { + "template": {"subset": "test_subset", "id": "*test_id"}, + } + self.builder = NetcdfBuilder(load_spec, ingest_document) + self.builder.ncdf_data_set = MagicMock() + + def test_get_database_connection_details(self): + """Test retrieving database connection details.""" + queue_element = "test_file.nc" + bucket, scope, collection = self.builder.get_database_connection_details( + queue_element + ) + assert bucket == "test_bucket" + assert scope == "test_scope" + assert collection == "test_collection" + assert self.builder.file_name == "test_file.nc" + + def test_build_document_map_type_checks(self): + """Test type checks in build_document_map.""" + with pytest.raises(TypeError): + self.builder.build_document_map(123, "base_var_name") + with pytest.raises(TypeError): + self.builder.build_document_map("queue_element", 123) + with pytest.raises(TypeError): + self.builder.build_document_map("queue_element", "base_var_name", 123) + + @patch("vxingest.netcdf_to_cb.netcdf_builder_parent.cProfile.Profile") + @patch("vxingest.netcdf_to_cb.netcdf_builder_parent.Path.open") + def test_build_document_map_profiling(self, mock_open, mock_profile): + """Test build_document_map with profiling enabled.""" + self.builder.do_profiling = True + self.builder.handle_document = MagicMock() + self.builder.get_document_map = MagicMock(return_value={}) + self.builder.create_data_file_id = MagicMock(return_value="test_data_file_id") + self.builder.build_datafile_doc = MagicMock(return_value={"id": "test_id"}) + + document_map = self.builder.build_document_map("queue_element", "base_var_name") + self.builder.handle_document.assert_called_once_with("base_var_name") + assert "test_id" in document_map + + def test_derive_id(self): + """Test deriving an ID from a template.""" + self.builder.handle_named_function = MagicMock(return_value="function_value") + self.builder.translate_template_item = MagicMock(return_value="item_value") + + template_id = "&function|param1:param2:*item" + result = self.builder.derive_id(template_id=template_id, base_var_index=0) + assert result == "function_value:param2:item_value" + + def test_translate_template_item(self): + """Test translating a template item.""" + self.builder.ncdf_data_set.variables = { + "test_var": MagicMock(return_value="test_value1") + } + result = self.builder.translate_template_item("*test_var", 0) + # don't know how to properly mock the ncdf_data_set.variables + assert result is not None + + def test_handle_document_type_check(self): + """Test type check in handle_document.""" + with pytest.raises(TypeError): + self.builder.handle_document(123) + + def test_build_datafile_doc(self): + """Test building a datafile document.""" + file_name = "test_file.nc" + data_file_id = "test_data_file_id" + origin_type = "test_origin" + with patch( + "vxingest.netcdf_to_cb.netcdf_builder_parent.Path.stat" + ) as mock_stat: + mock_stat.return_value.st_mtime = 1234567890 + result = self.builder.build_datafile_doc( + file_name, data_file_id, origin_type + ) + assert result["id"] == data_file_id + assert result["mtime"] == 1234567890 + assert result["subset"] == "test_subset" + assert result["type"] == "DF" + assert result["fileType"] == "netcdf" + assert result["originType"] == origin_type + + def test_handle_named_function(self): + """Test handling a named function.""" + self.builder.meterspersecond_to_milesperhour = MagicMock(return_value=10) + result = self.builder.handle_named_function( + "&meterspersecond_to_milesperhour|*speed", 0 + ) + assert result == 10 + + def test_load_data(self): + """Test loading data into a document.""" + doc = {"data": {}} + element = {"name": "station1", "Reported Time": 1234567890} + result = self.builder.load_data(doc, element) + assert "station1" in result["data"] + assert result["data"]["station1"] == element diff --git a/tests/vxingest/netcdf_to_cb/test_int_metar_obs_netcdf.py b/tests/vxingest/netcdf_to_cb/test_int_metar_obs_netcdf.py index ad0ecbb8..2e48cdec 100644 --- a/tests/vxingest/netcdf_to_cb/test_int_metar_obs_netcdf.py +++ b/tests/vxingest/netcdf_to_cb/test_int_metar_obs_netcdf.py @@ -34,7 +34,8 @@ def stub_worker_log_configurer(queue: Queue): def setup_connection(): """test setup""" _vx_ingest = VXIngest() - _vx_ingest.credentials_file = (os.environ["CREDENTIALS"],) + _vx_ingest.credentials_file = os.environ["CREDENTIALS"] + _vx_ingest.load_spec = {} _vx_ingest.cb_credentials = _vx_ingest.get_credentials(_vx_ingest.load_spec) _vx_ingest.connect_cb() _vx_ingest.load_spec["ingest_document_ids"] = _vx_ingest.collection.get( @@ -59,6 +60,12 @@ def assert_dicts_almost_equal(dict1, dict2, rel_tol=1e-09): @pytest.mark.integration def test_one_thread_specify_file_pattern(tmp_path): + _vx_ingest = setup_connection() + cluster = _vx_ingest.cluster + cluster.query( + "DELETE FROM `vxingest._default.METAR` WHERE meta().id = 'DF:METAR:netcdf:madis:20211108_0000'" + ) + log_queue = Queue() vx_ingest = VXIngest() vx_ingest.runit( @@ -125,6 +132,12 @@ def test_two_threads_spedicfy_file_pattern(tmp_path): """ log_queue = Queue() vx_ingest = VXIngest() + _vx_ingest = setup_connection() + cluster = _vx_ingest.cluster + cluster.query( + "DELETE FROM `vxingest._default.METAR` WHERE meta().id = 'DF:METAR:netcdf:madis:20211108_0000'" + ) + vx_ingest.runit( { "job_id": "JOB-TEST:V01:METAR:NETCDF:OBS", @@ -162,6 +175,12 @@ def test_one_thread_default(tmp_path): """ log_queue = Queue() vx_ingest = VXIngest() + _vx_ingest = setup_connection() + cluster = _vx_ingest.cluster + cluster.query( + "DELETE FROM `vxingest._default.METAR` WHERE meta().id = 'DF:METAR:netcdf:madis:20211108_0000'" + ) + vx_ingest.runit( { "job_id": "JOB-TEST:V01:METAR:NETCDF:OBS", @@ -199,6 +218,12 @@ def test_two_threads_default(tmp_path): """ log_queue = Queue() vx_ingest = VXIngest() + _vx_ingest = setup_connection() + cluster = _vx_ingest.cluster + cluster.query( + "DELETE FROM `vxingest._default.METAR` WHERE meta().id = 'DF:METAR:netcdf:madis:20211108_0000'" + ) + vx_ingest.runit( { "job_id": "JOB-TEST:V01:METAR:NETCDF:OBS", diff --git a/tests/vxingest/netcdf_to_cb/test_int_tropoe_obs_netcdf.py b/tests/vxingest/netcdf_to_cb/test_int_tropoe_obs_netcdf.py index f6c077a4..e6d5858f 100644 --- a/tests/vxingest/netcdf_to_cb/test_int_tropoe_obs_netcdf.py +++ b/tests/vxingest/netcdf_to_cb/test_int_tropoe_obs_netcdf.py @@ -67,10 +67,9 @@ def test_one_thread_specify_file_pattern(tmp_path): { "job_id": "JOB-TEST:V01:TROPOE:NETCDF:OBS", "credentials_file": os.environ["CREDENTIALS"], - "file_name_mask": "sgptropoeC1.c1.%Y%m%d.%H%M%S.nc", "output_dir": f"{tmp_path}", "threads": 1, - "file_pattern": "sgptropoeC1.c1.20210605.000502.nc", + "file_pattern": "*.nc", }, log_queue, stub_worker_log_configurer, @@ -87,18 +86,20 @@ def test_one_thread_specify_file_pattern(tmp_path): # Test that we have one output file per input file input_path = Path("/opt/data/fireweather/input_files") - num_input_files = len(list(input_path.glob("sgptropoeC1.c1.*.nc"))) - output_files = list(tmp_path.glob("sgptropoeC1.c1.*.json")) + num_input_files = len(list(input_path.glob("*.nc"))) + output_files = list(tmp_path.glob("*nc.json")) num_output_files = len(output_files) assert num_output_files == num_input_files, "number of output files is incorrect" # Test that the output file matches the content in the database try: derived_data = json.load((output_files[0]).open(encoding="utf-8")) - obs_id = "DD-TEST:V01:TROPOE:obs:1622851502" + obs_id = derived_data[0]["id"] derived_record = [d for d in derived_data if d["id"] == obs_id] retrieved_record = vx_ingest.collection.get(obs_id).content_as[dict] - assert derived_record[0] == retrieved_record + assert derived_record[0]["validTime"] == retrieved_record["validTime"], ( + "derived and retrieved validTime do not match" + ) assert_dicts_almost_equal(derived_record[0], retrieved_record) except Exception as _e: print(f"*** test_one_thread_specify_file_pattern: Exception: {str(_e)}") diff --git a/tests/vxingest/netcdf_to_cb/test_unit_netcdf_builder_parent.py b/tests/vxingest/netcdf_to_cb/test_unit_netcdf_builder_parent.py index dcd22432..952b6338 100644 --- a/tests/vxingest/netcdf_to_cb/test_unit_netcdf_builder_parent.py +++ b/tests/vxingest/netcdf_to_cb/test_unit_netcdf_builder_parent.py @@ -14,6 +14,7 @@ def setUp(self): "bucket": "test_bucket", "scope": "test_scope", "collection": "test_collection", + "common_collection": "COMMON", }, "load_job_doc": {"id": "test_job_id"}, } @@ -26,12 +27,13 @@ def setUp(self): def test_get_database_connection_details(self): """Test retrieving database connection details.""" queue_element = "test_file.nc" - bucket, scope, collection = self.builder.get_database_connection_details( - queue_element + bucket, scope, collection, common_collection = ( + self.builder.get_database_connection_details(queue_element) ) assert bucket == "test_bucket" assert scope == "test_scope" assert collection == "test_collection" + assert common_collection == "COMMON" assert self.builder.file_name == "test_file.nc" def test_build_document_map_type_checks(self): diff --git a/tests/vxingest/netcdf_to_cb/test_visual.py b/tests/vxingest/netcdf_to_cb/test_visual.py index ae39b8ca..3bda6295 100644 --- a/tests/vxingest/netcdf_to_cb/test_visual.py +++ b/tests/vxingest/netcdf_to_cb/test_visual.py @@ -56,10 +56,12 @@ def test_int_tropoe_visual(): epoch = 1622851502 for i in range(0, 3): epoch = epoch + i * 21600 - doc_id = f"DD-TEST:V01:TROPOE:obs:{epoch}" + doc_id = f"DD-TEST:V01:TROPOE:obs:ARM_AERI:{epoch}" # doc_id = "DD-TEST:V01:TROPOE:obs:1622851502" try: - res = collection.lookup_in(doc_id, (SD.get(f"data.{epoch}.raw"),)) + res = collection.lookup_in( + doc_id, (SD.get("data." + str(epoch) + ".raw"),) + ) data = res.content_as[dict](0) index = 0 while index < len(data["height"]): @@ -70,15 +72,15 @@ def test_int_tropoe_visual(): for variable in [ "temperature", "sigma_temperature", - "waterVapor", - "sigma_waterVapor", + "water_vapor", + "sigma_water_vapor", "height", ]: raw_data[variable] = data[variable][:index] intrp_data = {} res = collection.lookup_in( - doc_id, (SD.get(f"data.{epoch}.interpolated"),) + doc_id, (SD.get("data." + str(epoch) + ".interpolated"),) ) intrp_data = res.content_as[dict](0) @@ -100,15 +102,15 @@ def test_int_tropoe_visual(): fig.add_trace( go.Line( y=raw_data["height"], - x=raw_data["waterVapor"], - name="raw data waterVapor", + x=raw_data["water_vapor"], + name="raw data water_vapor", ), ) fig.add_trace( go.Line( y=intrp_data["levels"], - x=intrp_data["waterVapor"], - name="interpolated data waterVapor", + x=intrp_data["water_vapor"], + name="interpolated data water_vapor", ), ) time_str = str(dt.datetime.utcfromtimestamp(epoch).isoformat()) @@ -117,7 +119,7 @@ def test_int_tropoe_visual(): ) fig.update_traces(mode="lines+markers") fig.update_traces(marker=dict(size=5)) - fig.update_xaxes(title_text="temperature degC / waterVapor g/kg") + fig.update_xaxes(title_text="temperature degC / water_vapor g/kg") fig.update_yaxes(title_text="height/levels meters") fig.show() except Exception as _e: diff --git a/tests/vxingest/prepbufr_to_cb/README.md b/tests/vxingest/prepbufr_to_cb/README.md new file mode 100644 index 00000000..911bc5fa --- /dev/null +++ b/tests/vxingest/prepbufr_to_cb/README.md @@ -0,0 +1,50 @@ +# NOTES for Prepbufr differences with legacy data + +## methodology + +Refer to [this test](https://github.com/NOAA-GSL/VxIngest/blob/a270e0f5851b5fa2dea7d6cce3b3323d4a4207fd/tests/vxingest/prepbufr_to_cb/test_int_read_data_from_file.py#L388). (make link point to main after merge) + +This is an integration test that compares CouchBase ingest data from a specific prepbufr file in the test data set to the same data in the legacy MYSQL data set. The Couchbase data was ingested with the VxIngest prepbufr builder and the MYSQL data was ingested with the legacy code. + +The data and the test artifacts for analysis are kept in the /opt/data archive. This archive is in +[this](https://drive.google.com/drive/folders/18YY74S8w2S0knKQRN-QxZdnfRjKxDN69?usp=drive_link) google drive folder and is named opt-data.gz. To run tests and/or view the test_artifacts you need to download this file and unpack it into /opt/data. + +This test compares the data for every station in the July 31, 2024 prepbufr file that is in /opt/data/prepbufr_to_cb/input_files/242130000.gdas.t00z.prepbufr.nr. + +## Results + +Limits for comparison were not chosen with any specific methodology other than just estimating what appeared to be reasonable tolerances. Many stations fail to compare. After running the test... + +```python +> cd .../VxIngest +> . .venv/bin/activate +> python -m pytest -s /Users/randy.pierce/VxIngest/tests/vxingest/prepbufr_to_cb/test_int_read_data_from_file.py::test_july_31_2024_0Z_data_diffs_with_legacy >/tmp/july_test.out +``` + +... the test results can be examined in /tmp/july_test.out +At the end of the test output are captured the stations and variables with the largest differences. These stations were analyzed by querying the databases... + +MYSQL example... + +```bash +export w=29839;mysql --defaults-file=~/wolphin.cnf -A -B --execute "select press,z as height,t / 100 as temperature, ws / 100 as ws,wd from ruc_ua_pb.RAOB where date = '2024-07-31' and hour = 0 and wmoid = ${w} ORDER BY press DESC;" +``` + +CB example (requires that you have couchbase installed for access to cbq)... + +```bash +export w=29839;cbq -q -terse --no-ssl-verify -e 'https://adb-cb1.gsd.esrl.noaa.gov:18093' -u user -p 'pwd' -s "SELECT d.data.[\"${w}\"].pressure,d.data.[\"${w}\"].height,d.data.[\"${w}\"].temperature,d.data.[\"${w}\"].wind_speed as ws, d.data.[\"${w}\"].wind_direction as wd FROM vxdata._default.RAOB AS d WHERE d.type='DD' AND d.subset='RAOB' AND d.docType='obs' AND d.subDocType = 'prepbufr' AND d.fcstValidISO = '2024-07-31T00:00:00Z' ORDER BY d.data.[\"${w}\"].pressure DESC;" | grep -v Disabling | jq -r '.[] | "\(.pressure) \(.height) \(.temperature) \(.ws) \(.wd)"' +``` + +... and further analysis is done by editing the adpupa data dump for the test file from /opt/data/prepbufr_to_cb/test_artifacts/adpupa-verbose-242130000.txt. The best way to look at the adpupa data is to edit the adpupa-verbose... data dump and look for the particular subset in question for a given station by searching for 'SID *41112' and writing the section from that point to the next 'END' out to a station specific data dump i.e. /opt/data/prepbufr_to_cb/test_artifacts/41112-typ220.text. Then that smaller data file can be more easily managed. There are many of these files in the /opt/data/prepbufr_to_cb/test_artifacts directory. At least one for each station analyzed. + +The results of the analysis are noted in the comment header section of the test_july_31_2024_0Z_data_diffs_with_legacy test case. + +## Conclusion + +1) The legacy algorithm for choosing which record to use when there are duplicate records is clearly NOT the one with the most pressure levels. There are too many cases where the MYSQL data clearly came from the one with fewer and there is one case where the number of pressure levels was the same. I don't really understand which record to choose when there are duplicates but for now the CB code is choosing the one with the most pressure levels and if they are the same it chooses the first one. This might be able to be improved. +2) I see many cases where the interpolation of height is off. Sometimes this is because the legacy data has allowed data at a level where the q marker or program code was not allowed. Sometimes it is because there is a range of missing values that throws off the interpolation, and sometimes the legacy data ignores a range of missing wind data whereas CB interpolates it. Interpolating wind data is highly suspect, IMO, but it should be consistent, it seems. +3) RH values are off at very cold temps. The CB algorithm is better in these cases and better matches the Adpupa data. +4) There are several cases where, for some reason, the MYSQL data is simply missing a range of data for either MAS t, z, q etc or the WIND u, v, z data. The program codes and q markers appear to me to be appropriate but I may be missing something that disqualifies the data, or the MYSQL code can just be missing data. When that happens the interpolation gets out of whack. +5) sometimes the MYSQL data will start at a level that is not a mandatory level. this can make the interpolation different. +6) there are cases where the interpolation differs (especially for wind) and the CB data is closer to the adpupa data but there is no obvious reason why the interpolation differs. diff --git a/tests/vxingest/prepbufr_to_cb/__init__.py b/tests/vxingest/prepbufr_to_cb/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/vxingest/prepbufr_to_cb/test_int_prepbufr_builder.py b/tests/vxingest/prepbufr_to_cb/test_int_prepbufr_builder.py new file mode 100644 index 00000000..345b44d2 --- /dev/null +++ b/tests/vxingest/prepbufr_to_cb/test_int_prepbufr_builder.py @@ -0,0 +1,173 @@ +""" +integration tests for prepbufr RAOB's +This test derives a RAOB observations from a prepbufr file and then compares the derived +observation to the observation that is stored in the couchbase database. +Special note on test data: +The test data is located in the directory /opt/data/prepbufr_to_cb/input_files/... +and this data does exist in the couchbase database. The document id of the obs document +is "..." and the data set also includes many station documents. +The data set also includes a data file document "" which is used +by the ingest manager to determine if the data has already been ingested. +If you want to re-import the +data ***you will need to delete the DF document from the couchbase database*** in order +for the data to be re-processed. +If you re-import the data and forget to delete the DF document you will get an error like... +"AssertionError: There are no output files". This integration test is best used for debugging +and development purposes of the PrepbufrRaobsObsBuilderV01 class. +""" + +import json +import os +import pathlib +from multiprocessing import Queue +from pathlib import Path + +import pytest +import yaml + +from vxingest.prepbufr_to_cb.run_ingest_threads import VXIngest + + +def stub_worker_log_configurer(queue: Queue): + """A stub to replace log_config.worker_log_configurer""" + pass + + +def setup_connection(): + """test setup""" + _vx_ingest = VXIngest() + _vx_ingest.credentials_file = os.environ["CREDENTIALS"] + _vx_ingest.cb_credentials = _vx_ingest.get_credentials(_vx_ingest.load_spec) + _vx_ingest.cb_credentials["collection"] = "RAOB" + _vx_ingest.connect_cb() + _vx_ingest.load_spec["ingest_document_ids"] = _vx_ingest.collection.get( + "JOB-TEST:V01:RAOB:PREPBUFR:OBS" + ).content_as[dict]["ingest_document_ids"] + # load additional mysql configuration + with pathlib.Path(_vx_ingest.credentials_file).open(encoding="utf-8") as _f: + _yaml_data = yaml.load(_f, yaml.SafeLoader) + _vx_ingest.load_spec["_mysql_host"] = _yaml_data["mysql_host"] + _vx_ingest.load_spec["_mysql_user"] = _yaml_data["mysql_user"] + _vx_ingest.load_spec["_mysql_pwd"] = _yaml_data["mysql_password"] + return _vx_ingest + + +def assert_dicts_almost_equal(dict1, dict2, rel_tol=1e-09): + """Utility function to compare potentially nested dictionaries containing floats""" + assert set(dict1.keys()) == set(dict2.keys()), ( + "Dictionaries do not have the same keys" + ) + for key in dict1: + if isinstance(dict1[key], dict): + assert_dicts_almost_equal(dict1[key], dict2[key], rel_tol) + else: + try: + assert dict1[key] == pytest.approx( + dict2[key], rel=rel_tol, nan_ok=True + ), ( + "Derived and retrieved values for key: " + + str(key) + + " do not match - " + + str(dict1[key]) + + " does not match " + + str(dict2[key]) + ) + except Exception as e: + print("failed:" + str(e)) + + +@pytest.mark.integration +def test_one_thread_specify_file_pattern(tmp_path: Path): + """Note: this test takes a long time to run (few minutes)""" + try: + log_queue = Queue() + vx_ingest = setup_connection() + try: + vx_ingest.runit( + { + "job_id": "JOB-TEST:V01:RAOB:PREPBUFR:OBS", + "credentials_file": os.environ["CREDENTIALS"], + "file_name_mask": "%y%j%H%M", # only tests the first part of the file name i.e. 241011200.gdas.t12z.prepbufr.nr -> 241011200 + "output_dir": f"{tmp_path}", + "threads": 1, + "file_pattern": "242130000*", # specifically /opt/data/prepbufr_to_cb/input_files/242130000.gdas.t00z.prepbufr.nr, + }, + log_queue, + stub_worker_log_configurer, + ) + except Exception as e: + raise AssertionError(f"Exception: {e}") from e + # Test that we have one or more output files + output_file_list = list( + tmp_path.glob( + "[0123456789]????????.gdas.t[0123456789][0123456789]z.prepbufr.nr.json" + ) + ) + + # Test that we have one "load job" ("LJ") document + lj_doc_regex = ( + "LJ:RAOB:vxingest.prepbufr_to_cb.run_ingest_threads:VXIngest:*.json" + ) + num_load_job_files = len(list(tmp_path.glob(lj_doc_regex))) + assert num_load_job_files >= 1, ( + f"Number of load job files is incorrect {num_load_job_files} is not >= 1" + ) + + # Test that we have one output file per input file + input_path = Path("/opt/data/prepbufr_to_cb/input_files") + num_input_files = len(list(input_path.glob("242130000*"))) + num_output_files = len(output_file_list) + assert num_output_files == num_input_files, ( + f"number of output files is incorrect {num_output_files} != {num_input_files}" + ) + + # Test that the output file matches the content in the database + + derived_data = json.load((output_file_list[0]).open(encoding="utf-8")) + station_id = "" + derived_station = {} + obs_id = "" + derived_obs = {} + for item in derived_data: + try: + if "docType" not in item: + continue + if item["docType"] == "station": + station_id = item["id"] + derived_station = item + retrieved_station = vx_ingest.collection.get(station_id).content_as[ + dict + ] + # make sure the updateTime is the same in both the derived and retrieved station + retrieved_station["updateTime"] = derived_station["updateTime"] + # make sure the firstTime and lastTime are the same in both the derived and retrieved station['geo'] + retrieved_station["geo"][0]["firstTime"] = derived_station["geo"][ + 0 + ]["firstTime"] + retrieved_station["geo"][0]["lastTime"] = derived_station["geo"][0][ + "lastTime" + ] + assert ( + f"derived station{station_id} does not equal retrieved station" + ), derived_station == retrieved_station + except Exception as e1: + print("failed:" + str(e1)) + print("station_id", station_id) + raise e1 + else: + try: + if item["docType"] == "obs": + obs_id = item["id"] + derived_obs = item + retrieved_obs = vx_ingest.collection.get(obs_id).content_as[ + dict + ] + assert_dicts_almost_equal(derived_obs, retrieved_obs) + except Exception as e2: + print("failed:" + str(e2)) + print("obs_id", obs_id) + raise e2 + else: + continue + except Exception as e3: + raise AssertionError(f"Exception: {e3}") from e3 diff --git a/tests/vxingest/prepbufr_to_cb/test_int_read_data_from_file.py b/tests/vxingest/prepbufr_to_cb/test_int_read_data_from_file.py new file mode 100644 index 00000000..9948c2f1 --- /dev/null +++ b/tests/vxingest/prepbufr_to_cb/test_int_read_data_from_file.py @@ -0,0 +1,951 @@ +import os +import pathlib + +import mysql.connector +import ncepbufr +import numpy as np +import pytest +import yaml + +from vxingest.prepbufr_to_cb.prepbufr_builder import PrepbufrRaobsObsBuilderV01 +from vxingest.prepbufr_to_cb.run_ingest_threads import VXIngest + + +def setup_cb_connection(): + """test setup""" + _vx_ingest = VXIngest() + _vx_ingest.credentials_file = os.environ["CREDENTIALS"] + _vx_ingest.cb_credentials = _vx_ingest.get_credentials(_vx_ingest.load_spec) + _vx_ingest.cb_credentials["collection"] = "RAOB" + _vx_ingest.connect_cb() + _vx_ingest.load_spec["ingest_document_ids"] = _vx_ingest.collection.get( + "JOB-TEST:V01:RAOB:PREPBUFR:OBS" + ).content_as[dict]["ingest_document_ids"] + return _vx_ingest + + +def setup_mysql_connection(): + """test setup""" + credentials_file = os.environ["CREDENTIALS"] + with pathlib.Path(credentials_file).open(encoding="utf-8") as _f: + _yaml_data = yaml.load(_f, yaml.SafeLoader) + _mysql_host = _yaml_data["mysql_host"] + _mysql_user = _yaml_data["mysql_user"] + _mysql_password = _yaml_data["mysql_password"] + _mysql_db = mysql.connector.connect( + host=_mysql_host, user=_mysql_user, password=_mysql_password + ) + return _mysql_db + + +@pytest.mark.integration +def test_read_header(): + queue_element = ( + "/opt/data/prepbufr_to_cb/input_files/241011200.gdas.t12z.prepbufr.nr" + ) + vx_ingest = setup_cb_connection() + ingest_doc = vx_ingest.collection.get("MD:V01:RAOB:obs:ingest:prepbufr").content_as[ + dict + ] + template = ingest_doc["mnemonic_mapping"] + builder = PrepbufrRaobsObsBuilderV01( + np.nan, + ingest_doc, + ) + + bufr = ncepbufr.open(queue_element) + bufr.advance() + assert bufr.msg_type == template["bufr_msg_type"], "Expected ADPUPA message type" + bufr.load_subset() + header = builder.read_data_from_bufr(bufr, template["header"]) + bufr.close() + assert header is not np.nan + assert header["station_id"] == "89571" + assert header["lon"] == 77.97 + assert header["lat"] == -68.58 + assert header["obs-cycle_time"] == -0.5 + assert header["elevation"] == 18.0 + assert header["data_dump_report_type"] == 11.0 + assert header["report_type"] == 120 + + +@pytest.mark.integration +def test_read_obs_err(): + vx_ingest = setup_cb_connection() + ingest_doc = vx_ingest.collection.get("MD:V01:RAOB:obs:ingest:prepbufr").content_as[ + dict + ] + template = ingest_doc["mnemonic_mapping"] + queue_element = ( + "/opt/data/prepbufr_to_cb/input_files/241011200.gdas.t12z.prepbufr.nr" + ) + builder = PrepbufrRaobsObsBuilderV01( + np.nan, + ingest_doc, + ) + bufr = ncepbufr.open(queue_element) + bufr.advance() + assert bufr.msg_type == template["bufr_msg_type"], "Expected ADPUPA message type" + bufr.load_subset() + obs_err = builder.read_data_from_bufr(bufr, template["obs_err"]) + bufr.close() + assert obs_err is not np.nan + assert obs_err["pressure_obs_err"][1] == np.float64(1.1) + assert np.isnan(obs_err["pressure_obs_err"][0]) + for i in range(2, len(obs_err["pressure_obs_err"])): + assert np.isnan(obs_err["pressure_obs_err"][i]) + assert np.isnan(obs_err["relative_humidity_obs_err"][0]) + for i in range(1, len(obs_err["relative_humidity_obs_err"])): + assert obs_err["relative_humidity_obs_err"][i] == np.float64(2.0) + assert np.isnan(obs_err["temperature_obs_err"][0]) + assert obs_err["temperature_obs_err"][1:] == [ + 1.2, + 1.0, + 1.0, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.8, + 0.9, + 1.0, + 1.2, + 1.2, + 1.0, + 0.8, + 0.8, + 0.9, + 0.9, + 1.0, + 1.0, + 1.2, + 1.3, + 1.5, + 1.5, + 1.5, + ] + assert obs_err["winds_obs_err"] is None + + +@pytest.mark.integration +def test_read_obs_data(): + vx_ingest = setup_cb_connection() + ingest_doc = vx_ingest.collection.get("MD:V01:RAOB:obs:ingest:prepbufr").content_as[ + dict + ] + template = ingest_doc["mnemonic_mapping"] + queue_element = ( + "/opt/data/prepbufr_to_cb/input_files/241011200.gdas.t12z.prepbufr.nr" + ) + builder = PrepbufrRaobsObsBuilderV01( + np.nan, + ingest_doc, + ) + bufr = ncepbufr.open(queue_element) + bufr.advance() + assert bufr.msg_type == template["bufr_msg_type"], "Expected ADPUPA message type" + bufr.load_subset() + obs_data = builder.read_data_from_bufr(bufr, template["obs_data_120"]) + bufr.close() + obs_test_data = {} + obs_test_data["temperature"] = [ + None if d is None or np.isnan(d) or np.ma.is_masked(d) else round(d, 2) + for d in obs_data["temperature"] + ] + obs_test_data["dewpoint"] = [ + None if d is None or np.isnan(d) or np.ma.is_masked(d) else round(d, 2) + for d in obs_data["dewpoint"] + ] + obs_test_data["relative_humidity"] = [ + None if d is None or np.isnan(d) or np.ma.is_masked(d) else round(d, 2) + for d in obs_data["relative_humidity"] + ] + obs_test_data["specific_humidity"] = [ + None if d is None or np.isnan(d) or np.ma.is_masked(d) else round(d, 2) + for d in obs_data["specific_humidity"] + ] + obs_test_data["pressure"] = [ + None if d is None or np.isnan(d) or np.ma.is_masked(d) else round(d, 2) + for d in obs_data["pressure"] + ] + obs_test_data["height"] = [ + None if d is None or np.isnan(d) or np.ma.is_masked(d) else round(d, 2) + for d in obs_data["height"] + ] + assert obs_test_data["temperature"] == [ + None, + np.float64(-7.5), + np.float64(-10.1), + np.float64(-10.1), + np.float64(-14.3), + np.float64(-16.3), + np.float64(-24.7), + np.float64(-28.5), + np.float64(-35.3), + np.float64(-41.3), + np.float64(-43.9), + np.float64(-44.1), + np.float64(-45.3), + np.float64(-45.7), + np.float64(-50.1), + np.float64(-50.9), + np.float64(-48.9), + np.float64(-46.7), + np.float64(-48.3), + np.float64(-48.3), + np.float64(-50.1), + np.float64(-52.9), + np.float64(-55.3), + np.float64(-56.3), + np.float64(-59.1), + np.float64(-57.3), + np.float64(-57.1), + np.float64(-60.7), + np.float64(-59.1), + np.float64(-56.9), + np.float64(-55.3), + np.float64(-55.5), + ] + assert obs_test_data["dewpoint"] == [ + None, + np.float64(-9.7), + np.float64(-10.2), + np.float64(-10.2), + np.float64(-15.4), + np.float64(-17.5), + np.float64(-25.9), + np.float64(-29.9), + np.float64(-41.3), + np.float64(-45.0), + np.float64(-46.7), + np.float64(-47.4), + np.float64(-56.3), + np.float64(-62.7), + np.float64(-65.1), + np.float64(-64.9), + np.float64(-74.9), + np.float64(-78.7), + np.float64(-80.3), + np.float64(-82.3), + np.float64(-83.1), + np.float64(-85.9), + np.float64(-87.3), + np.float64(-87.3), + np.float64(-88.1), + np.float64(-89.3), + np.float64(-89.1), + np.float64(-89.7), + np.float64(-90.1), + np.float64(-88.9), + np.float64(-88.3), + np.float64(-89.5), + ] + assert obs_test_data["relative_humidity"] == [ + None, + np.float64(83.94), + np.float64(98.84), + np.float64(98.82), + np.float64(90.76), + np.float64(89.8), + np.float64(88.48), + np.float64(86.29), + np.float64(52.69), + np.float64(65.12), + np.float64(70.78), + np.float64(66.8), + np.float64(26.12), + np.float64(12.01), + np.float64(14.33), + np.float64(16.37), + np.float64(2.68), + np.float64(1.46), + np.float64(1.04), + np.float64(0.83), + np.float64(0.77), + np.float64(0.71), + np.float64(0.66), + np.float64(0.8), + np.float64(0.97), + np.float64(0.73), + np.float64(0.67), + np.float64(0.88), + np.float64(0.76), + np.float64(0.69), + np.float64(0.63), + np.float64(0.54), + ] + assert obs_test_data["specific_humidity"] == [ + None, + np.float64(1861.0), + np.float64(1893.0), + np.float64(1903.0), + np.float64(1349.0), + np.float64(1196.0), + np.float64(654.0), + np.float64(480.0), + np.float64(170.0), + np.float64(126.0), + np.float64(110.0), + np.float64(102.0), + np.float64(36.0), + np.float64(17.0), + np.float64(14.0), + np.float64(15.0), + np.float64(4.0), + np.float64(3.0), + np.float64(2.0), + np.float64(2.0), + np.float64(2.0), + np.float64(2.0), + np.float64(2.0), + np.float64(3.0), + np.float64(3.0), + np.float64(4.0), + np.float64(4.0), + np.float64(4.0), + np.float64(5.0), + np.float64(12.0), + np.float64(16.0), + np.float64(16.0), + ] + assert obs_test_data["pressure"] == [ + None, + np.float64(979.0), + np.float64(925.0), + np.float64(920.0), + np.float64(850.0), + np.float64(804.0), + np.float64(700.0), + np.float64(657.0), + np.float64(589.0), + np.float64(532.0), + np.float64(502.0), + np.float64(500.0), + np.float64(486.0), + np.float64(453.0), + np.float64(400.0), + np.float64(389.0), + np.float64(300.0), + np.float64(279.0), + np.float64(250.0), + np.float64(200.0), + np.float64(150.0), + np.float64(100.0), + np.float64(70.0), + np.float64(50.0), + np.float64(42.8), + np.float64(30.0), + np.float64(28.6), + np.float64(23.6), + np.float64(20.0), + np.float64(10.0), + np.float64(8.3), + np.float64(7.0), + ] + assert obs_test_data["height"] == [ + np.float64(-147.0), + np.float64(18.0), + np.float64(457.52), + np.float64(499.3), + np.float64(1104.37), + np.float64(1524.61), + np.float64(2549.57), + np.float64(3007.24), + np.float64(3778.92), + np.float64(4478.66), + np.float64(4870.39), + np.float64(4897.17), + np.float64(5087.08), + np.float64(5555.64), + np.float64(6376.03), + np.float64(6557.76), + np.float64(8255.46), + np.float64(8734.15), + np.float64(9459.04), + np.float64(10927.67), + np.float64(12813.48), + np.float64(15444.08), + np.float64(17730.99), + np.float64(19871.62), + np.float64(20852.17), + np.float64(23087.89), + np.float64(23389.97), + np.float64(24595.06), + np.float64(25628.2), + np.float64(29993.38), + np.float64(31177.18), + None, + ] + + +def test_july_31_2024_0Z_data_diffs_with_legacy(): + """ + This test compares the data that has been imported to CB for the test prepbufr file + /opt/data/prepbufr_to_cb/input_files/242131200.gdas.t12z.prepbufr.nr + with the data that has been imported to MYSQL from the legacy system + for the same file. + + rejected stations - these are stations that have been determined to have bad data in the legacy system. + """ + mysql_db = setup_mysql_connection() + mysql_db_cursor = mysql_db.cursor() + stmnt_mysql = "select wmoid, press pressure, z height, t temperature, dp dewpoint, rh relative_humidity, wd wind_direction, ws wind_speed from ruc_ua_pb.RAOB where date = '2024-07-31' and hour = 0 order by wmoid, press;" + mysql_db_cursor.execute(stmnt_mysql) + mysql_result = mysql_db_cursor.fetchall() + + vx_ingest = VXIngest() + vx_ingest.credentials_file = os.environ["CREDENTIALS"] + vx_ingest.cb_credentials = vx_ingest.get_credentials(vx_ingest.load_spec) + vx_ingest.cb_credentials["collection"] = "RAOB" + vx_ingest.connect_cb() + cb_statement = "SELECT d.data FROM vxdata._default.RAOB AS d WHERE type='DD' AND subset='RAOB' AND docType='obs' AND subDocType = 'prepbufr' AND fcstValidISO = '2024-07-31T00:00:00Z';" + cb_result = list(vx_ingest.cluster.query(cb_statement)) + mysql_wmoid = 0 + mysql_pressure_pos = 1 + mysql_height_pos = 2 + mysql_temperature_pos = 3 + mysql_dewpoint_pos = 4 + mysql_relative_humidity_pos = 5 + mysql_wind_direction_pos = 6 + mysql_wind_speed_pos = 7 + mysql_row = np.nan + + press_tolerance = 1e-2 + height_tolerance = 20 + temperature_tolerance = 2 + dewpoint_tolerance = 25 + relative_humidity_tolerance = 15 + wind_speed_tolerance = 5 + wind_direction_tolerance = 50 + + height_stat = {"max": 0, "max_wmoid": ""} + temperature_stat = {"max": 0, "max_wmoid": ""} + dewpoint_stat = {"max": 0, "max_wmoid": ""} + relative_humidity_stat = {"max": 0, "max_wmoid": ""} + wind_speed_stat = {"max": 0, "max_wmoid": ""} + wind_direction_stat = {"max": 0, "max_wmoid": ""} + + rejected_stations = [ + 4270, + 42886, + 97686, + 57494, + 4202, + 76692, + 76458, + 24908, + 47158, + 4360, + 38064, + 42724, + 89571, + 27459, + 4320, + 32540, + 43128, + 23921, + 35671, + 7145, + 97072, + 89664, + 94995, + 94403, + 47945, + 40848, + 83746, + 89611, + 40856, + 41112, + 29839, + ] + # a couple of useful sample queries. + # MYSQL + # export w=41112;mysql --defaults-file=~/wolphin.cnf -A -B --execute "select press,z as height,t / 100 as temperature, ws / 100 as ws,wd from ruc_ua_pb.RAOB where date = '2024-07-31' and hour = 0 and wmoid = ${w} ORDER BY press DESC;" + # CB + # export w=29839;cbq -q -terse --no-ssl-verify -e 'https://adb-cb1.gsd.esrl.noaa.gov:18093' -u avid -p 'pwd_av!d' -s "SELECT d.data.[\"${w}\"].pressure,d.data.[\"${w}\"].height,d.data.[\"${w}\"].temperature,d.data.[\"${w}\"].wind_speed as ws, d.data.[\"${w}\"].wind_direction as wd FROM vxdata._default.RAOB AS d WHERE d.type='DD' AND d.subset='RAOB' AND d.docType='obs' AND d.subDocType = 'prepbufr' AND d.fcstValidISO = '2024-07-31T00:00:00Z' ORDER BY d.data.[\"${w}\"].pressure DESC;" | grep -v Disabling | jq -r '.[] | "\(.pressure) \(.height) \(.temperature) \(.ws) \(.wd)"' + + # 4270 GLM00004270 61.1667 -45.4167 34.0 MITTARFIK NARSARSUAQ + # 42886 INM00042886 21.9167 84.0833 228.0 JHARSIGUDA + # 97686 IDM00097686 -4.0667 138.9500 1660.0 WAMENA + # 57494 CHM00057494 30.6000 114.0500 24.0 WUHAN + # 04202 GLM00004202 76.5330 -68.7500 77.0 PITUFFIK + # MXM00076692 19.1500 -96.1333 19.0 HACIENDA YLANG YLANG VERACRUZ + # wmoid: 57494, pressure: 330 + # Height mismatch: 9058 != 8882.923562114107 +- 20 for wmoid 57494 and pressure 330 + # assert 9058 == 8882.923562114107 ± 2.0e+01 + # this station clearly chose the smaller of two type 120 records + # refer to /opt/data/prepbufr_to_cb/test_artifacts/57494...txt + # wmoid: 4202, pressure: 300 + # Height mismatch: 8890 != 8726.783020412973 +- 20 for wmoid 4202 and pressure 300 + # assert 8890 == 8726.783020412973 ± 2.0e+01 + # the other fields for p 290 to 320 are matching fairly closely + # most of the heights are missing + # refer to /opt/data/prepbufr_to_cb/test_artifacts/4202-120.txt + # appears to be interpolation issue + # max height diff: {'max': 107.80940556393762, 'max_wmoid': 76692, 'pressure': 40} + # wmoid: 76692, pressure: 40 + # Height mismatch: 22132 != 22239.809405563938 +- 20 for wmoid 76692 and pressure 40 + # assert 22132 == 22239.809405563938 ± 2.0e+01 + # data from ADPUPA appears to be invalid above 50mb + # max height diff: {'max': 106.04168884284445, 'max_wmoid': 76458, 'pressure': 20} + # wmoid: 76458, pressure: 20 + # Height mismatch: 26583 != 26689.041688842844 +- 20 for wmoid 76458 and pressure 20 + # assert 26583 == 26689.041688842844 ± 2.0e+01 + # these heights fail ... 20, 30, 40, 50, 60 + # close evaluation is simply showing significant differences in the height interpolation + # the temperatures are quite low, so the heights might be likely to be off + # interpolation uses specific humidity QOB but that isn't recorded in the mysql data + # so it isn't possible to compare the interpolation + # refer to /opt/data/prepbufr_to_cb/test_artifacts/76458-120.txt + + # max wind direction diff: {'max': 179, 'max_wmoid': 24908, 'pressure': 740} + # wmoid: 24908, pressure: 740 + # Wind Direction mismatch: 74 != 253 +- 50 for wmoid 24908 and pressure 740 + # assert 74 == 253 ± 5.0e+01 + # careful analysis shows the legacy interpolation is off + + # max height diff: {'max': 55.06061090946605, 'max_wmoid': 47158, 'pressure': 330} + # wmoid: 47158, pressure: 330 + # Height mismatch: 9130 != 9074.939389090534 +- 20 for wmoid 47158 and pressure 330 + # assert 9130 == 9074.939389090534 ± 2.0e+01 + # comparison failed + # Obtained: 9130 + # Expected: 9074.939389090534 ± 2.0e+01 + # Many heights are off by > 20m but not excessively so. It appears to be differences in the interpolation. + # very cold temperatures and mysql finds NULL for all MASS variables between 260 and 400 mb + # couchbase appears to interpolate all the variables. + # KSM00047158 35.1167 126.8000 12.5 GWANGJU AB + + # max height diff: {'max': 52.63402144591237, 'max_wmoid': 4360, 'pressure': 20} + # wmoid: 4360, pressure: 20 + # Height mismatch: 27223 != 27275.634021445912 +- 20 for wmoid 4360 and pressure 20 + # assert 27223 == 27275.634021445912 ± 2.0e+01 + # GLM00004360 65.6111 -37.6367 54.0 TASIILAQ (AMMASSALIK) + # It appears that mysql starts interpolating at 975mb, but the 975 mb height is disqualified by a PPC of 5 + # 24 RPS-0 P__EVENT 5.00000 0 0 0 27 28 0 26 + # 25 NUM-2 POB 975.100 14 1 0 28 0 29 27 + # 26 NUM-2 PQM 1.00000 5 0 0 29 0 30 27 + # 27 NUM-2 PPC 5.00000 5 0 0 30 0 31 27 + # CB interpolation starts at 981mb (the next pevent) + # 29 RPS-0 P__EVENT 5.00000 0 0 0 27 28 0 26 + # 30 NUM-2 POB 981.000 14 1 0 28 0 29 27 + # 31 NUM-2 PQM 2.00000 5 0 0 29 0 30 27 + # 32 NUM-2 PPC 1.00000 5 0 0 30 0 31 27 + + # max height diff: {'max': 51.20786728098392, 'max_wmoid': 38064, 'pressure': 60} + # wmoid: 38064, pressure: 60 + # Height mismatch: 20018 != 19966.792132719016 +- 20 for wmoid 38064 and pressure 60 + # assert 20018 == 19966.792132719016 ± 2.0e+01 + # The values are close at higher pressure but diverge above 300mb + # The temp above 300mb is very cold. + # This appears to be a difference in the height interpolation above 300mb. + # THe CB data is closer to the ADPUPA data above 300mb. + # KZM00038064 44.7667 65.5167 133.4 KYZYLORDA + + # wmoid: 42724, pressure: 300 + # Height mismatch: 9820 != 9776.214311540478 +- 20 for wmoid 42724 and pressure 300 + # assert 9820 == 9776.214311540478 ± 2.0e+01 + # max height diff: {'max': 43.785688459522135, 'max_wmoid': 42724, 'pressure': 300} + # INM00042724 23.8833 91.2500 16.0 AGARTALA + # on this balloon only the 300 mb height is off by more than 50 meters. It appears that the only reading that is really off is the DP + # CB + # 400 7614 -8.9 -55.9 0.9462 280 4.63 + # 300 9776 -22.7 **-64.7** 0.9708 205 2.5722 + # 250 11086 -31.7 -54.7 7.9622 260 27.2656 + # CB + # MYSQL + # 400 7613 -890 -5590 1 280 464 + # 300 9820 -2270 **-5039** 6 205 258 + # 250 11088 -3170 -5470 8 260 2730 + # In the ADPUPA data the DP is -64.7, but in the mysql data it is -5039 + # There must have been some anomaly in the MYSQL data. + + # max relative humidity diff: {'max': 66.36384739368668, 'max_wmoid': 89571, 'pressure': 530} + # wmoid: 89571, pressure: 530 + # Relative Humidity mismatch: 71 != 4.6361526063133125 +- 15 for wmoid 89571 and pressure 530 + # assert 71 == 4.6361526063133125 ± 1.5e+01 + # It turns out that the MYSQL data is missing the relative humidity and DP + # for this station between 450 and 260mb. This is throwing off the interpolation + # which depends on specific humidity. + + # max wind speed diff: {'max': 183.1566, 'max_wmoid': 27459, 'pressure': 850} + # wmoid: 27459, pressure: 850 + # Wind Speed mismatch: 38.07 != 221.2266 +- 5 for wmoid 27459 and pressure 850 + # assert 38.07 == 221.2266 ± 5.0e+00 + # This station is in general bad. only pressure level 850 is recorded. The rest are missing. + + # max wind speed diff: {'max': 145.9411, 'max_wmoid': 4320, 'pressure': 600} + # wmoid: 4320, pressure: 600 + # Wind Speed mismatch: 19.71 != 165.6511 +- 5 for wmoid 4320 and pressure 600 + # assert 19.71 == 165.6511 ± 5.0e+00 + # In the ADPUPA data there is a huge spike in wind speed at 600mb. The rest of the data is fairly close. + # The mysql data seems to miss the wind speed spike around 600mb. This is throwing off the interpolation + # for the wind speed. + + # max wind speed diff: {'max': 29.235699999999998, 'max_wmoid': 42123, 'pressure': 870} + # wmoid: 42123, pressure: 870 + # Wind Speed mismatch: 32.58 != 3.3443 +- 5 for wmoid 42123 and pressure 870 + # assert 32.58 == 3.3443 ± 5.0e+00 + # This station is in general bad. Only pressure levels 850 through 978 are recorded for MYSQL. The rest are missing. + # Couchbase interpolates the missing data for 1000mb through 1010mb but that is unreliable with little original data. + + # wmoid: 32540, pressure: 960 + # Wind Direction mismatch: 65 != 243 +- 50 for wmoid 32540 and pressure 960 + # assert 65 == 243 ± 5.0e+01 + # I think what is going on here is that the highest pressure in the raw data is 999 which does not quite reach the mandatory level of 1000mb. + # The mysql ingest appears to be using the 999 level data as the highest mandatory pressure level (1000) whereas the CB ingest uses + # the next level (990) as the highest pressure level. + # The interpolation is different because of this. + + # max wind direction diff: {'max': 175, 'max_wmoid': 43128, 'pressure': 440} + # wmoid: 43128, pressure: 440 + # Wind Direction mismatch: 107 != 282 +- 50 for wmoid 43128 and pressure 440 + # INM00043128 17.4500 78.4667 530.0 HYDERABAD AIRPORT + # assert 107 == 282 ± 5.0e+01 + # This is an interpolation difference that I cannot explain. + # the data is valid for the raw ADPUPA record. + # raw ADPUPA record mysql record CB record + # 491 190/~3.0 490 188/3 490 192/3 + # raw data then jumps to pressure 423mb + # 420 315/~0.5 420 72/2.7 420 330/0.8 + # Clearly the CB interpolation is closer but I don't have a reason why. + + # wmoid: 23921, pressure: 890 + # Wind Direction mismatch: 278 != 92 +- 50 for wmoid 23921 and pressure 890 + # assert 278 == 92 ± 5.0e+01 + # RSM00023921 60.6833 60.4500 93.0 IVDEL + # This is another case where the legacy mysql ingest is including the highest pressure level of 989mb and then interpolating + # the 980mb level on up. The CB ingest is using the 980mb level as the highest pressure level and giving null for 1010, 1000, and 990 + # which I think is correct. Many of the levels match but from about 440mb on up the mysql wind data diverges a lot from both the CB data + # and the raw ADPUPA data. I don't know why. + # refer to /opt/data/prepbufr_to_cb/test_artifacts/23921-typ220.txt for the raw data and use the following to compare: + # mysql: + # export wmoid=23921 + # mysql --defaults-file=~/wolphin.cnf -A -B --execute "select press,z,t,dp,rh,wd,ws from ruc_ua_pb.RAOB where date = '2024-07-31' and hour = 0 and wmoid = ${wmoid} and press order by press desc;" + # CB: + # export w=23921 + # cbq -no-ssl-verify -e 'https://adb-cb1.gsd.esrl.noaa.gov:18093' -u avid -p 'the_password' -s "SELECT d.data.[\"${w}\"] FROM vxdata._default.RAOB AS d WHERE d.type='DD' AND d.subset='RAOB' AND d.docType='obs' AND d.subDocType = 'prepbufr' AND d.fcstValidISO = '2024-07-31T00:00:00Z' ORDER BY data.[\"${w}\"].['pressure'] DESC;" | egrep 'pressure|wind_direction|wind_speed' + + # max wind direction diff: {'max': 174, 'max_wmoid': 35671, 'pressure': 40} + # wmoid: 35671, pressure: 40 + # Wind Direction mismatch: diff: 174 151 != 325 +- 50 for wmoid 35671 and pressure 40 + # assert 151 == 325 ± 5.0e+01 + # refer to /opt/data/prepbufr_to_cb/test_artifacts/35671-typ220.txt + # export wmoid=35671 + # mysql --defaults-file=~/wolphin.cnf -A -B --execute "select press,z,t,dp,rh,wd,ws from ruc_ua_pb.RAOB where date = '2024-07-31' and hour = 0 and wmoid = ${wmoid} and press in (850, 700, 500, 400, 300, 250, 200, 150, 100, 70, 50, 30) order by press desc;" + # and + # export w=35671 + # cbq -no-ssl-verify -e 'https://adb-cb1.gsd.esrl.noaa.gov:18093' -u avid -p 'pwd_av!d' -s "SELECT d.data.[\"${w}\"] FROM vxdata._default.RAOB AS d WHERE d.type='DD' AND d.subset='RAOB' AND d.docType='obs' AND d.subDocType = 'prepbufr' AND d.fcstValidISO = '2024-07-31T00:00:00Z' AND d.data.[\"${w}\"].pressure IN [850, 700, 500, 400, 300, 250, 200, 150, 100, 70, 50, 30] ORDER BY d.data.[\"${w}\"].pressure DESC;" | egrep "pressure|wind_direction|wind_speed" + # This limits the output to a select set of mandatory levels that exist in the 35671-typ220.txt file. All of those match except the mysql data excludes the 30mb level. + # However, removing the IN clause from both queries shows that the mysql non mandatory levels wildly diverge from the CB data and the data in the 35671-typ220.txt file. + # The mysql data is clearly wrong but I cannot determine what is wrong with the interpolation. + + # 07145 CAM00071450 51.1330 -106.5830 595.0 ELBOW CS + # This seems to be another case of a station with more than one record of each type. The mysql data is using the smaller of the two records. + # In this case both type 220 records have the same number of pressure levels (254) but they have much different wind data. CB chose one record + # and mysql chose the other. I do not know the mysql algorithm for choosing. + # export w=7145;mysql --defaults-file=~/wolphin.cnf -A -B --execute "select press,z,t,dp,rh,wd,ws from ruc_ua_pb.RAOB where date = '2024-07-31' and hour = 0 and wmoid = ${w};" + # export w=07145;cbq -q -terse --no-ssl-verify -e 'https://adb-cb1.gsd.esrl.noaa.gov:18093' -u avid -p 'pwd_av!d' -s "SELECT d.data.[\"${w}\"].pressure,d.data.[\"${w}\"].height FROM vxdata._default.RAOB AS d WHERE d.type='DD' AND d.subset='RAOB' AND d.docType='obs' AND d.subDocType = 'prepbufr' AND d.fcstValidISO = '2024-07-31T00:00:00Z' ORDER BY d.data.[\"${w}\"].pressure;" | grep -v Disabling | jq -r '.[] | "\(.pressure) \(.height)"' + + # 97072 IDM00097072 -0.6833 119.7333 6.0 PALU/MUTIARA + # This one is interesting. The mysql data is starting with a pressure of 1014mb with a height of 6m. The CB data is starting with 6m height at 1004mb. + # The Adpupa data clearly shows the 1014 pressure to be disqualified by a PPC of 5. The starting pressure should be 1004. + # I think the CB data is correct in this case. + # Since we are interpolating all of the heights every last height will be off. + # 23 DRS-1 [P__EVENT] 2.00000 8 0 0 26 27 32 25 + # 24 RPS-0 P__EVENT 5.00000 0 0 0 27 28 0 26 + # 25 NUM-2 POB 1014.00 14 1 0 28 0 29 27 + # 26 NUM-2 PQM 1.00000 5 0 0 29 0 30 27 + # 27 NUM-2 PPC 5.00000 5 0 0 30 0 31 27 + # 28 NUM-2 PRC 100.000 10 0 0 31 0 0 27 + # 29 RPS-0 P__EVENT 5.00000 0 0 0 27 28 0 26 + # 30 NUM-2 POB 1004.00 14 1 0 28 0 29 27 + # 31 NUM-2 PQM 2.00000 5 0 0 29 0 30 27 + # 32 NUM-2 PPC 1.00000 5 0 0 30 0 31 27 + # 33 NUM-2 PRC 100.000 + + # 89664 AYM00089664 -77.8500 166.6667 24.0 MCMURDO + # This station largely matches except for height values for levels above 300mb. + # The temperatures above 300mb for this station are very cold - less than -60 degrees C. + # The mysql interpolation is less accurate for cold temperatures. + + # 94995 ASM00094995 -31.5422 159.0786 5.2 LORD HOWE ISLAND AERO + # This station largely matches except for height values for levels above 300mb. + # The temperatures above 300mb for this station are very cold - less than -60 degrees C. + # The mysql interpolation is less accurate for cold temperatures. + + # 94403 ASM00094403 -28.8044 114.6989 36.9 GERALDTON AIRPORT + # This station largely matches except for height values for levels above 300mb. + # The temperatures above 300mb for this station are very cold - less than -60 degrees C. + # The mysql interpolation is less accurate for cold temperatures. + + # 47945 JAM00047945 25.8289 131.2286 15.3 MINAMIDAITOJIMA + # This is another station that has two records of each type. + # The mysql data is using the smaller of the two records. + # The CB data is using the larger of the two records. + + # 40848 IRM00040848 29.5333 52.6000 1484.0 SHIRAZ + # The mismatched wind speed at 830mb appears to be incorrect in the mysql data. + # The mysql data is missing all of the 500 mb through 700mb data except for 500mb and 700mb.The Adpupa data does appear to be in the file. + # mysql: CB: ADPUPA: (from /opt/data/prepbufr/test_artifacts/40848-typ220.text) + # 820 - 32 820 - 4.61 815 - 4.1 + # 830 - 18 830 - 5.6 836 - 6.17 + # 840 - 5 840 - 3.08 844 - 0.0 + # CB is definitely closer for the wind speed at 830mb. + # The mismatched wind direction is for all the readings from 410mb through 840mb. + # MYSQL CB ADPUPA + # Pres ws wd ws wd press ws wd + # 410 2.5200 237 2.0998 318 409 4 315 + # 420 2.9600 225 2.5141 344 + # 430 3.4000 213 2.9187 10 + # 440 3.8200 201 3.314 36 + # 450 4.2300 189 3.7004 60 + # 460 4.6400 178 4.0783 85 + # 470 5.0400 167 4.4481 108 475 4.63 120 + # 480 5.4300 156 5.0218 123 + # 490 5.8100 145 5.7934 128 495 6.17 130 + # 500 6.1800 135 6.1733 135 500 6.17 135.000 + # 700 2.0600 195 2.0578 195 700 2.06 195 + # 710 1.9000 208 1.564 212 + # 720 1.7500 220 1.0772 228 721 1.03 230 + # 730 1.6000 232 1.3027 182 + # 740 1.4500 244 1.7076 145 738 1.54 140 + # 750 1.3000 256 2.5226 169 + # 760 1.1500 268 3.0867 179 757 3.09 185 + # 770 1.0100 279 3.2468 167 + # 780 0.8700 290 3.4447 158 + # 790 0.7300 302 3.6703 150 788 3.6 150 + # 800 0.5900 313 4.0134 150 + # 810 0.4500 324 4.1156 168 + # 820 0.3200 335 4.6103 179 815 4.12 180 + # 830 0.1800 345 5.5907 176 + # 840 0.0500 356 3.0793 87 836 6.17 175 + # The wind direction values that are in the adpupa data more closely align with the CB data. + + # 83746 BRM00083746 -22.8167 -43.2500 6.0 GALEAO + # The mysql data for this station is missing the temperatures between 500mb and 700mb + # which corresponds to the mismatched height readings between 500mb and 700mb. If + # the temperatures are missing then the heights cannot be interpolated correctly. + # The CB data is interpolating the heights correctly. + + # 89611 AYM00089611 -66.2825 110.5231 40.0 CASEY + # adpupa dat is absent from 500mb to 700mb exclusive. The mysql data is missing the + # wind dta between 510mb and 690mb inclusive. The CB data is interpolating the wind + # data for these points according to the algorithm, but the mysql data is not. + # I don't see how it makes sense to interpolate the wind data but it seems that it + # should at least be consistent with the interpolation of the other variables. + # The mysql and CB data mismatch WD from 750mb through 800mb inclusive. The adpupa data + # has only data at 700mb and 783mb, and 813mb. The mysql data is reporting almost the + # same wind direction for all of the levels from 750mb through 800mb. The CB data is interpolating. + # The RH differs from 330mb through 370mb, but those are at very cold temperatures and the + # mysql algorithm is not as accurate at cold temps. + + # 40856 IRM00040856 29.4667 60.8833 1370.0 ZAHEDAN + # Another case where the adpupa data is scarce in the areas of the mismatch. + # The mismatch is WD from 750 through 830 inclusive. + # The adpupa data has these levels: + # 301 NUM-2 POB 824.000 + # 347 NUM-2 POB 815.000 + # 393 NUM-2 POB 787.000 + # 439 NUM-2 POB 761.000 + # 485 NUM-2 POB 700.000 + # 255 NUM-2 POB 831.000 + # The mysql data reports levels 510 through 690 as missing but the CB data interpolates them. + # Then from 750 through 830 the interpolation is simply different. + # The adpupa data is scant: + # POB DDO(WD) FFO(WS) + # 831.000 280.000 2.00000 + # 824.000 175.000 4.00000 + # 815.000 200.000 4.00000 + # 787.000 190.000 8.00000 + # 761.000 240.000 10.0000 + # 700.000 255.000 8.00000 + # press MYSQL-WD CB-WD + # 830 5 265 + # 820 357 186 + # 810 349 198 + # 800 341 195 + # 790 333 191 + # 780 325 203 + # 770 316 223 + # 760 308 240 + # 750 299 243 + # For what it is worth (not much) the CB wind interpolation is closer to the adpupa data. + + # 41112 29839 + # A cursory look at these stations show a similar pattern. + # The Mysql data is missing the wind data for 10 or 20 mid - levels approx 500mb to 700mb. + # This throws off the interpolation for MYSQL. CB interpolates the missing data, although for + # wind data this is almost meaningless. + + try: + for row in range(len(mysql_result)): + try: + mysql_row = mysql_result[row] + m_wmoid = mysql_row[mysql_wmoid] + if m_wmoid in rejected_stations: + continue + m_pressure = mysql_row[mysql_pressure_pos] + m_height = mysql_row[mysql_height_pos] + m_temperature = mysql_row[mysql_temperature_pos] + m_dewpoint = mysql_row[mysql_dewpoint_pos] + m_relative_humidity = mysql_row[mysql_relative_humidity_pos] + m_wind_direction = mysql_row[mysql_wind_direction_pos] + m_wind_speed = mysql_row[mysql_wind_speed_pos] + cb_data = np.nan + # if m_wmoid != 97686: + # continue + try: + for d in cb_result: + if ( + f"{m_wmoid:05}" in d["data"] + and d["data"][f"{m_wmoid:05}"]["pressure"] == m_pressure + ): + cb_data = d["data"][f"{m_wmoid:05}"] + break + if cb_data is np.nan: + continue + except KeyError: + continue + + cb_wmoid = cb_data["stationName"] + cb_pressure = cb_data["pressure"] + cb_height = cb_data["height"] + cb_temperature = cb_data["temperature"] + cb_dewpoint = cb_data["dewpoint"] + cb_relative_humidity = cb_data["relative_humidity"] + cb_wind_direction = cb_data["wind_direction"] + cb_wind_speed = cb_data["wind_speed"] + + assert f"{m_wmoid:05}" == cb_wmoid, ( + f"wmoid mismatch: {m_wmoid} != {cb_wmoid}" + ) + diff = abs(m_pressure - cb_pressure) + assert diff <= press_tolerance, ( + f"Pressure mismatch: diff: {diff} is not <= {press_tolerance} for wmoid {m_wmoid} and pressure {m_pressure}" + ) + + if ( + m_height is not np.nan + and cb_height is not np.nan + and m_height is not None + and cb_height is not None + ): + diff = abs(m_height - cb_height) + if diff > height_stat["max"]: + height_stat["max"] = diff + height_stat["max_wmoid"] = m_wmoid + height_stat["pressure"] = m_pressure + assert diff <= height_tolerance, ( + f"Height mismatch: diff: {diff} is not <= {height_tolerance} for wmoid {m_wmoid} and pressure {m_pressure}" + ) + + if ( + m_temperature is not np.nan + and cb_temperature is not np.nan + and m_temperature is not None + and cb_temperature is not None + ): + diff = abs(m_temperature / 100 - cb_temperature) + if diff > temperature_stat["max"]: + temperature_stat["max"] = diff + temperature_stat["max_wmoid"] = m_wmoid + temperature_stat["pressure"] = m_pressure + assert diff <= temperature_tolerance, ( + f"Temperature mismatch: diff: {diff} is not <= {temperature_tolerance} for wmoid {m_wmoid} and pressure {m_pressure}" + ) + + if ( + m_dewpoint is not np.nan + and cb_dewpoint is not np.nan + and m_dewpoint is not None + and cb_dewpoint is not None + ): + diff = abs(m_dewpoint / 100 - cb_dewpoint) + if diff > dewpoint_stat["max"]: + dewpoint_stat["max"] = diff + dewpoint_stat["max_wmoid"] = m_wmoid + dewpoint_stat["pressure"] = m_pressure + assert diff <= dewpoint_tolerance, ( + f"Dewpoint mismatch: diff: {diff} is not <= {dewpoint_tolerance} for wmoid {m_wmoid} and pressure {m_pressure}" + ) + + if ( + m_relative_humidity is not np.nan + and cb_relative_humidity is not np.nan + and m_relative_humidity is not None + and cb_relative_humidity is not None + ): + if m_relative_humidity is None or cb_relative_humidity is None: + continue + diff = abs(m_relative_humidity - cb_relative_humidity) + if diff > relative_humidity_stat["max"]: + relative_humidity_stat["max"] = diff + relative_humidity_stat["max_wmoid"] = m_wmoid + relative_humidity_stat["pressure"] = m_pressure + assert diff <= relative_humidity_tolerance, ( + f"Relative Humidity mismatch: diff: {diff} is not <= {relative_humidity_tolerance} for wmoid {m_wmoid} and pressure {m_pressure}" + ) + + if ( + m_wind_speed is not np.nan + and cb_wind_speed is not np.nan + and m_wind_speed is not None + and cb_wind_speed is not None + ): + # The legacy data has some 360 degree wind. This is a valid value, but it is equivalent to 0 + # also take care of floating point precision issues around 360 + diff = abs(m_wind_speed / 100 - cb_wind_speed) + if diff > wind_speed_stat["max"]: + wind_speed_stat["max"] = diff + wind_speed_stat["max_wmoid"] = m_wmoid + wind_speed_stat["pressure"] = m_pressure + assert diff <= wind_speed_tolerance, ( + f"Wind Speed mismatch: diff: {diff} is not <= {wind_speed_tolerance} for wmoid {m_wmoid} and pressure {m_pressure}" + ) + + if ( + m_wind_direction is not np.nan + and cb_wind_direction is not np.nan + and m_wind_direction is not None + and cb_wind_direction is not None + ): + m_wind_direction = round(m_wind_direction) % 360 + diff = m_wind_direction - cb_wind_direction + if diff > 180: + diff -= 360 + else: + if diff < -180: + diff += 360 + diff = abs(diff) + + if diff > wind_direction_stat["max"]: + wind_direction_stat["max"] = diff + wind_direction_stat["max_wmoid"] = m_wmoid + wind_direction_stat["pressure"] = m_pressure + assert diff <= wind_direction_tolerance, ( + f"Wind Direction mismatch: diff: {diff} is not <= {wind_direction_tolerance} for wmoid {m_wmoid} and pressure {m_pressure}" + ) + except Exception as _e: + print("--------------------") + print(f"wmoid: {m_wmoid}, pressure: {m_pressure}") + print(_e) + # raise _e + finally: + print(f"max height diff: {height_stat}") + print(f"max temperature diff: {temperature_stat}") + print(f"max dewpoint diff: {dewpoint_stat}") + print(f"max relative humidity diff: {relative_humidity_stat}") + print(f"max wind speed diff: {wind_speed_stat}") + print(f"max wind direction diff: {wind_direction_stat}") + + mysql_db_cursor.close() + mysql_db.close() + vx_ingest.cluster.close() diff --git a/tests/vxingest/prepbufr_to_cb/test_unit_queries_obs.py b/tests/vxingest/prepbufr_to_cb/test_unit_queries_obs.py new file mode 100644 index 00000000..11902c56 --- /dev/null +++ b/tests/vxingest/prepbufr_to_cb/test_unit_queries_obs.py @@ -0,0 +1,121 @@ +import os +from datetime import timedelta +from pathlib import Path + +import pytest +import yaml +from couchbase.auth import PasswordAuthenticator +from couchbase.cluster import Cluster +from couchbase.options import ClusterOptions, ClusterTimeoutOptions, QueryOptions + + +def connect_cb(): + """ + create a couchbase connection and maintain the collection and cluster objects. + """ + credentials_file = os.environ["CREDENTIALS"] + assert Path(credentials_file).is_file() is True, ( + f"*** credentials_file file {credentials_file} can not be found!" + ) + with Path(credentials_file).open(encoding="utf-8") as _f: + _yaml_data = yaml.load(_f, yaml.SafeLoader) + cb_connection = {} + cb_connection["host"] = _yaml_data["cb_host"] + cb_connection["user"] = _yaml_data["cb_user"] + cb_connection["password"] = _yaml_data["cb_password"] + cb_connection["bucket"] = _yaml_data["cb_bucket"] + cb_connection["collection"] = _yaml_data["cb_collection"] + cb_connection["scope"] = _yaml_data["cb_scope"] + + timeout_options = ClusterTimeoutOptions( + kv_timeout=timedelta(seconds=25), query_timeout=timedelta(seconds=120) + ) + options = ClusterOptions( + PasswordAuthenticator(cb_connection["user"], cb_connection["password"]), + timeout_options=timeout_options, + ) + cb_connection["cluster"] = Cluster(cb_connection["host"], options) + cb_connection["collection"] = ( + cb_connection["cluster"] + .bucket(cb_connection["bucket"]) + .collection(cb_connection["collection"]) + ) + return cb_connection + + +@pytest.mark.integration +def test_ingest_document_id(request): + _name = request.node.name + _expected_time = 0.005 + testdata = Path("tests/vxingest/netcdf_to_cb/testdata/test_ingest_document_id.n1ql") + with testdata.open(mode="r", encoding="utf-8") as file: + _statement = file.read() + result = connect_cb()["cluster"].query(_statement, QueryOptions(metrics=True)) + # have to read the rows before we can get to the metadata as of couchbase 4.1 + _rows = list(result.rows()) + metadata = result.metadata() + metrics = metadata.metrics() + elapsed_time = metrics.elapsed_time() + print(f"{_name}: elapsed_time is {elapsed_time}") + assert result is not None, "{_name}: result is None" + assert elapsed_time.total_seconds() < _expected_time, ( + f"{_name}: elasped_time greater than {_expected_time} {elapsed_time}" + ) + + +@pytest.mark.integration +def test_ingest_document_fields(request): + _name = request.node.name + _expected_time = 0.005 + testdata = Path( + "tests/vxingest/netcdf_to_cb/testdata/test_ingest_document_fields.n1ql" + ) + with testdata.open(mode="r", encoding="utf-8") as file: + _statement = file.read() + result = connect_cb()["cluster"].query(_statement, QueryOptions(metrics=True)) + # have to read the rows before we can get to the metadata as of couchbase 4.1 + _rows = list(result.rows()) + elapsed_time = result.metadata().metrics().elapsed_time().total_seconds() + print(f"{_name}: elapsed_time is {elapsed_time}") + assert result is not None, "{_name}: result is None" + assert elapsed_time < _expected_time, ( + f"{_name}: elasped_time greater than {_expected_time} {elapsed_time}" + ) + + +@pytest.mark.integration +def test_get_stations(request): + _name = request.node.name + _expected_time = 0.01 + testdata = Path("tests/vxingest/netcdf_to_cb/testdata/test_get_stations.n1ql") + with testdata.open(mode="r", encoding="utf-8") as file: + _statement = file.read() + result = connect_cb()["cluster"].query(_statement, QueryOptions(metrics=True)) + # have to read the rows before we can get to the metadata as of couchbase 4.1 + _rows = list(result.rows()) + elapsed_time = result.metadata().metrics().elapsed_time().total_seconds() + print(f"{_name}: elapsed_time is {elapsed_time}") + assert result is not None, "{_name}: result is None" + assert elapsed_time < _expected_time, ( + f"{_name}: elasped_time greater than {_expected_time} {elapsed_time}" + ) + + +@pytest.mark.integration +def test_get_obs_by_fcst_valid_epoch(request): + _name = request.node.name + _expected_time = 1 + testdata = Path( + "tests/vxingest/netcdf_to_cb/testdata/test_get_obs_by_fcstValidEpoch.n1ql" + ) + with testdata.open(mode="r", encoding="utf-8") as file: + _statement = file.read() + result = connect_cb()["cluster"].query(_statement, QueryOptions(metrics=True)) + # have to read the rows before we can get to the metadata as of couchbase 4.1 + _rows = list(result.rows()) + elapsed_time = result.metadata().metrics().elapsed_time().total_seconds() + print(f"{_name}: elapsed_time is {elapsed_time}") + assert result is not None, "{_name}: result is None" + assert elapsed_time < _expected_time, ( + f"{_name}: elasped_time greater than {_expected_time} {elapsed_time}" + ) diff --git a/tests/vxingest/prepbufr_to_cb/testdata/ingest.json b/tests/vxingest/prepbufr_to_cb/testdata/ingest.json new file mode 100644 index 00000000..74cb3a47 --- /dev/null +++ b/tests/vxingest/prepbufr_to_cb/testdata/ingest.json @@ -0,0 +1,50 @@ +{ + "type": "MD", + "version": "V01", + "builder_type": "PrepbufrRaobsObsBuilderV01", + "docType": "ingest", + "subDocType": "prepbufr", + "id": "MD:V01:RAOB:obs:ingest:prepbufr", + "subType": "obs", + "subset": "RAOB", + "mnemonic_mapping": "MD:V01:RAOB:ingest:mnemonic_mapping:prepbufr", + "template": { + "data": { + "*stationName": { + "temperature": "&kelvin_to_fahrenheit|*temperature", + "dewpoint": "&kelvin_to_fahrenheit|*dewpoint", + "relative_humidity": "*relative_humidity", + "specific_humidity": "*specific_humidity", + "pressure": "*pressure", + "height": "*height", + "wind_speed": "&meterspersecond_to_milesperhour|*wind_speed", + "U-Wind": "&meterspersecond_to_milesperhour|*U-wind", + "V-Wind": "&meterspersecond_to_milesperhour|*V-wind", + "wind_direction": "*wind_direction", + "name": "&handle_station|*stationName" + } + }, + "units": { + "temperature": "deg F", + "dewpoint": "deg F", + "relative_humidity": "percent", + "specific_humidity": "m/kg", + "pressure": "mb", + "height": "meters", + "wind_speed": "mph", + "U-Wind": "mph", + "V-Wind": "mph", + "wind_direction": "degrees" + }, + "level": "*level", + "dataSourceId": "GDAS", + "docType": "obs", + "subDocType": "prepbufr", + "fcstValidISO": "&get_valid_time_iso", + "fcstValidEpoch": "&get_valid_time_epoch", + "id": "DD:V01:RAOB:obs:prepbufr:*level:&get_valid_time_epoch", + "subset": "RAOB", + "type": "DD", + "version": "V01" + } +} \ No newline at end of file diff --git a/tests/vxingest/prepbufr_to_cb/testdata/job.json b/tests/vxingest/prepbufr_to_cb/testdata/job.json new file mode 100644 index 00000000..aab51302 --- /dev/null +++ b/tests/vxingest/prepbufr_to_cb/testdata/job.json @@ -0,0 +1,17 @@ +{ + "file_mask": "%y%j%H00.gdas.t%Hz.prepbufr.nr", + "id": "JOB:V01:RAOB:PREPBUFR:OBS", + "ingest_document_ids": [ + "MD:V01:RAOB:obs:ingest:prepbufr" + ], + "input_data_path": "/public/data/grids/gdas/prepbufr/restricted", + "offset_minutes": 0, + "run_priority": 1, + "schedule": "0 * * * *", + "status": "active", + "subDoc": "OBS", + "subType": "PREPBUFR", + "subset": "RAOB", + "type": "JOB", + "version": "V01" +} \ No newline at end of file diff --git a/tests/vxingest/prepbufr_to_cb/testdata/prepbufr_raob_template.json b/tests/vxingest/prepbufr_to_cb/testdata/prepbufr_raob_template.json new file mode 100644 index 00000000..a27b15b3 --- /dev/null +++ b/tests/vxingest/prepbufr_to_cb/testdata/prepbufr_raob_template.json @@ -0,0 +1,144 @@ +{ + "type": "MD", + "subset": "RAOB", + "version": "V01", + "docType": "ingest_mapping", + "subDocType": "prepbufr", + "subType": "obs", + "dataSourceId": "GDAS", + "bufr_msg_type": "ADPUPA", + "bufr_report_types": [ + 120, + 220 + ], + "id": "MD:V01:RAOB:ingest:mnemonic_mapping:prepbufr", + "header": { + "station_id": { + "mnemonic": "SID", + "intent": "str" + }, + "lon": { + "mnemonic": "XOB", + "intent": "float" + }, + "lat": { + "mnemonic": "YOB", + "intent": "float" + }, + "obs-cycle_time": { + "mnemonic": "DHR", + "intent": "float" + }, + "elevation": { + "mnemonic": "ELV", + "intent": "float" + }, + "data_dump_report_type": { + "TYP": 220, + "mnemonic": "T29", + "intent": "int" + }, + "report_type": { + "mnemonic": "TYP", + "intent": "int" + } + }, + "q_marker": { + "pressure_q_marker": { + "mnemonic": "PQM", + "intent": "int" + }, + "specific_humidity_q_marker": { + "mnemonic": "QQM", + "intent": "int" + }, + "temperature_q_marker": { + "mnemonic": "TQM", + "intent": "int" + }, + "height_q_marker": { + "mnemonic": "ZQM", + "intent": "int" + }, + "u_v_wind_q_marker": { + "mnemonic": "WQM", + "intent": "int" + }, + "wind_speed_q_marker": { + "mnemonic": "SOB", + "intent": "int" + }, + "wind_direction_q_marker": { + "mnemonic": "DFP", + "intent": "int" + }, + "u_v_component_wind_q_marker": { + "mnemonic": "WPC", + "intent": "int" + } + }, + "obs_err": { + "pressure_obs_err": { + "mnemonic": "POE", + "intent": "float" + }, + "height_obs_err": { + "mnemonic": "ZOE", + "intent": "float" + }, + "relative_humidity_obs_err": { + "mnemonic": "QOE", + "intent": "float" + }, + "temperature_obs_err": { + "mnemonic": "TOE", + "intent": "float" + }, + "winds_obs_err": { + "mnemonic": "WOE", + "intent": "float" + } + }, + "obs_data": { + "temperature": { + "mnemonic": "TOB", + "intent": "float" + }, + "dewpoint": { + "mnemonic": "TDO", + "intent": "float" + }, + "rh": { + "mnemonic": "RHO", + "intent": "float" + }, + "specific_humidity": { + "mnemonic": "QOB", + "intent": "float" + }, + "pressure": { + "mnemonic": "POB", + "intent": "float" + }, + "height": { + "mnemonic": "ZOB", + "intent": "float" + }, + "wind_speed": { + "mnemonic": "FFO", + "intent": "float" + }, + "U-Wind": { + "mnemonic": "UOB", + "intent": "float" + }, + "V-Wind": { + "mnemonic": "VOB", + "intent": "float" + }, + "wind_direction": { + "mnemonic": "DDO", + "intent": "float" + } + } +} \ No newline at end of file diff --git a/tests/vxingest/prepbufr_to_cb/testdata/stations.json b/tests/vxingest/prepbufr_to_cb/testdata/stations.json new file mode 100644 index 00000000..56e10e1a --- /dev/null +++ b/tests/vxingest/prepbufr_to_cb/testdata/stations.json @@ -0,0 +1,17191 @@ +[ +{ + "id": "MD:V01:RAOB:station:70398", + "wmoid": 70398, + "name": "ANN", + "geo": [ + { + "lat": 55.03, + "lon": -131.57, + "elev": 37, + "firstTime": 1257145200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ANNETTE ISLAND", + "near_airport": "", + "gps_date": "2009-11-02", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71109", + "wmoid": 71109, + "name": "YZT", + "geo": [ + { + "lat": 50.68, + "lon": -127.37, + "elev": 17, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PORT HARDY", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71119", + "wmoid": 71119, + "name": "WSE", + "geo": [ + { + "lat": 53.55, + "lon": -114.1, + "elev": 766, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "EDMONTON/STONY PLAIN", + "near_airport": "CYEG", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71203", + "wmoid": 71203, + "name": "YLW", + "geo": [ + { + "lat": 49.97, + "lon": -119.38, + "elev": 454, + "firstTime": 0, + "lastTime": 1498888800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KELOWNA APT", + "near_airport": "", + "gps_date": "", + "updateTime": "2017-07-01 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71603", + "wmoid": 71603, + "name": "WQI", + "geo": [ + { + "lat": 43.87, + "lon": -66.05, + "elev": 9, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YARMOUTH", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71625", + "wmoid": 71625, + "name": "YWA", + "geo": [ + { + "lat": 45.95, + "lon": -77.32, + "elev": 130, + "firstTime": 0, + "lastTime": 0, + "updateTime": 0 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PETAWAWA/ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "" +} , +{ + "id": "MD:V01:RAOB:station:71722", + "wmoid": 71722, + "name": "YMW", + "geo": [ + { + "lat": 46.38, + "lon": -75.97, + "elev": 170, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MANIWAKI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71811", + "wmoid": 71811, + "name": "YZV", + "geo": [ + { + "lat": 50.22, + "lon": -66.27, + "elev": 52, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SEPT ILES (UA)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71816", + "wmoid": 71816, + "name": "YYR", + "geo": [ + { + "lat": 53.3, + "lon": -60.37, + "elev": 36, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GOOSE/GOOSE BAY", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71823", + "wmoid": 71823, + "name": "YAH", + "geo": [ + { + "lat": 53.75, + "lon": -73.67, + "elev": 307, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LA GRANDE IV", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71836", + "wmoid": 71836, + "name": "YMO", + "geo": [ + { + "lat": 51.27, + "lon": -80.65, + "elev": 10, + "firstTime": 0, + "lastTime": 1680285600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MOOSONEE", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-03-31 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71845", + "wmoid": 71845, + "name": "WPL", + "geo": [ + { + "lat": 51.47, + "lon": -90.2, + "elev": 386, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PICKLE LAKE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71867", + "wmoid": 71867, + "name": "YQD", + "geo": [ + { + "lat": 53.97, + "lon": -101.1, + "elev": 273, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "THE PAS", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71908", + "wmoid": 71908, + "name": "ZXS", + "geo": [ + { + "lat": 53.9, + "lon": -122.8, + "elev": 601, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PRINCE GEORGE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72201", + "wmoid": 72201, + "name": "EYW", + "geo": [ + { + "lat": 24.55, + "lon": -81.75, + "elev": 1, + "firstTime": 1340690400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KEY WEST INT AP", + "near_airport": "", + "gps_date": "2012-06-26", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72202", + "wmoid": 72202, + "name": "MFL", + "geo": [ + { + "lat": 25.75, + "lon": -80.38, + "elev": 4, + "firstTime": 1178517600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MIAMI/FL INTL UNIV", + "near_airport": "MIA", + "gps_date": "2007-05-07", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72206", + "wmoid": 72206, + "name": "JAX", + "geo": [ + { + "lat": 30.43, + "lon": -81.7, + "elev": 10, + "firstTime": 1168844400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JACKSONVILLE", + "near_airport": "", + "gps_date": "2007-01-15", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72208", + "wmoid": 72208, + "name": "CHS", + "geo": [ + { + "lat": 32.9, + "lon": -80.03, + "elev": 15, + "firstTime": 1214200800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHARLESTON", + "near_airport": "", + "gps_date": "2008-06-23", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72210", + "wmoid": 72210, + "name": "TBW", + "geo": [ + { + "lat": 27.7, + "lon": -82.4, + "elev": 13, + "firstTime": 1174888800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TAMPA BAY/RUSKIN", + "near_airport": "TPA", + "gps_date": "2007-03-26", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72214", + "wmoid": 72214, + "name": "TLH", + "geo": [ + { + "lat": 30.45, + "lon": -84.3, + "elev": 52, + "firstTime": 1142233200, + "lastTime": 1713722400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TALLAHASEE", + "near_airport": "", + "gps_date": "2006-03-13", + "updateTime": "2024-04-21 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72215", + "wmoid": 72215, + "name": "FFC", + "geo": [ + { + "lat": 33.35, + "lon": -84.56, + "elev": 246, + "firstTime": 1208757600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PEACHTREE CITY", + "near_airport": "ATL", + "gps_date": "2008-04-21", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72230", + "wmoid": 72230, + "name": "BMX", + "geo": [ + { + "lat": 33.1, + "lon": -86.7, + "elev": 178, + "firstTime": 1173679200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BIRMINGHAM (SHELBY APT)", + "near_airport": "", + "gps_date": "2007-03-12", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72233", + "wmoid": 72233, + "name": "SIL", + "geo": [ + { + "lat": 30.34, + "lon": -89.83, + "elev": 10, + "firstTime": 1204527600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SLIDELL", + "near_airport": "MSY", + "gps_date": "2008-03-03", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72235", + "wmoid": 72235, + "name": "JAN", + "geo": [ + { + "lat": 32.32, + "lon": -90.07, + "elev": 91, + "firstTime": 1142578800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JACKSON/THOMPSON FLD", + "near_airport": "", + "gps_date": "2006-03-17", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72240", + "wmoid": 72240, + "name": "LCH", + "geo": [ + { + "lat": 30.12, + "lon": -93.22, + "elev": 5, + "firstTime": 1206597600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LAKE CHARLES", + "near_airport": "", + "gps_date": "2008-03-27", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72248", + "wmoid": 72248, + "name": "SHV", + "geo": [ + { + "lat": 32.45, + "lon": -93.84, + "elev": 85, + "firstTime": 1144648800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SHREVEPORT REGIONAL AP", + "near_airport": "", + "gps_date": "2006-04-10", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72249", + "wmoid": 72249, + "name": "FWD", + "geo": [ + { + "lat": 32.8, + "lon": -97.3, + "elev": 196, + "firstTime": 1197270000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FT WORTH", + "near_airport": "DFW", + "gps_date": "2007-12-10", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72250", + "wmoid": 72250, + "name": "BRO", + "geo": [ + { + "lat": 25.92, + "lon": -97.42, + "elev": 7, + "firstTime": 1235977200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BROWNSVILLE", + "near_airport": "", + "gps_date": "2009-03-02", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72251", + "wmoid": 72251, + "name": "CRP", + "geo": [ + { + "lat": 27.77, + "lon": -97.5, + "elev": 14, + "firstTime": 1128405600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CORPUS CHRISTI", + "near_airport": "", + "gps_date": "2005-10-04", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72261", + "wmoid": 72261, + "name": "DRT", + "geo": [ + { + "lat": 29.37, + "lon": -100.92, + "elev": 313, + "firstTime": 1212991200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DEL RIO", + "near_airport": "", + "gps_date": "2008-06-09", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72265", + "wmoid": 72265, + "name": "MAF", + "geo": [ + { + "lat": 31.93, + "lon": -102.2, + "elev": 873, + "firstTime": 1145858400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MIDLAND", + "near_airport": "", + "gps_date": "2006-04-24", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72274", + "wmoid": 72274, + "name": "TWC", + "geo": [ + { + "lat": 32.23, + "lon": -110.96, + "elev": 753, + "firstTime": 1180936800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TUSCON", + "near_airport": "", + "gps_date": "2007-06-04", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72293", + "wmoid": 72293, + "name": "NKX", + "geo": [ + { + "lat": 32.85, + "lon": -117.12, + "elev": 134, + "firstTime": 1272866400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MIRAMAR NAS", + "near_airport": "SAN", + "gps_date": "2010-05-03", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72305", + "wmoid": 72305, + "name": "MHX", + "geo": [ + { + "lat": 34.7, + "lon": -76.8, + "elev": 11, + "firstTime": 1170054000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MOREHEAD CITY/NEWPORT", + "near_airport": "", + "gps_date": "2007-01-29", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72317", + "wmoid": 72317, + "name": "GSO", + "geo": [ + { + "lat": 36.08, + "lon": -79.95, + "elev": 277, + "firstTime": 1171263600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GREENSBORO", + "near_airport": "", + "gps_date": "2007-02-12", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72318", + "wmoid": 72318, + "name": "RNK", + "geo": [ + { + "lat": 37.2, + "lon": -80.41, + "elev": 648, + "firstTime": 1172473200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ROANOKE/BLACKSBURG", + "near_airport": "", + "gps_date": "2007-02-26", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72327", + "wmoid": 72327, + "name": "BNA", + "geo": [ + { + "lat": 36.25, + "lon": -86.57, + "elev": 180, + "firstTime": 1179727200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NASHVILLE", + "near_airport": "", + "gps_date": "2007-05-21", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72340", + "wmoid": 72340, + "name": "LZK", + "geo": [ + { + "lat": 34.83, + "lon": -92.27, + "elev": 172, + "firstTime": 1207548000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "N LITTLE ROCK", + "near_airport": "", + "gps_date": "2008-04-07", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72355", + "wmoid": 72355, + "name": "FSI", + "geo": [ + { + "lat": 34.65, + "lon": -98.4, + "elev": 362, + "firstTime": 0, + "lastTime": 1231786800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FORT SILL", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-01-12 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72357", + "wmoid": 72357, + "name": "OUN", + "geo": [ + { + "lat": 35.23, + "lon": -97.47, + "elev": 362, + "firstTime": 1163401200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NORMAN", + "near_airport": "", + "gps_date": "2006-11-13", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72363", + "wmoid": 72363, + "name": "AMA", + "geo": [ + { + "lat": 35.23, + "lon": -101.7, + "elev": 1095, + "firstTime": 1147068000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AMARILLO", + "near_airport": "", + "gps_date": "2006-05-08", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72364", + "wmoid": 72364, + "name": "EPZ", + "geo": [ + { + "lat": 31.9, + "lon": -106.7, + "elev": 1257, + "firstTime": 1362121200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SANTA TERESA", + "near_airport": "ELP", + "gps_date": "2013-03-01", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72365", + "wmoid": 72365, + "name": "ABQ", + "geo": [ + { + "lat": 35.05, + "lon": -106.62, + "elev": 1619, + "firstTime": 1211176800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALBUQUERQUE", + "near_airport": "", + "gps_date": "2008-05-19", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72376", + "wmoid": 72376, + "name": "FGZ", + "geo": [ + { + "lat": 35.23, + "lon": -111.82, + "elev": 2179, + "firstTime": 1150696800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FLAGSTAFF/BELLEMT (ARMY)", + "near_airport": "", + "gps_date": "2006-06-19", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72387", + "wmoid": 72387, + "name": "DRA", + "geo": [ + { + "lat": 36.62, + "lon": -116.02, + "elev": 1007, + "firstTime": 0, + "lastTime": 1290819600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DESERT ROCK/MERCURY", + "near_airport": "", + "gps_date": "", + "updateTime": "2010-11-26 18:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72393", + "wmoid": 72393, + "name": "VBG", + "geo": [ + { + "lat": 34.75, + "lon": -120.57, + "elev": 100, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VANDENBERG", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72402", + "wmoid": 72402, + "name": "WAL", + "geo": [ + { + "lat": 37.93, + "lon": -75.48, + "elev": 13, + "firstTime": 1265698800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WALLOPS ISLAND", + "near_airport": "", + "gps_date": "2010-02-09", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72403", + "wmoid": 72403, + "name": "IAD", + "geo": [ + { + "lat": 38.98, + "lon": -77.49, + "elev": 88, + "firstTime": 1122876000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "STERLING(WASH DULLES)", + "near_airport": "IAD", + "gps_date": "2005-08-01", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72426", + "wmoid": 72426, + "name": "ILN", + "geo": [ + { + "lat": 39.42, + "lon": -83.82, + "elev": 317, + "firstTime": 1176098400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WILMINGTON", + "near_airport": "", + "gps_date": "2007-04-09", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72440", + "wmoid": 72440, + "name": "SGF", + "geo": [ + { + "lat": 37.23, + "lon": -93.4, + "elev": 394, + "firstTime": 1186984800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SPRINGFIELD REGIONAL AP", + "near_airport": "", + "gps_date": "2007-08-13", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72456", + "wmoid": 72456, + "name": "TOP", + "geo": [ + { + "lat": 39.07, + "lon": -95.63, + "elev": 268, + "firstTime": 1238997600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TOPEKA", + "near_airport": "MKC", + "gps_date": "2009-04-06", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72469", + "wmoid": 72469, + "name": "DNR", + "geo": [ + { + "lat": 39.77, + "lon": -104.87, + "elev": 1611, + "firstTime": 1225087200, + "lastTime": 1657346400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DENVER/STAPLETON ARPT", + "near_airport": "DEN", + "gps_date": "2008-10-27", + "updateTime": "2022-07-09 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72476", + "wmoid": 72476, + "name": "GJT", + "geo": [ + { + "lat": 39.12, + "lon": -108.53, + "elev": 1472, + "firstTime": 1158559200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GRAND JUNCTION", + "near_airport": "", + "gps_date": "2006-09-18", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72489", + "wmoid": 72489, + "name": "REV", + "geo": [ + { + "lat": 39.57, + "lon": -119.8, + "elev": 1516, + "firstTime": 1151906400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "RENO", + "near_airport": "", + "gps_date": "2006-07-03", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72493", + "wmoid": 72493, + "name": "OAK", + "geo": [ + { + "lat": 37.74, + "lon": -122.22, + "elev": 2, + "firstTime": 1234162800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OAKLAND INT AP", + "near_airport": "OAK", + "gps_date": "2009-02-09", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72501", + "wmoid": 72501, + "name": "OKX", + "geo": [ + { + "lat": 40.87, + "lon": -72.87, + "elev": 20, + "firstTime": 1245650400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BROOKHAVEN", + "near_airport": "ISP", + "gps_date": "2009-06-22", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72518", + "wmoid": 72518, + "name": "ALY", + "geo": [ + { + "lat": 42.69, + "lon": -73.83, + "elev": 94, + "firstTime": 1270879200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALBANY", + "near_airport": "", + "gps_date": "2010-04-10", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72520", + "wmoid": 72520, + "name": "PIT", + "geo": [ + { + "lat": 40.53, + "lon": -80.23, + "elev": 360, + "firstTime": 1243576800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PITTSBURGH/MOON TOWNSHIP", + "near_airport": "", + "gps_date": "2009-05-29", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72528", + "wmoid": 72528, + "name": "BUF", + "geo": [ + { + "lat": 42.93, + "lon": -78.73, + "elev": 218, + "firstTime": 1160978400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BUFFALO/GRTR ARPT", + "near_airport": "", + "gps_date": "2006-10-16", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72558", + "wmoid": 72558, + "name": "OAX", + "geo": [ + { + "lat": 41.32, + "lon": -96.37, + "elev": 350, + "firstTime": 1190613600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OMAHA/VALLEY", + "near_airport": "", + "gps_date": "2007-09-24", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72562", + "wmoid": 72562, + "name": "LBF", + "geo": [ + { + "lat": 41.13, + "lon": -100.68, + "elev": 847, + "firstTime": 1189404000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NORTH PLATTE", + "near_airport": "", + "gps_date": "2007-09-10", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72572", + "wmoid": 72572, + "name": "SLC", + "geo": [ + { + "lat": 40.77, + "lon": -111.97, + "elev": 1288, + "firstTime": 1127196000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SALT LAKE CITY", + "near_airport": "", + "gps_date": "2005-09-20", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72582", + "wmoid": 72582, + "name": "LKN", + "geo": [ + { + "lat": 40.87, + "lon": -115.73, + "elev": 1608, + "firstTime": 1182146400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ELKO", + "near_airport": "", + "gps_date": "2007-06-18", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72597", + "wmoid": 72597, + "name": "MFR", + "geo": [ + { + "lat": 42.38, + "lon": -122.88, + "elev": 398, + "firstTime": 1237183200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MEDFORD", + "near_airport": "", + "gps_date": "2009-03-16", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72632", + "wmoid": 72632, + "name": "DTX", + "geo": [ + { + "lat": 42.7, + "lon": -83.47, + "elev": 329, + "firstTime": 1242021600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DETROIT/PONTIAC", + "near_airport": "DTW", + "gps_date": "2009-05-11", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72634", + "wmoid": 72634, + "name": "APX", + "geo": [ + { + "lat": 44.55, + "lon": -84.43, + "elev": 448, + "firstTime": 1188194400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GAYLORD / ALPENA", + "near_airport": "", + "gps_date": "2007-08-27", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72645", + "wmoid": 72645, + "name": "GRB", + "geo": [ + { + "lat": 44.5, + "lon": -88.11, + "elev": 209, + "firstTime": 1223964000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GREEN BAY", + "near_airport": "ATW", + "gps_date": "2008-10-14", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72649", + "wmoid": 72649, + "name": "MPX", + "geo": [ + { + "lat": 44.83, + "lon": -93.55, + "elev": 287, + "firstTime": 1126072800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MINNEAPOLIS", + "near_airport": "MSP", + "gps_date": "2005-09-07", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72659", + "wmoid": 72659, + "name": "ABR", + "geo": [ + { + "lat": 45.45, + "lon": -98.42, + "elev": 397, + "firstTime": 1154930400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ABERDEEN", + "near_airport": "", + "gps_date": "2006-08-07", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72662", + "wmoid": 72662, + "name": "UNR", + "geo": [ + { + "lat": 44.07, + "lon": -103.21, + "elev": 1037, + "firstTime": 1153720800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "RAPID CITY", + "near_airport": "", + "gps_date": "2006-07-24", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72672", + "wmoid": 72672, + "name": "RIW", + "geo": [ + { + "lat": 43.06, + "lon": -108.47, + "elev": 1688, + "firstTime": 1157436000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "RIVERTON", + "near_airport": "", + "gps_date": "2006-09-05", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72681", + "wmoid": 72681, + "name": "BOI", + "geo": [ + { + "lat": 43.57, + "lon": -116.22, + "elev": 871, + "firstTime": 1161928800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BOISE", + "near_airport": "", + "gps_date": "2006-10-27", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72694", + "wmoid": 72694, + "name": "SLE", + "geo": [ + { + "lat": 44.92, + "lon": -123.02, + "elev": 61, + "firstTime": 1183356000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SALEM", + "near_airport": "PDX", + "gps_date": "2007-07-02", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72712", + "wmoid": 72712, + "name": "CAR", + "geo": [ + { + "lat": 46.87, + "lon": -68.02, + "elev": 191, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CARIBOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72747", + "wmoid": 72747, + "name": "INL", + "geo": [ + { + "lat": 48.57, + "lon": -93.38, + "elev": 359, + "firstTime": 1243231200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "INTERNATIONAL FALLS", + "near_airport": "", + "gps_date": "2009-05-25", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72764", + "wmoid": 72764, + "name": "BIS", + "geo": [ + { + "lat": 46.77, + "lon": -100.75, + "elev": 503, + "firstTime": 1156140000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BISMARCK", + "near_airport": "", + "gps_date": "2006-08-21", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72768", + "wmoid": 72768, + "name": "GGW", + "geo": [ + { + "lat": 48.2, + "lon": -106.62, + "elev": 693, + "firstTime": 1184565600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GLASGOW", + "near_airport": "", + "gps_date": "2007-07-16", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72776", + "wmoid": 72776, + "name": "TFX", + "geo": [ + { + "lat": 47.45, + "lon": -111.38, + "elev": 1130, + "firstTime": 1364796000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GREAT FALLS", + "near_airport": "", + "gps_date": "2013-04-01", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72786", + "wmoid": 72786, + "name": "OTX", + "geo": [ + { + "lat": 47.68, + "lon": -117.63, + "elev": 728, + "firstTime": 1148277600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SPOKANE INTNL APT", + "near_airport": "GEG", + "gps_date": "2006-05-22", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72797", + "wmoid": 72797, + "name": "UIL", + "geo": [ + { + "lat": 47.95, + "lon": -124.55, + "elev": 56, + "firstTime": 1193032800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "QUILLAYUTE", + "near_airport": "", + "gps_date": "2007-10-22", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:74389", + "wmoid": 74389, + "name": "GYX", + "geo": [ + { + "lat": 43.89, + "lon": -70.25, + "elev": 125, + "firstTime": 1159768800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GRAY", + "near_airport": "", + "gps_date": "2006-10-02", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:74455", + "wmoid": 74455, + "name": "DVN", + "geo": [ + { + "lat": 41.61, + "lon": -90.58, + "elev": 230, + "firstTime": 1194246000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DAVENPORT MUNICIPAL AP", + "near_airport": "MLI", + "gps_date": "2007-11-05", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:74494", + "wmoid": 74494, + "name": "CHH", + "geo": [ + { + "lat": 41.66, + "lon": -69.96, + "elev": 15, + "firstTime": 1240812000, + "lastTime": 1617213600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHATHAM", + "near_airport": "", + "gps_date": "2009-04-27", + "updateTime": "2021-03-31 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:74560", + "wmoid": 74560, + "name": "ILX", + "geo": [ + { + "lat": 40.15, + "lon": -89.33, + "elev": 178, + "firstTime": 1185775200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LINCOLN-LOGAN COUNTY AP", + "near_airport": "BMI", + "gps_date": "2007-07-30", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:74646", + "wmoid": 74646, + "name": "LMN", + "geo": [ + { + "lat": 36.68, + "lon": -97.47, + "elev": 306, + "firstTime": 0, + "lastTime": 1713355200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SULPHUR MUNICIPAL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-17 06:00:00" +} , +{ + "id": "MD:V01:RAOB:station:74794", + "wmoid": 74794, + "name": "XMR", + "geo": [ + { + "lat": 28.48, + "lon": -80.55, + "elev": 5, + "firstTime": 0, + "lastTime": 1714060800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CAPE KENNEDY", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 10:00:00" +} , +{ + "id": "MD:V01:RAOB:station:76225", + "wmoid": 76225, + "name": "MCV", + "geo": [ + { + "lat": 28.7, + "lon": -106.07, + "elev": 1428, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHIHUAHUA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:76256", + "wmoid": 76256, + "name": "GYM", + "geo": [ + { + "lat": 27.95, + "lon": -110.8, + "elev": 12, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "EMPALME SONORA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:76394", + "wmoid": 76394, + "name": "MTY", + "geo": [ + { + "lat": 25.87, + "lon": -100.2, + "elev": 450, + "firstTime": 0, + "lastTime": 1701370800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MONTERREY", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-11-30 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:76405", + "wmoid": 76405, + "name": "LAP", + "geo": [ + { + "lat": 24.07, + "lon": -110.33, + "elev": 14, + "firstTime": 0, + "lastTime": 1710093600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LA PAZ/DE LEON", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-03-10 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:76458", + "wmoid": 76458, + "name": "MZT", + "geo": [ + { + "lat": 23.18, + "lon": -106.42, + "elev": 4, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MAZATLAN SINALOA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:76595", + "wmoid": 76595, + "name": "CUN", + "geo": [ + { + "lat": 21.03, + "lon": -86.92, + "elev": 10, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CANCUN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:76612", + "wmoid": 76612, + "name": "MGDJ", + "geo": [ + { + "lat": 20.68, + "lon": -103.33, + "elev": 1551, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GUADALAJARA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:76644", + "wmoid": 76644, + "name": "MID", + "geo": [ + { + "lat": 20.95, + "lon": -89.65, + "elev": 11, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MERIDA IAP", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:76679", + "wmoid": 76679, + "name": "MEX", + "geo": [ + { + "lat": 19.43, + "lon": -99.07, + "elev": 2309, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MEXICO CITY/INT APT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:76723", + "wmoid": 76723, + "name": "SIC", + "geo": [ + { + "lat": 18.72, + "lon": -110.95, + "elev": 34, + "firstTime": 0, + "lastTime": 0, + "updateTime": 0 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SOCORRO ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "" +} , +{ + "id": "MD:V01:RAOB:station:78073", + "wmoid": 78073, + "name": "YNN", + "geo": [ + { + "lat": 25.05, + "lon": -77.47, + "elev": 2, + "firstTime": 0, + "lastTime": 1595268000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NASSAU APT", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-07-20 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78486", + "wmoid": 78486, + "name": "SDQ", + "geo": [ + { + "lat": 18.47, + "lon": -69.88, + "elev": 14, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SANTO DOMINGO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68263", + "wmoid": 68263, + "name": "FAIR", + "geo": [ + { + "lat": -25.92, + "lon": 28.22, + "elev": 1500, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PRETORIA/IRENE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68174", + "wmoid": 68174, + "name": "FAPB", + "geo": [ + { + "lat": -23.87, + "lon": 29.45, + "elev": 1222, + "firstTime": 0, + "lastTime": 1248670800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PIETERSBURG (SAAF)", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-07-26 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:65503", + "wmoid": 65503, + "name": "DHHH", + "geo": [ + { + "lat": 12.35, + "lon": -1.52, + "elev": 306, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OUAGADOUGOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:64910", + "wmoid": 64910, + "name": "FKKD", + "geo": [ + { + "lat": 4.0, + "lon": 9.7, + "elev": 9, + "firstTime": 0, + "lastTime": 1678345200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DOUALA (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-03-09 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:64650", + "wmoid": 64650, + "name": "FEFF", + "geo": [ + { + "lat": 4.4, + "lon": 18.52, + "elev": 366, + "firstTime": 0, + "lastTime": 1578333600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BANGUI/M'POKO (MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-06 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:64458", + "wmoid": 64458, + "name": "FCOU", + "geo": [ + { + "lat": 1.62, + "lon": 16.05, + "elev": 352, + "firstTime": 0, + "lastTime": 1657040400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OUESSO", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-07-05 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:64450", + "wmoid": 64450, + "name": "FCBB", + "geo": [ + { + "lat": -4.25, + "lon": 15.25, + "elev": 316, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BRAZZAVILLE/MAYA-MAYA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:63985", + "wmoid": 63985, + "name": "FSSS", + "geo": [ + { + "lat": -4.68, + "lon": 55.53, + "elev": 4, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SEYCHELLES INTL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:62721", + "wmoid": 62721, + "name": "HSSS", + "geo": [ + { + "lat": 15.6, + "lon": 32.54, + "elev": 380, + "firstTime": 0, + "lastTime": 1399046400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KHARTOUM (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2014-05-02 10:00:00" +} , +{ + "id": "MD:V01:RAOB:station:62414", + "wmoid": 62414, + "name": "HESN", + "geo": [ + { + "lat": 23.97, + "lon": 32.78, + "elev": 194, + "firstTime": 0, + "lastTime": 1713938400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ASWAN (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:62378", + "wmoid": 62378, + "name": "62378", + "geo": [ + { + "lat": 29.87, + "lon": 31.33, + "elev": 141, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HELWAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:62337", + "wmoid": 62337, + "name": "HEAR", + "geo": [ + { + "lat": 31.08, + "lon": 33.75, + "elev": 32, + "firstTime": 0, + "lastTime": 1676919600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "EL ARISH", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-02-20 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:62306", + "wmoid": 62306, + "name": "HEMM", + "geo": [ + { + "lat": 31.33, + "lon": 27.22, + "elev": 30, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MERSA MATRUH (MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61998", + "wmoid": 61998, + "name": "61998", + "geo": [ + { + "lat": -49.35, + "lon": 70.25, + "elev": 30, + "firstTime": 0, + "lastTime": 1543258800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PORT-AUX-FRANCAIS", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-11-26 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61996", + "wmoid": 61996, + "name": "61996", + "geo": [ + { + "lat": -37.8, + "lon": 77.53, + "elev": 29, + "firstTime": 0, + "lastTime": 1323367200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MARTIN DE VIVIES", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-12-08 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61976", + "wmoid": 61976, + "name": "61976", + "geo": [ + { + "lat": -15.88, + "lon": 54.52, + "elev": 13, + "firstTime": 0, + "lastTime": 1307638800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SERGE-FROLOW/TROMELIN", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-06-09 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61967", + "wmoid": 61967, + "name": "FJDG", + "geo": [ + { + "lat": -7.3, + "lon": 72.4, + "elev": 3, + "firstTime": 0, + "lastTime": 0, + "updateTime": 0 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DIEGO GARCIA", + "near_airport": "", + "gps_date": "", + "updateTime": "" +} , +{ + "id": "MD:V01:RAOB:station:61901", + "wmoid": 61901, + "name": "61901", + "geo": [ + { + "lat": -15.97, + "lon": -5.7, + "elev": 436, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ST. HELENA ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61641", + "wmoid": 61641, + "name": "GOOY", + "geo": [ + { + "lat": 14.73, + "lon": -17.5, + "elev": 24, + "firstTime": 0, + "lastTime": 1528606800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DAKAR/YOFF", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-06-09 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61291", + "wmoid": 61291, + "name": "GABS", + "geo": [ + { + "lat": 12.53, + "lon": -7.95, + "elev": 381, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BAMAKO/SENOU (MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61223", + "wmoid": 61223, + "name": "GATB", + "geo": [ + { + "lat": 16.72, + "lon": -3.0, + "elev": 264, + "firstTime": 0, + "lastTime": 1333126800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TOMBOUCTOU/TIMBUKTU", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-03-30 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61052", + "wmoid": 61052, + "name": "DRRR", + "geo": [ + { + "lat": 13.48, + "lon": 2.17, + "elev": 227, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NIAMEY-AERO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61024", + "wmoid": 61024, + "name": "DRZA", + "geo": [ + { + "lat": 16.97, + "lon": 7.98, + "elev": 502, + "firstTime": 0, + "lastTime": 1713978000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AGADEZ SOUTH (MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:60680", + "wmoid": 60680, + "name": "60680", + "geo": [ + { + "lat": 22.78, + "lon": 5.52, + "elev": 1378, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TAMANRASSET", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:60656", + "wmoid": 60656, + "name": "DAOF", + "geo": [ + { + "lat": 27.67, + "lon": -8.13, + "elev": 431, + "firstTime": 0, + "lastTime": 1713938400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TINDOUF", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:60630", + "wmoid": 60630, + "name": "60630", + "geo": [ + { + "lat": 27.2, + "lon": 2.47, + "elev": 293, + "firstTime": 0, + "lastTime": 1713938400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "IN SALAH", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:60571", + "wmoid": 60571, + "name": "DAOR", + "geo": [ + { + "lat": 31.62, + "lon": -2.23, + "elev": 773, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BECHAR/OUAKDA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:60390", + "wmoid": 60390, + "name": "DAAG", + "geo": [ + { + "lat": 36.72, + "lon": 3.25, + "elev": 25, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DAR-EL-BEIDA/HOUARI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:60018", + "wmoid": 60018, + "name": "60018", + "geo": [ + { + "lat": 28.31, + "lon": -16.25, + "elev": 120, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VALLE DE GUIMAR TENERIFE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:59981", + "wmoid": 59981, + "name": "59981", + "geo": [ + { + "lat": 16.83, + "lon": 112.33, + "elev": 5, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "XISHA ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:59758", + "wmoid": 59758, + "name": "ZGHK", + "geo": [ + { + "lat": 20.03, + "lon": 110.35, + "elev": 15, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HAIKOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:59431", + "wmoid": 59431, + "name": "ZGNN", + "geo": [ + { + "lat": 22.82, + "lon": 108.35, + "elev": 73, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NANNING/WUXU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:59316", + "wmoid": 59316, + "name": "ZGOW", + "geo": [ + { + "lat": 23.4, + "lon": 116.68, + "elev": 3, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SHANTOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:59280", + "wmoid": 59280, + "name": "59280", + "geo": [ + { + "lat": 23.67, + "lon": 113.05, + "elev": 19, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PING YUAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:59265", + "wmoid": 59265, + "name": "59265", + "geo": [ + { + "lat": 23.48, + "lon": 111.3, + "elev": 120, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WUZHOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:59211", + "wmoid": 59211, + "name": "59211", + "geo": [ + { + "lat": 23.92, + "lon": 106.62, + "elev": 242, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BOSE", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:59134", + "wmoid": 59134, + "name": "59134", + "geo": [ + { + "lat": 24.45, + "lon": 118.07, + "elev": 63, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "XIA-MEN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58847", + "wmoid": 58847, + "name": "ZSFZ", + "geo": [ + { + "lat": 26.08, + "lon": 119.28, + "elev": 85, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FUZHOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58725", + "wmoid": 58725, + "name": "58725", + "geo": [ + { + "lat": 27.33, + "lon": 117.43, + "elev": 192, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SHAOWU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58665", + "wmoid": 58665, + "name": "58665", + "geo": [ + { + "lat": 28.65, + "lon": 120.08, + "elev": 9, + "firstTime": 0, + "lastTime": 1579370400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LUQIAO", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58633", + "wmoid": 58633, + "name": "58633", + "geo": [ + { + "lat": 28.97, + "lon": 118.87, + "elev": 71, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "QU XIAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58606", + "wmoid": 58606, + "name": "ZSCN", + "geo": [ + { + "lat": 28.6, + "lon": 115.92, + "elev": 50, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NANCHANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58457", + "wmoid": 58457, + "name": "ZSHC", + "geo": [ + { + "lat": 30.23, + "lon": 120.17, + "elev": 43, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HANGZHOU/JIANQIAO", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58424", + "wmoid": 58424, + "name": "58424", + "geo": [ + { + "lat": 30.52, + "lon": 117.03, + "elev": 20, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ANQING", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58362", + "wmoid": 58362, + "name": "58362", + "geo": [ + { + "lat": 31.4, + "lon": 121.47, + "elev": 4, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SHANGHAI", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58238", + "wmoid": 58238, + "name": "ZSNJ", + "geo": [ + { + "lat": 32.0, + "lon": 118.8, + "elev": 12, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NANJING/NANKING", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58203", + "wmoid": 58203, + "name": "58203", + "geo": [ + { + "lat": 32.93, + "lon": 115.83, + "elev": 39, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FUYANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58150", + "wmoid": 58150, + "name": "58150", + "geo": [ + { + "lat": 33.77, + "lon": 120.25, + "elev": 7, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SHEYANG/HEDE", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58027", + "wmoid": 58027, + "name": "58027", + "geo": [ + { + "lat": 34.28, + "lon": 117.15, + "elev": 42, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "XUZHOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57993", + "wmoid": 57993, + "name": "ZSGZ", + "geo": [ + { + "lat": 25.85, + "lon": 114.95, + "elev": 125, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GANZHOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57972", + "wmoid": 57972, + "name": "57972", + "geo": [ + { + "lat": 25.82, + "lon": 113.02, + "elev": 185, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHENZHOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57957", + "wmoid": 57957, + "name": "ZGKL", + "geo": [ + { + "lat": 25.33, + "lon": 110.3, + "elev": 166, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GUILIN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57816", + "wmoid": 57816, + "name": "ZUGY", + "geo": [ + { + "lat": 26.58, + "lon": 106.72, + "elev": 1074, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GUIYANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57749", + "wmoid": 57749, + "name": "57749", + "geo": [ + { + "lat": 27.57, + "lon": 110.0, + "elev": 261, + "firstTime": 0, + "lastTime": 1579370400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HUAIHUA", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57679", + "wmoid": 57679, + "name": "ZGCS", + "geo": [ + { + "lat": 28.2, + "lon": 113.08, + "elev": 46, + "firstTime": 0, + "lastTime": 1522515600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHANGSHA/DATUOPU", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-03-31 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57516", + "wmoid": 57516, + "name": "ZUCK", + "geo": [ + { + "lat": 29.52, + "lon": 106.48, + "elev": 351, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHONGQING/CHUNGKING", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57494", + "wmoid": 57494, + "name": "ZHHH", + "geo": [ + { + "lat": 30.62, + "lon": 114.13, + "elev": 23, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WUHAN/NANHU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57461", + "wmoid": 57461, + "name": "57461", + "geo": [ + { + "lat": 30.7, + "lon": 111.28, + "elev": 134, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YICHANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57447", + "wmoid": 57447, + "name": "57447", + "geo": [ + { + "lat": 30.28, + "lon": 109.47, + "elev": 458, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ENSHI", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57178", + "wmoid": 57178, + "name": "57178", + "geo": [ + { + "lat": 33.02, + "lon": 112.53, + "elev": 131, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NANYANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57127", + "wmoid": 57127, + "name": "57127", + "geo": [ + { + "lat": 33.07, + "lon": 107.03, + "elev": 509, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HANZHONG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57083", + "wmoid": 57083, + "name": "ZHCC", + "geo": [ + { + "lat": 34.72, + "lon": 113.65, + "elev": 111, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ZHENGZHOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57036", + "wmoid": 57036, + "name": "ZLSN", + "geo": [ + { + "lat": 34.29, + "lon": 108.93, + "elev": 398, + "firstTime": 0, + "lastTime": 0, + "updateTime": 0 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "XI'AN", + "near_airport": "", + "gps_date": "", + "updateTime": "" +} , +{ + "id": "MD:V01:RAOB:station:56985", + "wmoid": 56985, + "name": "56985", + "geo": [ + { + "lat": 23.38, + "lon": 103.38, + "elev": 1302, + "firstTime": 0, + "lastTime": 1579460400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MENGZI", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:56964", + "wmoid": 56964, + "name": "56964", + "geo": [ + { + "lat": 22.77, + "lon": 100.98, + "elev": 1303, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SIMAO", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:56778", + "wmoid": 56778, + "name": "ZPPP", + "geo": [ + { + "lat": 25.02, + "lon": 102.68, + "elev": 1892, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KUNMING/WUJIABA", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:56739", + "wmoid": 56739, + "name": "56739", + "geo": [ + { + "lat": 25.03, + "lon": 98.48, + "elev": 1649, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TENGCHONG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:56691", + "wmoid": 56691, + "name": "56691", + "geo": [ + { + "lat": 26.87, + "lon": 104.28, + "elev": 2236, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WEINING", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:56571", + "wmoid": 56571, + "name": "56571", + "geo": [ + { + "lat": 27.9, + "lon": 102.27, + "elev": 1599, + "firstTime": 0, + "lastTime": 1579413600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "XICHANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:56146", + "wmoid": 56146, + "name": "56146", + "geo": [ + { + "lat": 31.62, + "lon": 100.0, + "elev": 3394, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GARZE", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:56137", + "wmoid": 56137, + "name": "56137", + "geo": [ + { + "lat": 31.15, + "lon": 97.17, + "elev": 3307, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "QAMDO", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:56080", + "wmoid": 56080, + "name": "56080", + "geo": [ + { + "lat": 34.97, + "lon": 102.9, + "elev": 2910, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HEZUO", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:56029", + "wmoid": 56029, + "name": "56029", + "geo": [ + { + "lat": 33.02, + "lon": 97.02, + "elev": 3682, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YUSHU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:55591", + "wmoid": 55591, + "name": "ZULS", + "geo": [ + { + "lat": 29.67, + "lon": 91.13, + "elev": 3650, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LHASA", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:55299", + "wmoid": 55299, + "name": "55299", + "geo": [ + { + "lat": 31.48, + "lon": 92.07, + "elev": 4508, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NAGQU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:54857", + "wmoid": 54857, + "name": "ZSQD", + "geo": [ + { + "lat": 36.07, + "lon": 120.33, + "elev": 77, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "QINGDAO/TSINGTAO", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:54662", + "wmoid": 54662, + "name": "ZYTL", + "geo": [ + { + "lat": 38.9, + "lon": 121.63, + "elev": 97, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DALIAN/DAIREN/LUDA", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:54511", + "wmoid": 54511, + "name": "ZBAA", + "geo": [ + { + "lat": 39.93, + "lon": 116.28, + "elev": 55, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BEIJING/PEKING", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:54497", + "wmoid": 54497, + "name": "54497", + "geo": [ + { + "lat": 40.08, + "lon": 124.33, + "elev": 14, + "firstTime": 0, + "lastTime": 0, + "updateTime": 0 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DANDONG", + "near_airport": "", + "gps_date": "", + "updateTime": "" +} , +{ + "id": "MD:V01:RAOB:station:54374", + "wmoid": 54374, + "name": "54374", + "geo": [ + { + "lat": 41.72, + "lon": 126.92, + "elev": 333, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LINJIANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:54342", + "wmoid": 54342, + "name": "ZYYY", + "geo": [ + { + "lat": 41.77, + "lon": 123.43, + "elev": 43, + "firstTime": 0, + "lastTime": 1554051600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SHENYANG/DONGTA", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-03-31 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:54337", + "wmoid": 54337, + "name": "54337", + "geo": [ + { + "lat": 41.12, + "lon": 121.07, + "elev": 70, + "firstTime": 0, + "lastTime": 0, + "updateTime": 0 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JINZHOU", + "near_airport": "", + "gps_date": "", + "updateTime": "" +} , +{ + "id": "MD:V01:RAOB:station:54292", + "wmoid": 54292, + "name": "54292", + "geo": [ + { + "lat": 42.88, + "lon": 129.47, + "elev": 178, + "firstTime": 0, + "lastTime": 1579370400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YANJI", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:54218", + "wmoid": 54218, + "name": "54218", + "geo": [ + { + "lat": 42.27, + "lon": 118.97, + "elev": 572, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHIFENG/ULANHAD", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:54161", + "wmoid": 54161, + "name": "ZYCC", + "geo": [ + { + "lat": 43.9, + "lon": 125.22, + "elev": 238, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHANGCHUN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:54135", + "wmoid": 54135, + "name": "54135", + "geo": [ + { + "lat": 43.6, + "lon": 122.27, + "elev": 180, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TONGLIAO", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:54102", + "wmoid": 54102, + "name": "54102", + "geo": [ + { + "lat": 43.95, + "lon": 116.07, + "elev": 991, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "XILIN HOT/ABAGNAR", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:53915", + "wmoid": 53915, + "name": "53915", + "geo": [ + { + "lat": 35.55, + "lon": 106.67, + "elev": 1348, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PINGLIANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:53845", + "wmoid": 53845, + "name": "ZLYA", + "geo": [ + { + "lat": 36.6, + "lon": 109.5, + "elev": 959, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YAN AN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:53772", + "wmoid": 53772, + "name": "ZBYN", + "geo": [ + { + "lat": 37.78, + "lon": 112.55, + "elev": 779, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TAIYUAN/WUSU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:53614", + "wmoid": 53614, + "name": "ZLIC", + "geo": [ + { + "lat": 38.48, + "lon": 106.22, + "elev": 1112, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YINCHUAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:53513", + "wmoid": 53513, + "name": "53513", + "geo": [ + { + "lat": 40.77, + "lon": 107.4, + "elev": 1041, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LINHE", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:53463", + "wmoid": 53463, + "name": "ZBHH", + "geo": [ + { + "lat": 40.82, + "lon": 111.68, + "elev": 1065, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HOHHOT", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:53068", + "wmoid": 53068, + "name": "53068", + "geo": [ + { + "lat": 43.65, + "lon": 112.0, + "elev": 966, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ERENHOT", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:52866", + "wmoid": 52866, + "name": "ZLXN", + "geo": [ + { + "lat": 36.62, + "lon": 101.77, + "elev": 2262, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "XINING", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:52836", + "wmoid": 52836, + "name": "52836", + "geo": [ + { + "lat": 36.3, + "lon": 98.1, + "elev": 3192, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DULAN/QAGAN US", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:52818", + "wmoid": 52818, + "name": "52818", + "geo": [ + { + "lat": 36.42, + "lon": 94.9, + "elev": 2809, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GOLMUD", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:52681", + "wmoid": 52681, + "name": "52681", + "geo": [ + { + "lat": 38.63, + "lon": 103.08, + "elev": 1367, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MINQIN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:52533", + "wmoid": 52533, + "name": "ZLJQ", + "geo": [ + { + "lat": 39.77, + "lon": 98.48, + "elev": 1478, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JIUQUAN/SUZHOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:52418", + "wmoid": 52418, + "name": "52418", + "geo": [ + { + "lat": 40.15, + "lon": 94.68, + "elev": 1140, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DUNHUANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:52323", + "wmoid": 52323, + "name": "52323", + "geo": [ + { + "lat": 41.8, + "lon": 97.03, + "elev": 1770, + "firstTime": 0, + "lastTime": 1579413600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MAZONG SHAN (MOUNT)", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:52267", + "wmoid": 52267, + "name": "52267", + "geo": [ + { + "lat": 41.95, + "lon": 101.07, + "elev": 941, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "EJIN QI", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:52203", + "wmoid": 52203, + "name": "ZWHM", + "geo": [ + { + "lat": 42.82, + "lon": 93.52, + "elev": 739, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HAMI", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:51839", + "wmoid": 51839, + "name": "51839", + "geo": [ + { + "lat": 37.07, + "lon": 82.77, + "elev": 1410, + "firstTime": 0, + "lastTime": 1579370400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MINFENG/NIYA", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:51828", + "wmoid": 51828, + "name": "ZWTN", + "geo": [ + { + "lat": 37.13, + "lon": 79.93, + "elev": 1375, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HOTAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:51777", + "wmoid": 51777, + "name": "51777", + "geo": [ + { + "lat": 39.03, + "lon": 88.17, + "elev": 889, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "RUOQIANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:51709", + "wmoid": 51709, + "name": "ZWSH", + "geo": [ + { + "lat": 39.47, + "lon": 75.98, + "elev": 1291, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KASHI", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:51644", + "wmoid": 51644, + "name": "51644", + "geo": [ + { + "lat": 41.72, + "lon": 82.95, + "elev": 1100, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KUQA", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:51463", + "wmoid": 51463, + "name": "51463", + "geo": [ + { + "lat": 43.78, + "lon": 87.62, + "elev": 919, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "URUMQI", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:51431", + "wmoid": 51431, + "name": "ZWYN", + "geo": [ + { + "lat": 43.95, + "lon": 81.33, + "elev": 663, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YINING", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:51076", + "wmoid": 51076, + "name": "51076", + "geo": [ + { + "lat": 47.73, + "lon": 88.08, + "elev": 737, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALTAY", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:50953", + "wmoid": 50953, + "name": "50953", + "geo": [ + { + "lat": 45.75, + "lon": 126.77, + "elev": 143, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HARBIN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:50774", + "wmoid": 50774, + "name": "50774", + "geo": [ + { + "lat": 47.72, + "lon": 128.9, + "elev": 232, + "firstTime": 0, + "lastTime": 1579413600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YICHUN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:50557", + "wmoid": 50557, + "name": "50557", + "geo": [ + { + "lat": 49.17, + "lon": 125.23, + "elev": 243, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NENJIANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:50527", + "wmoid": 50527, + "name": "50527", + "geo": [ + { + "lat": 49.22, + "lon": 119.75, + "elev": 611, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HAILAR", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48820", + "wmoid": 48820, + "name": "VVNB", + "geo": [ + { + "lat": 21.02, + "lon": 105.8, + "elev": 6, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HANOI/NOIBAI INTL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48615", + "wmoid": 48615, + "name": "WMKC", + "geo": [ + { + "lat": 6.17, + "lon": 102.28, + "elev": 5, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KOTA BHARU/SULTAN P", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48601", + "wmoid": 48601, + "name": "WMKP", + "geo": [ + { + "lat": 5.3, + "lon": 100.27, + "elev": 4, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PENANG/BAYAN LEPAS", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48407", + "wmoid": 48407, + "name": "VTUU", + "geo": [ + { + "lat": 15.25, + "lon": 104.87, + "elev": 127, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "UBON/RATCHATHANI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47991", + "wmoid": 47991, + "name": "RJAM", + "geo": [ + { + "lat": 24.3, + "lon": 153.97, + "elev": 9, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MINAMITORISHIMA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47971", + "wmoid": 47971, + "name": "RJAO", + "geo": [ + { + "lat": 27.08, + "lon": 142.18, + "elev": 8, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHICHIJIMA ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47945", + "wmoid": 47945, + "name": "ROMD", + "geo": [ + { + "lat": 25.83, + "lon": 131.23, + "elev": 20, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MINAMIDAITOJIMA ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47936", + "wmoid": 47936, + "name": "47936", + "geo": [ + { + "lat": 26.2, + "lon": 127.68, + "elev": 27, + "firstTime": 0, + "lastTime": 1206986400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NAHA AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2008-03-31 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47918", + "wmoid": 47918, + "name": "ROIG", + "geo": [ + { + "lat": 24.33, + "lon": 124.17, + "elev": 7, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ISHIGAKIJIMA ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47909", + "wmoid": 47909, + "name": "47909", + "geo": [ + { + "lat": 28.38, + "lon": 129.55, + "elev": 295, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NAZE/FUNCHATOGE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47827", + "wmoid": 47827, + "name": "47827", + "geo": [ + { + "lat": 31.63, + "lon": 130.58, + "elev": 31, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KAGOSHIMA/YOSHINO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47807", + "wmoid": 47807, + "name": "47807", + "geo": [ + { + "lat": 33.58, + "lon": 130.38, + "elev": 14, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FUKUOKA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47778", + "wmoid": 47778, + "name": "47778", + "geo": [ + { + "lat": 33.45, + "lon": 135.77, + "elev": 75, + "firstTime": 0, + "lastTime": 1693202400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SHIONOMISAKI", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-08-28 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47744", + "wmoid": 47744, + "name": "47744", + "geo": [ + { + "lat": 35.43, + "lon": 133.35, + "elev": 8, + "firstTime": 0, + "lastTime": 1258441200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YONAGO", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-11-17 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47681", + "wmoid": 47681, + "name": "RJNH", + "geo": [ + { + "lat": 34.73, + "lon": 137.67, + "elev": 48, + "firstTime": 0, + "lastTime": 1561917600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HAMAMATSU AB", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-06-30 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47678", + "wmoid": 47678, + "name": "47678", + "geo": [ + { + "lat": 33.12, + "lon": 139.78, + "elev": 80, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HACHIJOJIMA/OMURE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47646", + "wmoid": 47646, + "name": "47646", + "geo": [ + { + "lat": 36.05, + "lon": 140.13, + "elev": 31, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TATENO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47600", + "wmoid": 47600, + "name": "47600", + "geo": [ + { + "lat": 37.38, + "lon": 136.9, + "elev": 14, + "firstTime": 0, + "lastTime": 1708326000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WAJIMA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-02-19 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47590", + "wmoid": 47590, + "name": "47590", + "geo": [ + { + "lat": 38.27, + "lon": 140.9, + "elev": 43, + "firstTime": 0, + "lastTime": 1206986400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SENDAI", + "near_airport": "", + "gps_date": "", + "updateTime": "2008-03-31 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47582", + "wmoid": 47582, + "name": "47582", + "geo": [ + { + "lat": 39.72, + "lon": 140.1, + "elev": 21, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AKITA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47580", + "wmoid": 47580, + "name": "RJSM", + "geo": [ + { + "lat": 40.68, + "lon": 141.38, + "elev": 39, + "firstTime": 0, + "lastTime": 1585677600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MISAWA", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-03-31 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47420", + "wmoid": 47420, + "name": "47420", + "geo": [ + { + "lat": 43.33, + "lon": 145.58, + "elev": 26, + "firstTime": 0, + "lastTime": 1258441200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NEMURO", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-11-17 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47412", + "wmoid": 47412, + "name": "47412", + "geo": [ + { + "lat": 43.05, + "lon": 141.33, + "elev": 19, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SAPPORO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47401", + "wmoid": 47401, + "name": "47401", + "geo": [ + { + "lat": 45.42, + "lon": 141.68, + "elev": 11, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WAKKANAI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47185", + "wmoid": 47185, + "name": "47185", + "geo": [ + { + "lat": 33.28, + "lon": 126.17, + "elev": 73, + "firstTime": 0, + "lastTime": 1464717600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHEJU", + "near_airport": "", + "gps_date": "", + "updateTime": "2016-05-31 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47158", + "wmoid": 47158, + "name": "RKJJ", + "geo": [ + { + "lat": 35.12, + "lon": 126.82, + "elev": 13, + "firstTime": 0, + "lastTime": 1703746800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KWANGJU (KOR-AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-12-28 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47138", + "wmoid": 47138, + "name": "47138", + "geo": [ + { + "lat": 36.03, + "lon": 129.38, + "elev": 6, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "POHANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47122", + "wmoid": 47122, + "name": "RKSO", + "geo": [ + { + "lat": 37.1, + "lon": 127.03, + "elev": 12, + "firstTime": 0, + "lastTime": 1703746800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OSAN (US/KOR-AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-12-28 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47102", + "wmoid": 47102, + "name": "47102", + "geo": [ + { + "lat": 38.03, + "lon": 127.15, + "elev": 70, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHONGONG-NI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:45004", + "wmoid": 45004, + "name": "45004", + "geo": [ + { + "lat": 22.32, + "lon": 114.17, + "elev": 66, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KING'S PARK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:44292", + "wmoid": 44292, + "name": "44292", + "geo": [ + { + "lat": 47.93, + "lon": 106.98, + "elev": 1313, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ULAN-BATOR", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:44212", + "wmoid": 44212, + "name": "44212", + "geo": [ + { + "lat": 49.97, + "lon": 92.08, + "elev": 936, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ULAN-GOM", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43371", + "wmoid": 43371, + "name": "43371", + "geo": [ + { + "lat": 8.48, + "lon": 76.95, + "elev": 64, + "firstTime": 0, + "lastTime": 1698127200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "THIRUVANANTHAPURAM", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-10-24 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43369", + "wmoid": 43369, + "name": "43369", + "geo": [ + { + "lat": 8.3, + "lon": 73.15, + "elev": 2, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MINICOY ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43346", + "wmoid": 43346, + "name": "43346", + "geo": [ + { + "lat": 10.92, + "lon": 79.83, + "elev": 7, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KARAIKAL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43333", + "wmoid": 43333, + "name": "VEPB", + "geo": [ + { + "lat": 11.67, + "lon": 92.72, + "elev": 79, + "firstTime": 0, + "lastTime": 1711130400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PORT BLAIR", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-03-22 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43295", + "wmoid": 43295, + "name": "43295", + "geo": [ + { + "lat": 12.97, + "lon": 77.58, + "elev": 921, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BANGALORE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43285", + "wmoid": 43285, + "name": "43285", + "geo": [ + { + "lat": 12.95, + "lon": 74.83, + "elev": 31, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PANAMBUR", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43185", + "wmoid": 43185, + "name": "43185", + "geo": [ + { + "lat": 16.2, + "lon": 81.15, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MACHILIPATNAM", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43150", + "wmoid": 43150, + "name": "43150", + "geo": [ + { + "lat": 17.7, + "lon": 83.3, + "elev": 66, + "firstTime": 0, + "lastTime": 1714042800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VISHAKHAPATNAM/WALT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 05:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43128", + "wmoid": 43128, + "name": "VOHY", + "geo": [ + { + "lat": 17.45, + "lon": 78.47, + "elev": 545, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HYDERABAD (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43014", + "wmoid": 43014, + "name": "VAAU", + "geo": [ + { + "lat": 19.85, + "lon": 75.4, + "elev": 579, + "firstTime": 0, + "lastTime": 1714042800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AURANGABAD AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 05:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43003", + "wmoid": 43003, + "name": "VABB", + "geo": [ + { + "lat": 19.12, + "lon": 72.85, + "elev": 14, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BOMBAY/SANTACRUZ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42971", + "wmoid": 42971, + "name": "VEBS", + "geo": [ + { + "lat": 20.25, + "lon": 85.83, + "elev": 46, + "firstTime": 0, + "lastTime": 1714046400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BHUBANESWAR", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 06:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42874", + "wmoid": 42874, + "name": "42874", + "geo": [ + { + "lat": 21.22, + "lon": 81.67, + "elev": 298, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PBO RAIPUR", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42867", + "wmoid": 42867, + "name": "VANP", + "geo": [ + { + "lat": 21.1, + "lon": 79.05, + "elev": 310, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NAGPUR SONEGAON AFB", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42809", + "wmoid": 42809, + "name": "VECC", + "geo": [ + { + "lat": 22.65, + "lon": 88.45, + "elev": 6, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CALCUTTA/DUM DUM", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42724", + "wmoid": 42724, + "name": "VEAT", + "geo": [ + { + "lat": 23.88, + "lon": 91.25, + "elev": 16, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AGARTALA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42701", + "wmoid": 42701, + "name": "VERC", + "geo": [ + { + "lat": 23.32, + "lon": 85.32, + "elev": 652, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "RANCHI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42667", + "wmoid": 42667, + "name": "VABP", + "geo": [ + { + "lat": 23.28, + "lon": 77.35, + "elev": 523, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BHOPAL/BAIRAGARH", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42647", + "wmoid": 42647, + "name": "VAAH", + "geo": [ + { + "lat": 23.07, + "lon": 72.63, + "elev": 55, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AHMADABAD", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42492", + "wmoid": 42492, + "name": "VEPT", + "geo": [ + { + "lat": 25.6, + "lon": 85.1, + "elev": 60, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PATNA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42410", + "wmoid": 42410, + "name": "VEGT", + "geo": [ + { + "lat": 26.1, + "lon": 91.58, + "elev": 54, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GAUHATI (IN-AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42369", + "wmoid": 42369, + "name": "VILK", + "geo": [ + { + "lat": 26.75, + "lon": 80.88, + "elev": 128, + "firstTime": 0, + "lastTime": 1714042800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LUCKNOW/AMAUSI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 05:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42361", + "wmoid": 42361, + "name": "VIGR", + "geo": [ + { + "lat": 26.23, + "lon": 78.25, + "elev": 207, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GWALIOR (IN-AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42339", + "wmoid": 42339, + "name": "VIJO", + "geo": [ + { + "lat": 26.3, + "lon": 73.02, + "elev": 224, + "firstTime": 0, + "lastTime": 1713981600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JODHPUR (IN-AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42314", + "wmoid": 42314, + "name": "VEMN", + "geo": [ + { + "lat": 27.48, + "lon": 95.02, + "elev": 111, + "firstTime": 0, + "lastTime": 1713852000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DIBRUGARH/MOHANBARI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-23 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42182", + "wmoid": 42182, + "name": "VIDD", + "geo": [ + { + "lat": 28.58, + "lon": 77.2, + "elev": 216, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DELHI/SAFDARJUNG", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42101", + "wmoid": 42101, + "name": "42101", + "geo": [ + { + "lat": 30.33, + "lon": 76.47, + "elev": 251, + "firstTime": 0, + "lastTime": 1711778400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PATIALA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-03-30 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:41256", + "wmoid": 41256, + "name": "OOMS", + "geo": [ + { + "lat": 23.58, + "lon": 58.28, + "elev": 17, + "firstTime": 0, + "lastTime": 1714028400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SEEB INTL/MUSCAT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 01:00:00" +} , +{ + "id": "MD:V01:RAOB:station:41217", + "wmoid": 41217, + "name": "OMAA", + "geo": [ + { + "lat": 24.43, + "lon": 54.65, + "elev": 27, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ABU DHABI INTL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:41112", + "wmoid": 41112, + "name": "OEAB", + "geo": [ + { + "lat": 18.23, + "lon": 42.65, + "elev": 2084, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ABHA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:41024", + "wmoid": 41024, + "name": "OEJN", + "geo": [ + { + "lat": 21.67, + "lon": 39.15, + "elev": 17, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JEDDAH/ABDUL AZIZ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40800", + "wmoid": 40800, + "name": "OIFM", + "geo": [ + { + "lat": 32.62, + "lon": 51.67, + "elev": 1590, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ESFAHAN (CIV/AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40766", + "wmoid": 40766, + "name": "OICC", + "geo": [ + { + "lat": 34.27, + "lon": 47.12, + "elev": 1322, + "firstTime": 0, + "lastTime": 1713938400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KERMANSHAH/BAKTARAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40754", + "wmoid": 40754, + "name": "OIII", + "geo": [ + { + "lat": 35.68, + "lon": 51.35, + "elev": 1191, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TEHRAN/MEHRABAD AFB", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40582", + "wmoid": 40582, + "name": "OKBK", + "geo": [ + { + "lat": 29.22, + "lon": 47.98, + "elev": 55, + "firstTime": 0, + "lastTime": 1677092400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KUWAIT INTERNATIONAL AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-02-22 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40430", + "wmoid": 40430, + "name": "OEMA", + "geo": [ + { + "lat": 24.55, + "lon": 39.72, + "elev": 636, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MADINAH INTL ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40417", + "wmoid": 40417, + "name": "OEMF", + "geo": [ + { + "lat": 26.45, + "lon": 49.82, + "elev": 12, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KING FAHAD INTERNATIONAL APT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40375", + "wmoid": 40375, + "name": "OETB", + "geo": [ + { + "lat": 28.37, + "lon": 36.58, + "elev": 770, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TABUK (SAUD-AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40373", + "wmoid": 40373, + "name": "OEPA", + "geo": [ + { + "lat": 28.33, + "lon": 46.12, + "elev": 355, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HAFR AL-BATIN ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40179", + "wmoid": 40179, + "name": "40179", + "geo": [ + { + "lat": 32.0, + "lon": 34.82, + "elev": 30, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BET DAGAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:38341", + "wmoid": 38341, + "name": "38341", + "geo": [ + { + "lat": 42.85, + "lon": 71.38, + "elev": 653, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DZAMBUL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:36870", + "wmoid": 36870, + "name": "UAAA", + "geo": [ + { + "lat": 43.23, + "lon": 76.93, + "elev": 847, + "firstTime": 0, + "lastTime": 1342720800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALMA-ATA", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-07-19 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:35700", + "wmoid": 35700, + "name": "35700", + "geo": [ + { + "lat": 47.02, + "lon": 51.85, + "elev": -15, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GUR'EV", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:35394", + "wmoid": 35394, + "name": "35394", + "geo": [ + { + "lat": 49.8, + "lon": 73.13, + "elev": 553, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KARAGANDA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:35229", + "wmoid": 35229, + "name": "UATT", + "geo": [ + { + "lat": 50.28, + "lon": 57.15, + "elev": 224, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AKTJUBINSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:35121", + "wmoid": 35121, + "name": "35121", + "geo": [ + { + "lat": 51.78, + "lon": 55.22, + "elev": 109, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ORENBURG", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:34880", + "wmoid": 34880, + "name": "34880", + "geo": [ + { + "lat": 46.27, + "lon": 48.03, + "elev": -18, + "firstTime": 0, + "lastTime": 1348639200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ASTRAHAN'", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-09-26 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:34858", + "wmoid": 34858, + "name": "34858", + "geo": [ + { + "lat": 45.92, + "lon": 43.35, + "elev": 87, + "firstTime": 0, + "lastTime": 1713247200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DIVNOE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-16 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:34560", + "wmoid": 34560, + "name": "URWW", + "geo": [ + { + "lat": 48.68, + "lon": 44.35, + "elev": 145, + "firstTime": 0, + "lastTime": 1348639200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VOLGOGRAD", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-09-26 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:34247", + "wmoid": 34247, + "name": "34247", + "geo": [ + { + "lat": 50.42, + "lon": 41.05, + "elev": 93, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KALAC", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:34122", + "wmoid": 34122, + "name": "UUOO", + "geo": [ + { + "lat": 51.67, + "lon": 39.27, + "elev": 104, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VORONEZ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:34009", + "wmoid": 34009, + "name": "34009", + "geo": [ + { + "lat": 51.77, + "lon": 36.17, + "elev": 247, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KURSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:33791", + "wmoid": 33791, + "name": "33791", + "geo": [ + { + "lat": 43.03, + "lon": 33.22, + "elev": 125, + "firstTime": 0, + "lastTime": 1645642800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KRYVYI RIH", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-02-23 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:33345", + "wmoid": 33345, + "name": "UKKK", + "geo": [ + { + "lat": 50.4, + "lon": 30.45, + "elev": 167, + "firstTime": 0, + "lastTime": 1645686000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KIEV/ZHULYANY", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-02-24 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:32540", + "wmoid": 32540, + "name": "UHPP", + "geo": [ + { + "lat": 52.97, + "lon": 158.75, + "elev": 24, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PETROPAVLOVSK-KAMCHATSKIJ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:32150", + "wmoid": 32150, + "name": "UHSS", + "geo": [ + { + "lat": 46.92, + "lon": 142.73, + "elev": 31, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JUZNO-SAHALINSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:32061", + "wmoid": 32061, + "name": "32061", + "geo": [ + { + "lat": 50.9, + "lon": 142.17, + "elev": 31, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALEKSANDROVSK-SAHALINSKIJ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:31977", + "wmoid": 31977, + "name": "31977", + "geo": [ + { + "lat": 43.27, + "lon": 132.05, + "elev": 82, + "firstTime": 0, + "lastTime": 1713722400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SAD-GOROD", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-21 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:31873", + "wmoid": 31873, + "name": "31873", + "geo": [ + { + "lat": 45.87, + "lon": 133.73, + "elev": 107, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DAL'NERECENSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:31736", + "wmoid": 31736, + "name": "31736", + "geo": [ + { + "lat": 48.53, + "lon": 135.23, + "elev": 72, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HABAROVSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:31510", + "wmoid": 31510, + "name": "31510", + "geo": [ + { + "lat": 50.27, + "lon": 127.5, + "elev": 137, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BLAGOVESCENSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:31369", + "wmoid": 31369, + "name": "31369", + "geo": [ + { + "lat": 53.15, + "lon": 140.7, + "elev": 68, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NIKOLAEVSK-ON-AM", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:31300", + "wmoid": 31300, + "name": "31300", + "geo": [ + { + "lat": 53.75, + "lon": 127.23, + "elev": 232, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ZEJA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:31088", + "wmoid": 31088, + "name": "31088", + "geo": [ + { + "lat": 59.37, + "lon": 143.2, + "elev": 6, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OHOTSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:31004", + "wmoid": 31004, + "name": "31004", + "geo": [ + { + "lat": 58.62, + "lon": 125.37, + "elev": 682, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALDAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:30965", + "wmoid": 30965, + "name": "30965", + "geo": [ + { + "lat": 50.38, + "lon": 116.52, + "elev": 684, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BORZJA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:30935", + "wmoid": 30935, + "name": "30935", + "geo": [ + { + "lat": 50.37, + "lon": 108.75, + "elev": 770, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KRASNYJ CIKOJ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:30758", + "wmoid": 30758, + "name": "30758", + "geo": [ + { + "lat": 52.02, + "lon": 113.33, + "elev": 685, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHITA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:30715", + "wmoid": 30715, + "name": "30715", + "geo": [ + { + "lat": 52.48, + "lon": 103.85, + "elev": 450, + "firstTime": 0, + "lastTime": 1708801200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ANGARSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-02-24 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:30635", + "wmoid": 30635, + "name": "30635", + "geo": [ + { + "lat": 54.42, + "lon": 109.02, + "elev": 457, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "UST-BARGUZIN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:30554", + "wmoid": 30554, + "name": "30554", + "geo": [ + { + "lat": 54.62, + "lon": 113.13, + "elev": 995, + "firstTime": 0, + "lastTime": 1540965600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BOGDARIN", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-10-31 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:30372", + "wmoid": 30372, + "name": "30372", + "geo": [ + { + "lat": 56.92, + "lon": 118.37, + "elev": 711, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CARA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:30309", + "wmoid": 30309, + "name": "30309", + "geo": [ + { + "lat": 56.07, + "lon": 101.83, + "elev": 489, + "firstTime": 0, + "lastTime": 1708498800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BRATSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-02-21 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:30230", + "wmoid": 30230, + "name": "UIKK", + "geo": [ + { + "lat": 57.77, + "lon": 108.12, + "elev": 258, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KIRENSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:30054", + "wmoid": 30054, + "name": "30054", + "geo": [ + { + "lat": 59.45, + "lon": 112.58, + "elev": 193, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VITIM", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:29698", + "wmoid": 29698, + "name": "UINN", + "geo": [ + { + "lat": 54.88, + "lon": 99.03, + "elev": 410, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NIZNE-UDINSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:29634", + "wmoid": 29634, + "name": "UNNN", + "geo": [ + { + "lat": 55.03, + "lon": 82.9, + "elev": 176, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NOVOSIBIRSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:29612", + "wmoid": 29612, + "name": "29612", + "geo": [ + { + "lat": 55.37, + "lon": 78.37, + "elev": 120, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BARABINSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:29572", + "wmoid": 29572, + "name": "29572", + "geo": [ + { + "lat": 56.18, + "lon": 92.62, + "elev": 296, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "EMEL'JANOVO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:28952", + "wmoid": 28952, + "name": "28952", + "geo": [ + { + "lat": 53.22, + "lon": 63.62, + "elev": 156, + "firstTime": 0, + "lastTime": 1320649200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KUSTANAJ", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-11-07 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:28698", + "wmoid": 28698, + "name": "28698", + "geo": [ + { + "lat": 54.93, + "lon": 73.4, + "elev": 123, + "firstTime": 0, + "lastTime": 1540965600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OMSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-10-31 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:28445", + "wmoid": 28445, + "name": "28445", + "geo": [ + { + "lat": 56.73, + "lon": 61.07, + "elev": 290, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VERHNEE DUBROVO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:28275", + "wmoid": 28275, + "name": "28275", + "geo": [ + { + "lat": 58.15, + "lon": 68.18, + "elev": 44, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TOBOLSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:28225", + "wmoid": 28225, + "name": "28225", + "geo": [ + { + "lat": 57.95, + "lon": 56.2, + "elev": 170, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PERM", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:27995", + "wmoid": 27995, + "name": "27995", + "geo": [ + { + "lat": 52.98, + "lon": 49.43, + "elev": 45, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BEZENCUKSKAJA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:27962", + "wmoid": 27962, + "name": "UWPP", + "geo": [ + { + "lat": 53.13, + "lon": 45.02, + "elev": 174, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PENZA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:27707", + "wmoid": 27707, + "name": "27707", + "geo": [ + { + "lat": 54.12, + "lon": 35.33, + "elev": 239, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SUHINICI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:27612", + "wmoid": 27612, + "name": "27612", + "geo": [ + { + "lat": 55.75, + "lon": 37.57, + "elev": 156, + "firstTime": 0, + "lastTime": 1568656800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MOSCOW", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-09-16 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:27595", + "wmoid": 27595, + "name": "27595", + "geo": [ + { + "lat": 55.78, + "lon": 49.18, + "elev": 116, + "firstTime": 0, + "lastTime": 1508911200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KAZAN'", + "near_airport": "", + "gps_date": "", + "updateTime": "2017-10-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:27459", + "wmoid": 27459, + "name": "27459", + "geo": [ + { + "lat": 56.27, + "lon": 44.0, + "elev": 157, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NIZNIJ NOVGOROD", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:27199", + "wmoid": 27199, + "name": "27199", + "geo": [ + { + "lat": 58.6, + "lon": 49.63, + "elev": 158, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KIROV", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:27037", + "wmoid": 27037, + "name": "ULWW", + "geo": [ + { + "lat": 59.23, + "lon": 39.87, + "elev": 131, + "firstTime": 0, + "lastTime": 1298876400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VOLOGDA", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-02-28 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:26781", + "wmoid": 26781, + "name": "26781", + "geo": [ + { + "lat": 54.75, + "lon": 32.07, + "elev": 241, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SMOLENSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:26298", + "wmoid": 26298, + "name": "26298", + "geo": [ + { + "lat": 57.9, + "lon": 34.05, + "elev": 178, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BOLOGOE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:26063", + "wmoid": 26063, + "name": "ULLI", + "geo": [ + { + "lat": 59.97, + "lon": 30.3, + "elev": 4, + "firstTime": 0, + "lastTime": 1540965600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ST. PETERBURG", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-10-31 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:25913", + "wmoid": 25913, + "name": "UHMM", + "geo": [ + { + "lat": 59.58, + "lon": 150.78, + "elev": 118, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MAGADAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:25703", + "wmoid": 25703, + "name": "25703", + "geo": [ + { + "lat": 62.92, + "lon": 152.42, + "elev": 207, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SEJMCAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:25400", + "wmoid": 25400, + "name": "25400", + "geo": [ + { + "lat": 65.73, + "lon": 150.9, + "elev": 43, + "firstTime": 0, + "lastTime": 1540965600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ZYRJANKA", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-10-31 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:24959", + "wmoid": 24959, + "name": "UEEE", + "geo": [ + { + "lat": 62.08, + "lon": 129.75, + "elev": 103, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YAKUTSK AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:24908", + "wmoid": 24908, + "name": "24908", + "geo": [ + { + "lat": 60.33, + "lon": 102.27, + "elev": 260, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VANAVARA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:24688", + "wmoid": 24688, + "name": "24688", + "geo": [ + { + "lat": 63.27, + "lon": 143.15, + "elev": 745, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OJMJAKON", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:24641", + "wmoid": 24641, + "name": "24641", + "geo": [ + { + "lat": 63.77, + "lon": 121.62, + "elev": 107, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VILJUJSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:24266", + "wmoid": 24266, + "name": "24266", + "geo": [ + { + "lat": 67.55, + "lon": 133.38, + "elev": 137, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VERHOJANSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:24125", + "wmoid": 24125, + "name": "24125", + "geo": [ + { + "lat": 68.5, + "lon": 112.43, + "elev": 220, + "firstTime": 0, + "lastTime": 1540965600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OLENEK", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-10-31 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:23955", + "wmoid": 23955, + "name": "23955", + "geo": [ + { + "lat": 60.43, + "lon": 77.87, + "elev": 47, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALEKSANDROVSKOE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:23921", + "wmoid": 23921, + "name": "23921", + "geo": [ + { + "lat": 60.68, + "lon": 60.43, + "elev": 101, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "IVDEL'", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:23472", + "wmoid": 23472, + "name": "23472", + "geo": [ + { + "lat": 65.78, + "lon": 87.95, + "elev": 32, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TURUHANSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:23330", + "wmoid": 23330, + "name": "23330", + "geo": [ + { + "lat": 66.53, + "lon": 66.53, + "elev": 16, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SALEHARD", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:23205", + "wmoid": 23205, + "name": "23205", + "geo": [ + { + "lat": 67.65, + "lon": 53.02, + "elev": 7, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NAR'JAN-MAR", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:22845", + "wmoid": 22845, + "name": "22845", + "geo": [ + { + "lat": 61.5, + "lon": 38.93, + "elev": 121, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KARGOPOL'", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:22550", + "wmoid": 22550, + "name": "ULAA", + "geo": [ + { + "lat": 64.53, + "lon": 40.58, + "elev": 5, + "firstTime": 0, + "lastTime": 1298876400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ARHANGEL'SK", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-02-28 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:22522", + "wmoid": 22522, + "name": "22522", + "geo": [ + { + "lat": 64.98, + "lon": 34.8, + "elev": 10, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KEM (PORT)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:22271", + "wmoid": 22271, + "name": "22271", + "geo": [ + { + "lat": 67.88, + "lon": 44.13, + "elev": 16, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SOJNA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:22217", + "wmoid": 22217, + "name": "22217", + "geo": [ + { + "lat": 67.15, + "lon": 32.35, + "elev": 26, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KANDALAKSA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:22113", + "wmoid": 22113, + "name": "ULMM", + "geo": [ + { + "lat": 68.97, + "lon": 33.05, + "elev": 51, + "firstTime": 0, + "lastTime": 1540965600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MURMANSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-10-31 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:21946", + "wmoid": 21946, + "name": "21946", + "geo": [ + { + "lat": 70.62, + "lon": 147.9, + "elev": 61, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "COKURDAH", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:21824", + "wmoid": 21824, + "name": "21824", + "geo": [ + { + "lat": 71.58, + "lon": 128.92, + "elev": 8, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TIKSI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:17607", + "wmoid": 17607, + "name": "LCNC", + "geo": [ + { + "lat": 35.15, + "lon": 33.4, + "elev": 161, + "firstTime": 0, + "lastTime": 1507118400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NICOSIA/ATHALASSA", + "near_airport": "", + "gps_date": "", + "updateTime": "2017-10-04 06:00:00" +} , +{ + "id": "MD:V01:RAOB:station:17351", + "wmoid": 17351, + "name": "17351", + "geo": [ + { + "lat": 37.05, + "lon": 35.35, + "elev": 28, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ADANA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:17240", + "wmoid": 17240, + "name": "LTBM", + "geo": [ + { + "lat": 37.75, + "lon": 30.55, + "elev": 997, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ISPARTA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:17220", + "wmoid": 17220, + "name": "17220", + "geo": [ + { + "lat": 38.43, + "lon": 27.17, + "elev": 25, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "IZMIR", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:17130", + "wmoid": 17130, + "name": "17130", + "geo": [ + { + "lat": 39.95, + "lon": 32.88, + "elev": 894, + "firstTime": 0, + "lastTime": 1704394800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ANKARA/CENTRAL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-01-04 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:17062", + "wmoid": 17062, + "name": "17062", + "geo": [ + { + "lat": 40.97, + "lon": 29.08, + "elev": 33, + "firstTime": 0, + "lastTime": 1387911600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ISTANBUL/GOZTEPE", + "near_airport": "", + "gps_date": "", + "updateTime": "2013-12-24 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:17030", + "wmoid": 17030, + "name": "17030", + "geo": [ + { + "lat": 41.28, + "lon": 36.33, + "elev": 4, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SAMSUN CITY", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:16716", + "wmoid": 16716, + "name": "LGAT", + "geo": [ + { + "lat": 37.9, + "lon": 23.73, + "elev": 14, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ATHENS/HELLENKION", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:16622", + "wmoid": 16622, + "name": "LGTS", + "geo": [ + { + "lat": 40.52, + "lon": 22.97, + "elev": 4, + "firstTime": 0, + "lastTime": 1714046400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "THESSALONIKI/MIKRA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 06:00:00" +} , +{ + "id": "MD:V01:RAOB:station:16560", + "wmoid": 16560, + "name": "LIEE", + "geo": [ + { + "lat": 39.25, + "lon": 9.05, + "elev": 7, + "firstTime": 0, + "lastTime": 1330538400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CAGLIARI/ELMAS(AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-02-29 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:16429", + "wmoid": 16429, + "name": "LICT", + "geo": [ + { + "lat": 37.92, + "lon": 12.5, + "elev": 14, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TRAPANI/BIRGI (AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:16320", + "wmoid": 16320, + "name": "LIBR", + "geo": [ + { + "lat": 40.65, + "lon": 17.95, + "elev": 10, + "firstTime": 0, + "lastTime": 1615183200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BRINDISI/CASALE AFB", + "near_airport": "", + "gps_date": "", + "updateTime": "2021-03-07 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:16245", + "wmoid": 16245, + "name": "LIRE", + "geo": [ + { + "lat": 41.65, + "lon": 12.43, + "elev": 12, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PRATICA DI MARE(AB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:16144", + "wmoid": 16144, + "name": "16144", + "geo": [ + { + "lat": 44.65, + "lon": 11.62, + "elev": 38, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "S. PIETRO CAPOFIUME", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:16080", + "wmoid": 16080, + "name": "LIML", + "geo": [ + { + "lat": 45.43, + "lon": 9.28, + "elev": 103, + "firstTime": 0, + "lastTime": 1621832400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MILANO/LINATE", + "near_airport": "", + "gps_date": "", + "updateTime": "2021-05-23 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:16044", + "wmoid": 16044, + "name": "LIPD", + "geo": [ + { + "lat": 46.03, + "lon": 13.18, + "elev": 92, + "firstTime": 0, + "lastTime": 1466096400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "UDINE/CAMPOFORMIDO", + "near_airport": "", + "gps_date": "", + "updateTime": "2016-06-16 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:15614", + "wmoid": 15614, + "name": "LBSF", + "geo": [ + { + "lat": 42.65, + "lon": 23.38, + "elev": 595, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SOFIA (OBSERVATORY)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:15420", + "wmoid": 15420, + "name": "LRBS", + "geo": [ + { + "lat": 44.5, + "lon": 26.13, + "elev": 91, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BUCHAREST/BANEASA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:15120", + "wmoid": 15120, + "name": "LRCL", + "geo": [ + { + "lat": 46.78, + "lon": 23.57, + "elev": 413, + "firstTime": 0, + "lastTime": 1351058400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CLUJ-NAPOCA/SOMESEN", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-10-24 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:14240", + "wmoid": 14240, + "name": "LDDD", + "geo": [ + { + "lat": 45.82, + "lon": 16.03, + "elev": 123, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ZAGREB\\MAKSIMIR", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:12843", + "wmoid": 12843, + "name": "12843", + "geo": [ + { + "lat": 47.43, + "lon": 19.18, + "elev": 139, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BUDAPEST/LORINC", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:12425", + "wmoid": 12425, + "name": "12425", + "geo": [ + { + "lat": 51.13, + "lon": 16.98, + "elev": 116, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WROCLAW/MALY GADOW", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:12374", + "wmoid": 12374, + "name": "12374", + "geo": [ + { + "lat": 52.4, + "lon": 20.97, + "elev": 96, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LEGIONOWO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:12120", + "wmoid": 12120, + "name": "12120", + "geo": [ + { + "lat": 54.75, + "lon": 17.53, + "elev": 2, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LEBA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:11952", + "wmoid": 11952, + "name": "11952", + "geo": [ + { + "lat": 49.03, + "lon": 20.32, + "elev": 701, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "POPRAD/GANOVCE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:11520", + "wmoid": 11520, + "name": "11520", + "geo": [ + { + "lat": 50.0, + "lon": 14.45, + "elev": 303, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PRAGUE/LIBUS", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:11035", + "wmoid": 11035, + "name": "11035", + "geo": [ + { + "lat": 48.25, + "lon": 16.37, + "elev": 200, + "firstTime": 0, + "lastTime": 1569909600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WIEN/HOHE WARTE", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-01 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:10868", + "wmoid": 10868, + "name": "10868", + "geo": [ + { + "lat": 48.25, + "lon": 11.55, + "elev": 489, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MUENCHEN/OBERSCHLEISSHEIM", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:10771", + "wmoid": 10771, + "name": "ETGK", + "geo": [ + { + "lat": 49.43, + "lon": 11.9, + "elev": 419, + "firstTime": 0, + "lastTime": 1568116800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KUEMMERSBRUCK", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-09-10 06:00:00" +} , +{ + "id": "MD:V01:RAOB:station:10739", + "wmoid": 10739, + "name": "10739", + "geo": [ + { + "lat": 48.83, + "lon": 9.2, + "elev": 315, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "STUTTGART/SCHNARRENBERG", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:10618", + "wmoid": 10618, + "name": "ETGI", + "geo": [ + { + "lat": 49.7, + "lon": 7.33, + "elev": 376, + "firstTime": 0, + "lastTime": 1568116800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "IDAR-OBERSTEIN(MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-09-10 06:00:00" +} , +{ + "id": "MD:V01:RAOB:station:10548", + "wmoid": 10548, + "name": "10548", + "geo": [ + { + "lat": 50.57, + "lon": 10.37, + "elev": 450, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MEININGEN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:10410", + "wmoid": 10410, + "name": "EDZE", + "geo": [ + { + "lat": 51.4, + "lon": 6.97, + "elev": 153, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ESSEN/MULHEIM", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:10393", + "wmoid": 10393, + "name": "10393", + "geo": [ + { + "lat": 52.22, + "lon": 14.12, + "elev": 115, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LINDENBERG", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:10238", + "wmoid": 10238, + "name": "ETGB", + "geo": [ + { + "lat": 52.82, + "lon": 9.93, + "elev": 69, + "firstTime": 0, + "lastTime": 1568113200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BERGEN (MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-09-10 05:00:00" +} , +{ + "id": "MD:V01:RAOB:station:10200", + "wmoid": 10200, + "name": "EDWE", + "geo": [ + { + "lat": 52.38, + "lon": 7.23, + "elev": 5, + "firstTime": 0, + "lastTime": 1314810000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "EMDEN/KOENIGSPOLDER", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-08-31 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:10184", + "wmoid": 10184, + "name": "10184", + "geo": [ + { + "lat": 54.1, + "lon": 13.4, + "elev": 6, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GREIFSWALD", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:10035", + "wmoid": 10035, + "name": "10035", + "geo": [ + { + "lat": 54.53, + "lon": 9.55, + "elev": 48, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SCHLESWIG", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:8594", + "wmoid": 8594, + "name": "GVAC", + "geo": [ + { + "lat": 16.73, + "lon": -22.95, + "elev": 55, + "firstTime": 0, + "lastTime": 1498586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SAL ISL/AMILCAR CAB", + "near_airport": "", + "gps_date": "", + "updateTime": "2017-06-27 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:8579", + "wmoid": 8579, + "name": "8579", + "geo": [ + { + "lat": 38.77, + "lon": -9.13, + "elev": 105, + "firstTime": 0, + "lastTime": 1577905200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LISBON/GAGO COUTINHO", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-01 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:8522", + "wmoid": 8522, + "name": "8522", + "geo": [ + { + "lat": 32.63, + "lon": -16.9, + "elev": 56, + "firstTime": 0, + "lastTime": 1668538800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FUNCHAL", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-11-15 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:8508", + "wmoid": 8508, + "name": "8508", + "geo": [ + { + "lat": 38.73, + "lon": -27.07, + "elev": 113, + "firstTime": 0, + "lastTime": 1668538800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LAJES/SANTA RITA", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-11-15 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:8495", + "wmoid": 8495, + "name": "LXGB", + "geo": [ + { + "lat": 36.15, + "lon": -5.33, + "elev": 3, + "firstTime": 0, + "lastTime": 1443790800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GIBRALTAR (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-10-02 07:00:00" +} , +{ + "id": "MD:V01:RAOB:station:8430", + "wmoid": 8430, + "name": "8430", + "geo": [ + { + "lat": 38.0, + "lon": -1.17, + "elev": 62, + "firstTime": 0, + "lastTime": 1450378800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MURCIA CITY", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-12-17 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:8023", + "wmoid": 8023, + "name": "8023", + "geo": [ + { + "lat": 43.47, + "lon": -3.82, + "elev": 65, + "firstTime": 0, + "lastTime": 1450378800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SANTANDER CITY", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-12-17 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:8001", + "wmoid": 8001, + "name": "8001", + "geo": [ + { + "lat": 43.37, + "lon": -8.42, + "elev": 67, + "firstTime": 0, + "lastTime": 1450378800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LA CORUNA CITY", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-12-17 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:7761", + "wmoid": 7761, + "name": "LFKJ", + "geo": [ + { + "lat": 41.92, + "lon": 8.8, + "elev": 5, + "firstTime": 0, + "lastTime": 1531112400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AJACCIO/CAMPO ORO", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-07-08 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:7645", + "wmoid": 7645, + "name": "LFME", + "geo": [ + { + "lat": 43.87, + "lon": 4.4, + "elev": 60, + "firstTime": 0, + "lastTime": 1530507600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NIMES/COURBESSAC", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-07-01 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:7510", + "wmoid": 7510, + "name": "LFBD", + "geo": [ + { + "lat": 44.83, + "lon": -0.7, + "elev": 45, + "firstTime": 0, + "lastTime": 1531112400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BORDEAUX/MERIGNAC", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-07-08 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:7481", + "wmoid": 7481, + "name": "LFLL", + "geo": [ + { + "lat": 45.73, + "lon": 5.08, + "elev": 248, + "firstTime": 0, + "lastTime": 1298898000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LYON/SATOLAS", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-02-28 06:00:00" +} , +{ + "id": "MD:V01:RAOB:station:7180", + "wmoid": 7180, + "name": "LFSN", + "geo": [ + { + "lat": 48.68, + "lon": 6.22, + "elev": 225, + "firstTime": 0, + "lastTime": 1303405200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NANCY/ESSEY", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-04-21 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:7145", + "wmoid": 7145, + "name": "7145", + "geo": [ + { + "lat": 48.77, + "lon": 2.02, + "elev": 168, + "firstTime": 0, + "lastTime": 1531112400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TRAPPES (AUT)", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-07-08 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:7110", + "wmoid": 7110, + "name": "LFRB", + "geo": [ + { + "lat": 48.45, + "lon": -4.42, + "elev": 99, + "firstTime": 0, + "lastTime": 1531112400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BREST/GUIPAVAS", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-07-08 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:6610", + "wmoid": 6610, + "name": "LSMP", + "geo": [ + { + "lat": 46.82, + "lon": 6.95, + "elev": 490, + "firstTime": 0, + "lastTime": 1520229600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PAYERNE (MIL/AUT)", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-03-04 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:6260", + "wmoid": 6260, + "name": "EHDB", + "geo": [ + { + "lat": 52.1, + "lon": 5.18, + "elev": 2, + "firstTime": 0, + "lastTime": 1414998000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DE BILT", + "near_airport": "", + "gps_date": "", + "updateTime": "2014-11-03 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:6181", + "wmoid": 6181, + "name": "6181", + "geo": [ + { + "lat": 55.77, + "lon": 12.53, + "elev": 40, + "firstTime": 0, + "lastTime": 0, + "updateTime": 0 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KOEBENHAVN\\JAEGERSBORG", + "near_airport": "", + "gps_date": "", + "updateTime": "" +} , +{ + "id": "MD:V01:RAOB:station:6011", + "wmoid": 6011, + "name": "6011", + "geo": [ + { + "lat": 62.02, + "lon": -6.77, + "elev": 55, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "THORSHAVN (PORT)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:4360", + "wmoid": 4360, + "name": "BGAM", + "geo": [ + { + "lat": 65.6, + "lon": -37.63, + "elev": 50, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ANGMAGSSALIK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:4339", + "wmoid": 4339, + "name": "BGSC", + "geo": [ + { + "lat": 70.48, + "lon": -21.97, + "elev": 66, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SCORESBYSUND", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:4320", + "wmoid": 4320, + "name": "BGDH", + "geo": [ + { + "lat": 76.77, + "lon": -18.67, + "elev": 12, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DANMARKSHAVN (PORT)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:4270", + "wmoid": 4270, + "name": "BGBW", + "geo": [ + { + "lat": 61.18, + "lon": -45.43, + "elev": 4, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NARSSARSSUAQ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:4220", + "wmoid": 4220, + "name": "BGEM", + "geo": [ + { + "lat": 68.7, + "lon": -52.75, + "elev": 40, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "EGEDESMINDE/AUSIAT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:4018", + "wmoid": 4018, + "name": "BIKF", + "geo": [ + { + "lat": 63.97, + "lon": -22.6, + "elev": 54, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KEFLAVIK (CIV\\NAS)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:3953", + "wmoid": 3953, + "name": "3953", + "geo": [ + { + "lat": 51.93, + "lon": -10.25, + "elev": 9, + "firstTime": 0, + "lastTime": 1602698400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VALENTIA OBSERVATORY", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-10-14 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:3918", + "wmoid": 3918, + "name": "3918", + "geo": [ + { + "lat": 54.3, + "lon": -6.19, + "elev": 15, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CASTOR BAY", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:3882", + "wmoid": 3882, + "name": "3882", + "geo": [ + { + "lat": 50.9, + "lon": 0.32, + "elev": 54, + "firstTime": 0, + "lastTime": 1712984400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HERSTOMONCEUX WEST", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-12 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:3808", + "wmoid": 3808, + "name": "3808", + "geo": [ + { + "lat": 50.22, + "lon": -5.32, + "elev": 87, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CAMBORNE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:3238", + "wmoid": 3238, + "name": "3238", + "geo": [ + { + "lat": 55.01, + "lon": -1.52, + "elev": 141, + "firstTime": 0, + "lastTime": 1713416400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALBEMARLE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-17 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:3005", + "wmoid": 3005, + "name": "3005", + "geo": [ + { + "lat": 60.13, + "lon": -1.18, + "elev": 82, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LERWICK/SHETLAND IS", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:2963", + "wmoid": 2963, + "name": "2963", + "geo": [ + { + "lat": 60.82, + "lon": 23.5, + "elev": 103, + "firstTime": 0, + "lastTime": 1509537600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JOKIOINEN", + "near_airport": "", + "gps_date": "", + "updateTime": "2017-11-01 06:00:00" +} , +{ + "id": "MD:V01:RAOB:station:2935", + "wmoid": 2935, + "name": "EFJY", + "geo": [ + { + "lat": 62.4, + "lon": 25.67, + "elev": 139, + "firstTime": 0, + "lastTime": 1483232400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JYVASKYLA (MIL/CIV)", + "near_airport": "", + "gps_date": "", + "updateTime": "2016-12-31 18:00:00" +} , +{ + "id": "MD:V01:RAOB:station:2836", + "wmoid": 2836, + "name": "EFSO", + "geo": [ + { + "lat": 67.37, + "lon": 26.65, + "elev": 178, + "firstTime": 0, + "lastTime": 1509516000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SODANKYLA", + "near_airport": "", + "gps_date": "", + "updateTime": "2017-11-01 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:2591", + "wmoid": 2591, + "name": "ESQV", + "geo": [ + { + "lat": 57.65, + "lon": 18.35, + "elev": 45, + "firstTime": 0, + "lastTime": 1584079200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VISBY AERO STATION", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-03-13 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:2527", + "wmoid": 2527, + "name": "ESGG", + "geo": [ + { + "lat": 57.67, + "lon": 12.3, + "elev": 155, + "firstTime": 0, + "lastTime": 1593496800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GOTEBORG/LANDVETTER", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-06-30 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:2365", + "wmoid": 2365, + "name": "ESNN", + "geo": [ + { + "lat": 62.53, + "lon": 17.47, + "elev": 6, + "firstTime": 0, + "lastTime": 1593108000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SUNDSVALL/HARNOSAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-06-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:2185", + "wmoid": 2185, + "name": "ESPA", + "geo": [ + { + "lat": 65.55, + "lon": 22.13, + "elev": 16, + "firstTime": 0, + "lastTime": 1573801200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LULEA/KALLAX (AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-11-15 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:1415", + "wmoid": 1415, + "name": "ENZV", + "geo": [ + { + "lat": 58.87, + "lon": 5.67, + "elev": 33, + "firstTime": 0, + "lastTime": 1587016800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "STAVANGER/SOLA(AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-04-16 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:1241", + "wmoid": 1241, + "name": "ENOL", + "geo": [ + { + "lat": 63.7, + "lon": 9.6, + "elev": 7, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ORLAND III(NOR-AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:1152", + "wmoid": 1152, + "name": "ENBO", + "geo": [ + { + "lat": 67.25, + "lon": 14.4, + "elev": 8, + "firstTime": 0, + "lastTime": 1416942000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BODO VI (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2014-11-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:1028", + "wmoid": 1028, + "name": "ENBJ", + "geo": [ + { + "lat": 74.52, + "lon": 19.02, + "elev": 18, + "firstTime": 0, + "lastTime": 1601143200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BJORNOYA ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-09-26 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:1004", + "wmoid": 1004, + "name": "ENAS", + "geo": [ + { + "lat": 78.92, + "lon": 11.93, + "elev": 8, + "firstTime": 0, + "lastTime": 1712426400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NY-ALESUND II", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-06 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:1001", + "wmoid": 1001, + "name": "ENJA", + "geo": [ + { + "lat": 70.93, + "lon": -8.67, + "elev": 9, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JAN MAYEN(NOR-NAVY)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68424", + "wmoid": 68424, + "name": "FAUP", + "geo": [ + { + "lat": -28.4, + "lon": 21.27, + "elev": 836, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "UPINGTON/PIERRE VAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68512", + "wmoid": 68512, + "name": "FASB", + "geo": [ + { + "lat": -29.67, + "lon": 17.87, + "elev": 1006, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SPRINGBOK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68906", + "wmoid": 68906, + "name": "FAGE", + "geo": [ + { + "lat": -40.35, + "lon": -9.88, + "elev": 54, + "firstTime": 0, + "lastTime": 1713463200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GOUGH ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-18 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70026", + "wmoid": 70026, + "name": "BRW", + "geo": [ + { + "lat": 71.3, + "lon": -156.78, + "elev": 12, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "POINT BARROW", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70133", + "wmoid": 70133, + "name": "OTZ", + "geo": [ + { + "lat": 66.87, + "lon": -162.63, + "elev": 5, + "firstTime": 1376719200, + "lastTime": 1713808800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KOTZEBUE", + "near_airport": "", + "gps_date": "2013-08-17", + "updateTime": "2024-04-22 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70200", + "wmoid": 70200, + "name": "OME", + "geo": [ + { + "lat": 64.5, + "lon": -165.43, + "elev": 5, + "firstTime": 1248415200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NOME AP", + "near_airport": "", + "gps_date": "2009-07-24", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70219", + "wmoid": 70219, + "name": "BET", + "geo": [ + { + "lat": 60.78, + "lon": -161.8, + "elev": 36, + "firstTime": 1282543200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BETHEL", + "near_airport": "", + "gps_date": "2010-08-23", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70231", + "wmoid": 70231, + "name": "MCG", + "geo": [ + { + "lat": 62.97, + "lon": -155.62, + "elev": 103, + "firstTime": 1376978400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MCGRATH", + "near_airport": "", + "gps_date": "2013-08-20", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70261", + "wmoid": 70261, + "name": "FAI", + "geo": [ + { + "lat": 64.82, + "lon": -147.87, + "elev": 135, + "firstTime": 1250488800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FAIRBANKS", + "near_airport": "", + "gps_date": "2009-08-17", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70273", + "wmoid": 70273, + "name": "ANC", + "geo": [ + { + "lat": 61.17, + "lon": -150.02, + "elev": 45, + "firstTime": 1216620000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ANCHORAGE IAP/PT. CAMPBE", + "near_airport": "", + "gps_date": "2008-07-21", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70308", + "wmoid": 70308, + "name": "SNP", + "geo": [ + { + "lat": 57.15, + "lon": -170.22, + "elev": 10, + "firstTime": 1283148000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ST PAUL ISLAND", + "near_airport": "", + "gps_date": "2010-08-30", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70316", + "wmoid": 70316, + "name": "CDB", + "geo": [ + { + "lat": 55.2, + "lon": -162.72, + "elev": 30, + "firstTime": 1379829600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "COLD BAY", + "near_airport": "", + "gps_date": "2013-09-22", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70326", + "wmoid": 70326, + "name": "AKN", + "geo": [ + { + "lat": 58.68, + "lon": -156.65, + "elev": 15, + "firstTime": 1248069600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KING SALMON", + "near_airport": "", + "gps_date": "2009-07-20", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70350", + "wmoid": 70350, + "name": "ADQ", + "geo": [ + { + "lat": 57.75, + "lon": -152.48, + "elev": 4, + "firstTime": 0, + "lastTime": 1713765600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KODIAK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-22 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70361", + "wmoid": 70361, + "name": "YAK", + "geo": [ + { + "lat": 59.52, + "lon": -139.67, + "elev": 10, + "firstTime": 1255154400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YAKUTAT", + "near_airport": "", + "gps_date": "2009-10-10", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70414", + "wmoid": 70414, + "name": "SYA", + "geo": [ + { + "lat": 52.72, + "lon": -174.1, + "elev": 37, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SHEMYA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71043", + "wmoid": 71043, + "name": "YVQ", + "geo": [ + { + "lat": 65.28, + "lon": -126.75, + "elev": 95, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NORMAN WELLS (UA)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71081", + "wmoid": 71081, + "name": "YUX", + "geo": [ + { + "lat": 68.78, + "lon": -81.25, + "elev": 7, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HALL BEACH/HALL LK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71082", + "wmoid": 71082, + "name": "YLT", + "geo": [ + { + "lat": 82.5, + "lon": -62.33, + "elev": 66, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALERT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71600", + "wmoid": 71600, + "name": "YSA", + "geo": [ + { + "lat": 43.93, + "lon": -60.02, + "elev": 4, + "firstTime": 0, + "lastTime": 1566367200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SABLE ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-08-21 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71801", + "wmoid": 71801, + "name": "YYT", + "geo": [ + { + "lat": 47.67, + "lon": -52.75, + "elev": 140, + "firstTime": 0, + "lastTime": 1250186400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TORBAY/ST JOHNS", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-08-13 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71815", + "wmoid": 71815, + "name": "YJT", + "geo": [ + { + "lat": 48.53, + "lon": -58.55, + "elev": 60, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "STEPHENVILLE/HARMON AFB", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71906", + "wmoid": 71906, + "name": "YVP", + "geo": [ + { + "lat": 58.1, + "lon": -68.42, + "elev": 60, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KUUJJUAQ (UA)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71907", + "wmoid": 71907, + "name": "YPH", + "geo": [ + { + "lat": 58.45, + "lon": -78.12, + "elev": 26, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "INUKJUAK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71909", + "wmoid": 71909, + "name": "YVN", + "geo": [ + { + "lat": 63.75, + "lon": -68.55, + "elev": 35, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "IQALUIT (UA)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71913", + "wmoid": 71913, + "name": "YYQ", + "geo": [ + { + "lat": 58.75, + "lon": -94.07, + "elev": 29, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHURCHILL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71915", + "wmoid": 71915, + "name": "YZS", + "geo": [ + { + "lat": 64.2, + "lon": -83.37, + "elev": 57, + "firstTime": 0, + "lastTime": 1504202400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CORAL HARBOUR", + "near_airport": "", + "gps_date": "", + "updateTime": "2017-08-31 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71917", + "wmoid": 71917, + "name": "YEU", + "geo": [ + { + "lat": 79.98, + "lon": -85.93, + "elev": 10, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "EUREKA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71924", + "wmoid": 71924, + "name": "YRB", + "geo": [ + { + "lat": 74.72, + "lon": -94.98, + "elev": 40, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "RESOLUTE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71925", + "wmoid": 71925, + "name": "YCB", + "geo": [ + { + "lat": 69.1, + "lon": -105.12, + "elev": 25, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CAMBRIDGE BAY", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71926", + "wmoid": 71926, + "name": "YBK", + "geo": [ + { + "lat": 64.3, + "lon": -96.0, + "elev": 49, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BAKER LAKE (UA)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71934", + "wmoid": 71934, + "name": "YSM", + "geo": [ + { + "lat": 60.03, + "lon": -111.95, + "elev": 203, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FT SMITH (UA)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71945", + "wmoid": 71945, + "name": "YYE", + "geo": [ + { + "lat": 58.83, + "lon": -122.6, + "elev": 377, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FORT NELSON UA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71957", + "wmoid": 71957, + "name": "YEV", + "geo": [ + { + "lat": 68.32, + "lon": -133.53, + "elev": 103, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "INUVIK (UA)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71964", + "wmoid": 71964, + "name": "YXY", + "geo": [ + { + "lat": 60.72, + "lon": -135.07, + "elev": 704, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WHITEHORSE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:76654", + "wmoid": 76654, + "name": "MMZL", + "geo": [ + { + "lat": 19.07, + "lon": -104.33, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MANZANILLO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:76692", + "wmoid": 76692, + "name": "VER", + "geo": [ + { + "lat": 19.17, + "lon": -96.12, + "elev": 13, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VERACRUZ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78016", + "wmoid": 78016, + "name": "XKF", + "geo": [ + { + "lat": 32.37, + "lon": -64.68, + "elev": 37, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BERMUDA/(MCKINDLY AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78397", + "wmoid": 78397, + "name": "KJP", + "geo": [ + { + "lat": 17.93, + "lon": -76.78, + "elev": 1, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KINGSTON/PALISADOES", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78526", + "wmoid": 78526, + "name": "JSJ", + "geo": [ + { + "lat": 18.43, + "lon": -66.0, + "elev": 3, + "firstTime": 1267426800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SAN JUAN/ISLA VERDE", + "near_airport": "", + "gps_date": "2010-03-01", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78583", + "wmoid": 78583, + "name": "ZBZ", + "geo": [ + { + "lat": 17.53, + "lon": -88.3, + "elev": 5, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BELIZE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78762", + "wmoid": 78762, + "name": "ROL", + "geo": [ + { + "lat": 9.98, + "lon": -84.22, + "elev": 920, + "firstTime": 0, + "lastTime": 1622743200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SAN JOSE/JUAN SANTA MARIA", + "near_airport": "", + "gps_date": "", + "updateTime": "2021-06-03 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78866", + "wmoid": 78866, + "name": "ACM", + "geo": [ + { + "lat": 18.05, + "lon": -63.12, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SINT MARTIN/JULIANA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78897", + "wmoid": 78897, + "name": "FFR", + "geo": [ + { + "lat": 16.27, + "lon": -61.52, + "elev": 8, + "firstTime": 0, + "lastTime": 1572411600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "POINT A PITRE/RAIZET", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-29 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78954", + "wmoid": 78954, + "name": "BDI", + "geo": [ + { + "lat": 13.07, + "lon": -59.5, + "elev": 47, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SEAWELL APT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78970", + "wmoid": 78970, + "name": "KPP", + "geo": [ + { + "lat": 10.58, + "lon": -61.35, + "elev": 12, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TRINIDAD/PIARCO IAP", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:80222", + "wmoid": 80222, + "name": "SKBO", + "geo": [ + { + "lat": 4.7, + "lon": -74.13, + "elev": 2548, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BOGOTA/ELDORADO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:81405", + "wmoid": 81405, + "name": "SOCA", + "geo": [ + { + "lat": 4.83, + "lon": -52.37, + "elev": 9, + "firstTime": 0, + "lastTime": 1572411600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CAYENNE/ROCHAMBEAU", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-29 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82332", + "wmoid": 82332, + "name": "SBMN", + "geo": [ + { + "lat": -3.15, + "lon": -59.98, + "elev": 84, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MANAUS/PONTA PELADA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82397", + "wmoid": 82397, + "name": "82397", + "geo": [ + { + "lat": -3.73, + "lon": -38.55, + "elev": 19, + "firstTime": 0, + "lastTime": 1564164000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FORTALEZA", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-07-26 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82824", + "wmoid": 82824, + "name": "SBPV", + "geo": [ + { + "lat": -8.77, + "lon": -63.92, + "elev": 88, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PORTO VELHO(CV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82900", + "wmoid": 82900, + "name": "82900", + "geo": [ + { + "lat": -8.05, + "lon": -34.92, + "elev": 7, + "firstTime": 0, + "lastTime": 1575745200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "RECIFE/CURADO", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-12-07 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82965", + "wmoid": 82965, + "name": "SBAT", + "geo": [ + { + "lat": -9.87, + "lon": -56.1, + "elev": 288, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALTA FLORESTA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82983", + "wmoid": 82983, + "name": "82983", + "geo": [ + { + "lat": -9.38, + "lon": -40.48, + "elev": 370, + "firstTime": 0, + "lastTime": 1601229600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PETROLINA", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-09-27 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83362", + "wmoid": 83362, + "name": "SBCY", + "geo": [ + { + "lat": -15.65, + "lon": -56.1, + "elev": 182, + "firstTime": 0, + "lastTime": 1632938400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CUIABA/MARECHAL", + "near_airport": "", + "gps_date": "", + "updateTime": "2021-09-29 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83378", + "wmoid": 83378, + "name": "SBBR", + "geo": [ + { + "lat": -15.87, + "lon": -47.93, + "elev": 1061, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BRASILIA (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83566", + "wmoid": 83566, + "name": "83566", + "geo": [ + { + "lat": -19.62, + "lon": -43.57, + "elev": 827, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CONFIS INTNL ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83612", + "wmoid": 83612, + "name": "SBCG", + "geo": [ + { + "lat": -20.47, + "lon": -54.67, + "elev": 556, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CAMPO GRANDE INTL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83650", + "wmoid": 83650, + "name": "83650", + "geo": [ + { + "lat": -20.5, + "lon": -29.32, + "elev": 5, + "firstTime": 0, + "lastTime": 1555437600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TRINDADE ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-04-16 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83746", + "wmoid": 83746, + "name": "SBGL", + "geo": [ + { + "lat": -22.82, + "lon": -43.25, + "elev": 6, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GALEAO/RIO(CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83779", + "wmoid": 83779, + "name": "SBMT", + "geo": [ + { + "lat": -23.52, + "lon": -46.63, + "elev": 722, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MARTE (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83840", + "wmoid": 83840, + "name": "SBCT", + "geo": [ + { + "lat": -25.52, + "lon": -49.17, + "elev": 908, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CURITIBA/AFONSO PEN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:85442", + "wmoid": 85442, + "name": "SCFA", + "geo": [ + { + "lat": -23.43, + "lon": -70.43, + "elev": 120, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ANTOFAGASTA/CERRO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:85586", + "wmoid": 85586, + "name": "SCSN", + "geo": [ + { + "lat": -33.65, + "lon": -71.62, + "elev": 75, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SANTO DOMINGO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:85799", + "wmoid": 85799, + "name": "SCTE", + "geo": [ + { + "lat": -41.42, + "lon": -73.08, + "elev": 86, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PUERTO MONTT/TEPUAL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:85934", + "wmoid": 85934, + "name": "SCCI", + "geo": [ + { + "lat": -53.0, + "lon": -70.85, + "elev": 37, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PUNTA ARENAS", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:87047", + "wmoid": 87047, + "name": "SASA", + "geo": [ + { + "lat": -24.85, + "lon": -65.48, + "elev": 1216, + "firstTime": 0, + "lastTime": 1395856800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SALTA AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2014-03-26 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:87155", + "wmoid": 87155, + "name": "SARE", + "geo": [ + { + "lat": -27.45, + "lon": -59.05, + "elev": 52, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "RESISTENCIA AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:87344", + "wmoid": 87344, + "name": "SACO", + "geo": [ + { + "lat": -31.32, + "lon": -64.22, + "elev": 474, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CORDOBA AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:87418", + "wmoid": 87418, + "name": "SAME", + "geo": [ + { + "lat": -32.83, + "lon": -68.78, + "elev": 704, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MENDOZA/EL PLUMERIL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:87576", + "wmoid": 87576, + "name": "SAEZ", + "geo": [ + { + "lat": -34.82, + "lon": -58.53, + "elev": 20, + "firstTime": 0, + "lastTime": 1657497600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BUENOS AIRES/EZEIZA", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-07-10 18:00:00" +} , +{ + "id": "MD:V01:RAOB:station:87623", + "wmoid": 87623, + "name": "SAZR", + "geo": [ + { + "lat": -36.57, + "lon": -64.27, + "elev": 191, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SANTA ROSA AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:87860", + "wmoid": 87860, + "name": "SAVC", + "geo": [ + { + "lat": -45.78, + "lon": -67.5, + "elev": 46, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "COMODORO RIVADAVIA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:89002", + "wmoid": 89002, + "name": "89002", + "geo": [ + { + "lat": -70.67, + "lon": -8.25, + "elev": 40, + "firstTime": 0, + "lastTime": 1675018800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VON-NEUMAYER G-BASE", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-01-29 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:89009", + "wmoid": 89009, + "name": "89009", + "geo": [ + { + "lat": -90.0, + "lon": 0.0, + "elev": 2830, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AMUNDSEN-SCOTT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:89022", + "wmoid": 89022, + "name": "89022", + "geo": [ + { + "lat": -75.5, + "lon": -26.65, + "elev": 30, + "firstTime": 0, + "lastTime": 1706724000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HALLEY BRI-BASE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-01-31 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:89532", + "wmoid": 89532, + "name": "89532", + "geo": [ + { + "lat": -69.0, + "lon": 39.58, + "elev": 21, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SYOWA JAPAN-BASE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:89664", + "wmoid": 89664, + "name": "89664", + "geo": [ + { + "lat": -77.85, + "lon": 166.67, + "elev": 34, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MCMURDO USA-BASE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91212", + "wmoid": 91212, + "name": "PGAC", + "geo": [ + { + "lat": 13.55, + "lon": 144.83, + "elev": 111, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GUAM,MARIANA IS", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91285", + "wmoid": 91285, + "name": "ITO", + "geo": [ + { + "lat": 19.72, + "lon": -155.07, + "elev": 10, + "firstTime": 1278914400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HILO", + "near_airport": "", + "gps_date": "2010-07-12", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91334", + "wmoid": 91334, + "name": "PTKK", + "geo": [ + { + "lat": 7.47, + "lon": 151.85, + "elev": 2, + "firstTime": 1304143200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TRUK INTL/MOEN ISL", + "near_airport": "", + "gps_date": "2011-04-30", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91348", + "wmoid": 91348, + "name": "PTPN", + "geo": [ + { + "lat": 6.96, + "lon": 158.2, + "elev": 38, + "firstTime": 1305007200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PONAPE ISLAND", + "near_airport": "", + "gps_date": "2011-05-10", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91366", + "wmoid": 91366, + "name": "PKWA", + "geo": [ + { + "lat": 8.73, + "lon": 167.73, + "elev": 8, + "firstTime": 0, + "lastTime": 1704524400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KWAJALEIN/BUCHOLZ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-01-06 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91408", + "wmoid": 91408, + "name": "PTRO", + "geo": [ + { + "lat": 7.33, + "lon": 134.48, + "elev": 33, + "firstTime": 1300082400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KOROR/PALAU ISLAND", + "near_airport": "", + "gps_date": "2011-03-14", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91413", + "wmoid": 91413, + "name": "PTYA", + "geo": [ + { + "lat": 9.48, + "lon": 138.08, + "elev": 17, + "firstTime": 1301119200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YAP ISLAND", + "near_airport": "", + "gps_date": "2011-03-26", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91592", + "wmoid": 91592, + "name": "NWWN", + "geo": [ + { + "lat": -22.27, + "lon": 166.45, + "elev": 72, + "firstTime": 0, + "lastTime": 1571029200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NOUMEA", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-13 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91765", + "wmoid": 91765, + "name": "NTSU", + "geo": [ + { + "lat": -14.33, + "lon": -170.72, + "elev": 3, + "firstTime": 1296889200, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PAGO PAGO INTL ARPT", + "near_airport": "", + "gps_date": "2011-02-05", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91938", + "wmoid": 91938, + "name": "NTAA", + "geo": [ + { + "lat": -17.55, + "lon": -149.62, + "elev": 2, + "firstTime": 0, + "lastTime": 1572368400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TAHITI ISLAND/FAAA", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-29 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:93844", + "wmoid": 93844, + "name": "NZNV", + "geo": [ + { + "lat": -46.42, + "lon": 168.33, + "elev": 1, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "INVERCARGILL AERO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94120", + "wmoid": 94120, + "name": "YPDN", + "geo": [ + { + "lat": -12.4, + "lon": 130.87, + "elev": 30, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DARWIN (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94150", + "wmoid": 94150, + "name": "YDGV", + "geo": [ + { + "lat": -12.27, + "lon": 136.82, + "elev": 54, + "firstTime": 0, + "lastTime": 1701928800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GOVE AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-12-06 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94203", + "wmoid": 94203, + "name": "YBRM", + "geo": [ + { + "lat": -17.95, + "lon": 122.22, + "elev": 9, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BROOME AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94294", + "wmoid": 94294, + "name": "YBTL", + "geo": [ + { + "lat": -19.25, + "lon": 146.75, + "elev": 6, + "firstTime": 0, + "lastTime": 1579240800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TOWNSVILLE(CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-16 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94302", + "wmoid": 94302, + "name": "YPLM", + "geo": [ + { + "lat": -22.23, + "lon": 114.08, + "elev": 6, + "firstTime": 0, + "lastTime": 1713978000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LEARMOUTH", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94326", + "wmoid": 94326, + "name": "YBAS", + "geo": [ + { + "lat": -23.8, + "lon": 133.9, + "elev": 541, + "firstTime": 0, + "lastTime": 1713934800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALICE SPRINGS ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-23 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94403", + "wmoid": 94403, + "name": "YPGN", + "geo": [ + { + "lat": -28.78, + "lon": 114.7, + "elev": 34, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GERALDTON AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94578", + "wmoid": 94578, + "name": "YBBN", + "geo": [ + { + "lat": -27.38, + "lon": 153.1, + "elev": 5, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BRISBANE INTL ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94610", + "wmoid": 94610, + "name": "YPPH", + "geo": [ + { + "lat": -31.93, + "lon": 115.95, + "elev": 29, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PERTH INTL/BELMONT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94637", + "wmoid": 94637, + "name": "YPKG", + "geo": [ + { + "lat": -30.77, + "lon": 121.45, + "elev": 360, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KALGOORLIE/BOULDER", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94672", + "wmoid": 94672, + "name": "YPAD", + "geo": [ + { + "lat": -34.93, + "lon": 138.52, + "elev": 4, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ADELAIDE INTL ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94767", + "wmoid": 94767, + "name": "YSSY", + "geo": [ + { + "lat": -33.95, + "lon": 151.18, + "elev": 3, + "firstTime": 0, + "lastTime": 1710414000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SYDNEY INTL AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-03-14 05:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94776", + "wmoid": 94776, + "name": "YSWM", + "geo": [ + { + "lat": -32.78, + "lon": 151.82, + "elev": 8, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WILLIAMTOWN(AUS-AB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94866", + "wmoid": 94866, + "name": "YMML", + "geo": [ + { + "lat": -37.67, + "lon": 144.83, + "elev": 141, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MELBOURNE INTL ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94910", + "wmoid": 94910, + "name": "YSWG", + "geo": [ + { + "lat": -35.15, + "lon": 147.45, + "elev": 213, + "firstTime": 0, + "lastTime": 1713934800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WAGGA WAGGA(CV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-23 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94975", + "wmoid": 94975, + "name": "YMHB", + "geo": [ + { + "lat": -42.83, + "lon": 147.48, + "elev": 27, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HOBART AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94996", + "wmoid": 94996, + "name": "YSNF", + "geo": [ + { + "lat": -29.03, + "lon": 167.93, + "elev": 109, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NORFOLK ISLAND ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94998", + "wmoid": 94998, + "name": "YMMQ", + "geo": [ + { + "lat": -54.48, + "lon": 158.93, + "elev": 6, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MACQUARIE ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:96315", + "wmoid": 96315, + "name": "WBGI", + "geo": [ + { + "lat": 4.93, + "lon": 114.93, + "elev": 15, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BRUNEI AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:96413", + "wmoid": 96413, + "name": "WBGG", + "geo": [ + { + "lat": 1.48, + "lon": 110.33, + "elev": 27, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KUCHING (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:96441", + "wmoid": 96441, + "name": "WBGB", + "geo": [ + { + "lat": 3.2, + "lon": 113.03, + "elev": 5, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BINTULU/KALIMANTAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:96471", + "wmoid": 96471, + "name": "WBKK", + "geo": [ + { + "lat": 5.93, + "lon": 116.05, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KOTA KINABALU INTL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:96481", + "wmoid": 96481, + "name": "WBKW", + "geo": [ + { + "lat": 4.27, + "lon": 117.88, + "elev": 20, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TAWAU/KALIMANTAN IL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:1400", + "wmoid": 1400, + "name": "ENEK", + "geo": [ + { + "lat": 56.53, + "lon": 3.22, + "elev": 46, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:3354", + "wmoid": 3354, + "name": "3354", + "geo": [ + { + "lat": 53.0, + "lon": -1.25, + "elev": 117, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:3743", + "wmoid": 3743, + "name": "3743", + "geo": [ + { + "lat": 51.2, + "lon": -1.8, + "elev": 132, + "firstTime": 0, + "lastTime": 1714042800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 05:00:00" +} , +{ + "id": "MD:V01:RAOB:station:8221", + "wmoid": 8221, + "name": "LEMD", + "geo": [ + { + "lat": 40.47, + "lon": -3.58, + "elev": 638, + "firstTime": 0, + "lastTime": 1450378800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-12-17 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:8302", + "wmoid": 8302, + "name": "8302", + "geo": [ + { + "lat": 39.6, + "lon": 2.7, + "elev": 45, + "firstTime": 0, + "lastTime": 1450378800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-12-17 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:11747", + "wmoid": 11747, + "name": "11747", + "geo": [ + { + "lat": 49.45, + "lon": 17.13, + "elev": 216, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:13275", + "wmoid": 13275, + "name": "13275", + "geo": [ + { + "lat": 44.77, + "lon": 20.42, + "elev": 203, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:14430", + "wmoid": 14430, + "name": "14430", + "geo": [ + { + "lat": 44.09, + "lon": 15.35, + "elev": 84, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:16113", + "wmoid": 16113, + "name": "16113", + "geo": [ + { + "lat": 44.53, + "lon": 7.62, + "elev": 386, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:16754", + "wmoid": 16754, + "name": "LGIR", + "geo": [ + { + "lat": 35.33, + "lon": 25.18, + "elev": 39, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:17281", + "wmoid": 17281, + "name": "LTCC", + "geo": [ + { + "lat": 37.88, + "lon": 40.18, + "elev": 677, + "firstTime": 0, + "lastTime": 1647540000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DIYARBAKIR(CIV/AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-03-17 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:20674", + "wmoid": 20674, + "name": "20674", + "geo": [ + { + "lat": 73.53, + "lon": 80.4, + "elev": 47, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:22820", + "wmoid": 22820, + "name": "22820", + "geo": [ + { + "lat": 61.82, + "lon": 34.27, + "elev": 109, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:23418", + "wmoid": 23418, + "name": "23418", + "geo": [ + { + "lat": 65.12, + "lon": 57.1, + "elev": 56, + "firstTime": 0, + "lastTime": 1348639200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-09-26 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:23804", + "wmoid": 23804, + "name": "UUYY", + "geo": [ + { + "lat": 61.72, + "lon": 50.83, + "elev": 119, + "firstTime": 0, + "lastTime": 1348639200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-09-26 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:23884", + "wmoid": 23884, + "name": "23884", + "geo": [ + { + "lat": 61.6, + "lon": 90.0, + "elev": 63, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:24343", + "wmoid": 24343, + "name": "24343", + "geo": [ + { + "lat": 66.77, + "lon": 123.4, + "elev": 93, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:24507", + "wmoid": 24507, + "name": "24507", + "geo": [ + { + "lat": 64.27, + "lon": 100.23, + "elev": 186, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:24726", + "wmoid": 24726, + "name": "24726", + "geo": [ + { + "lat": 62.55, + "lon": 113.88, + "elev": 347, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:24944", + "wmoid": 24944, + "name": "24944", + "geo": [ + { + "lat": 60.4, + "lon": 120.42, + "elev": 226, + "firstTime": 0, + "lastTime": 1540965600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-10-31 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:25123", + "wmoid": 25123, + "name": "25123", + "geo": [ + { + "lat": 68.8, + "lon": 161.28, + "elev": 32, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:25428", + "wmoid": 25428, + "name": "25428", + "geo": [ + { + "lat": 65.23, + "lon": 160.5, + "elev": 265, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:26477", + "wmoid": 26477, + "name": "ULOL", + "geo": [ + { + "lat": 56.38, + "lon": 30.6, + "elev": 98, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:27730", + "wmoid": 27730, + "name": "27730", + "geo": [ + { + "lat": 54.63, + "lon": 39.7, + "elev": 158, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:29231", + "wmoid": 29231, + "name": "29231", + "geo": [ + { + "lat": 58.3, + "lon": 82.9, + "elev": 76, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:29263", + "wmoid": 29263, + "name": "29263", + "geo": [ + { + "lat": 58.45, + "lon": 92.15, + "elev": 78, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:29282", + "wmoid": 29282, + "name": "29282", + "geo": [ + { + "lat": 58.42, + "lon": 97.4, + "elev": 134, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:29839", + "wmoid": 29839, + "name": "29839", + "geo": [ + { + "lat": 53.35, + "lon": 83.82, + "elev": 159, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:29862", + "wmoid": 29862, + "name": "29862", + "geo": [ + { + "lat": 53.77, + "lon": 91.32, + "elev": 256, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:31538", + "wmoid": 31538, + "name": "31538", + "geo": [ + { + "lat": 50.07, + "lon": 132.13, + "elev": 349, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:32389", + "wmoid": 32389, + "name": "32389", + "geo": [ + { + "lat": 56.32, + "lon": 160.83, + "elev": 28, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:34731", + "wmoid": 34731, + "name": "URRR", + "geo": [ + { + "lat": 47.25, + "lon": 39.82, + "elev": 77, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:35671", + "wmoid": 35671, + "name": "35671", + "geo": [ + { + "lat": 47.8, + "lon": 67.72, + "elev": 345, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:36003", + "wmoid": 36003, + "name": "36003", + "geo": [ + { + "lat": 52.28, + "lon": 76.95, + "elev": 123, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:37018", + "wmoid": 37018, + "name": "37018", + "geo": [ + { + "lat": 44.1, + "lon": 39.07, + "elev": 41, + "firstTime": 0, + "lastTime": 1348639200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-09-26 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:37054", + "wmoid": 37054, + "name": "URMM", + "geo": [ + { + "lat": 44.22, + "lon": 43.1, + "elev": 314, + "firstTime": 0, + "lastTime": 1348639200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-09-26 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40394", + "wmoid": 40394, + "name": "OEHL", + "geo": [ + { + "lat": 27.52, + "lon": 41.73, + "elev": 1013, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40437", + "wmoid": 40437, + "name": "OERK", + "geo": [ + { + "lat": 24.93, + "lon": 46.72, + "elev": 612, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40706", + "wmoid": 40706, + "name": "OITT", + "geo": [ + { + "lat": 38.08, + "lon": 46.28, + "elev": 1361, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40809", + "wmoid": 40809, + "name": "OIMB", + "geo": [ + { + "lat": 32.87, + "lon": 59.2, + "elev": 1491, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40841", + "wmoid": 40841, + "name": "OIKK", + "geo": [ + { + "lat": 30.25, + "lon": 56.97, + "elev": 1754, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40948", + "wmoid": 40948, + "name": "OAKB", + "geo": [ + { + "lat": 34.55, + "lon": 69.22, + "elev": 1791, + "firstTime": 0, + "lastTime": 1628917200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2021-08-13 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42027", + "wmoid": 42027, + "name": "42027", + "geo": [ + { + "lat": 34.08, + "lon": 74.83, + "elev": 1587, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43279", + "wmoid": 43279, + "name": "VOMM", + "geo": [ + { + "lat": 13.0, + "lon": 80.18, + "elev": 16, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43311", + "wmoid": 43311, + "name": "43311", + "geo": [ + { + "lat": 11.12, + "lon": 72.73, + "elev": 4, + "firstTime": 0, + "lastTime": 1694235600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-09-08 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:44231", + "wmoid": 44231, + "name": "44231", + "geo": [ + { + "lat": 49.63, + "lon": 100.17, + "elev": 1288, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47090", + "wmoid": 47090, + "name": "47090", + "geo": [ + { + "lat": 38.25, + "lon": 128.57, + "elev": 18, + "firstTime": 0, + "lastTime": 1450378800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-12-17 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47169", + "wmoid": 47169, + "name": "47169", + "geo": [ + { + "lat": 34.68, + "lon": 125.45, + "elev": 83, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48568", + "wmoid": 48568, + "name": "VTSH", + "geo": [ + { + "lat": 7.2, + "lon": 100.6, + "elev": 5, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48650", + "wmoid": 48650, + "name": "48650", + "geo": [ + { + "lat": 3.1, + "lon": 101.65, + "elev": 17, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48657", + "wmoid": 48657, + "name": "WMKD", + "geo": [ + { + "lat": 3.78, + "lon": 103.22, + "elev": 16, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48698", + "wmoid": 48698, + "name": "WSSS", + "geo": [ + { + "lat": 1.37, + "lon": 103.98, + "elev": 16, + "firstTime": 0, + "lastTime": 1689292800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-07-13 18:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48855", + "wmoid": 48855, + "name": "VVDN", + "geo": [ + { + "lat": 16.03, + "lon": 108.18, + "elev": 7, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48900", + "wmoid": 48900, + "name": "VVTS", + "geo": [ + { + "lat": 10.82, + "lon": 106.67, + "elev": 19, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:52983", + "wmoid": 52983, + "name": "52983", + "geo": [ + { + "lat": 35.87, + "lon": 104.15, + "elev": 1875, + "firstTime": 0, + "lastTime": 1579370400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:54727", + "wmoid": 54727, + "name": "54727", + "geo": [ + { + "lat": 36.7, + "lon": 117.55, + "elev": 123, + "firstTime": 0, + "lastTime": 1579370400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:56187", + "wmoid": 56187, + "name": "56187", + "geo": [ + { + "lat": 30.7, + "lon": 103.83, + "elev": 541, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58968", + "wmoid": 58968, + "name": "58968", + "geo": [ + { + "lat": 25.03, + "lon": 121.53, + "elev": 9, + "firstTime": 0, + "lastTime": 1579460400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:60191", + "wmoid": 60191, + "name": "60191", + "geo": [ + { + "lat": 32.37, + "lon": -6.4, + "elev": 468, + "firstTime": 0, + "lastTime": 1682834400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-04-30 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:60715", + "wmoid": 60715, + "name": "DTTA", + "geo": [ + { + "lat": 36.83, + "lon": 10.23, + "elev": 4, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:60760", + "wmoid": 60760, + "name": "DTTZ", + "geo": [ + { + "lat": 33.92, + "lon": 8.17, + "elev": 93, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61902", + "wmoid": 61902, + "name": "FHAW", + "geo": [ + { + "lat": -7.97, + "lon": -14.4, + "elev": 79, + "firstTime": 0, + "lastTime": 1405098000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2014-07-11 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61980", + "wmoid": 61980, + "name": "61980", + "geo": [ + { + "lat": -20.88, + "lon": 55.52, + "elev": 20, + "firstTime": 0, + "lastTime": 1571590800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61995", + "wmoid": 61995, + "name": "61995", + "geo": [ + { + "lat": -20.3, + "lon": 57.5, + "elev": 425, + "firstTime": 0, + "lastTime": 1671602400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-12-20 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:62403", + "wmoid": 62403, + "name": "62403", + "geo": [ + { + "lat": 26.2, + "lon": 32.75, + "elev": 96, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:62423", + "wmoid": 62423, + "name": "62423", + "geo": [ + { + "lat": 27.05, + "lon": 27.97, + "elev": 92, + "firstTime": 0, + "lastTime": 1685469600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-05-30 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68110", + "wmoid": 68110, + "name": "FAWW", + "geo": [ + { + "lat": -22.57, + "lon": 17.1, + "elev": 1725, + "firstTime": 0, + "lastTime": 1686499200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-06-11 10:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68240", + "wmoid": 68240, + "name": "FBSK", + "geo": [ + { + "lat": -24.22, + "lon": 25.92, + "elev": 1005, + "firstTime": 0, + "lastTime": 1332432000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-03-22 10:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68461", + "wmoid": 68461, + "name": "FABM", + "geo": [ + { + "lat": -28.25, + "lon": 28.33, + "elev": 1682, + "firstTime": 0, + "lastTime": 1246982400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-07-07 10:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68538", + "wmoid": 68538, + "name": "68538", + "geo": [ + { + "lat": -30.67, + "lon": 24.02, + "elev": 1287, + "firstTime": 0, + "lastTime": 1698170400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-10-24 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68588", + "wmoid": 68588, + "name": "FADN", + "geo": [ + { + "lat": -29.97, + "lon": 30.95, + "elev": 8, + "firstTime": 0, + "lastTime": 1258264800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-11-14 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68816", + "wmoid": 68816, + "name": "FACT", + "geo": [ + { + "lat": -33.98, + "lon": 18.6, + "elev": 42, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68842", + "wmoid": 68842, + "name": "FAPE", + "geo": [ + { + "lat": -33.98, + "lon": 25.6, + "elev": 60, + "firstTime": 0, + "lastTime": 1707372000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-02-07 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68994", + "wmoid": 68994, + "name": "FAME", + "geo": [ + { + "lat": -46.88, + "lon": 37.87, + "elev": 22, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:89642", + "wmoid": 89642, + "name": "89642", + "geo": [ + { + "lat": -66.67, + "lon": 140.02, + "elev": 43, + "firstTime": 0, + "lastTime": 1537855200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-09-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91843", + "wmoid": 91843, + "name": "NCRG", + "geo": [ + { + "lat": -21.2, + "lon": -159.82, + "elev": 7, + "firstTime": 0, + "lastTime": 1482645600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2016-12-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91925", + "wmoid": 91925, + "name": "91925", + "geo": [ + { + "lat": -9.8, + "lon": -139.03, + "elev": 52, + "firstTime": 0, + "lastTime": 1630386000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2021-08-30 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:26629", + "wmoid": 26629, + "name": "26629", + "geo": [ + { + "lat": 54.88, + "lon": 23.88, + "elev": 75, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:37789", + "wmoid": 37789, + "name": "UGEE", + "geo": [ + { + "lat": 40.13, + "lon": 44.47, + "elev": 890, + "firstTime": 0, + "lastTime": 1648965600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-04-03 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40265", + "wmoid": 40265, + "name": "OJMF", + "geo": [ + { + "lat": 32.37, + "lon": 36.27, + "elev": 687, + "firstTime": 0, + "lastTime": 1700974800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-11-25 22:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48327", + "wmoid": 48327, + "name": "VTCC", + "geo": [ + { + "lat": 18.78, + "lon": 98.98, + "elev": 314, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72381", + "wmoid": 72381, + "name": "EDW", + "geo": [ + { + "lat": 34.9, + "lon": -117.92, + "elev": 724, + "firstTime": 0, + "lastTime": 1713999600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 17:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72451", + "wmoid": 72451, + "name": "DDC", + "geo": [ + { + "lat": 37.77, + "lon": -99.97, + "elev": 791, + "firstTime": 1277100000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "2010-06-21", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48455", + "wmoid": 48455, + "name": "48455", + "geo": [ + { + "lat": 13.73, + "lon": 100.5, + "elev": 20, + "firstTime": 0, + "lastTime": 1358312400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2013-01-15 22:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48565", + "wmoid": 48565, + "name": "VTSP", + "geo": [ + { + "lat": 8.12, + "lon": 98.32, + "elev": 10, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:74002", + "wmoid": 74002, + "name": "APG", + "geo": [ + { + "lat": 39.47, + "lon": -76.07, + "elev": 5, + "firstTime": 0, + "lastTime": 1492020000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2017-04-12 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:60155", + "wmoid": 60155, + "name": "GMMC", + "geo": [ + { + "lat": 33.57, + "lon": -7.67, + "elev": 62, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:89564", + "wmoid": 89564, + "name": "89564", + "geo": [ + { + "lat": -68.6, + "lon": 62.87, + "elev": 16, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78384", + "wmoid": 78384, + "name": "KCR", + "geo": [ + { + "lat": 19.3, + "lon": -81.37, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91948", + "wmoid": 91948, + "name": "91948", + "geo": [ + { + "lat": -23.13, + "lon": -134.97, + "elev": 89, + "firstTime": 0, + "lastTime": 1651035600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-04-26 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78807", + "wmoid": 78807, + "name": "78807", + "geo": [ + { + "lat": 8.97, + "lon": -79.66, + "elev": 9, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82022", + "wmoid": 82022, + "name": "SBBV", + "geo": [ + { + "lat": 2.83, + "lon": -60.7, + "elev": 140, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82026", + "wmoid": 82026, + "name": "SBTS", + "geo": [ + { + "lat": -2.22, + "lon": -55.95, + "elev": 326, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82099", + "wmoid": 82099, + "name": "82099", + "geo": [ + { + "lat": 0.05, + "lon": -51.07, + "elev": 17, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82193", + "wmoid": 82193, + "name": "SBBE", + "geo": [ + { + "lat": -1.38, + "lon": -48.48, + "elev": 16, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82244", + "wmoid": 82244, + "name": "82244", + "geo": [ + { + "lat": -2.43, + "lon": -54.72, + "elev": 72, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82281", + "wmoid": 82281, + "name": "SBSL", + "geo": [ + { + "lat": -2.6, + "lon": -44.23, + "elev": 53, + "firstTime": 0, + "lastTime": 1617213600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2021-03-31 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82400", + "wmoid": 82400, + "name": "SBFN", + "geo": [ + { + "lat": -3.85, + "lon": -32.42, + "elev": 56, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82411", + "wmoid": 82411, + "name": "82411", + "geo": [ + { + "lat": -4.23, + "lon": -69.92, + "elev": 120, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82599", + "wmoid": 82599, + "name": "SBNT", + "geo": [ + { + "lat": -5.92, + "lon": -35.25, + "elev": 52, + "firstTime": 0, + "lastTime": 1713765600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-22 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82678", + "wmoid": 82678, + "name": "82678", + "geo": [ + { + "lat": -6.77, + "lon": -43.02, + "elev": 138, + "firstTime": 0, + "lastTime": 1554487200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-04-05 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82917", + "wmoid": 82917, + "name": "82917", + "geo": [ + { + "lat": -10.0, + "lon": -47.8, + "elev": 143, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83208", + "wmoid": 83208, + "name": "SBVH", + "geo": [ + { + "lat": -12.73, + "lon": -60.13, + "elev": 652, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83229", + "wmoid": 83229, + "name": "83229", + "geo": [ + { + "lat": -13.02, + "lon": -38.52, + "elev": 51, + "firstTime": 0, + "lastTime": 1540404000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-10-24 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83554", + "wmoid": 83554, + "name": "83554", + "geo": [ + { + "lat": -19.0, + "lon": -57.67, + "elev": 142, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83899", + "wmoid": 83899, + "name": "83899", + "geo": [ + { + "lat": -27.67, + "lon": -48.55, + "elev": 5, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83928", + "wmoid": 83928, + "name": "SBUG", + "geo": [ + { + "lat": -29.78, + "lon": -57.03, + "elev": 74, + "firstTime": 0, + "lastTime": 1713808800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-22 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83937", + "wmoid": 83937, + "name": "SBSM", + "geo": [ + { + "lat": -29.72, + "lon": -53.7, + "elev": 85, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83971", + "wmoid": 83971, + "name": "SBPA", + "geo": [ + { + "lat": -30.0, + "lon": -51.18, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:88889", + "wmoid": 88889, + "name": "EGYP", + "geo": [ + { + "lat": -51.82, + "lon": -58.45, + "elev": 73, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:89062", + "wmoid": 89062, + "name": "89062", + "geo": [ + { + "lat": -67.57, + "lon": -68.13, + "elev": 16, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:89571", + "wmoid": 89571, + "name": "89571", + "geo": [ + { + "lat": -68.57, + "lon": 77.95, + "elev": 13, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:89611", + "wmoid": 89611, + "name": "89611", + "geo": [ + { + "lat": -66.28, + "lon": 110.52, + "elev": 41, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91165", + "wmoid": 91165, + "name": "LIH", + "geo": [ + { + "lat": 21.98, + "lon": -159.35, + "elev": 36, + "firstTime": 1280124000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "2010-07-26", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91376", + "wmoid": 91376, + "name": "PKMJ", + "geo": [ + { + "lat": 7.08, + "lon": 171.38, + "elev": 3, + "firstTime": 1305957600, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MAJURO/MARSHALL_ISL,MH", + "near_airport": "", + "gps_date": "2011-05-21", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91532", + "wmoid": 91532, + "name": "91532", + "geo": [ + { + "lat": -0.53, + "lon": 166.92, + "elev": 0, + "firstTime": 0, + "lastTime": 1377496800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2013-08-26 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91680", + "wmoid": 91680, + "name": "NFFN", + "geo": [ + { + "lat": -17.75, + "lon": 177.45, + "elev": 18, + "firstTime": 0, + "lastTime": 1713675600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-20 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:92044", + "wmoid": 92044, + "name": "92044", + "geo": [ + { + "lat": -2.07, + "lon": 147.43, + "elev": 5, + "firstTime": 0, + "lastTime": 1386050400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2013-12-02 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:93112", + "wmoid": 93112, + "name": "NZWP", + "geo": [ + { + "lat": -36.78, + "lon": 174.63, + "elev": 27, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:93417", + "wmoid": 93417, + "name": "NZPP", + "geo": [ + { + "lat": -40.9, + "lon": 174.98, + "elev": 12, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94299", + "wmoid": 94299, + "name": "94299", + "geo": [ + { + "lat": -16.3, + "lon": 149.98, + "elev": 9, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94711", + "wmoid": 94711, + "name": "94711", + "geo": [ + { + "lat": -31.48, + "lon": 145.82, + "elev": 265, + "firstTime": 0, + "lastTime": 1713243600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-15 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94995", + "wmoid": 94995, + "name": "ASLH", + "geo": [ + { + "lat": -31.53, + "lon": 159.07, + "elev": 6, + "firstTime": 0, + "lastTime": 1712638800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-08 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:95527", + "wmoid": 95527, + "name": "95527", + "geo": [ + { + "lat": -29.5, + "lon": 149.83, + "elev": 214, + "firstTime": 0, + "lastTime": 1713934800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-23 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:96035", + "wmoid": 96035, + "name": "WIMM", + "geo": [ + { + "lat": 3.57, + "lon": 98.68, + "elev": 25, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:96163", + "wmoid": 96163, + "name": "WIMG", + "geo": [ + { + "lat": -0.88, + "lon": 100.35, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:96237", + "wmoid": 96237, + "name": "WIKK", + "geo": [ + { + "lat": -2.17, + "lon": 106.13, + "elev": 33, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:97014", + "wmoid": 97014, + "name": "WAMM", + "geo": [ + { + "lat": 1.53, + "lon": 124.92, + "elev": 80, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:97072", + "wmoid": 97072, + "name": "WAML", + "geo": [ + { + "lat": -0.68, + "lon": 119.73, + "elev": 6, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:97372", + "wmoid": 97372, + "name": "WRKK", + "geo": [ + { + "lat": -10.17, + "lon": 123.67, + "elev": 108, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:97560", + "wmoid": 97560, + "name": "WABB", + "geo": [ + { + "lat": -1.18, + "lon": 136.12, + "elev": 11, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:26038", + "wmoid": 26038, + "name": "ULTT", + "geo": [ + { + "lat": 59.45, + "lon": 24.8, + "elev": 44, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:6458", + "wmoid": 6458, + "name": "EBBE", + "geo": [ + { + "lat": 50.75, + "lon": 4.77, + "elev": 127, + "firstTime": 0, + "lastTime": 1714017600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BEAUVECHAIN, BX", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 22:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91954", + "wmoid": 91954, + "name": "NTAT", + "geo": [ + { + "lat": -23.35, + "lon": -149.48, + "elev": 3, + "firstTime": 0, + "lastTime": 1258437600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-11-16 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:93986", + "wmoid": 93986, + "name": "NZCI", + "geo": [ + { + "lat": -43.95, + "lon": -176.57, + "elev": 48, + "firstTime": 0, + "lastTime": 1325221200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-12-29 22:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94170", + "wmoid": 94170, + "name": "94170", + "geo": [ + { + "lat": -12.63, + "lon": 141.9, + "elev": 0, + "firstTime": 0, + "lastTime": 1713934800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-23 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94312", + "wmoid": 94312, + "name": "YPPD", + "geo": [ + { + "lat": -20.37, + "lon": 118.62, + "elev": 6, + "firstTime": 0, + "lastTime": 1713848400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-22 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94332", + "wmoid": 94332, + "name": "YBMA", + "geo": [ + { + "lat": -20.67, + "lon": 139.48, + "elev": 344, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94374", + "wmoid": 94374, + "name": "YBRK", + "geo": [ + { + "lat": -23.38, + "lon": 150.47, + "elev": 14, + "firstTime": 0, + "lastTime": 1669960800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-12-01 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94430", + "wmoid": 94430, + "name": "YPMR", + "geo": [ + { + "lat": -26.6, + "lon": 118.53, + "elev": 518, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94461", + "wmoid": 94461, + "name": "94461", + "geo": [ + { + "lat": -25.03, + "lon": 128.28, + "elev": 599, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94510", + "wmoid": 94510, + "name": "YBCV", + "geo": [ + { + "lat": -26.4, + "lon": 146.27, + "elev": 304, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94802", + "wmoid": 94802, + "name": "YPAL", + "geo": [ + { + "lat": -34.93, + "lon": 117.8, + "elev": 69, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94821", + "wmoid": 94821, + "name": "YMMG", + "geo": [ + { + "lat": -37.73, + "lon": 140.78, + "elev": 69, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:96996", + "wmoid": 96996, + "name": "YPCC", + "geo": [ + { + "lat": -12.18, + "lon": 96.82, + "elev": 3, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:8160", + "wmoid": 8160, + "name": "LEZG", + "geo": [ + { + "lat": 41.67, + "lon": -1.02, + "elev": 258, + "firstTime": 0, + "lastTime": 1446271200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-10-31 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:10962", + "wmoid": 10962, + "name": "10962", + "geo": [ + { + "lat": 47.8, + "lon": 11.02, + "elev": 986, + "firstTime": 0, + "lastTime": 1714060800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 10:00:00" +} , +{ + "id": "MD:V01:RAOB:station:11010", + "wmoid": 11010, + "name": "LOWL", + "geo": [ + { + "lat": 48.23, + "lon": 14.2, + "elev": 313, + "firstTime": 0, + "lastTime": 1569916800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-01 02:00:00" +} , +{ + "id": "MD:V01:RAOB:station:11120", + "wmoid": 11120, + "name": "LOWI", + "geo": [ + { + "lat": 47.27, + "lon": 11.35, + "elev": 581, + "firstTime": 0, + "lastTime": 1569916800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-01 02:00:00" +} , +{ + "id": "MD:V01:RAOB:station:11240", + "wmoid": 11240, + "name": "LOWG", + "geo": [ + { + "lat": 47.0, + "lon": 15.43, + "elev": 347, + "firstTime": 0, + "lastTime": 1569916800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-01 02:00:00" +} , +{ + "id": "MD:V01:RAOB:station:14015", + "wmoid": 14015, + "name": "14015", + "geo": [ + { + "lat": 46.07, + "lon": 14.52, + "elev": 316, + "firstTime": 0, + "lastTime": 1713956400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 05:00:00" +} , +{ + "id": "MD:V01:RAOB:station:20744", + "wmoid": 20744, + "name": "20744", + "geo": [ + { + "lat": 72.38, + "lon": 52.73, + "elev": 16, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:20891", + "wmoid": 20891, + "name": "20891", + "geo": [ + { + "lat": 72.0, + "lon": 102.45, + "elev": 33, + "firstTime": 0, + "lastTime": 1348639200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-09-26 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:31168", + "wmoid": 31168, + "name": "31168", + "geo": [ + { + "lat": 56.45, + "lon": 138.15, + "elev": 9, + "firstTime": 0, + "lastTime": 1607583600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-12-10 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:32098", + "wmoid": 32098, + "name": "32098", + "geo": [ + { + "lat": 49.22, + "lon": 143.1, + "elev": 4, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:33317", + "wmoid": 33317, + "name": "33317", + "geo": [ + { + "lat": 50.17, + "lon": 27.05, + "elev": 278, + "firstTime": 0, + "lastTime": 1645642800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-02-23 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:33393", + "wmoid": 33393, + "name": "UKLL", + "geo": [ + { + "lat": 49.82, + "lon": 23.95, + "elev": 325, + "firstTime": 0, + "lastTime": 1645686000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-02-24 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:33631", + "wmoid": 33631, + "name": "33631", + "geo": [ + { + "lat": 48.63, + "lon": 22.27, + "elev": 118, + "firstTime": 0, + "lastTime": 1234508400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-02-13 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:33837", + "wmoid": 33837, + "name": "UKOO", + "geo": [ + { + "lat": 46.43, + "lon": 30.77, + "elev": 43, + "firstTime": 0, + "lastTime": 1645686000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-02-24 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:33946", + "wmoid": 33946, + "name": "UKFF", + "geo": [ + { + "lat": 44.68, + "lon": 34.13, + "elev": 181, + "firstTime": 0, + "lastTime": 1288850400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2010-11-04 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:34300", + "wmoid": 34300, + "name": "34300", + "geo": [ + { + "lat": 49.93, + "lon": 36.28, + "elev": 152, + "firstTime": 0, + "lastTime": 1645686000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-02-24 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40745", + "wmoid": 40745, + "name": "OIMM", + "geo": [ + { + "lat": 36.27, + "lon": 59.63, + "elev": 980, + "firstTime": 0, + "lastTime": 1708196400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-02-17 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40821", + "wmoid": 40821, + "name": "40821", + "geo": [ + { + "lat": 31.9, + "lon": 54.28, + "elev": 1237, + "firstTime": 0, + "lastTime": 1682571600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-04-26 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40848", + "wmoid": 40848, + "name": "OISS", + "geo": [ + { + "lat": 29.53, + "lon": 52.58, + "elev": 1491, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40856", + "wmoid": 40856, + "name": "40856", + "geo": [ + { + "lat": 29.47, + "lon": 60.88, + "elev": 1379, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40875", + "wmoid": 40875, + "name": "OIKB", + "geo": [ + { + "lat": 27.22, + "lon": 56.37, + "elev": 10, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:41316", + "wmoid": 41316, + "name": "OOSA", + "geo": [ + { + "lat": 17.03, + "lon": 54.08, + "elev": 17, + "firstTime": 0, + "lastTime": 1713376800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-17 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:41923", + "wmoid": 41923, + "name": "41923", + "geo": [ + { + "lat": 23.43, + "lon": 91.18, + "elev": 9, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42379", + "wmoid": 42379, + "name": "VEGK", + "geo": [ + { + "lat": 26.75, + "lon": 83.37, + "elev": 77, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42397", + "wmoid": 42397, + "name": "42397", + "geo": [ + { + "lat": 26.67, + "lon": 88.37, + "elev": 123, + "firstTime": 0, + "lastTime": 1445839200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-10-26 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43041", + "wmoid": 43041, + "name": "43041", + "geo": [ + { + "lat": 19.08, + "lon": 82.03, + "elev": 553, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43192", + "wmoid": 43192, + "name": "43192", + "geo": [ + { + "lat": 15.48, + "lon": 73.82, + "elev": 60, + "firstTime": 0, + "lastTime": 1698127200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-10-24 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:63741", + "wmoid": 63741, + "name": "HKNC", + "geo": [ + { + "lat": -1.3, + "lon": 36.75, + "elev": 1798, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83827", + "wmoid": 83827, + "name": "SBFI", + "geo": [ + { + "lat": -25.52, + "lon": -54.58, + "elev": 243, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:85469", + "wmoid": 85469, + "name": "SCIP", + "geo": [ + { + "lat": -27.15, + "lon": -109.42, + "elev": 47, + "firstTime": 0, + "lastTime": 1673766000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-01-15 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:89512", + "wmoid": 89512, + "name": "89512", + "geo": [ + { + "lat": -70.77, + "lon": 11.83, + "elev": 102, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:89592", + "wmoid": 89592, + "name": "89592", + "geo": [ + { + "lat": -66.55, + "lon": 93.02, + "elev": 30, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94659", + "wmoid": 94659, + "name": "YPWR", + "geo": [ + { + "lat": -31.13, + "lon": 136.82, + "elev": 167, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:96749", + "wmoid": 96749, + "name": "WIII", + "geo": [ + { + "lat": -6.12, + "lon": 106.65, + "elev": 8, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:96935", + "wmoid": 96935, + "name": "WRSJ", + "geo": [ + { + "lat": -7.37, + "lon": 112.77, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:97724", + "wmoid": 97724, + "name": "WAPP", + "geo": [ + { + "lat": -3.7, + "lon": 128.08, + "elev": 12, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:97980", + "wmoid": 97980, + "name": "WAKK", + "geo": [ + { + "lat": -8.47, + "lon": 140.38, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:12982", + "wmoid": 12982, + "name": "LHUD", + "geo": [ + { + "lat": 46.25, + "lon": 20.1, + "elev": 84, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:65578", + "wmoid": 65578, + "name": "DIAP", + "geo": [ + { + "lat": 5.25, + "lon": -3.93, + "elev": 8, + "firstTime": 0, + "lastTime": 1714042800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 05:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83498", + "wmoid": 83498, + "name": "83498", + "geo": [ + { + "lat": -17.73, + "lon": -39.25, + "elev": 3, + "firstTime": 0, + "lastTime": 1470506400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2016-08-06 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:84008", + "wmoid": 84008, + "name": "SEST", + "geo": [ + { + "lat": -0.9, + "lon": -89.6, + "elev": 6, + "firstTime": 0, + "lastTime": 1549306800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-02-04 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:84378", + "wmoid": 84378, + "name": "84378", + "geo": [ + { + "lat": -3.73, + "lon": -73.25, + "elev": 117, + "firstTime": 0, + "lastTime": 1339779600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-06-15 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91610", + "wmoid": 91610, + "name": "NGTA", + "geo": [ + { + "lat": 1.35, + "lon": 172.92, + "elev": 4, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91801", + "wmoid": 91801, + "name": "91801", + "geo": [ + { + "lat": -9.0, + "lon": -158.05, + "elev": 1, + "firstTime": 0, + "lastTime": 1214802000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2008-06-29 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91958", + "wmoid": 91958, + "name": "91958", + "geo": [ + { + "lat": -27.62, + "lon": -144.33, + "elev": 2, + "firstTime": 0, + "lastTime": 1665702000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-10-13 17:00:00" +} , +{ + "id": "MD:V01:RAOB:station:33658", + "wmoid": 33658, + "name": "33658", + "geo": [ + { + "lat": 48.37, + "lon": 25.9, + "elev": 246, + "firstTime": 0, + "lastTime": 1524031200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-04-18 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40100", + "wmoid": 40100, + "name": "OLBA", + "geo": [ + { + "lat": 33.82, + "lon": 35.48, + "elev": 19, + "firstTime": 0, + "lastTime": 1200726000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2008-01-19 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:41594", + "wmoid": 41594, + "name": "OPSR", + "geo": [ + { + "lat": 32.05, + "lon": 72.67, + "elev": 188, + "firstTime": 0, + "lastTime": 1444845600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-10-14 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94638", + "wmoid": 94638, + "name": "94638", + "geo": [ + { + "lat": -33.82, + "lon": 121.88, + "elev": 26, + "firstTime": 0, + "lastTime": 1713502800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-18 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47058", + "wmoid": 47058, + "name": "47058", + "geo": [ + { + "lat": 39.03, + "lon": 125.78, + "elev": 38, + "firstTime": 0, + "lastTime": 1601877600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-10-05 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61687", + "wmoid": 61687, + "name": "GOTT", + "geo": [ + { + "lat": 13.76, + "lon": -13.68, + "elev": 50, + "firstTime": 0, + "lastTime": 1676916000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-02-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:64700", + "wmoid": 64700, + "name": "FTTJ", + "geo": [ + { + "lat": 12.13, + "lon": 15.03, + "elev": 295, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:93997", + "wmoid": 93997, + "name": "NZRN", + "geo": [ + { + "lat": -29.25, + "lon": -177.92, + "elev": 49, + "firstTime": 0, + "lastTime": 1585281600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-03-26 22:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40811", + "wmoid": 40811, + "name": "OIAW", + "geo": [ + { + "lat": 31.33, + "lon": 48.66, + "elev": 22, + "firstTime": 0, + "lastTime": 1698688800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-10-30 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:33041", + "wmoid": 33041, + "name": "33041", + "geo": [ + { + "lat": 52.45, + "lon": 31.0, + "elev": 127, + "firstTime": 0, + "lastTime": 1662357600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-09-05 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:64400", + "wmoid": 64400, + "name": "FCPP", + "geo": [ + { + "lat": -4.82, + "lon": 11.9, + "elev": 17, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91643", + "wmoid": 91643, + "name": "NGFU", + "geo": [ + { + "lat": -8.52, + "lon": 179.22, + "elev": 2, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47981", + "wmoid": 47981, + "name": "RJAW", + "geo": [ + { + "lat": 24.78, + "lon": 141.33, + "elev": 116, + "firstTime": 0, + "lastTime": 1223532000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2008-10-09 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91943", + "wmoid": 91943, + "name": "91943", + "geo": [ + { + "lat": -14.48, + "lon": -145.03, + "elev": 3, + "firstTime": 0, + "lastTime": 1199430000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2008-01-04 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68442", + "wmoid": 68442, + "name": "FABL", + "geo": [ + { + "lat": -29.1, + "lon": 26.3, + "elev": 1348, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:41977", + "wmoid": 41977, + "name": "41977", + "geo": [ + { + "lat": 22.35, + "lon": 91.82, + "elev": 34, + "firstTime": 0, + "lastTime": 1713981600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94647", + "wmoid": 94647, + "name": "94647", + "geo": [ + { + "lat": -31.67, + "lon": 128.88, + "elev": 99, + "firstTime": 0, + "lastTime": 1349672400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-10-07 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:97180", + "wmoid": 97180, + "name": "WAAA", + "geo": [ + { + "lat": -5.07, + "lon": 119.55, + "elev": 14, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:84416", + "wmoid": 84416, + "name": "84416", + "geo": [ + { + "lat": -5.18, + "lon": -80.6, + "elev": 52, + "firstTime": 0, + "lastTime": 1320688800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-11-07 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78988", + "wmoid": 78988, + "name": "ACC", + "geo": [ + { + "lat": 12.2, + "lon": -68.97, + "elev": 54, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83288", + "wmoid": 83288, + "name": "SBLP", + "geo": [ + { + "lat": -13.27, + "lon": -43.42, + "elev": 458, + "firstTime": 0, + "lastTime": 1548961200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-01-31 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:3502", + "wmoid": 3502, + "name": "EGUC", + "geo": [ + { + "lat": 52.13, + "lon": -4.57, + "elev": 132, + "firstTime": 0, + "lastTime": 1712779200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-10 14:00:00" +} , +{ + "id": "MD:V01:RAOB:station:67083", + "wmoid": 67083, + "name": "FMMI", + "geo": [ + { + "lat": -18.8, + "lon": 47.48, + "elev": 1276, + "firstTime": 0, + "lastTime": 1707915600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-02-14 06:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71701", + "wmoid": 71701, + "name": "YCX", + "geo": [ + { + "lat": 45.83, + "lon": -66.43, + "elev": 52, + "firstTime": 0, + "lastTime": 1711544400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-03-27 07:00:00" +} , +{ + "id": "MD:V01:RAOB:station:28722", + "wmoid": 28722, + "name": "28722", + "geo": [ + { + "lat": 54.75, + "lon": 56.0, + "elev": 105, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:6496", + "wmoid": 6496, + "name": "EBLB", + "geo": [ + { + "lat": 50.47, + "lon": 6.18, + "elev": 570, + "firstTime": 0, + "lastTime": 1427889600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-04-01 06:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43353", + "wmoid": 43353, + "name": "VOCC", + "geo": [ + { + "lat": 9.95, + "lon": 76.27, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:96491", + "wmoid": 96491, + "name": "WBKS", + "geo": [ + { + "lat": 5.9, + "lon": 118.07, + "elev": 13, + "firstTime": 0, + "lastTime": 1527508800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-05-28 06:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82765", + "wmoid": 82765, + "name": "82765", + "geo": [ + { + "lat": -7.33, + "lon": -47.47, + "elev": 212, + "firstTime": 0, + "lastTime": 1580756400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-02-03 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:28661", + "wmoid": 28661, + "name": "28661", + "geo": [ + { + "lat": 55.47, + "lon": 65.4, + "elev": 79, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:80001", + "wmoid": 80001, + "name": "80001", + "geo": [ + { + "lat": 12.58, + "lon": -81.7, + "elev": 4, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:3693", + "wmoid": 3693, + "name": "3693", + "geo": [ + { + "lat": 51.55, + "lon": 0.83, + "elev": 3, + "firstTime": 0, + "lastTime": 1292950800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2010-12-21 10:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61442", + "wmoid": 61442, + "name": "GQNN", + "geo": [ + { + "lat": 18.1, + "lon": -15.95, + "elev": 3, + "firstTime": 0, + "lastTime": 1531501200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-07-13 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:98444", + "wmoid": 98444, + "name": "RPMP", + "geo": [ + { + "lat": 13.13, + "lon": 123.73, + "elev": 17, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72388", + "wmoid": 72388, + "name": "DRAne", + "geo": [ + { + "lat": 36.05, + "lon": -115.18, + "elev": 693, + "firstTime": 1292655600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LAS VEGAS", + "near_airport": "", + "gps_date": "2010-12-18", + "updateTime": "2024-04-25 12:00:00" +} +] diff --git a/tests/vxingest/prepbufr_to_cb/testdata/stations.json.sav b/tests/vxingest/prepbufr_to_cb/testdata/stations.json.sav new file mode 100644 index 00000000..9d729b99 --- /dev/null +++ b/tests/vxingest/prepbufr_to_cb/testdata/stations.json.sav @@ -0,0 +1,17191 @@ +[ +{ + "id": "MD:V01:RAOB:station:70398", + "wmoid": 70398, + "name": "ANN", + "geo": [ + { + "lat": 5503, + "lon": -13157, + "elev": 37, + "firstTime": 1257145200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ANNETTE ISLAND", + "near_airport": "", + "gps_date": "2009-11-02", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71109", + "wmoid": 71109, + "name": "YZT", + "geo": [ + { + "lat": 5068, + "lon": -12737, + "elev": 17, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PORT HARDY", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71119", + "wmoid": 71119, + "name": "WSE", + "geo": [ + { + "lat": 5355, + "lon": -11410, + "elev": 766, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "EDMONTON/STONY PLAIN", + "near_airport": "CYEG", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71203", + "wmoid": 71203, + "name": "YLW", + "geo": [ + { + "lat": 4997, + "lon": -11938, + "elev": 454, + "firstTime": 0, + "lastTime": 1498888800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KELOWNA APT", + "near_airport": "", + "gps_date": "", + "updateTime": "2017-07-01 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71603", + "wmoid": 71603, + "name": "WQI", + "geo": [ + { + "lat": 4387, + "lon": -6605, + "elev": 9, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YARMOUTH", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71625", + "wmoid": 71625, + "name": "YWA", + "geo": [ + { + "lat": 4595, + "lon": -7732, + "elev": 130, + "firstTime": 0, + "lastTime": 0, + "updateTime": 0 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PETAWAWA/ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "" +}, +{ + "id": "MD:V01:RAOB:station:71722", + "wmoid": 71722, + "name": "YMW", + "geo": [ + { + "lat": 4638, + "lon": -7597, + "elev": 170, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MANIWAKI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71811", + "wmoid": 71811, + "name": "YZV", + "geo": [ + { + "lat": 5022, + "lon": -6627, + "elev": 52, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SEPT ILES (UA)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71816", + "wmoid": 71816, + "name": "YYR", + "geo": [ + { + "lat": 5330, + "lon": -6037, + "elev": 36, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GOOSE/GOOSE BAY", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71823", + "wmoid": 71823, + "name": "YAH", + "geo": [ + { + "lat": 5375, + "lon": -7367, + "elev": 307, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LA GRANDE IV", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71836", + "wmoid": 71836, + "name": "YMO", + "geo": [ + { + "lat": 5127, + "lon": -8065, + "elev": 10, + "firstTime": 0, + "lastTime": 1680285600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MOOSONEE", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-03-31 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71845", + "wmoid": 71845, + "name": "WPL", + "geo": [ + { + "lat": 5147, + "lon": -9020, + "elev": 386, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PICKLE LAKE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71867", + "wmoid": 71867, + "name": "YQD", + "geo": [ + { + "lat": 5397, + "lon": -10110, + "elev": 273, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "THE PAS", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71908", + "wmoid": 71908, + "name": "ZXS", + "geo": [ + { + "lat": 5390, + "lon": -12280, + "elev": 601, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PRINCE GEORGE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72201", + "wmoid": 72201, + "name": "EYW", + "geo": [ + { + "lat": 2455, + "lon": -8175, + "elev": 1, + "firstTime": 1340690400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KEY WEST INT AP", + "near_airport": "", + "gps_date": "2012-06-26", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72202", + "wmoid": 72202, + "name": "MFL", + "geo": [ + { + "lat": 2575, + "lon": -8038, + "elev": 4, + "firstTime": 1178517600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MIAMI/FL INTL UNIV", + "near_airport": "MIA", + "gps_date": "2007-05-07", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72206", + "wmoid": 72206, + "name": "JAX", + "geo": [ + { + "lat": 3043, + "lon": -8170, + "elev": 10, + "firstTime": 1168844400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JACKSONVILLE", + "near_airport": "", + "gps_date": "2007-01-15", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72208", + "wmoid": 72208, + "name": "CHS", + "geo": [ + { + "lat": 3290, + "lon": -8003, + "elev": 15, + "firstTime": 1214200800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHARLESTON", + "near_airport": "", + "gps_date": "2008-06-23", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72210", + "wmoid": 72210, + "name": "TBW", + "geo": [ + { + "lat": 2770, + "lon": -8240, + "elev": 13, + "firstTime": 1174888800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TAMPA BAY/RUSKIN", + "near_airport": "TPA", + "gps_date": "2007-03-26", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72214", + "wmoid": 72214, + "name": "TLH", + "geo": [ + { + "lat": 3045, + "lon": -8430, + "elev": 52, + "firstTime": 1142233200, + "lastTime": 1713722400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TALLAHASEE", + "near_airport": "", + "gps_date": "2006-03-13", + "updateTime": "2024-04-21 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72215", + "wmoid": 72215, + "name": "FFC", + "geo": [ + { + "lat": 3335, + "lon": -8456, + "elev": 246, + "firstTime": 1208757600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PEACHTREE CITY", + "near_airport": "ATL", + "gps_date": "2008-04-21", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72230", + "wmoid": 72230, + "name": "BMX", + "geo": [ + { + "lat": 3310, + "lon": -8670, + "elev": 178, + "firstTime": 1173679200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BIRMINGHAM (SHELBY APT)", + "near_airport": "", + "gps_date": "2007-03-12", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72233", + "wmoid": 72233, + "name": "SIL", + "geo": [ + { + "lat": 3034, + "lon": -8983, + "elev": 10, + "firstTime": 1204527600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SLIDELL", + "near_airport": "MSY", + "gps_date": "2008-03-03", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72235", + "wmoid": 72235, + "name": "JAN", + "geo": [ + { + "lat": 3232, + "lon": -9007, + "elev": 91, + "firstTime": 1142578800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JACKSON/THOMPSON FLD", + "near_airport": "", + "gps_date": "2006-03-17", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72240", + "wmoid": 72240, + "name": "LCH", + "geo": [ + { + "lat": 3012, + "lon": -9322, + "elev": 5, + "firstTime": 1206597600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LAKE CHARLES", + "near_airport": "", + "gps_date": "2008-03-27", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72248", + "wmoid": 72248, + "name": "SHV", + "geo": [ + { + "lat": 3245, + "lon": -9384, + "elev": 85, + "firstTime": 1144648800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SHREVEPORT REGIONAL AP", + "near_airport": "", + "gps_date": "2006-04-10", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72249", + "wmoid": 72249, + "name": "FWD", + "geo": [ + { + "lat": 3280, + "lon": -9730, + "elev": 196, + "firstTime": 1197270000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FT WORTH", + "near_airport": "DFW", + "gps_date": "2007-12-10", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72250", + "wmoid": 72250, + "name": "BRO", + "geo": [ + { + "lat": 2592, + "lon": -9742, + "elev": 7, + "firstTime": 1235977200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BROWNSVILLE", + "near_airport": "", + "gps_date": "2009-03-02", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72251", + "wmoid": 72251, + "name": "CRP", + "geo": [ + { + "lat": 2777, + "lon": -9750, + "elev": 14, + "firstTime": 1128405600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CORPUS CHRISTI", + "near_airport": "", + "gps_date": "2005-10-04", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72261", + "wmoid": 72261, + "name": "DRT", + "geo": [ + { + "lat": 2937, + "lon": -10092, + "elev": 313, + "firstTime": 1212991200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DEL RIO", + "near_airport": "", + "gps_date": "2008-06-09", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72265", + "wmoid": 72265, + "name": "MAF", + "geo": [ + { + "lat": 3193, + "lon": -10220, + "elev": 873, + "firstTime": 1145858400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MIDLAND", + "near_airport": "", + "gps_date": "2006-04-24", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72274", + "wmoid": 72274, + "name": "TWC", + "geo": [ + { + "lat": 3223, + "lon": -11096, + "elev": 753, + "firstTime": 1180936800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TUSCON", + "near_airport": "", + "gps_date": "2007-06-04", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72293", + "wmoid": 72293, + "name": "NKX", + "geo": [ + { + "lat": 3285, + "lon": -11712, + "elev": 134, + "firstTime": 1272866400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MIRAMAR NAS", + "near_airport": "SAN", + "gps_date": "2010-05-03", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72305", + "wmoid": 72305, + "name": "MHX", + "geo": [ + { + "lat": 3470, + "lon": -7680, + "elev": 11, + "firstTime": 1170054000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MOREHEAD CITY/NEWPORT", + "near_airport": "", + "gps_date": "2007-01-29", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72317", + "wmoid": 72317, + "name": "GSO", + "geo": [ + { + "lat": 3608, + "lon": -7995, + "elev": 277, + "firstTime": 1171263600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GREENSBORO", + "near_airport": "", + "gps_date": "2007-02-12", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72318", + "wmoid": 72318, + "name": "RNK", + "geo": [ + { + "lat": 3720, + "lon": -8041, + "elev": 648, + "firstTime": 1172473200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ROANOKE/BLACKSBURG", + "near_airport": "", + "gps_date": "2007-02-26", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72327", + "wmoid": 72327, + "name": "BNA", + "geo": [ + { + "lat": 3625, + "lon": -8657, + "elev": 180, + "firstTime": 1179727200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NASHVILLE", + "near_airport": "", + "gps_date": "2007-05-21", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72340", + "wmoid": 72340, + "name": "LZK", + "geo": [ + { + "lat": 3483, + "lon": -9227, + "elev": 172, + "firstTime": 1207548000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "N LITTLE ROCK", + "near_airport": "", + "gps_date": "2008-04-07", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72355", + "wmoid": 72355, + "name": "FSI", + "geo": [ + { + "lat": 3465, + "lon": -9840, + "elev": 362, + "firstTime": 0, + "lastTime": 1231786800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FORT SILL", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-01-12 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72357", + "wmoid": 72357, + "name": "OUN", + "geo": [ + { + "lat": 3523, + "lon": -9747, + "elev": 362, + "firstTime": 1163401200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NORMAN", + "near_airport": "", + "gps_date": "2006-11-13", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72363", + "wmoid": 72363, + "name": "AMA", + "geo": [ + { + "lat": 3523, + "lon": -10170, + "elev": 1095, + "firstTime": 1147068000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AMARILLO", + "near_airport": "", + "gps_date": "2006-05-08", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72364", + "wmoid": 72364, + "name": "EPZ", + "geo": [ + { + "lat": 3190, + "lon": -10670, + "elev": 1257, + "firstTime": 1362121200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SANTA TERESA", + "near_airport": "ELP", + "gps_date": "2013-03-01", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72365", + "wmoid": 72365, + "name": "ABQ", + "geo": [ + { + "lat": 3505, + "lon": -10662, + "elev": 1619, + "firstTime": 1211176800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALBUQUERQUE", + "near_airport": "", + "gps_date": "2008-05-19", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72376", + "wmoid": 72376, + "name": "FGZ", + "geo": [ + { + "lat": 3523, + "lon": -11182, + "elev": 2179, + "firstTime": 1150696800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FLAGSTAFF/BELLEMT (ARMY)", + "near_airport": "", + "gps_date": "2006-06-19", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72387", + "wmoid": 72387, + "name": "DRA", + "geo": [ + { + "lat": 3662, + "lon": -11602, + "elev": 1007, + "firstTime": 0, + "lastTime": 1290819600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DESERT ROCK/MERCURY", + "near_airport": "", + "gps_date": "", + "updateTime": "2010-11-26 18:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72393", + "wmoid": 72393, + "name": "VBG", + "geo": [ + { + "lat": 3475, + "lon": -12057, + "elev": 100, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VANDENBERG", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72402", + "wmoid": 72402, + "name": "WAL", + "geo": [ + { + "lat": 3793, + "lon": -7548, + "elev": 13, + "firstTime": 1265698800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WALLOPS ISLAND", + "near_airport": "", + "gps_date": "2010-02-09", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72403", + "wmoid": 72403, + "name": "IAD", + "geo": [ + { + "lat": 3898, + "lon": -7749, + "elev": 88, + "firstTime": 1122876000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "STERLING(WASH DULLES)", + "near_airport": "IAD", + "gps_date": "2005-08-01", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72426", + "wmoid": 72426, + "name": "ILN", + "geo": [ + { + "lat": 3942, + "lon": -8382, + "elev": 317, + "firstTime": 1176098400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WILMINGTON", + "near_airport": "", + "gps_date": "2007-04-09", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72440", + "wmoid": 72440, + "name": "SGF", + "geo": [ + { + "lat": 3723, + "lon": -9340, + "elev": 394, + "firstTime": 1186984800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SPRINGFIELD REGIONAL AP", + "near_airport": "", + "gps_date": "2007-08-13", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72456", + "wmoid": 72456, + "name": "TOP", + "geo": [ + { + "lat": 3907, + "lon": -9563, + "elev": 268, + "firstTime": 1238997600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TOPEKA", + "near_airport": "MKC", + "gps_date": "2009-04-06", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72469", + "wmoid": 72469, + "name": "DNR", + "geo": [ + { + "lat": 3977, + "lon": -10487, + "elev": 1611, + "firstTime": 1225087200, + "lastTime": 1657346400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DENVER/STAPLETON ARPT", + "near_airport": "DEN", + "gps_date": "2008-10-27", + "updateTime": "2022-07-09 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72476", + "wmoid": 72476, + "name": "GJT", + "geo": [ + { + "lat": 3912, + "lon": -10853, + "elev": 1472, + "firstTime": 1158559200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GRAND JUNCTION", + "near_airport": "", + "gps_date": "2006-09-18", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72489", + "wmoid": 72489, + "name": "REV", + "geo": [ + { + "lat": 3957, + "lon": -11980, + "elev": 1516, + "firstTime": 1151906400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "RENO", + "near_airport": "", + "gps_date": "2006-07-03", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72493", + "wmoid": 72493, + "name": "OAK", + "geo": [ + { + "lat": 3774, + "lon": -12222, + "elev": 2, + "firstTime": 1234162800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OAKLAND INT AP", + "near_airport": "OAK", + "gps_date": "2009-02-09", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72501", + "wmoid": 72501, + "name": "OKX", + "geo": [ + { + "lat": 4087, + "lon": -7287, + "elev": 20, + "firstTime": 1245650400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BROOKHAVEN", + "near_airport": "ISP", + "gps_date": "2009-06-22", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72518", + "wmoid": 72518, + "name": "ALY", + "geo": [ + { + "lat": 4269, + "lon": -7383, + "elev": 94, + "firstTime": 1270879200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALBANY", + "near_airport": "", + "gps_date": "2010-04-10", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72520", + "wmoid": 72520, + "name": "PIT", + "geo": [ + { + "lat": 4053, + "lon": -8023, + "elev": 360, + "firstTime": 1243576800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PITTSBURGH/MOON TOWNSHIP", + "near_airport": "", + "gps_date": "2009-05-29", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72528", + "wmoid": 72528, + "name": "BUF", + "geo": [ + { + "lat": 4293, + "lon": -7873, + "elev": 218, + "firstTime": 1160978400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BUFFALO/GRTR ARPT", + "near_airport": "", + "gps_date": "2006-10-16", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72558", + "wmoid": 72558, + "name": "OAX", + "geo": [ + { + "lat": 4132, + "lon": -9637, + "elev": 350, + "firstTime": 1190613600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OMAHA/VALLEY", + "near_airport": "", + "gps_date": "2007-09-24", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72562", + "wmoid": 72562, + "name": "LBF", + "geo": [ + { + "lat": 4113, + "lon": -10068, + "elev": 847, + "firstTime": 1189404000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NORTH PLATTE", + "near_airport": "", + "gps_date": "2007-09-10", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72572", + "wmoid": 72572, + "name": "SLC", + "geo": [ + { + "lat": 4077, + "lon": -11197, + "elev": 1288, + "firstTime": 1127196000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SALT LAKE CITY", + "near_airport": "", + "gps_date": "2005-09-20", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72582", + "wmoid": 72582, + "name": "LKN", + "geo": [ + { + "lat": 4087, + "lon": -11573, + "elev": 1608, + "firstTime": 1182146400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ELKO", + "near_airport": "", + "gps_date": "2007-06-18", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72597", + "wmoid": 72597, + "name": "MFR", + "geo": [ + { + "lat": 4238, + "lon": -12288, + "elev": 398, + "firstTime": 1237183200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MEDFORD", + "near_airport": "", + "gps_date": "2009-03-16", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72632", + "wmoid": 72632, + "name": "DTX", + "geo": [ + { + "lat": 4270, + "lon": -8347, + "elev": 329, + "firstTime": 1242021600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DETROIT/PONTIAC", + "near_airport": "DTW", + "gps_date": "2009-05-11", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72634", + "wmoid": 72634, + "name": "APX", + "geo": [ + { + "lat": 4455, + "lon": -8443, + "elev": 448, + "firstTime": 1188194400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GAYLORD / ALPENA", + "near_airport": "", + "gps_date": "2007-08-27", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72645", + "wmoid": 72645, + "name": "GRB", + "geo": [ + { + "lat": 4450, + "lon": -8811, + "elev": 209, + "firstTime": 1223964000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GREEN BAY", + "near_airport": "ATW", + "gps_date": "2008-10-14", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72649", + "wmoid": 72649, + "name": "MPX", + "geo": [ + { + "lat": 4483, + "lon": -9355, + "elev": 287, + "firstTime": 1126072800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MINNEAPOLIS", + "near_airport": "MSP", + "gps_date": "2005-09-07", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72659", + "wmoid": 72659, + "name": "ABR", + "geo": [ + { + "lat": 4545, + "lon": -9842, + "elev": 397, + "firstTime": 1154930400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ABERDEEN", + "near_airport": "", + "gps_date": "2006-08-07", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72662", + "wmoid": 72662, + "name": "UNR", + "geo": [ + { + "lat": 4407, + "lon": -10321, + "elev": 1037, + "firstTime": 1153720800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "RAPID CITY", + "near_airport": "", + "gps_date": "2006-07-24", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72672", + "wmoid": 72672, + "name": "RIW", + "geo": [ + { + "lat": 4306, + "lon": -10847, + "elev": 1688, + "firstTime": 1157436000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "RIVERTON", + "near_airport": "", + "gps_date": "2006-09-05", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72681", + "wmoid": 72681, + "name": "BOI", + "geo": [ + { + "lat": 4357, + "lon": -11622, + "elev": 871, + "firstTime": 1161928800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BOISE", + "near_airport": "", + "gps_date": "2006-10-27", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72694", + "wmoid": 72694, + "name": "SLE", + "geo": [ + { + "lat": 4492, + "lon": -12302, + "elev": 61, + "firstTime": 1183356000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SALEM", + "near_airport": "PDX", + "gps_date": "2007-07-02", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72712", + "wmoid": 72712, + "name": "CAR", + "geo": [ + { + "lat": 4687, + "lon": -6802, + "elev": 191, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CARIBOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72747", + "wmoid": 72747, + "name": "INL", + "geo": [ + { + "lat": 4857, + "lon": -9338, + "elev": 359, + "firstTime": 1243231200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "INTERNATIONAL FALLS", + "near_airport": "", + "gps_date": "2009-05-25", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72764", + "wmoid": 72764, + "name": "BIS", + "geo": [ + { + "lat": 4677, + "lon": -10075, + "elev": 503, + "firstTime": 1156140000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BISMARCK", + "near_airport": "", + "gps_date": "2006-08-21", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72768", + "wmoid": 72768, + "name": "GGW", + "geo": [ + { + "lat": 4820, + "lon": -10662, + "elev": 693, + "firstTime": 1184565600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GLASGOW", + "near_airport": "", + "gps_date": "2007-07-16", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72776", + "wmoid": 72776, + "name": "TFX", + "geo": [ + { + "lat": 4745, + "lon": -11138, + "elev": 1130, + "firstTime": 1364796000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GREAT FALLS", + "near_airport": "", + "gps_date": "2013-04-01", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72786", + "wmoid": 72786, + "name": "OTX", + "geo": [ + { + "lat": 4768, + "lon": -11763, + "elev": 728, + "firstTime": 1148277600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SPOKANE INTNL APT", + "near_airport": "GEG", + "gps_date": "2006-05-22", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72797", + "wmoid": 72797, + "name": "UIL", + "geo": [ + { + "lat": 4795, + "lon": -12455, + "elev": 56, + "firstTime": 1193032800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "QUILLAYUTE", + "near_airport": "", + "gps_date": "2007-10-22", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:74389", + "wmoid": 74389, + "name": "GYX", + "geo": [ + { + "lat": 4389, + "lon": -7025, + "elev": 125, + "firstTime": 1159768800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GRAY", + "near_airport": "", + "gps_date": "2006-10-02", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:74455", + "wmoid": 74455, + "name": "DVN", + "geo": [ + { + "lat": 4161, + "lon": -9058, + "elev": 230, + "firstTime": 1194246000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DAVENPORT MUNICIPAL AP", + "near_airport": "MLI", + "gps_date": "2007-11-05", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:74494", + "wmoid": 74494, + "name": "CHH", + "geo": [ + { + "lat": 4166, + "lon": -6996, + "elev": 15, + "firstTime": 1240812000, + "lastTime": 1617213600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHATHAM", + "near_airport": "", + "gps_date": "2009-04-27", + "updateTime": "2021-03-31 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:74560", + "wmoid": 74560, + "name": "ILX", + "geo": [ + { + "lat": 4015, + "lon": -8933, + "elev": 178, + "firstTime": 1185775200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LINCOLN-LOGAN COUNTY AP", + "near_airport": "BMI", + "gps_date": "2007-07-30", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:74646", + "wmoid": 74646, + "name": "LMN", + "geo": [ + { + "lat": 3668, + "lon": -9747, + "elev": 306, + "firstTime": 0, + "lastTime": 1713355200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SULPHUR MUNICIPAL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-17 06:00:00" +}, +{ + "id": "MD:V01:RAOB:station:74794", + "wmoid": 74794, + "name": "XMR", + "geo": [ + { + "lat": 2848, + "lon": -8055, + "elev": 5, + "firstTime": 0, + "lastTime": 1714060800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CAPE KENNEDY", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 10:00:00" +}, +{ + "id": "MD:V01:RAOB:station:76225", + "wmoid": 76225, + "name": "MCV", + "geo": [ + { + "lat": 2870, + "lon": -10607, + "elev": 1428, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHIHUAHUA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:76256", + "wmoid": 76256, + "name": "GYM", + "geo": [ + { + "lat": 2795, + "lon": -11080, + "elev": 12, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "EMPALME SONORA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:76394", + "wmoid": 76394, + "name": "MTY", + "geo": [ + { + "lat": 2587, + "lon": -10020, + "elev": 450, + "firstTime": 0, + "lastTime": 1701370800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MONTERREY", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-11-30 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:76405", + "wmoid": 76405, + "name": "LAP", + "geo": [ + { + "lat": 2407, + "lon": -11033, + "elev": 14, + "firstTime": 0, + "lastTime": 1710093600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LA PAZ/DE LEON", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-03-10 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:76458", + "wmoid": 76458, + "name": "MZT", + "geo": [ + { + "lat": 2318, + "lon": -10642, + "elev": 4, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MAZATLAN SINALOA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:76595", + "wmoid": 76595, + "name": "CUN", + "geo": [ + { + "lat": 2103, + "lon": -8692, + "elev": 10, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CANCUN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:76612", + "wmoid": 76612, + "name": "MGDJ", + "geo": [ + { + "lat": 2068, + "lon": -10333, + "elev": 1551, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GUADALAJARA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:76644", + "wmoid": 76644, + "name": "MID", + "geo": [ + { + "lat": 2095, + "lon": -8965, + "elev": 11, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MERIDA IAP", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:76679", + "wmoid": 76679, + "name": "MEX", + "geo": [ + { + "lat": 1943, + "lon": -9907, + "elev": 2309, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MEXICO CITY/INT APT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:76723", + "wmoid": 76723, + "name": "SIC", + "geo": [ + { + "lat": 1872, + "lon": -11095, + "elev": 34, + "firstTime": 0, + "lastTime": 0, + "updateTime": 0 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SOCORRO ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "" +}, +{ + "id": "MD:V01:RAOB:station:78073", + "wmoid": 78073, + "name": "YNN", + "geo": [ + { + "lat": 2505, + "lon": -7747, + "elev": 2, + "firstTime": 0, + "lastTime": 1595268000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NASSAU APT", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-07-20 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:78486", + "wmoid": 78486, + "name": "SDQ", + "geo": [ + { + "lat": 1847, + "lon": -6988, + "elev": 14, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SANTO DOMINGO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:68263", + "wmoid": 68263, + "name": "FAIR", + "geo": [ + { + "lat": -2592, + "lon": 2822, + "elev": 1500, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PRETORIA/IRENE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:68174", + "wmoid": 68174, + "name": "FAPB", + "geo": [ + { + "lat": -2387, + "lon": 2945, + "elev": 1222, + "firstTime": 0, + "lastTime": 1248670800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PIETERSBURG (SAAF)", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-07-26 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:65503", + "wmoid": 65503, + "name": "DHHH", + "geo": [ + { + "lat": 1235, + "lon": -152, + "elev": 306, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OUAGADOUGOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:64910", + "wmoid": 64910, + "name": "FKKD", + "geo": [ + { + "lat": 400, + "lon": 970, + "elev": 9, + "firstTime": 0, + "lastTime": 1678345200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DOUALA (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-03-09 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:64650", + "wmoid": 64650, + "name": "FEFF", + "geo": [ + { + "lat": 440, + "lon": 1852, + "elev": 366, + "firstTime": 0, + "lastTime": 1578333600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BANGUI/M'POKO (MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-06 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:64458", + "wmoid": 64458, + "name": "FCOU", + "geo": [ + { + "lat": 162, + "lon": 1605, + "elev": 352, + "firstTime": 0, + "lastTime": 1657040400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OUESSO", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-07-05 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:64450", + "wmoid": 64450, + "name": "FCBB", + "geo": [ + { + "lat": -425, + "lon": 1525, + "elev": 316, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BRAZZAVILLE/MAYA-MAYA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:63985", + "wmoid": 63985, + "name": "FSSS", + "geo": [ + { + "lat": -468, + "lon": 5553, + "elev": 4, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SEYCHELLES INTL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:62721", + "wmoid": 62721, + "name": "HSSS", + "geo": [ + { + "lat": 1560, + "lon": 3254, + "elev": 380, + "firstTime": 0, + "lastTime": 1399046400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KHARTOUM (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2014-05-02 10:00:00" +}, +{ + "id": "MD:V01:RAOB:station:62414", + "wmoid": 62414, + "name": "HESN", + "geo": [ + { + "lat": 2397, + "lon": 3278, + "elev": 194, + "firstTime": 0, + "lastTime": 1713938400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ASWAN (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:62378", + "wmoid": 62378, + "name": "62378", + "geo": [ + { + "lat": 2987, + "lon": 3133, + "elev": 141, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HELWAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:62337", + "wmoid": 62337, + "name": "HEAR", + "geo": [ + { + "lat": 3108, + "lon": 3375, + "elev": 32, + "firstTime": 0, + "lastTime": 1676919600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "EL ARISH", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-02-20 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:62306", + "wmoid": 62306, + "name": "HEMM", + "geo": [ + { + "lat": 3133, + "lon": 2722, + "elev": 30, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MERSA MATRUH (MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:61998", + "wmoid": 61998, + "name": "61998", + "geo": [ + { + "lat": -4935, + "lon": 7025, + "elev": 30, + "firstTime": 0, + "lastTime": 1543258800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PORT-AUX-FRANCAIS", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-11-26 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:61996", + "wmoid": 61996, + "name": "61996", + "geo": [ + { + "lat": -3780, + "lon": 7753, + "elev": 29, + "firstTime": 0, + "lastTime": 1323367200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MARTIN DE VIVIES", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-12-08 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:61976", + "wmoid": 61976, + "name": "61976", + "geo": [ + { + "lat": -1588, + "lon": 5452, + "elev": 13, + "firstTime": 0, + "lastTime": 1307638800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SERGE-FROLOW/TROMELIN", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-06-09 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:61967", + "wmoid": 61967, + "name": "FJDG", + "geo": [ + { + "lat": -730, + "lon": 7240, + "elev": 3, + "firstTime": 0, + "lastTime": 0, + "updateTime": 0 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DIEGO GARCIA", + "near_airport": "", + "gps_date": "", + "updateTime": "" +}, +{ + "id": "MD:V01:RAOB:station:61901", + "wmoid": 61901, + "name": "61901", + "geo": [ + { + "lat": -1597, + "lon": -570, + "elev": 436, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ST. HELENA ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:61641", + "wmoid": 61641, + "name": "GOOY", + "geo": [ + { + "lat": 1473, + "lon": -1750, + "elev": 24, + "firstTime": 0, + "lastTime": 1528606800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DAKAR/YOFF", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-06-09 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:61291", + "wmoid": 61291, + "name": "GABS", + "geo": [ + { + "lat": 1253, + "lon": -795, + "elev": 381, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BAMAKO/SENOU (MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:61223", + "wmoid": 61223, + "name": "GATB", + "geo": [ + { + "lat": 1672, + "lon": -300, + "elev": 264, + "firstTime": 0, + "lastTime": 1333126800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TOMBOUCTOU/TIMBUKTU", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-03-30 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:61052", + "wmoid": 61052, + "name": "DRRR", + "geo": [ + { + "lat": 1348, + "lon": 217, + "elev": 227, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NIAMEY-AERO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:61024", + "wmoid": 61024, + "name": "DRZA", + "geo": [ + { + "lat": 1697, + "lon": 798, + "elev": 502, + "firstTime": 0, + "lastTime": 1713978000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AGADEZ SOUTH (MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:60680", + "wmoid": 60680, + "name": "60680", + "geo": [ + { + "lat": 2278, + "lon": 552, + "elev": 1378, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TAMANRASSET", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:60656", + "wmoid": 60656, + "name": "DAOF", + "geo": [ + { + "lat": 2767, + "lon": -813, + "elev": 431, + "firstTime": 0, + "lastTime": 1713938400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TINDOUF", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:60630", + "wmoid": 60630, + "name": "60630", + "geo": [ + { + "lat": 2720, + "lon": 247, + "elev": 293, + "firstTime": 0, + "lastTime": 1713938400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "IN SALAH", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:60571", + "wmoid": 60571, + "name": "DAOR", + "geo": [ + { + "lat": 3162, + "lon": -223, + "elev": 773, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BECHAR/OUAKDA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:60390", + "wmoid": 60390, + "name": "DAAG", + "geo": [ + { + "lat": 3672, + "lon": 325, + "elev": 25, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DAR-EL-BEIDA/HOUARI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:60018", + "wmoid": 60018, + "name": "60018", + "geo": [ + { + "lat": 2831, + "lon": -1625, + "elev": 120, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VALLE DE GUIMAR TENERIFE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:59981", + "wmoid": 59981, + "name": "59981", + "geo": [ + { + "lat": 1683, + "lon": 11233, + "elev": 5, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "XISHA ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:59758", + "wmoid": 59758, + "name": "ZGHK", + "geo": [ + { + "lat": 2003, + "lon": 11035, + "elev": 15, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HAIKOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:59431", + "wmoid": 59431, + "name": "ZGNN", + "geo": [ + { + "lat": 2282, + "lon": 10835, + "elev": 73, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NANNING/WUXU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:59316", + "wmoid": 59316, + "name": "ZGOW", + "geo": [ + { + "lat": 2340, + "lon": 11668, + "elev": 3, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SHANTOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:59280", + "wmoid": 59280, + "name": "59280", + "geo": [ + { + "lat": 2367, + "lon": 11305, + "elev": 19, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PING YUAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:59265", + "wmoid": 59265, + "name": "59265", + "geo": [ + { + "lat": 2348, + "lon": 11130, + "elev": 120, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WUZHOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:59211", + "wmoid": 59211, + "name": "59211", + "geo": [ + { + "lat": 2392, + "lon": 10662, + "elev": 242, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BOSE", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:59134", + "wmoid": 59134, + "name": "59134", + "geo": [ + { + "lat": 2445, + "lon": 11807, + "elev": 63, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "XIA-MEN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:58847", + "wmoid": 58847, + "name": "ZSFZ", + "geo": [ + { + "lat": 2608, + "lon": 11928, + "elev": 85, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FUZHOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:58725", + "wmoid": 58725, + "name": "58725", + "geo": [ + { + "lat": 2733, + "lon": 11743, + "elev": 192, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SHAOWU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:58665", + "wmoid": 58665, + "name": "58665", + "geo": [ + { + "lat": 2865, + "lon": 12008, + "elev": 9, + "firstTime": 0, + "lastTime": 1579370400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LUQIAO", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:58633", + "wmoid": 58633, + "name": "58633", + "geo": [ + { + "lat": 2897, + "lon": 11887, + "elev": 71, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "QU XIAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:58606", + "wmoid": 58606, + "name": "ZSCN", + "geo": [ + { + "lat": 2860, + "lon": 11592, + "elev": 50, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NANCHANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:58457", + "wmoid": 58457, + "name": "ZSHC", + "geo": [ + { + "lat": 3023, + "lon": 12017, + "elev": 43, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HANGZHOU/JIANQIAO", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:58424", + "wmoid": 58424, + "name": "58424", + "geo": [ + { + "lat": 3052, + "lon": 11703, + "elev": 20, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ANQING", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:58362", + "wmoid": 58362, + "name": "58362", + "geo": [ + { + "lat": 3140, + "lon": 12147, + "elev": 4, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SHANGHAI", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:58238", + "wmoid": 58238, + "name": "ZSNJ", + "geo": [ + { + "lat": 3200, + "lon": 11880, + "elev": 12, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NANJING/NANKING", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:58203", + "wmoid": 58203, + "name": "58203", + "geo": [ + { + "lat": 3293, + "lon": 11583, + "elev": 39, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FUYANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:58150", + "wmoid": 58150, + "name": "58150", + "geo": [ + { + "lat": 3377, + "lon": 12025, + "elev": 7, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SHEYANG/HEDE", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:58027", + "wmoid": 58027, + "name": "58027", + "geo": [ + { + "lat": 3428, + "lon": 11715, + "elev": 42, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "XUZHOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:57993", + "wmoid": 57993, + "name": "ZSGZ", + "geo": [ + { + "lat": 2585, + "lon": 11495, + "elev": 125, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GANZHOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:57972", + "wmoid": 57972, + "name": "57972", + "geo": [ + { + "lat": 2582, + "lon": 11302, + "elev": 185, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHENZHOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:57957", + "wmoid": 57957, + "name": "ZGKL", + "geo": [ + { + "lat": 2533, + "lon": 11030, + "elev": 166, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GUILIN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:57816", + "wmoid": 57816, + "name": "ZUGY", + "geo": [ + { + "lat": 2658, + "lon": 10672, + "elev": 1074, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GUIYANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:57749", + "wmoid": 57749, + "name": "57749", + "geo": [ + { + "lat": 2757, + "lon": 11000, + "elev": 261, + "firstTime": 0, + "lastTime": 1579370400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HUAIHUA", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:57679", + "wmoid": 57679, + "name": "ZGCS", + "geo": [ + { + "lat": 2820, + "lon": 11308, + "elev": 46, + "firstTime": 0, + "lastTime": 1522515600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHANGSHA/DATUOPU", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-03-31 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:57516", + "wmoid": 57516, + "name": "ZUCK", + "geo": [ + { + "lat": 2952, + "lon": 10648, + "elev": 351, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHONGQING/CHUNGKING", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:57494", + "wmoid": 57494, + "name": "ZHHH", + "geo": [ + { + "lat": 3062, + "lon": 11413, + "elev": 23, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WUHAN/NANHU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:57461", + "wmoid": 57461, + "name": "57461", + "geo": [ + { + "lat": 3070, + "lon": 11128, + "elev": 134, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YICHANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:57447", + "wmoid": 57447, + "name": "57447", + "geo": [ + { + "lat": 3028, + "lon": 10947, + "elev": 458, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ENSHI", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:57178", + "wmoid": 57178, + "name": "57178", + "geo": [ + { + "lat": 3302, + "lon": 11253, + "elev": 131, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NANYANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:57127", + "wmoid": 57127, + "name": "57127", + "geo": [ + { + "lat": 3307, + "lon": 10703, + "elev": 509, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HANZHONG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:57083", + "wmoid": 57083, + "name": "ZHCC", + "geo": [ + { + "lat": 3472, + "lon": 11365, + "elev": 111, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ZHENGZHOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:57036", + "wmoid": 57036, + "name": "ZLSN", + "geo": [ + { + "lat": 3429, + "lon": 10893, + "elev": 398, + "firstTime": 0, + "lastTime": 0, + "updateTime": 0 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "XI'AN", + "near_airport": "", + "gps_date": "", + "updateTime": "" +}, +{ + "id": "MD:V01:RAOB:station:56985", + "wmoid": 56985, + "name": "56985", + "geo": [ + { + "lat": 2338, + "lon": 10338, + "elev": 1302, + "firstTime": 0, + "lastTime": 1579460400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MENGZI", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:56964", + "wmoid": 56964, + "name": "56964", + "geo": [ + { + "lat": 2277, + "lon": 10098, + "elev": 1303, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SIMAO", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:56778", + "wmoid": 56778, + "name": "ZPPP", + "geo": [ + { + "lat": 2502, + "lon": 10268, + "elev": 1892, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KUNMING/WUJIABA", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:56739", + "wmoid": 56739, + "name": "56739", + "geo": [ + { + "lat": 2503, + "lon": 9848, + "elev": 1649, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TENGCHONG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:56691", + "wmoid": 56691, + "name": "56691", + "geo": [ + { + "lat": 2687, + "lon": 10428, + "elev": 2236, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WEINING", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:56571", + "wmoid": 56571, + "name": "56571", + "geo": [ + { + "lat": 2790, + "lon": 10227, + "elev": 1599, + "firstTime": 0, + "lastTime": 1579413600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "XICHANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:56146", + "wmoid": 56146, + "name": "56146", + "geo": [ + { + "lat": 3162, + "lon": 10000, + "elev": 3394, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GARZE", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:56137", + "wmoid": 56137, + "name": "56137", + "geo": [ + { + "lat": 3115, + "lon": 9717, + "elev": 3307, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "QAMDO", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:56080", + "wmoid": 56080, + "name": "56080", + "geo": [ + { + "lat": 3497, + "lon": 10290, + "elev": 2910, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HEZUO", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:56029", + "wmoid": 56029, + "name": "56029", + "geo": [ + { + "lat": 3302, + "lon": 9702, + "elev": 3682, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YUSHU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:55591", + "wmoid": 55591, + "name": "ZULS", + "geo": [ + { + "lat": 2967, + "lon": 9113, + "elev": 3650, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LHASA", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:55299", + "wmoid": 55299, + "name": "55299", + "geo": [ + { + "lat": 3148, + "lon": 9207, + "elev": 4508, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NAGQU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:54857", + "wmoid": 54857, + "name": "ZSQD", + "geo": [ + { + "lat": 3607, + "lon": 12033, + "elev": 77, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "QINGDAO/TSINGTAO", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:54662", + "wmoid": 54662, + "name": "ZYTL", + "geo": [ + { + "lat": 3890, + "lon": 12163, + "elev": 97, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DALIAN/DAIREN/LUDA", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:54511", + "wmoid": 54511, + "name": "ZBAA", + "geo": [ + { + "lat": 3993, + "lon": 11628, + "elev": 55, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BEIJING/PEKING", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:54497", + "wmoid": 54497, + "name": "54497", + "geo": [ + { + "lat": 4008, + "lon": 12433, + "elev": 14, + "firstTime": 0, + "lastTime": 0, + "updateTime": 0 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DANDONG", + "near_airport": "", + "gps_date": "", + "updateTime": "" +}, +{ + "id": "MD:V01:RAOB:station:54374", + "wmoid": 54374, + "name": "54374", + "geo": [ + { + "lat": 4172, + "lon": 12692, + "elev": 333, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LINJIANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:54342", + "wmoid": 54342, + "name": "ZYYY", + "geo": [ + { + "lat": 4177, + "lon": 12343, + "elev": 43, + "firstTime": 0, + "lastTime": 1554051600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SHENYANG/DONGTA", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-03-31 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:54337", + "wmoid": 54337, + "name": "54337", + "geo": [ + { + "lat": 4112, + "lon": 12107, + "elev": 70, + "firstTime": 0, + "lastTime": 0, + "updateTime": 0 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JINZHOU", + "near_airport": "", + "gps_date": "", + "updateTime": "" +}, +{ + "id": "MD:V01:RAOB:station:54292", + "wmoid": 54292, + "name": "54292", + "geo": [ + { + "lat": 4288, + "lon": 12947, + "elev": 178, + "firstTime": 0, + "lastTime": 1579370400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YANJI", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:54218", + "wmoid": 54218, + "name": "54218", + "geo": [ + { + "lat": 4227, + "lon": 11897, + "elev": 572, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHIFENG/ULANHAD", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:54161", + "wmoid": 54161, + "name": "ZYCC", + "geo": [ + { + "lat": 4390, + "lon": 12522, + "elev": 238, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHANGCHUN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:54135", + "wmoid": 54135, + "name": "54135", + "geo": [ + { + "lat": 4360, + "lon": 12227, + "elev": 180, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TONGLIAO", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:54102", + "wmoid": 54102, + "name": "54102", + "geo": [ + { + "lat": 4395, + "lon": 11607, + "elev": 991, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "XILIN HOT/ABAGNAR", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:53915", + "wmoid": 53915, + "name": "53915", + "geo": [ + { + "lat": 3555, + "lon": 10667, + "elev": 1348, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PINGLIANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:53845", + "wmoid": 53845, + "name": "ZLYA", + "geo": [ + { + "lat": 3660, + "lon": 10950, + "elev": 959, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YAN AN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:53772", + "wmoid": 53772, + "name": "ZBYN", + "geo": [ + { + "lat": 3778, + "lon": 11255, + "elev": 779, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TAIYUAN/WUSU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:53614", + "wmoid": 53614, + "name": "ZLIC", + "geo": [ + { + "lat": 3848, + "lon": 10622, + "elev": 1112, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YINCHUAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:53513", + "wmoid": 53513, + "name": "53513", + "geo": [ + { + "lat": 4077, + "lon": 10740, + "elev": 1041, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LINHE", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:53463", + "wmoid": 53463, + "name": "ZBHH", + "geo": [ + { + "lat": 4082, + "lon": 11168, + "elev": 1065, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HOHHOT", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:53068", + "wmoid": 53068, + "name": "53068", + "geo": [ + { + "lat": 4365, + "lon": 11200, + "elev": 966, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ERENHOT", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:52866", + "wmoid": 52866, + "name": "ZLXN", + "geo": [ + { + "lat": 3662, + "lon": 10177, + "elev": 2262, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "XINING", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:52836", + "wmoid": 52836, + "name": "52836", + "geo": [ + { + "lat": 3630, + "lon": 9810, + "elev": 3192, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DULAN/QAGAN US", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:52818", + "wmoid": 52818, + "name": "52818", + "geo": [ + { + "lat": 3642, + "lon": 9490, + "elev": 2809, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GOLMUD", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:52681", + "wmoid": 52681, + "name": "52681", + "geo": [ + { + "lat": 3863, + "lon": 10308, + "elev": 1367, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MINQIN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:52533", + "wmoid": 52533, + "name": "ZLJQ", + "geo": [ + { + "lat": 3977, + "lon": 9848, + "elev": 1478, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JIUQUAN/SUZHOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:52418", + "wmoid": 52418, + "name": "52418", + "geo": [ + { + "lat": 4015, + "lon": 9468, + "elev": 1140, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DUNHUANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:52323", + "wmoid": 52323, + "name": "52323", + "geo": [ + { + "lat": 4180, + "lon": 9703, + "elev": 1770, + "firstTime": 0, + "lastTime": 1579413600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MAZONG SHAN (MOUNT)", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:52267", + "wmoid": 52267, + "name": "52267", + "geo": [ + { + "lat": 4195, + "lon": 10107, + "elev": 941, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "EJIN QI", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:52203", + "wmoid": 52203, + "name": "ZWHM", + "geo": [ + { + "lat": 4282, + "lon": 9352, + "elev": 739, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HAMI", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:51839", + "wmoid": 51839, + "name": "51839", + "geo": [ + { + "lat": 3707, + "lon": 8277, + "elev": 1410, + "firstTime": 0, + "lastTime": 1579370400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MINFENG/NIYA", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:51828", + "wmoid": 51828, + "name": "ZWTN", + "geo": [ + { + "lat": 3713, + "lon": 7993, + "elev": 1375, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HOTAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:51777", + "wmoid": 51777, + "name": "51777", + "geo": [ + { + "lat": 3903, + "lon": 8817, + "elev": 889, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "RUOQIANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:51709", + "wmoid": 51709, + "name": "ZWSH", + "geo": [ + { + "lat": 3947, + "lon": 7598, + "elev": 1291, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KASHI", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:51644", + "wmoid": 51644, + "name": "51644", + "geo": [ + { + "lat": 4172, + "lon": 8295, + "elev": 1100, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KUQA", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:51463", + "wmoid": 51463, + "name": "51463", + "geo": [ + { + "lat": 4378, + "lon": 8762, + "elev": 919, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "URUMQI", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:51431", + "wmoid": 51431, + "name": "ZWYN", + "geo": [ + { + "lat": 4395, + "lon": 8133, + "elev": 663, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YINING", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:51076", + "wmoid": 51076, + "name": "51076", + "geo": [ + { + "lat": 4773, + "lon": 8808, + "elev": 737, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALTAY", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:50953", + "wmoid": 50953, + "name": "50953", + "geo": [ + { + "lat": 4575, + "lon": 12677, + "elev": 143, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HARBIN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:50774", + "wmoid": 50774, + "name": "50774", + "geo": [ + { + "lat": 4772, + "lon": 12890, + "elev": 232, + "firstTime": 0, + "lastTime": 1579413600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YICHUN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:50557", + "wmoid": 50557, + "name": "50557", + "geo": [ + { + "lat": 4917, + "lon": 12523, + "elev": 243, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NENJIANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:50527", + "wmoid": 50527, + "name": "50527", + "geo": [ + { + "lat": 4922, + "lon": 11975, + "elev": 611, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HAILAR", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:48820", + "wmoid": 48820, + "name": "VVNB", + "geo": [ + { + "lat": 2102, + "lon": 10580, + "elev": 6, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HANOI/NOIBAI INTL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:48615", + "wmoid": 48615, + "name": "WMKC", + "geo": [ + { + "lat": 617, + "lon": 10228, + "elev": 5, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KOTA BHARU/SULTAN P", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:48601", + "wmoid": 48601, + "name": "WMKP", + "geo": [ + { + "lat": 530, + "lon": 10027, + "elev": 4, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PENANG/BAYAN LEPAS", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:48407", + "wmoid": 48407, + "name": "VTUU", + "geo": [ + { + "lat": 1525, + "lon": 10487, + "elev": 127, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "UBON/RATCHATHANI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47991", + "wmoid": 47991, + "name": "RJAM", + "geo": [ + { + "lat": 2430, + "lon": 15397, + "elev": 9, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MINAMITORISHIMA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47971", + "wmoid": 47971, + "name": "RJAO", + "geo": [ + { + "lat": 2708, + "lon": 14218, + "elev": 8, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHICHIJIMA ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47945", + "wmoid": 47945, + "name": "ROMD", + "geo": [ + { + "lat": 2583, + "lon": 13123, + "elev": 20, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MINAMIDAITOJIMA ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47936", + "wmoid": 47936, + "name": "47936", + "geo": [ + { + "lat": 2620, + "lon": 12768, + "elev": 27, + "firstTime": 0, + "lastTime": 1206986400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NAHA AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2008-03-31 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47918", + "wmoid": 47918, + "name": "ROIG", + "geo": [ + { + "lat": 2433, + "lon": 12417, + "elev": 7, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ISHIGAKIJIMA ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47909", + "wmoid": 47909, + "name": "47909", + "geo": [ + { + "lat": 2838, + "lon": 12955, + "elev": 295, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NAZE/FUNCHATOGE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47827", + "wmoid": 47827, + "name": "47827", + "geo": [ + { + "lat": 3163, + "lon": 13058, + "elev": 31, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KAGOSHIMA/YOSHINO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47807", + "wmoid": 47807, + "name": "47807", + "geo": [ + { + "lat": 3358, + "lon": 13038, + "elev": 14, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FUKUOKA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47778", + "wmoid": 47778, + "name": "47778", + "geo": [ + { + "lat": 3345, + "lon": 13577, + "elev": 75, + "firstTime": 0, + "lastTime": 1693202400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SHIONOMISAKI", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-08-28 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47744", + "wmoid": 47744, + "name": "47744", + "geo": [ + { + "lat": 3543, + "lon": 13335, + "elev": 8, + "firstTime": 0, + "lastTime": 1258441200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YONAGO", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-11-17 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47681", + "wmoid": 47681, + "name": "RJNH", + "geo": [ + { + "lat": 3473, + "lon": 13767, + "elev": 48, + "firstTime": 0, + "lastTime": 1561917600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HAMAMATSU AB", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-06-30 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47678", + "wmoid": 47678, + "name": "47678", + "geo": [ + { + "lat": 3312, + "lon": 13978, + "elev": 80, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HACHIJOJIMA/OMURE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47646", + "wmoid": 47646, + "name": "47646", + "geo": [ + { + "lat": 3605, + "lon": 14013, + "elev": 31, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TATENO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47600", + "wmoid": 47600, + "name": "47600", + "geo": [ + { + "lat": 3738, + "lon": 13690, + "elev": 14, + "firstTime": 0, + "lastTime": 1708326000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WAJIMA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-02-19 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47590", + "wmoid": 47590, + "name": "47590", + "geo": [ + { + "lat": 3827, + "lon": 14090, + "elev": 43, + "firstTime": 0, + "lastTime": 1206986400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SENDAI", + "near_airport": "", + "gps_date": "", + "updateTime": "2008-03-31 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47582", + "wmoid": 47582, + "name": "47582", + "geo": [ + { + "lat": 3972, + "lon": 14010, + "elev": 21, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AKITA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47580", + "wmoid": 47580, + "name": "RJSM", + "geo": [ + { + "lat": 4068, + "lon": 14138, + "elev": 39, + "firstTime": 0, + "lastTime": 1585677600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MISAWA", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-03-31 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47420", + "wmoid": 47420, + "name": "47420", + "geo": [ + { + "lat": 4333, + "lon": 14558, + "elev": 26, + "firstTime": 0, + "lastTime": 1258441200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NEMURO", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-11-17 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47412", + "wmoid": 47412, + "name": "47412", + "geo": [ + { + "lat": 4305, + "lon": 14133, + "elev": 19, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SAPPORO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47401", + "wmoid": 47401, + "name": "47401", + "geo": [ + { + "lat": 4542, + "lon": 14168, + "elev": 11, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WAKKANAI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47185", + "wmoid": 47185, + "name": "47185", + "geo": [ + { + "lat": 3328, + "lon": 12617, + "elev": 73, + "firstTime": 0, + "lastTime": 1464717600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHEJU", + "near_airport": "", + "gps_date": "", + "updateTime": "2016-05-31 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47158", + "wmoid": 47158, + "name": "RKJJ", + "geo": [ + { + "lat": 3512, + "lon": 12682, + "elev": 13, + "firstTime": 0, + "lastTime": 1703746800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KWANGJU (KOR-AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-12-28 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47138", + "wmoid": 47138, + "name": "47138", + "geo": [ + { + "lat": 3603, + "lon": 12938, + "elev": 6, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "POHANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47122", + "wmoid": 47122, + "name": "RKSO", + "geo": [ + { + "lat": 3710, + "lon": 12703, + "elev": 12, + "firstTime": 0, + "lastTime": 1703746800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OSAN (US/KOR-AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-12-28 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47102", + "wmoid": 47102, + "name": "47102", + "geo": [ + { + "lat": 3803, + "lon": 12715, + "elev": 70, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHONGONG-NI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:45004", + "wmoid": 45004, + "name": "45004", + "geo": [ + { + "lat": 2232, + "lon": 11417, + "elev": 66, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KING'S PARK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:44292", + "wmoid": 44292, + "name": "44292", + "geo": [ + { + "lat": 4793, + "lon": 10698, + "elev": 1313, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ULAN-BATOR", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:44212", + "wmoid": 44212, + "name": "44212", + "geo": [ + { + "lat": 4997, + "lon": 9208, + "elev": 936, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ULAN-GOM", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:43371", + "wmoid": 43371, + "name": "43371", + "geo": [ + { + "lat": 848, + "lon": 7695, + "elev": 64, + "firstTime": 0, + "lastTime": 1698127200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "THIRUVANANTHAPURAM", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-10-24 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:43369", + "wmoid": 43369, + "name": "43369", + "geo": [ + { + "lat": 830, + "lon": 7315, + "elev": 2, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MINICOY ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:43346", + "wmoid": 43346, + "name": "43346", + "geo": [ + { + "lat": 1092, + "lon": 7983, + "elev": 7, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KARAIKAL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:43333", + "wmoid": 43333, + "name": "VEPB", + "geo": [ + { + "lat": 1167, + "lon": 9272, + "elev": 79, + "firstTime": 0, + "lastTime": 1711130400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PORT BLAIR", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-03-22 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:43295", + "wmoid": 43295, + "name": "43295", + "geo": [ + { + "lat": 1297, + "lon": 7758, + "elev": 921, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BANGALORE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:43285", + "wmoid": 43285, + "name": "43285", + "geo": [ + { + "lat": 1295, + "lon": 7483, + "elev": 31, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PANAMBUR", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:43185", + "wmoid": 43185, + "name": "43185", + "geo": [ + { + "lat": 1620, + "lon": 8115, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MACHILIPATNAM", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:43150", + "wmoid": 43150, + "name": "43150", + "geo": [ + { + "lat": 1770, + "lon": 8330, + "elev": 66, + "firstTime": 0, + "lastTime": 1714042800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VISHAKHAPATNAM/WALT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 05:00:00" +}, +{ + "id": "MD:V01:RAOB:station:43128", + "wmoid": 43128, + "name": "VOHY", + "geo": [ + { + "lat": 1745, + "lon": 7847, + "elev": 545, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HYDERABAD (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:43014", + "wmoid": 43014, + "name": "VAAU", + "geo": [ + { + "lat": 1985, + "lon": 7540, + "elev": 579, + "firstTime": 0, + "lastTime": 1714042800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AURANGABAD AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 05:00:00" +}, +{ + "id": "MD:V01:RAOB:station:43003", + "wmoid": 43003, + "name": "VABB", + "geo": [ + { + "lat": 1912, + "lon": 7285, + "elev": 14, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BOMBAY/SANTACRUZ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:42971", + "wmoid": 42971, + "name": "VEBS", + "geo": [ + { + "lat": 2025, + "lon": 8583, + "elev": 46, + "firstTime": 0, + "lastTime": 1714046400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BHUBANESWAR", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 06:00:00" +}, +{ + "id": "MD:V01:RAOB:station:42874", + "wmoid": 42874, + "name": "42874", + "geo": [ + { + "lat": 2122, + "lon": 8167, + "elev": 298, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PBO RAIPUR", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:42867", + "wmoid": 42867, + "name": "VANP", + "geo": [ + { + "lat": 2110, + "lon": 7905, + "elev": 310, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NAGPUR SONEGAON AFB", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:42809", + "wmoid": 42809, + "name": "VECC", + "geo": [ + { + "lat": 2265, + "lon": 8845, + "elev": 6, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CALCUTTA/DUM DUM", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:42724", + "wmoid": 42724, + "name": "VEAT", + "geo": [ + { + "lat": 2388, + "lon": 9125, + "elev": 16, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AGARTALA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:42701", + "wmoid": 42701, + "name": "VERC", + "geo": [ + { + "lat": 2332, + "lon": 8532, + "elev": 652, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "RANCHI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:42667", + "wmoid": 42667, + "name": "VABP", + "geo": [ + { + "lat": 2328, + "lon": 7735, + "elev": 523, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BHOPAL/BAIRAGARH", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:42647", + "wmoid": 42647, + "name": "VAAH", + "geo": [ + { + "lat": 2307, + "lon": 7263, + "elev": 55, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AHMADABAD", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:42492", + "wmoid": 42492, + "name": "VEPT", + "geo": [ + { + "lat": 2560, + "lon": 8510, + "elev": 60, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PATNA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:42410", + "wmoid": 42410, + "name": "VEGT", + "geo": [ + { + "lat": 2610, + "lon": 9158, + "elev": 54, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GAUHATI (IN-AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:42369", + "wmoid": 42369, + "name": "VILK", + "geo": [ + { + "lat": 2675, + "lon": 8088, + "elev": 128, + "firstTime": 0, + "lastTime": 1714042800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LUCKNOW/AMAUSI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 05:00:00" +}, +{ + "id": "MD:V01:RAOB:station:42361", + "wmoid": 42361, + "name": "VIGR", + "geo": [ + { + "lat": 2623, + "lon": 7825, + "elev": 207, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GWALIOR (IN-AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:42339", + "wmoid": 42339, + "name": "VIJO", + "geo": [ + { + "lat": 2630, + "lon": 7302, + "elev": 224, + "firstTime": 0, + "lastTime": 1713981600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JODHPUR (IN-AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:42314", + "wmoid": 42314, + "name": "VEMN", + "geo": [ + { + "lat": 2748, + "lon": 9502, + "elev": 111, + "firstTime": 0, + "lastTime": 1713852000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DIBRUGARH/MOHANBARI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-23 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:42182", + "wmoid": 42182, + "name": "VIDD", + "geo": [ + { + "lat": 2858, + "lon": 7720, + "elev": 216, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DELHI/SAFDARJUNG", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:42101", + "wmoid": 42101, + "name": "42101", + "geo": [ + { + "lat": 3033, + "lon": 7647, + "elev": 251, + "firstTime": 0, + "lastTime": 1711778400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PATIALA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-03-30 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:41256", + "wmoid": 41256, + "name": "OOMS", + "geo": [ + { + "lat": 2358, + "lon": 5828, + "elev": 17, + "firstTime": 0, + "lastTime": 1714028400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SEEB INTL/MUSCAT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 01:00:00" +}, +{ + "id": "MD:V01:RAOB:station:41217", + "wmoid": 41217, + "name": "OMAA", + "geo": [ + { + "lat": 2443, + "lon": 5465, + "elev": 27, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ABU DHABI INTL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:41112", + "wmoid": 41112, + "name": "OEAB", + "geo": [ + { + "lat": 1823, + "lon": 4265, + "elev": 2084, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ABHA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:41024", + "wmoid": 41024, + "name": "OEJN", + "geo": [ + { + "lat": 2167, + "lon": 3915, + "elev": 17, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JEDDAH/ABDUL AZIZ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:40800", + "wmoid": 40800, + "name": "OIFM", + "geo": [ + { + "lat": 3262, + "lon": 5167, + "elev": 1590, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ESFAHAN (CIV/AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:40766", + "wmoid": 40766, + "name": "OICC", + "geo": [ + { + "lat": 3427, + "lon": 4712, + "elev": 1322, + "firstTime": 0, + "lastTime": 1713938400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KERMANSHAH/BAKTARAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:40754", + "wmoid": 40754, + "name": "OIII", + "geo": [ + { + "lat": 3568, + "lon": 5135, + "elev": 1191, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TEHRAN/MEHRABAD AFB", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:40582", + "wmoid": 40582, + "name": "OKBK", + "geo": [ + { + "lat": 2922, + "lon": 4798, + "elev": 55, + "firstTime": 0, + "lastTime": 1677092400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KUWAIT INTERNATIONAL AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-02-22 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:40430", + "wmoid": 40430, + "name": "OEMA", + "geo": [ + { + "lat": 2455, + "lon": 3972, + "elev": 636, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MADINAH INTL ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:40417", + "wmoid": 40417, + "name": "OEMF", + "geo": [ + { + "lat": 2645, + "lon": 4982, + "elev": 12, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KING FAHAD INTERNATIONAL APT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:40375", + "wmoid": 40375, + "name": "OETB", + "geo": [ + { + "lat": 2837, + "lon": 3658, + "elev": 770, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TABUK (SAUD-AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:40373", + "wmoid": 40373, + "name": "OEPA", + "geo": [ + { + "lat": 2833, + "lon": 4612, + "elev": 355, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HAFR AL-BATIN ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:40179", + "wmoid": 40179, + "name": "40179", + "geo": [ + { + "lat": 3200, + "lon": 3482, + "elev": 30, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BET DAGAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:38341", + "wmoid": 38341, + "name": "38341", + "geo": [ + { + "lat": 4285, + "lon": 7138, + "elev": 653, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DZAMBUL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:36870", + "wmoid": 36870, + "name": "UAAA", + "geo": [ + { + "lat": 4323, + "lon": 7693, + "elev": 847, + "firstTime": 0, + "lastTime": 1342720800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALMA-ATA", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-07-19 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:35700", + "wmoid": 35700, + "name": "35700", + "geo": [ + { + "lat": 4702, + "lon": 5185, + "elev": -15, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GUR'EV", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:35394", + "wmoid": 35394, + "name": "35394", + "geo": [ + { + "lat": 4980, + "lon": 7313, + "elev": 553, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KARAGANDA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:35229", + "wmoid": 35229, + "name": "UATT", + "geo": [ + { + "lat": 5028, + "lon": 5715, + "elev": 224, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AKTJUBINSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:35121", + "wmoid": 35121, + "name": "35121", + "geo": [ + { + "lat": 5178, + "lon": 5522, + "elev": 109, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ORENBURG", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:34880", + "wmoid": 34880, + "name": "34880", + "geo": [ + { + "lat": 4627, + "lon": 4803, + "elev": -18, + "firstTime": 0, + "lastTime": 1348639200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ASTRAHAN'", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-09-26 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:34858", + "wmoid": 34858, + "name": "34858", + "geo": [ + { + "lat": 4592, + "lon": 4335, + "elev": 87, + "firstTime": 0, + "lastTime": 1713247200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DIVNOE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-16 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:34560", + "wmoid": 34560, + "name": "URWW", + "geo": [ + { + "lat": 4868, + "lon": 4435, + "elev": 145, + "firstTime": 0, + "lastTime": 1348639200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VOLGOGRAD", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-09-26 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:34247", + "wmoid": 34247, + "name": "34247", + "geo": [ + { + "lat": 5042, + "lon": 4105, + "elev": 93, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KALAC", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:34122", + "wmoid": 34122, + "name": "UUOO", + "geo": [ + { + "lat": 5167, + "lon": 3927, + "elev": 104, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VORONEZ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:34009", + "wmoid": 34009, + "name": "34009", + "geo": [ + { + "lat": 5177, + "lon": 3617, + "elev": 247, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KURSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:33791", + "wmoid": 33791, + "name": "33791", + "geo": [ + { + "lat": 4303, + "lon": 3322, + "elev": 125, + "firstTime": 0, + "lastTime": 1645642800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KRYVYI RIH", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-02-23 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:33345", + "wmoid": 33345, + "name": "UKKK", + "geo": [ + { + "lat": 5040, + "lon": 3045, + "elev": 167, + "firstTime": 0, + "lastTime": 1645686000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KIEV/ZHULYANY", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-02-24 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:32540", + "wmoid": 32540, + "name": "UHPP", + "geo": [ + { + "lat": 5297, + "lon": 15875, + "elev": 24, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PETROPAVLOVSK-KAMCHATSKIJ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:32150", + "wmoid": 32150, + "name": "UHSS", + "geo": [ + { + "lat": 4692, + "lon": 14273, + "elev": 31, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JUZNO-SAHALINSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:32061", + "wmoid": 32061, + "name": "32061", + "geo": [ + { + "lat": 5090, + "lon": 14217, + "elev": 31, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALEKSANDROVSK-SAHALINSKIJ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:31977", + "wmoid": 31977, + "name": "31977", + "geo": [ + { + "lat": 4327, + "lon": 13205, + "elev": 82, + "firstTime": 0, + "lastTime": 1713722400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SAD-GOROD", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-21 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:31873", + "wmoid": 31873, + "name": "31873", + "geo": [ + { + "lat": 4587, + "lon": 13373, + "elev": 107, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DAL'NERECENSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:31736", + "wmoid": 31736, + "name": "31736", + "geo": [ + { + "lat": 4853, + "lon": 13523, + "elev": 72, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HABAROVSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:31510", + "wmoid": 31510, + "name": "31510", + "geo": [ + { + "lat": 5027, + "lon": 12750, + "elev": 137, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BLAGOVESCENSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:31369", + "wmoid": 31369, + "name": "31369", + "geo": [ + { + "lat": 5315, + "lon": 14070, + "elev": 68, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NIKOLAEVSK-ON-AM", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:31300", + "wmoid": 31300, + "name": "31300", + "geo": [ + { + "lat": 5375, + "lon": 12723, + "elev": 232, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ZEJA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:31088", + "wmoid": 31088, + "name": "31088", + "geo": [ + { + "lat": 5937, + "lon": 14320, + "elev": 6, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OHOTSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:31004", + "wmoid": 31004, + "name": "31004", + "geo": [ + { + "lat": 5862, + "lon": 12537, + "elev": 682, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALDAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:30965", + "wmoid": 30965, + "name": "30965", + "geo": [ + { + "lat": 5038, + "lon": 11652, + "elev": 684, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BORZJA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:30935", + "wmoid": 30935, + "name": "30935", + "geo": [ + { + "lat": 5037, + "lon": 10875, + "elev": 770, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KRASNYJ CIKOJ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:30758", + "wmoid": 30758, + "name": "30758", + "geo": [ + { + "lat": 5202, + "lon": 11333, + "elev": 685, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHITA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:30715", + "wmoid": 30715, + "name": "30715", + "geo": [ + { + "lat": 5248, + "lon": 10385, + "elev": 450, + "firstTime": 0, + "lastTime": 1708801200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ANGARSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-02-24 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:30635", + "wmoid": 30635, + "name": "30635", + "geo": [ + { + "lat": 5442, + "lon": 10902, + "elev": 457, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "UST-BARGUZIN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:30554", + "wmoid": 30554, + "name": "30554", + "geo": [ + { + "lat": 5462, + "lon": 11313, + "elev": 995, + "firstTime": 0, + "lastTime": 1540965600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BOGDARIN", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-10-31 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:30372", + "wmoid": 30372, + "name": "30372", + "geo": [ + { + "lat": 5692, + "lon": 11837, + "elev": 711, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CARA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:30309", + "wmoid": 30309, + "name": "30309", + "geo": [ + { + "lat": 5607, + "lon": 10183, + "elev": 489, + "firstTime": 0, + "lastTime": 1708498800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BRATSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-02-21 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:30230", + "wmoid": 30230, + "name": "UIKK", + "geo": [ + { + "lat": 5777, + "lon": 10812, + "elev": 258, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KIRENSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:30054", + "wmoid": 30054, + "name": "30054", + "geo": [ + { + "lat": 5945, + "lon": 11258, + "elev": 193, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VITIM", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:29698", + "wmoid": 29698, + "name": "UINN", + "geo": [ + { + "lat": 5488, + "lon": 9903, + "elev": 410, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NIZNE-UDINSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:29634", + "wmoid": 29634, + "name": "UNNN", + "geo": [ + { + "lat": 5503, + "lon": 8290, + "elev": 176, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NOVOSIBIRSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:29612", + "wmoid": 29612, + "name": "29612", + "geo": [ + { + "lat": 5537, + "lon": 7837, + "elev": 120, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BARABINSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:29572", + "wmoid": 29572, + "name": "29572", + "geo": [ + { + "lat": 5618, + "lon": 9262, + "elev": 296, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "EMEL'JANOVO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:28952", + "wmoid": 28952, + "name": "28952", + "geo": [ + { + "lat": 5322, + "lon": 6362, + "elev": 156, + "firstTime": 0, + "lastTime": 1320649200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KUSTANAJ", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-11-07 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:28698", + "wmoid": 28698, + "name": "28698", + "geo": [ + { + "lat": 5493, + "lon": 7340, + "elev": 123, + "firstTime": 0, + "lastTime": 1540965600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OMSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-10-31 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:28445", + "wmoid": 28445, + "name": "28445", + "geo": [ + { + "lat": 5673, + "lon": 6107, + "elev": 290, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VERHNEE DUBROVO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:28275", + "wmoid": 28275, + "name": "28275", + "geo": [ + { + "lat": 5815, + "lon": 6818, + "elev": 44, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TOBOLSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:28225", + "wmoid": 28225, + "name": "28225", + "geo": [ + { + "lat": 5795, + "lon": 5620, + "elev": 170, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PERM", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:27995", + "wmoid": 27995, + "name": "27995", + "geo": [ + { + "lat": 5298, + "lon": 4943, + "elev": 45, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BEZENCUKSKAJA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:27962", + "wmoid": 27962, + "name": "UWPP", + "geo": [ + { + "lat": 5313, + "lon": 4502, + "elev": 174, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PENZA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:27707", + "wmoid": 27707, + "name": "27707", + "geo": [ + { + "lat": 5412, + "lon": 3533, + "elev": 239, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SUHINICI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:27612", + "wmoid": 27612, + "name": "27612", + "geo": [ + { + "lat": 5575, + "lon": 3757, + "elev": 156, + "firstTime": 0, + "lastTime": 1568656800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MOSCOW", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-09-16 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:27595", + "wmoid": 27595, + "name": "27595", + "geo": [ + { + "lat": 5578, + "lon": 4918, + "elev": 116, + "firstTime": 0, + "lastTime": 1508911200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KAZAN'", + "near_airport": "", + "gps_date": "", + "updateTime": "2017-10-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:27459", + "wmoid": 27459, + "name": "27459", + "geo": [ + { + "lat": 5627, + "lon": 4400, + "elev": 157, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NIZNIJ NOVGOROD", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:27199", + "wmoid": 27199, + "name": "27199", + "geo": [ + { + "lat": 5860, + "lon": 4963, + "elev": 158, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KIROV", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:27037", + "wmoid": 27037, + "name": "ULWW", + "geo": [ + { + "lat": 5923, + "lon": 3987, + "elev": 131, + "firstTime": 0, + "lastTime": 1298876400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VOLOGDA", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-02-28 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:26781", + "wmoid": 26781, + "name": "26781", + "geo": [ + { + "lat": 5475, + "lon": 3207, + "elev": 241, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SMOLENSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:26298", + "wmoid": 26298, + "name": "26298", + "geo": [ + { + "lat": 5790, + "lon": 3405, + "elev": 178, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BOLOGOE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:26063", + "wmoid": 26063, + "name": "ULLI", + "geo": [ + { + "lat": 5997, + "lon": 3030, + "elev": 4, + "firstTime": 0, + "lastTime": 1540965600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ST. PETERBURG", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-10-31 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:25913", + "wmoid": 25913, + "name": "UHMM", + "geo": [ + { + "lat": 5958, + "lon": 15078, + "elev": 118, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MAGADAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:25703", + "wmoid": 25703, + "name": "25703", + "geo": [ + { + "lat": 6292, + "lon": 15242, + "elev": 207, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SEJMCAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:25400", + "wmoid": 25400, + "name": "25400", + "geo": [ + { + "lat": 6573, + "lon": 15090, + "elev": 43, + "firstTime": 0, + "lastTime": 1540965600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ZYRJANKA", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-10-31 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:24959", + "wmoid": 24959, + "name": "UEEE", + "geo": [ + { + "lat": 6208, + "lon": 12975, + "elev": 103, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YAKUTSK AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:24908", + "wmoid": 24908, + "name": "24908", + "geo": [ + { + "lat": 6033, + "lon": 10227, + "elev": 260, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VANAVARA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:24688", + "wmoid": 24688, + "name": "24688", + "geo": [ + { + "lat": 6327, + "lon": 14315, + "elev": 745, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OJMJAKON", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:24641", + "wmoid": 24641, + "name": "24641", + "geo": [ + { + "lat": 6377, + "lon": 12162, + "elev": 107, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VILJUJSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:24266", + "wmoid": 24266, + "name": "24266", + "geo": [ + { + "lat": 6755, + "lon": 13338, + "elev": 137, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VERHOJANSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:24125", + "wmoid": 24125, + "name": "24125", + "geo": [ + { + "lat": 6850, + "lon": 11243, + "elev": 220, + "firstTime": 0, + "lastTime": 1540965600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OLENEK", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-10-31 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:23955", + "wmoid": 23955, + "name": "23955", + "geo": [ + { + "lat": 6043, + "lon": 7787, + "elev": 47, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALEKSANDROVSKOE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:23921", + "wmoid": 23921, + "name": "23921", + "geo": [ + { + "lat": 6068, + "lon": 6043, + "elev": 101, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "IVDEL'", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:23472", + "wmoid": 23472, + "name": "23472", + "geo": [ + { + "lat": 6578, + "lon": 8795, + "elev": 32, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TURUHANSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:23330", + "wmoid": 23330, + "name": "23330", + "geo": [ + { + "lat": 6653, + "lon": 6653, + "elev": 16, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SALEHARD", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:23205", + "wmoid": 23205, + "name": "23205", + "geo": [ + { + "lat": 6765, + "lon": 5302, + "elev": 7, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NAR'JAN-MAR", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:22845", + "wmoid": 22845, + "name": "22845", + "geo": [ + { + "lat": 6150, + "lon": 3893, + "elev": 121, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KARGOPOL'", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:22550", + "wmoid": 22550, + "name": "ULAA", + "geo": [ + { + "lat": 6453, + "lon": 4058, + "elev": 5, + "firstTime": 0, + "lastTime": 1298876400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ARHANGEL'SK", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-02-28 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:22522", + "wmoid": 22522, + "name": "22522", + "geo": [ + { + "lat": 6498, + "lon": 3480, + "elev": 10, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KEM (PORT)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:22271", + "wmoid": 22271, + "name": "22271", + "geo": [ + { + "lat": 6788, + "lon": 4413, + "elev": 16, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SOJNA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:22217", + "wmoid": 22217, + "name": "22217", + "geo": [ + { + "lat": 6715, + "lon": 3235, + "elev": 26, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KANDALAKSA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:22113", + "wmoid": 22113, + "name": "ULMM", + "geo": [ + { + "lat": 6897, + "lon": 3305, + "elev": 51, + "firstTime": 0, + "lastTime": 1540965600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MURMANSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-10-31 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:21946", + "wmoid": 21946, + "name": "21946", + "geo": [ + { + "lat": 7062, + "lon": 14790, + "elev": 61, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "COKURDAH", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:21824", + "wmoid": 21824, + "name": "21824", + "geo": [ + { + "lat": 7158, + "lon": 12892, + "elev": 8, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TIKSI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:17607", + "wmoid": 17607, + "name": "LCNC", + "geo": [ + { + "lat": 3515, + "lon": 3340, + "elev": 161, + "firstTime": 0, + "lastTime": 1507118400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NICOSIA/ATHALASSA", + "near_airport": "", + "gps_date": "", + "updateTime": "2017-10-04 06:00:00" +}, +{ + "id": "MD:V01:RAOB:station:17351", + "wmoid": 17351, + "name": "17351", + "geo": [ + { + "lat": 3705, + "lon": 3535, + "elev": 28, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ADANA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:17240", + "wmoid": 17240, + "name": "LTBM", + "geo": [ + { + "lat": 3775, + "lon": 3055, + "elev": 997, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ISPARTA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:17220", + "wmoid": 17220, + "name": "17220", + "geo": [ + { + "lat": 3843, + "lon": 2717, + "elev": 25, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "IZMIR", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:17130", + "wmoid": 17130, + "name": "17130", + "geo": [ + { + "lat": 3995, + "lon": 3288, + "elev": 894, + "firstTime": 0, + "lastTime": 1704394800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ANKARA/CENTRAL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-01-04 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:17062", + "wmoid": 17062, + "name": "17062", + "geo": [ + { + "lat": 4097, + "lon": 2908, + "elev": 33, + "firstTime": 0, + "lastTime": 1387911600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ISTANBUL/GOZTEPE", + "near_airport": "", + "gps_date": "", + "updateTime": "2013-12-24 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:17030", + "wmoid": 17030, + "name": "17030", + "geo": [ + { + "lat": 4128, + "lon": 3633, + "elev": 4, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SAMSUN CITY", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:16716", + "wmoid": 16716, + "name": "LGAT", + "geo": [ + { + "lat": 3790, + "lon": 2373, + "elev": 14, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ATHENS/HELLENKION", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:16622", + "wmoid": 16622, + "name": "LGTS", + "geo": [ + { + "lat": 4052, + "lon": 2297, + "elev": 4, + "firstTime": 0, + "lastTime": 1714046400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "THESSALONIKI/MIKRA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 06:00:00" +}, +{ + "id": "MD:V01:RAOB:station:16560", + "wmoid": 16560, + "name": "LIEE", + "geo": [ + { + "lat": 3925, + "lon": 905, + "elev": 7, + "firstTime": 0, + "lastTime": 1330538400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CAGLIARI/ELMAS(AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-02-29 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:16429", + "wmoid": 16429, + "name": "LICT", + "geo": [ + { + "lat": 3792, + "lon": 1250, + "elev": 14, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TRAPANI/BIRGI (AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:16320", + "wmoid": 16320, + "name": "LIBR", + "geo": [ + { + "lat": 4065, + "lon": 1795, + "elev": 10, + "firstTime": 0, + "lastTime": 1615183200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BRINDISI/CASALE AFB", + "near_airport": "", + "gps_date": "", + "updateTime": "2021-03-07 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:16245", + "wmoid": 16245, + "name": "LIRE", + "geo": [ + { + "lat": 4165, + "lon": 1243, + "elev": 12, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PRATICA DI MARE(AB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:16144", + "wmoid": 16144, + "name": "16144", + "geo": [ + { + "lat": 4465, + "lon": 1162, + "elev": 38, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "S. PIETRO CAPOFIUME", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:16080", + "wmoid": 16080, + "name": "LIML", + "geo": [ + { + "lat": 4543, + "lon": 928, + "elev": 103, + "firstTime": 0, + "lastTime": 1621832400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MILANO/LINATE", + "near_airport": "", + "gps_date": "", + "updateTime": "2021-05-23 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:16044", + "wmoid": 16044, + "name": "LIPD", + "geo": [ + { + "lat": 4603, + "lon": 1318, + "elev": 92, + "firstTime": 0, + "lastTime": 1466096400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "UDINE/CAMPOFORMIDO", + "near_airport": "", + "gps_date": "", + "updateTime": "2016-06-16 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:15614", + "wmoid": 15614, + "name": "LBSF", + "geo": [ + { + "lat": 4265, + "lon": 2338, + "elev": 595, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SOFIA (OBSERVATORY)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:15420", + "wmoid": 15420, + "name": "LRBS", + "geo": [ + { + "lat": 4450, + "lon": 2613, + "elev": 91, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BUCHAREST/BANEASA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:15120", + "wmoid": 15120, + "name": "LRCL", + "geo": [ + { + "lat": 4678, + "lon": 2357, + "elev": 413, + "firstTime": 0, + "lastTime": 1351058400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CLUJ-NAPOCA/SOMESEN", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-10-24 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:14240", + "wmoid": 14240, + "name": "LDDD", + "geo": [ + { + "lat": 4582, + "lon": 1603, + "elev": 123, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ZAGREB\\MAKSIMIR", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:12843", + "wmoid": 12843, + "name": "12843", + "geo": [ + { + "lat": 4743, + "lon": 1918, + "elev": 139, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BUDAPEST/LORINC", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:12425", + "wmoid": 12425, + "name": "12425", + "geo": [ + { + "lat": 5113, + "lon": 1698, + "elev": 116, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WROCLAW/MALY GADOW", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:12374", + "wmoid": 12374, + "name": "12374", + "geo": [ + { + "lat": 5240, + "lon": 2097, + "elev": 96, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LEGIONOWO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:12120", + "wmoid": 12120, + "name": "12120", + "geo": [ + { + "lat": 5475, + "lon": 1753, + "elev": 2, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LEBA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:11952", + "wmoid": 11952, + "name": "11952", + "geo": [ + { + "lat": 4903, + "lon": 2032, + "elev": 701, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "POPRAD/GANOVCE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:11520", + "wmoid": 11520, + "name": "11520", + "geo": [ + { + "lat": 5000, + "lon": 1445, + "elev": 303, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PRAGUE/LIBUS", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:11035", + "wmoid": 11035, + "name": "11035", + "geo": [ + { + "lat": 4825, + "lon": 1637, + "elev": 200, + "firstTime": 0, + "lastTime": 1569909600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WIEN/HOHE WARTE", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-01 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:10868", + "wmoid": 10868, + "name": "10868", + "geo": [ + { + "lat": 4825, + "lon": 1155, + "elev": 489, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MUENCHEN/OBERSCHLEISSHEIM", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:10771", + "wmoid": 10771, + "name": "ETGK", + "geo": [ + { + "lat": 4943, + "lon": 1190, + "elev": 419, + "firstTime": 0, + "lastTime": 1568116800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KUEMMERSBRUCK", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-09-10 06:00:00" +}, +{ + "id": "MD:V01:RAOB:station:10739", + "wmoid": 10739, + "name": "10739", + "geo": [ + { + "lat": 4883, + "lon": 920, + "elev": 315, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "STUTTGART/SCHNARRENBERG", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:10618", + "wmoid": 10618, + "name": "ETGI", + "geo": [ + { + "lat": 4970, + "lon": 733, + "elev": 376, + "firstTime": 0, + "lastTime": 1568116800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "IDAR-OBERSTEIN(MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-09-10 06:00:00" +}, +{ + "id": "MD:V01:RAOB:station:10548", + "wmoid": 10548, + "name": "10548", + "geo": [ + { + "lat": 5057, + "lon": 1037, + "elev": 450, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MEININGEN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:10410", + "wmoid": 10410, + "name": "EDZE", + "geo": [ + { + "lat": 5140, + "lon": 697, + "elev": 153, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ESSEN/MULHEIM", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:10393", + "wmoid": 10393, + "name": "10393", + "geo": [ + { + "lat": 5222, + "lon": 1412, + "elev": 115, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LINDENBERG", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:10238", + "wmoid": 10238, + "name": "ETGB", + "geo": [ + { + "lat": 5282, + "lon": 993, + "elev": 69, + "firstTime": 0, + "lastTime": 1568113200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BERGEN (MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-09-10 05:00:00" +}, +{ + "id": "MD:V01:RAOB:station:10200", + "wmoid": 10200, + "name": "EDWE", + "geo": [ + { + "lat": 5238, + "lon": 723, + "elev": 5, + "firstTime": 0, + "lastTime": 1314810000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "EMDEN/KOENIGSPOLDER", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-08-31 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:10184", + "wmoid": 10184, + "name": "10184", + "geo": [ + { + "lat": 5410, + "lon": 1340, + "elev": 6, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GREIFSWALD", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:10035", + "wmoid": 10035, + "name": "10035", + "geo": [ + { + "lat": 5453, + "lon": 955, + "elev": 48, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SCHLESWIG", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:8594", + "wmoid": 8594, + "name": "GVAC", + "geo": [ + { + "lat": 1673, + "lon": -2295, + "elev": 55, + "firstTime": 0, + "lastTime": 1498586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SAL ISL/AMILCAR CAB", + "near_airport": "", + "gps_date": "", + "updateTime": "2017-06-27 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:8579", + "wmoid": 8579, + "name": "8579", + "geo": [ + { + "lat": 3877, + "lon": -913, + "elev": 105, + "firstTime": 0, + "lastTime": 1577905200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LISBON/GAGO COUTINHO", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-01 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:8522", + "wmoid": 8522, + "name": "8522", + "geo": [ + { + "lat": 3263, + "lon": -1690, + "elev": 56, + "firstTime": 0, + "lastTime": 1668538800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FUNCHAL", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-11-15 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:8508", + "wmoid": 8508, + "name": "8508", + "geo": [ + { + "lat": 3873, + "lon": -2707, + "elev": 113, + "firstTime": 0, + "lastTime": 1668538800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LAJES/SANTA RITA", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-11-15 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:8495", + "wmoid": 8495, + "name": "LXGB", + "geo": [ + { + "lat": 3615, + "lon": -533, + "elev": 3, + "firstTime": 0, + "lastTime": 1443790800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GIBRALTAR (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-10-02 07:00:00" +}, +{ + "id": "MD:V01:RAOB:station:8430", + "wmoid": 8430, + "name": "8430", + "geo": [ + { + "lat": 3800, + "lon": -117, + "elev": 62, + "firstTime": 0, + "lastTime": 1450378800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MURCIA CITY", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-12-17 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:8023", + "wmoid": 8023, + "name": "8023", + "geo": [ + { + "lat": 4347, + "lon": -382, + "elev": 65, + "firstTime": 0, + "lastTime": 1450378800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SANTANDER CITY", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-12-17 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:8001", + "wmoid": 8001, + "name": "8001", + "geo": [ + { + "lat": 4337, + "lon": -842, + "elev": 67, + "firstTime": 0, + "lastTime": 1450378800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LA CORUNA CITY", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-12-17 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:7761", + "wmoid": 7761, + "name": "LFKJ", + "geo": [ + { + "lat": 4192, + "lon": 880, + "elev": 5, + "firstTime": 0, + "lastTime": 1531112400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AJACCIO/CAMPO ORO", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-07-08 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:7645", + "wmoid": 7645, + "name": "LFME", + "geo": [ + { + "lat": 4387, + "lon": 440, + "elev": 60, + "firstTime": 0, + "lastTime": 1530507600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NIMES/COURBESSAC", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-07-01 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:7510", + "wmoid": 7510, + "name": "LFBD", + "geo": [ + { + "lat": 4483, + "lon": -70, + "elev": 45, + "firstTime": 0, + "lastTime": 1531112400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BORDEAUX/MERIGNAC", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-07-08 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:7481", + "wmoid": 7481, + "name": "LFLL", + "geo": [ + { + "lat": 4573, + "lon": 508, + "elev": 248, + "firstTime": 0, + "lastTime": 1298898000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LYON/SATOLAS", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-02-28 06:00:00" +}, +{ + "id": "MD:V01:RAOB:station:7180", + "wmoid": 7180, + "name": "LFSN", + "geo": [ + { + "lat": 4868, + "lon": 622, + "elev": 225, + "firstTime": 0, + "lastTime": 1303405200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NANCY/ESSEY", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-04-21 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:7145", + "wmoid": 7145, + "name": "7145", + "geo": [ + { + "lat": 4877, + "lon": 202, + "elev": 168, + "firstTime": 0, + "lastTime": 1531112400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TRAPPES (AUT)", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-07-08 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:7110", + "wmoid": 7110, + "name": "LFRB", + "geo": [ + { + "lat": 4845, + "lon": -442, + "elev": 99, + "firstTime": 0, + "lastTime": 1531112400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BREST/GUIPAVAS", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-07-08 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:6610", + "wmoid": 6610, + "name": "LSMP", + "geo": [ + { + "lat": 4682, + "lon": 695, + "elev": 490, + "firstTime": 0, + "lastTime": 1520229600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PAYERNE (MIL/AUT)", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-03-04 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:6260", + "wmoid": 6260, + "name": "EHDB", + "geo": [ + { + "lat": 5210, + "lon": 518, + "elev": 2, + "firstTime": 0, + "lastTime": 1414998000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DE BILT", + "near_airport": "", + "gps_date": "", + "updateTime": "2014-11-03 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:6181", + "wmoid": 6181, + "name": "6181", + "geo": [ + { + "lat": 5577, + "lon": 1253, + "elev": 40, + "firstTime": 0, + "lastTime": 0, + "updateTime": 0 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KOEBENHAVN\\JAEGERSBORG", + "near_airport": "", + "gps_date": "", + "updateTime": "" +}, +{ + "id": "MD:V01:RAOB:station:6011", + "wmoid": 6011, + "name": "6011", + "geo": [ + { + "lat": 6202, + "lon": -677, + "elev": 55, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "THORSHAVN (PORT)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:4360", + "wmoid": 4360, + "name": "BGAM", + "geo": [ + { + "lat": 6560, + "lon": -3763, + "elev": 50, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ANGMAGSSALIK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:4339", + "wmoid": 4339, + "name": "BGSC", + "geo": [ + { + "lat": 7048, + "lon": -2197, + "elev": 66, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SCORESBYSUND", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:4320", + "wmoid": 4320, + "name": "BGDH", + "geo": [ + { + "lat": 7677, + "lon": -1867, + "elev": 12, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DANMARKSHAVN (PORT)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:4270", + "wmoid": 4270, + "name": "BGBW", + "geo": [ + { + "lat": 6118, + "lon": -4543, + "elev": 4, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NARSSARSSUAQ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:4220", + "wmoid": 4220, + "name": "BGEM", + "geo": [ + { + "lat": 6870, + "lon": -5275, + "elev": 40, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "EGEDESMINDE/AUSIAT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:4018", + "wmoid": 4018, + "name": "BIKF", + "geo": [ + { + "lat": 6397, + "lon": -2260, + "elev": 54, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KEFLAVIK (CIV\\NAS)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:3953", + "wmoid": 3953, + "name": "3953", + "geo": [ + { + "lat": 5193, + "lon": -1025, + "elev": 9, + "firstTime": 0, + "lastTime": 1602698400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VALENTIA OBSERVATORY", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-10-14 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:3918", + "wmoid": 3918, + "name": "3918", + "geo": [ + { + "lat": 5430, + "lon": -619, + "elev": 15, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CASTOR BAY", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:3882", + "wmoid": 3882, + "name": "3882", + "geo": [ + { + "lat": 5090, + "lon": 32, + "elev": 54, + "firstTime": 0, + "lastTime": 1712984400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HERSTOMONCEUX WEST", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-12 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:3808", + "wmoid": 3808, + "name": "3808", + "geo": [ + { + "lat": 5022, + "lon": -532, + "elev": 87, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CAMBORNE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:3238", + "wmoid": 3238, + "name": "3238", + "geo": [ + { + "lat": 5501, + "lon": -152, + "elev": 141, + "firstTime": 0, + "lastTime": 1713416400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALBEMARLE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-17 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:3005", + "wmoid": 3005, + "name": "3005", + "geo": [ + { + "lat": 6013, + "lon": -118, + "elev": 82, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LERWICK/SHETLAND IS", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:2963", + "wmoid": 2963, + "name": "2963", + "geo": [ + { + "lat": 6082, + "lon": 2350, + "elev": 103, + "firstTime": 0, + "lastTime": 1509537600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JOKIOINEN", + "near_airport": "", + "gps_date": "", + "updateTime": "2017-11-01 06:00:00" +}, +{ + "id": "MD:V01:RAOB:station:2935", + "wmoid": 2935, + "name": "EFJY", + "geo": [ + { + "lat": 6240, + "lon": 2567, + "elev": 139, + "firstTime": 0, + "lastTime": 1483232400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JYVASKYLA (MIL/CIV)", + "near_airport": "", + "gps_date": "", + "updateTime": "2016-12-31 18:00:00" +}, +{ + "id": "MD:V01:RAOB:station:2836", + "wmoid": 2836, + "name": "EFSO", + "geo": [ + { + "lat": 6737, + "lon": 2665, + "elev": 178, + "firstTime": 0, + "lastTime": 1509516000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SODANKYLA", + "near_airport": "", + "gps_date": "", + "updateTime": "2017-11-01 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:2591", + "wmoid": 2591, + "name": "ESQV", + "geo": [ + { + "lat": 5765, + "lon": 1835, + "elev": 45, + "firstTime": 0, + "lastTime": 1584079200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VISBY AERO STATION", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-03-13 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:2527", + "wmoid": 2527, + "name": "ESGG", + "geo": [ + { + "lat": 5767, + "lon": 1230, + "elev": 155, + "firstTime": 0, + "lastTime": 1593496800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GOTEBORG/LANDVETTER", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-06-30 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:2365", + "wmoid": 2365, + "name": "ESNN", + "geo": [ + { + "lat": 6253, + "lon": 1747, + "elev": 6, + "firstTime": 0, + "lastTime": 1593108000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SUNDSVALL/HARNOSAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-06-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:2185", + "wmoid": 2185, + "name": "ESPA", + "geo": [ + { + "lat": 6555, + "lon": 2213, + "elev": 16, + "firstTime": 0, + "lastTime": 1573801200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LULEA/KALLAX (AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-11-15 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:1415", + "wmoid": 1415, + "name": "ENZV", + "geo": [ + { + "lat": 5887, + "lon": 567, + "elev": 33, + "firstTime": 0, + "lastTime": 1587016800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "STAVANGER/SOLA(AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-04-16 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:1241", + "wmoid": 1241, + "name": "ENOL", + "geo": [ + { + "lat": 6370, + "lon": 960, + "elev": 7, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ORLAND III(NOR-AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:1152", + "wmoid": 1152, + "name": "ENBO", + "geo": [ + { + "lat": 6725, + "lon": 1440, + "elev": 8, + "firstTime": 0, + "lastTime": 1416942000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BODO VI (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2014-11-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:1028", + "wmoid": 1028, + "name": "ENBJ", + "geo": [ + { + "lat": 7452, + "lon": 1902, + "elev": 18, + "firstTime": 0, + "lastTime": 1601143200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BJORNOYA ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-09-26 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:1004", + "wmoid": 1004, + "name": "ENAS", + "geo": [ + { + "lat": 7892, + "lon": 1193, + "elev": 8, + "firstTime": 0, + "lastTime": 1712426400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NY-ALESUND II", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-06 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:1001", + "wmoid": 1001, + "name": "ENJA", + "geo": [ + { + "lat": 7093, + "lon": -867, + "elev": 9, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JAN MAYEN(NOR-NAVY)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:68424", + "wmoid": 68424, + "name": "FAUP", + "geo": [ + { + "lat": -2840, + "lon": 2127, + "elev": 836, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "UPINGTON/PIERRE VAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:68512", + "wmoid": 68512, + "name": "FASB", + "geo": [ + { + "lat": -2967, + "lon": 1787, + "elev": 1006, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SPRINGBOK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:68906", + "wmoid": 68906, + "name": "FAGE", + "geo": [ + { + "lat": -4035, + "lon": -988, + "elev": 54, + "firstTime": 0, + "lastTime": 1713463200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GOUGH ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-18 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:70026", + "wmoid": 70026, + "name": "BRW", + "geo": [ + { + "lat": 7130, + "lon": -15678, + "elev": 12, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "POINT BARROW", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:70133", + "wmoid": 70133, + "name": "OTZ", + "geo": [ + { + "lat": 6687, + "lon": -16263, + "elev": 5, + "firstTime": 1376719200, + "lastTime": 1713808800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KOTZEBUE", + "near_airport": "", + "gps_date": "2013-08-17", + "updateTime": "2024-04-22 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:70200", + "wmoid": 70200, + "name": "OME", + "geo": [ + { + "lat": 6450, + "lon": -16543, + "elev": 5, + "firstTime": 1248415200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NOME AP", + "near_airport": "", + "gps_date": "2009-07-24", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:70219", + "wmoid": 70219, + "name": "BET", + "geo": [ + { + "lat": 6078, + "lon": -16180, + "elev": 36, + "firstTime": 1282543200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BETHEL", + "near_airport": "", + "gps_date": "2010-08-23", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:70231", + "wmoid": 70231, + "name": "MCG", + "geo": [ + { + "lat": 6297, + "lon": -15562, + "elev": 103, + "firstTime": 1376978400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MCGRATH", + "near_airport": "", + "gps_date": "2013-08-20", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:70261", + "wmoid": 70261, + "name": "FAI", + "geo": [ + { + "lat": 6482, + "lon": -14787, + "elev": 135, + "firstTime": 1250488800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FAIRBANKS", + "near_airport": "", + "gps_date": "2009-08-17", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:70273", + "wmoid": 70273, + "name": "ANC", + "geo": [ + { + "lat": 6117, + "lon": -15002, + "elev": 45, + "firstTime": 1216620000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ANCHORAGE IAP/PT. CAMPBE", + "near_airport": "", + "gps_date": "2008-07-21", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:70308", + "wmoid": 70308, + "name": "SNP", + "geo": [ + { + "lat": 5715, + "lon": -17022, + "elev": 10, + "firstTime": 1283148000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ST PAUL ISLAND", + "near_airport": "", + "gps_date": "2010-08-30", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:70316", + "wmoid": 70316, + "name": "CDB", + "geo": [ + { + "lat": 5520, + "lon": -16272, + "elev": 30, + "firstTime": 1379829600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "COLD BAY", + "near_airport": "", + "gps_date": "2013-09-22", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:70326", + "wmoid": 70326, + "name": "AKN", + "geo": [ + { + "lat": 5868, + "lon": -15665, + "elev": 15, + "firstTime": 1248069600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KING SALMON", + "near_airport": "", + "gps_date": "2009-07-20", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:70350", + "wmoid": 70350, + "name": "ADQ", + "geo": [ + { + "lat": 5775, + "lon": -15248, + "elev": 4, + "firstTime": 0, + "lastTime": 1713765600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KODIAK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-22 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:70361", + "wmoid": 70361, + "name": "YAK", + "geo": [ + { + "lat": 5952, + "lon": -13967, + "elev": 10, + "firstTime": 1255154400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YAKUTAT", + "near_airport": "", + "gps_date": "2009-10-10", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:70414", + "wmoid": 70414, + "name": "SYA", + "geo": [ + { + "lat": 5272, + "lon": -17410, + "elev": 37, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SHEMYA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71043", + "wmoid": 71043, + "name": "YVQ", + "geo": [ + { + "lat": 6528, + "lon": -12675, + "elev": 95, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NORMAN WELLS (UA)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71081", + "wmoid": 71081, + "name": "YUX", + "geo": [ + { + "lat": 6878, + "lon": -8125, + "elev": 7, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HALL BEACH/HALL LK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71082", + "wmoid": 71082, + "name": "YLT", + "geo": [ + { + "lat": 8250, + "lon": -6233, + "elev": 66, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALERT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71600", + "wmoid": 71600, + "name": "YSA", + "geo": [ + { + "lat": 4393, + "lon": -6002, + "elev": 4, + "firstTime": 0, + "lastTime": 1566367200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SABLE ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-08-21 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71801", + "wmoid": 71801, + "name": "YYT", + "geo": [ + { + "lat": 4767, + "lon": -5275, + "elev": 140, + "firstTime": 0, + "lastTime": 1250186400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TORBAY/ST JOHNS", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-08-13 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71815", + "wmoid": 71815, + "name": "YJT", + "geo": [ + { + "lat": 4853, + "lon": -5855, + "elev": 60, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "STEPHENVILLE/HARMON AFB", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71906", + "wmoid": 71906, + "name": "YVP", + "geo": [ + { + "lat": 5810, + "lon": -6842, + "elev": 60, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KUUJJUAQ (UA)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71907", + "wmoid": 71907, + "name": "YPH", + "geo": [ + { + "lat": 5845, + "lon": -7812, + "elev": 26, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "INUKJUAK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71909", + "wmoid": 71909, + "name": "YVN", + "geo": [ + { + "lat": 6375, + "lon": -6855, + "elev": 35, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "IQALUIT (UA)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71913", + "wmoid": 71913, + "name": "YYQ", + "geo": [ + { + "lat": 5875, + "lon": -9407, + "elev": 29, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHURCHILL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71915", + "wmoid": 71915, + "name": "YZS", + "geo": [ + { + "lat": 6420, + "lon": -8337, + "elev": 57, + "firstTime": 0, + "lastTime": 1504202400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CORAL HARBOUR", + "near_airport": "", + "gps_date": "", + "updateTime": "2017-08-31 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71917", + "wmoid": 71917, + "name": "YEU", + "geo": [ + { + "lat": 7998, + "lon": -8593, + "elev": 10, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "EUREKA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71924", + "wmoid": 71924, + "name": "YRB", + "geo": [ + { + "lat": 7472, + "lon": -9498, + "elev": 40, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "RESOLUTE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71925", + "wmoid": 71925, + "name": "YCB", + "geo": [ + { + "lat": 6910, + "lon": -10512, + "elev": 25, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CAMBRIDGE BAY", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71926", + "wmoid": 71926, + "name": "YBK", + "geo": [ + { + "lat": 6430, + "lon": -9600, + "elev": 49, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BAKER LAKE (UA)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71934", + "wmoid": 71934, + "name": "YSM", + "geo": [ + { + "lat": 6003, + "lon": -11195, + "elev": 203, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FT SMITH (UA)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71945", + "wmoid": 71945, + "name": "YYE", + "geo": [ + { + "lat": 5883, + "lon": -12260, + "elev": 377, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FORT NELSON UA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71957", + "wmoid": 71957, + "name": "YEV", + "geo": [ + { + "lat": 6832, + "lon": -13353, + "elev": 103, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "INUVIK (UA)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71964", + "wmoid": 71964, + "name": "YXY", + "geo": [ + { + "lat": 6072, + "lon": -13507, + "elev": 704, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WHITEHORSE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:76654", + "wmoid": 76654, + "name": "MMZL", + "geo": [ + { + "lat": 1907, + "lon": -10433, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MANZANILLO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:76692", + "wmoid": 76692, + "name": "VER", + "geo": [ + { + "lat": 1917, + "lon": -9612, + "elev": 13, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VERACRUZ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:78016", + "wmoid": 78016, + "name": "XKF", + "geo": [ + { + "lat": 3237, + "lon": -6468, + "elev": 37, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BERMUDA/(MCKINDLY AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:78397", + "wmoid": 78397, + "name": "KJP", + "geo": [ + { + "lat": 1793, + "lon": -7678, + "elev": 1, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KINGSTON/PALISADOES", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:78526", + "wmoid": 78526, + "name": "JSJ", + "geo": [ + { + "lat": 1843, + "lon": -6600, + "elev": 3, + "firstTime": 1267426800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SAN JUAN/ISLA VERDE", + "near_airport": "", + "gps_date": "2010-03-01", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:78583", + "wmoid": 78583, + "name": "ZBZ", + "geo": [ + { + "lat": 1753, + "lon": -8830, + "elev": 5, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BELIZE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:78762", + "wmoid": 78762, + "name": "ROL", + "geo": [ + { + "lat": 998, + "lon": -8422, + "elev": 920, + "firstTime": 0, + "lastTime": 1622743200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SAN JOSE/JUAN SANTA MARIA", + "near_airport": "", + "gps_date": "", + "updateTime": "2021-06-03 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:78866", + "wmoid": 78866, + "name": "ACM", + "geo": [ + { + "lat": 1805, + "lon": -6312, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SINT MARTIN/JULIANA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:78897", + "wmoid": 78897, + "name": "FFR", + "geo": [ + { + "lat": 1627, + "lon": -6152, + "elev": 8, + "firstTime": 0, + "lastTime": 1572411600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "POINT A PITRE/RAIZET", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-29 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:78954", + "wmoid": 78954, + "name": "BDI", + "geo": [ + { + "lat": 1307, + "lon": -5950, + "elev": 47, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SEAWELL APT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:78970", + "wmoid": 78970, + "name": "KPP", + "geo": [ + { + "lat": 1058, + "lon": -6135, + "elev": 12, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TRINIDAD/PIARCO IAP", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:80222", + "wmoid": 80222, + "name": "SKBO", + "geo": [ + { + "lat": 470, + "lon": -7413, + "elev": 2548, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BOGOTA/ELDORADO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:81405", + "wmoid": 81405, + "name": "SOCA", + "geo": [ + { + "lat": 483, + "lon": -5237, + "elev": 9, + "firstTime": 0, + "lastTime": 1572411600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CAYENNE/ROCHAMBEAU", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-29 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:82332", + "wmoid": 82332, + "name": "SBMN", + "geo": [ + { + "lat": -315, + "lon": -5998, + "elev": 84, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MANAUS/PONTA PELADA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:82397", + "wmoid": 82397, + "name": "82397", + "geo": [ + { + "lat": -373, + "lon": -3855, + "elev": 19, + "firstTime": 0, + "lastTime": 1564164000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FORTALEZA", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-07-26 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:82824", + "wmoid": 82824, + "name": "SBPV", + "geo": [ + { + "lat": -877, + "lon": -6392, + "elev": 88, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PORTO VELHO(CV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:82900", + "wmoid": 82900, + "name": "82900", + "geo": [ + { + "lat": -805, + "lon": -3492, + "elev": 7, + "firstTime": 0, + "lastTime": 1575745200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "RECIFE/CURADO", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-12-07 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:82965", + "wmoid": 82965, + "name": "SBAT", + "geo": [ + { + "lat": -987, + "lon": -5610, + "elev": 288, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALTA FLORESTA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:82983", + "wmoid": 82983, + "name": "82983", + "geo": [ + { + "lat": -938, + "lon": -4048, + "elev": 370, + "firstTime": 0, + "lastTime": 1601229600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PETROLINA", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-09-27 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:83362", + "wmoid": 83362, + "name": "SBCY", + "geo": [ + { + "lat": -1565, + "lon": -5610, + "elev": 182, + "firstTime": 0, + "lastTime": 1632938400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CUIABA/MARECHAL", + "near_airport": "", + "gps_date": "", + "updateTime": "2021-09-29 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:83378", + "wmoid": 83378, + "name": "SBBR", + "geo": [ + { + "lat": -1587, + "lon": -4793, + "elev": 1061, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BRASILIA (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:83566", + "wmoid": 83566, + "name": "83566", + "geo": [ + { + "lat": -1962, + "lon": -4357, + "elev": 827, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CONFIS INTNL ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:83612", + "wmoid": 83612, + "name": "SBCG", + "geo": [ + { + "lat": -2047, + "lon": -5467, + "elev": 556, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CAMPO GRANDE INTL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:83650", + "wmoid": 83650, + "name": "83650", + "geo": [ + { + "lat": -2050, + "lon": -2932, + "elev": 5, + "firstTime": 0, + "lastTime": 1555437600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TRINDADE ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-04-16 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:83746", + "wmoid": 83746, + "name": "SBGL", + "geo": [ + { + "lat": -2282, + "lon": -4325, + "elev": 6, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GALEAO/RIO(CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:83779", + "wmoid": 83779, + "name": "SBMT", + "geo": [ + { + "lat": -2352, + "lon": -4663, + "elev": 722, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MARTE (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:83840", + "wmoid": 83840, + "name": "SBCT", + "geo": [ + { + "lat": -2552, + "lon": -4917, + "elev": 908, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CURITIBA/AFONSO PEN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:85442", + "wmoid": 85442, + "name": "SCFA", + "geo": [ + { + "lat": -2343, + "lon": -7043, + "elev": 120, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ANTOFAGASTA/CERRO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:85586", + "wmoid": 85586, + "name": "SCSN", + "geo": [ + { + "lat": -3365, + "lon": -7162, + "elev": 75, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SANTO DOMINGO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:85799", + "wmoid": 85799, + "name": "SCTE", + "geo": [ + { + "lat": -4142, + "lon": -7308, + "elev": 86, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PUERTO MONTT/TEPUAL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:85934", + "wmoid": 85934, + "name": "SCCI", + "geo": [ + { + "lat": -5300, + "lon": -7085, + "elev": 37, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PUNTA ARENAS", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:87047", + "wmoid": 87047, + "name": "SASA", + "geo": [ + { + "lat": -2485, + "lon": -6548, + "elev": 1216, + "firstTime": 0, + "lastTime": 1395856800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SALTA AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2014-03-26 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:87155", + "wmoid": 87155, + "name": "SARE", + "geo": [ + { + "lat": -2745, + "lon": -5905, + "elev": 52, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "RESISTENCIA AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:87344", + "wmoid": 87344, + "name": "SACO", + "geo": [ + { + "lat": -3132, + "lon": -6422, + "elev": 474, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CORDOBA AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:87418", + "wmoid": 87418, + "name": "SAME", + "geo": [ + { + "lat": -3283, + "lon": -6878, + "elev": 704, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MENDOZA/EL PLUMERIL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:87576", + "wmoid": 87576, + "name": "SAEZ", + "geo": [ + { + "lat": -3482, + "lon": -5853, + "elev": 20, + "firstTime": 0, + "lastTime": 1657497600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BUENOS AIRES/EZEIZA", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-07-10 18:00:00" +}, +{ + "id": "MD:V01:RAOB:station:87623", + "wmoid": 87623, + "name": "SAZR", + "geo": [ + { + "lat": -3657, + "lon": -6427, + "elev": 191, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SANTA ROSA AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:87860", + "wmoid": 87860, + "name": "SAVC", + "geo": [ + { + "lat": -4578, + "lon": -6750, + "elev": 46, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "COMODORO RIVADAVIA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:89002", + "wmoid": 89002, + "name": "89002", + "geo": [ + { + "lat": -7067, + "lon": -825, + "elev": 40, + "firstTime": 0, + "lastTime": 1675018800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VON-NEUMAYER G-BASE", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-01-29 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:89009", + "wmoid": 89009, + "name": "89009", + "geo": [ + { + "lat": -9000, + "lon": 0, + "elev": 2830, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AMUNDSEN-SCOTT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:89022", + "wmoid": 89022, + "name": "89022", + "geo": [ + { + "lat": -7550, + "lon": -2665, + "elev": 30, + "firstTime": 0, + "lastTime": 1706724000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HALLEY BRI-BASE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-01-31 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:89532", + "wmoid": 89532, + "name": "89532", + "geo": [ + { + "lat": -6900, + "lon": 3958, + "elev": 21, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SYOWA JAPAN-BASE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:89664", + "wmoid": 89664, + "name": "89664", + "geo": [ + { + "lat": -7785, + "lon": 16667, + "elev": 34, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MCMURDO USA-BASE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:91212", + "wmoid": 91212, + "name": "PGAC", + "geo": [ + { + "lat": 1355, + "lon": 14483, + "elev": 111, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GUAM,MARIANA IS", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:91285", + "wmoid": 91285, + "name": "ITO", + "geo": [ + { + "lat": 1972, + "lon": -15507, + "elev": 10, + "firstTime": 1278914400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HILO", + "near_airport": "", + "gps_date": "2010-07-12", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:91334", + "wmoid": 91334, + "name": "PTKK", + "geo": [ + { + "lat": 747, + "lon": 15185, + "elev": 2, + "firstTime": 1304143200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TRUK INTL/MOEN ISL", + "near_airport": "", + "gps_date": "2011-04-30", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:91348", + "wmoid": 91348, + "name": "PTPN", + "geo": [ + { + "lat": 696, + "lon": 15820, + "elev": 38, + "firstTime": 1305007200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PONAPE ISLAND", + "near_airport": "", + "gps_date": "2011-05-10", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:91366", + "wmoid": 91366, + "name": "PKWA", + "geo": [ + { + "lat": 873, + "lon": 16773, + "elev": 8, + "firstTime": 0, + "lastTime": 1704524400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KWAJALEIN/BUCHOLZ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-01-06 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:91408", + "wmoid": 91408, + "name": "PTRO", + "geo": [ + { + "lat": 733, + "lon": 13448, + "elev": 33, + "firstTime": 1300082400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KOROR/PALAU ISLAND", + "near_airport": "", + "gps_date": "2011-03-14", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:91413", + "wmoid": 91413, + "name": "PTYA", + "geo": [ + { + "lat": 948, + "lon": 13808, + "elev": 17, + "firstTime": 1301119200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YAP ISLAND", + "near_airport": "", + "gps_date": "2011-03-26", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:91592", + "wmoid": 91592, + "name": "NWWN", + "geo": [ + { + "lat": -2227, + "lon": 16645, + "elev": 72, + "firstTime": 0, + "lastTime": 1571029200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NOUMEA", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-13 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:91765", + "wmoid": 91765, + "name": "NTSU", + "geo": [ + { + "lat": -1433, + "lon": -17072, + "elev": 3, + "firstTime": 1296889200, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PAGO PAGO INTL ARPT", + "near_airport": "", + "gps_date": "2011-02-05", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:91938", + "wmoid": 91938, + "name": "NTAA", + "geo": [ + { + "lat": -1755, + "lon": -14962, + "elev": 2, + "firstTime": 0, + "lastTime": 1572368400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TAHITI ISLAND/FAAA", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-29 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:93844", + "wmoid": 93844, + "name": "NZNV", + "geo": [ + { + "lat": -4642, + "lon": 16833, + "elev": 1, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "INVERCARGILL AERO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94120", + "wmoid": 94120, + "name": "YPDN", + "geo": [ + { + "lat": -1240, + "lon": 13087, + "elev": 30, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DARWIN (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94150", + "wmoid": 94150, + "name": "YDGV", + "geo": [ + { + "lat": -1227, + "lon": 13682, + "elev": 54, + "firstTime": 0, + "lastTime": 1701928800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GOVE AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-12-06 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94203", + "wmoid": 94203, + "name": "YBRM", + "geo": [ + { + "lat": -1795, + "lon": 12222, + "elev": 9, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BROOME AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94294", + "wmoid": 94294, + "name": "YBTL", + "geo": [ + { + "lat": -1925, + "lon": 14675, + "elev": 6, + "firstTime": 0, + "lastTime": 1579240800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TOWNSVILLE(CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-16 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94302", + "wmoid": 94302, + "name": "YPLM", + "geo": [ + { + "lat": -2223, + "lon": 11408, + "elev": 6, + "firstTime": 0, + "lastTime": 1713978000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LEARMOUTH", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94326", + "wmoid": 94326, + "name": "YBAS", + "geo": [ + { + "lat": -2380, + "lon": 13390, + "elev": 541, + "firstTime": 0, + "lastTime": 1713934800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALICE SPRINGS ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-23 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94403", + "wmoid": 94403, + "name": "YPGN", + "geo": [ + { + "lat": -2878, + "lon": 11470, + "elev": 34, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GERALDTON AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94578", + "wmoid": 94578, + "name": "YBBN", + "geo": [ + { + "lat": -2738, + "lon": 15310, + "elev": 5, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BRISBANE INTL ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94610", + "wmoid": 94610, + "name": "YPPH", + "geo": [ + { + "lat": -3193, + "lon": 11595, + "elev": 29, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PERTH INTL/BELMONT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94637", + "wmoid": 94637, + "name": "YPKG", + "geo": [ + { + "lat": -3077, + "lon": 12145, + "elev": 360, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KALGOORLIE/BOULDER", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94672", + "wmoid": 94672, + "name": "YPAD", + "geo": [ + { + "lat": -3493, + "lon": 13852, + "elev": 4, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ADELAIDE INTL ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94767", + "wmoid": 94767, + "name": "YSSY", + "geo": [ + { + "lat": -3395, + "lon": 15118, + "elev": 3, + "firstTime": 0, + "lastTime": 1710414000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SYDNEY INTL AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-03-14 05:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94776", + "wmoid": 94776, + "name": "YSWM", + "geo": [ + { + "lat": -3278, + "lon": 15182, + "elev": 8, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WILLIAMTOWN(AUS-AB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94866", + "wmoid": 94866, + "name": "YMML", + "geo": [ + { + "lat": -3767, + "lon": 14483, + "elev": 141, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MELBOURNE INTL ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94910", + "wmoid": 94910, + "name": "YSWG", + "geo": [ + { + "lat": -3515, + "lon": 14745, + "elev": 213, + "firstTime": 0, + "lastTime": 1713934800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WAGGA WAGGA(CV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-23 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94975", + "wmoid": 94975, + "name": "YMHB", + "geo": [ + { + "lat": -4283, + "lon": 14748, + "elev": 27, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HOBART AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94996", + "wmoid": 94996, + "name": "YSNF", + "geo": [ + { + "lat": -2903, + "lon": 16793, + "elev": 109, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NORFOLK ISLAND ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94998", + "wmoid": 94998, + "name": "YMMQ", + "geo": [ + { + "lat": -5448, + "lon": 15893, + "elev": 6, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MACQUARIE ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:96315", + "wmoid": 96315, + "name": "WBGI", + "geo": [ + { + "lat": 493, + "lon": 11493, + "elev": 15, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BRUNEI AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:96413", + "wmoid": 96413, + "name": "WBGG", + "geo": [ + { + "lat": 148, + "lon": 11033, + "elev": 27, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KUCHING (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:96441", + "wmoid": 96441, + "name": "WBGB", + "geo": [ + { + "lat": 320, + "lon": 11303, + "elev": 5, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BINTULU/KALIMANTAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:96471", + "wmoid": 96471, + "name": "WBKK", + "geo": [ + { + "lat": 593, + "lon": 11605, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KOTA KINABALU INTL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:96481", + "wmoid": 96481, + "name": "WBKW", + "geo": [ + { + "lat": 427, + "lon": 11788, + "elev": 20, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TAWAU/KALIMANTAN IL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:1400", + "wmoid": 1400, + "name": "ENEK", + "geo": [ + { + "lat": 5653, + "lon": 322, + "elev": 46, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:3354", + "wmoid": 3354, + "name": "3354", + "geo": [ + { + "lat": 5300, + "lon": -125, + "elev": 117, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:3743", + "wmoid": 3743, + "name": "3743", + "geo": [ + { + "lat": 5120, + "lon": -180, + "elev": 132, + "firstTime": 0, + "lastTime": 1714042800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 05:00:00" +}, +{ + "id": "MD:V01:RAOB:station:8221", + "wmoid": 8221, + "name": "LEMD", + "geo": [ + { + "lat": 4047, + "lon": -358, + "elev": 638, + "firstTime": 0, + "lastTime": 1450378800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-12-17 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:8302", + "wmoid": 8302, + "name": "8302", + "geo": [ + { + "lat": 3960, + "lon": 270, + "elev": 45, + "firstTime": 0, + "lastTime": 1450378800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-12-17 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:11747", + "wmoid": 11747, + "name": "11747", + "geo": [ + { + "lat": 4945, + "lon": 1713, + "elev": 216, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:13275", + "wmoid": 13275, + "name": "13275", + "geo": [ + { + "lat": 4477, + "lon": 2042, + "elev": 203, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:14430", + "wmoid": 14430, + "name": "14430", + "geo": [ + { + "lat": 4409, + "lon": 1535, + "elev": 84, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:16113", + "wmoid": 16113, + "name": "16113", + "geo": [ + { + "lat": 4453, + "lon": 762, + "elev": 386, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:16754", + "wmoid": 16754, + "name": "LGIR", + "geo": [ + { + "lat": 3533, + "lon": 2518, + "elev": 39, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:17281", + "wmoid": 17281, + "name": "LTCC", + "geo": [ + { + "lat": 3788, + "lon": 4018, + "elev": 677, + "firstTime": 0, + "lastTime": 1647540000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DIYARBAKIR(CIV/AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-03-17 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:20674", + "wmoid": 20674, + "name": "20674", + "geo": [ + { + "lat": 7353, + "lon": 8040, + "elev": 47, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:22820", + "wmoid": 22820, + "name": "22820", + "geo": [ + { + "lat": 6182, + "lon": 3427, + "elev": 109, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:23418", + "wmoid": 23418, + "name": "23418", + "geo": [ + { + "lat": 6512, + "lon": 5710, + "elev": 56, + "firstTime": 0, + "lastTime": 1348639200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-09-26 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:23804", + "wmoid": 23804, + "name": "UUYY", + "geo": [ + { + "lat": 6172, + "lon": 5083, + "elev": 119, + "firstTime": 0, + "lastTime": 1348639200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-09-26 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:23884", + "wmoid": 23884, + "name": "23884", + "geo": [ + { + "lat": 6160, + "lon": 9000, + "elev": 63, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:24343", + "wmoid": 24343, + "name": "24343", + "geo": [ + { + "lat": 6677, + "lon": 12340, + "elev": 93, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:24507", + "wmoid": 24507, + "name": "24507", + "geo": [ + { + "lat": 6427, + "lon": 10023, + "elev": 186, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:24726", + "wmoid": 24726, + "name": "24726", + "geo": [ + { + "lat": 6255, + "lon": 11388, + "elev": 347, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:24944", + "wmoid": 24944, + "name": "24944", + "geo": [ + { + "lat": 6040, + "lon": 12042, + "elev": 226, + "firstTime": 0, + "lastTime": 1540965600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-10-31 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:25123", + "wmoid": 25123, + "name": "25123", + "geo": [ + { + "lat": 6880, + "lon": 16128, + "elev": 32, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:25428", + "wmoid": 25428, + "name": "25428", + "geo": [ + { + "lat": 6523, + "lon": 16050, + "elev": 265, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:26477", + "wmoid": 26477, + "name": "ULOL", + "geo": [ + { + "lat": 5638, + "lon": 3060, + "elev": 98, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:27730", + "wmoid": 27730, + "name": "27730", + "geo": [ + { + "lat": 5463, + "lon": 3970, + "elev": 158, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:29231", + "wmoid": 29231, + "name": "29231", + "geo": [ + { + "lat": 5830, + "lon": 8290, + "elev": 76, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:29263", + "wmoid": 29263, + "name": "29263", + "geo": [ + { + "lat": 5845, + "lon": 9215, + "elev": 78, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:29282", + "wmoid": 29282, + "name": "29282", + "geo": [ + { + "lat": 5842, + "lon": 9740, + "elev": 134, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:29839", + "wmoid": 29839, + "name": "29839", + "geo": [ + { + "lat": 5335, + "lon": 8382, + "elev": 159, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:29862", + "wmoid": 29862, + "name": "29862", + "geo": [ + { + "lat": 5377, + "lon": 9132, + "elev": 256, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:31538", + "wmoid": 31538, + "name": "31538", + "geo": [ + { + "lat": 5007, + "lon": 13213, + "elev": 349, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:32389", + "wmoid": 32389, + "name": "32389", + "geo": [ + { + "lat": 5632, + "lon": 16083, + "elev": 28, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:34731", + "wmoid": 34731, + "name": "URRR", + "geo": [ + { + "lat": 4725, + "lon": 3982, + "elev": 77, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:35671", + "wmoid": 35671, + "name": "35671", + "geo": [ + { + "lat": 4780, + "lon": 6772, + "elev": 345, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:36003", + "wmoid": 36003, + "name": "36003", + "geo": [ + { + "lat": 5228, + "lon": 7695, + "elev": 123, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:37018", + "wmoid": 37018, + "name": "37018", + "geo": [ + { + "lat": 4410, + "lon": 3907, + "elev": 41, + "firstTime": 0, + "lastTime": 1348639200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-09-26 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:37054", + "wmoid": 37054, + "name": "URMM", + "geo": [ + { + "lat": 4422, + "lon": 4310, + "elev": 314, + "firstTime": 0, + "lastTime": 1348639200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-09-26 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:40394", + "wmoid": 40394, + "name": "OEHL", + "geo": [ + { + "lat": 2752, + "lon": 4173, + "elev": 1013, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:40437", + "wmoid": 40437, + "name": "OERK", + "geo": [ + { + "lat": 2493, + "lon": 4672, + "elev": 612, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:40706", + "wmoid": 40706, + "name": "OITT", + "geo": [ + { + "lat": 3808, + "lon": 4628, + "elev": 1361, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:40809", + "wmoid": 40809, + "name": "OIMB", + "geo": [ + { + "lat": 3287, + "lon": 5920, + "elev": 1491, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:40841", + "wmoid": 40841, + "name": "OIKK", + "geo": [ + { + "lat": 3025, + "lon": 5697, + "elev": 1754, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:40948", + "wmoid": 40948, + "name": "OAKB", + "geo": [ + { + "lat": 3455, + "lon": 6922, + "elev": 1791, + "firstTime": 0, + "lastTime": 1628917200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2021-08-13 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:42027", + "wmoid": 42027, + "name": "42027", + "geo": [ + { + "lat": 3408, + "lon": 7483, + "elev": 1587, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:43279", + "wmoid": 43279, + "name": "VOMM", + "geo": [ + { + "lat": 1300, + "lon": 8018, + "elev": 16, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:43311", + "wmoid": 43311, + "name": "43311", + "geo": [ + { + "lat": 1112, + "lon": 7273, + "elev": 4, + "firstTime": 0, + "lastTime": 1694235600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-09-08 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:44231", + "wmoid": 44231, + "name": "44231", + "geo": [ + { + "lat": 4963, + "lon": 10017, + "elev": 1288, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47090", + "wmoid": 47090, + "name": "47090", + "geo": [ + { + "lat": 3825, + "lon": 12857, + "elev": 18, + "firstTime": 0, + "lastTime": 1450378800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-12-17 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47169", + "wmoid": 47169, + "name": "47169", + "geo": [ + { + "lat": 3468, + "lon": 12545, + "elev": 83, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:48568", + "wmoid": 48568, + "name": "VTSH", + "geo": [ + { + "lat": 720, + "lon": 10060, + "elev": 5, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:48650", + "wmoid": 48650, + "name": "48650", + "geo": [ + { + "lat": 310, + "lon": 10165, + "elev": 17, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:48657", + "wmoid": 48657, + "name": "WMKD", + "geo": [ + { + "lat": 378, + "lon": 10322, + "elev": 16, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:48698", + "wmoid": 48698, + "name": "WSSS", + "geo": [ + { + "lat": 137, + "lon": 10398, + "elev": 16, + "firstTime": 0, + "lastTime": 1689292800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-07-13 18:00:00" +}, +{ + "id": "MD:V01:RAOB:station:48855", + "wmoid": 48855, + "name": "VVDN", + "geo": [ + { + "lat": 1603, + "lon": 10818, + "elev": 7, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:48900", + "wmoid": 48900, + "name": "VVTS", + "geo": [ + { + "lat": 1082, + "lon": 10667, + "elev": 19, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:52983", + "wmoid": 52983, + "name": "52983", + "geo": [ + { + "lat": 3587, + "lon": 10415, + "elev": 1875, + "firstTime": 0, + "lastTime": 1579370400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:54727", + "wmoid": 54727, + "name": "54727", + "geo": [ + { + "lat": 3670, + "lon": 11755, + "elev": 123, + "firstTime": 0, + "lastTime": 1579370400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:56187", + "wmoid": 56187, + "name": "56187", + "geo": [ + { + "lat": 3070, + "lon": 10383, + "elev": 541, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:58968", + "wmoid": 58968, + "name": "58968", + "geo": [ + { + "lat": 2503, + "lon": 12153, + "elev": 9, + "firstTime": 0, + "lastTime": 1579460400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:60191", + "wmoid": 60191, + "name": "60191", + "geo": [ + { + "lat": 3237, + "lon": -640, + "elev": 468, + "firstTime": 0, + "lastTime": 1682834400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-04-30 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:60715", + "wmoid": 60715, + "name": "DTTA", + "geo": [ + { + "lat": 3683, + "lon": 1023, + "elev": 4, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:60760", + "wmoid": 60760, + "name": "DTTZ", + "geo": [ + { + "lat": 3392, + "lon": 817, + "elev": 93, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:61902", + "wmoid": 61902, + "name": "FHAW", + "geo": [ + { + "lat": -797, + "lon": -1440, + "elev": 79, + "firstTime": 0, + "lastTime": 1405098000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2014-07-11 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:61980", + "wmoid": 61980, + "name": "61980", + "geo": [ + { + "lat": -2088, + "lon": 5552, + "elev": 20, + "firstTime": 0, + "lastTime": 1571590800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-20 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:61995", + "wmoid": 61995, + "name": "61995", + "geo": [ + { + "lat": -2030, + "lon": 5750, + "elev": 425, + "firstTime": 0, + "lastTime": 1671602400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-12-20 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:62403", + "wmoid": 62403, + "name": "62403", + "geo": [ + { + "lat": 2620, + "lon": 3275, + "elev": 96, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:62423", + "wmoid": 62423, + "name": "62423", + "geo": [ + { + "lat": 2705, + "lon": 2797, + "elev": 92, + "firstTime": 0, + "lastTime": 1685469600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-05-30 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:68110", + "wmoid": 68110, + "name": "FAWW", + "geo": [ + { + "lat": -2257, + "lon": 1710, + "elev": 1725, + "firstTime": 0, + "lastTime": 1686499200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-06-11 10:00:00" +}, +{ + "id": "MD:V01:RAOB:station:68240", + "wmoid": 68240, + "name": "FBSK", + "geo": [ + { + "lat": -2422, + "lon": 2592, + "elev": 1005, + "firstTime": 0, + "lastTime": 1332432000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-03-22 10:00:00" +}, +{ + "id": "MD:V01:RAOB:station:68461", + "wmoid": 68461, + "name": "FABM", + "geo": [ + { + "lat": -2825, + "lon": 2833, + "elev": 1682, + "firstTime": 0, + "lastTime": 1246982400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-07-07 10:00:00" +}, +{ + "id": "MD:V01:RAOB:station:68538", + "wmoid": 68538, + "name": "68538", + "geo": [ + { + "lat": -3067, + "lon": 2402, + "elev": 1287, + "firstTime": 0, + "lastTime": 1698170400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-10-24 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:68588", + "wmoid": 68588, + "name": "FADN", + "geo": [ + { + "lat": -2997, + "lon": 3095, + "elev": 8, + "firstTime": 0, + "lastTime": 1258264800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-11-14 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:68816", + "wmoid": 68816, + "name": "FACT", + "geo": [ + { + "lat": -3398, + "lon": 1860, + "elev": 42, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:68842", + "wmoid": 68842, + "name": "FAPE", + "geo": [ + { + "lat": -3398, + "lon": 2560, + "elev": 60, + "firstTime": 0, + "lastTime": 1707372000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-02-07 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:68994", + "wmoid": 68994, + "name": "FAME", + "geo": [ + { + "lat": -4688, + "lon": 3787, + "elev": 22, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:89642", + "wmoid": 89642, + "name": "89642", + "geo": [ + { + "lat": -6667, + "lon": 14002, + "elev": 43, + "firstTime": 0, + "lastTime": 1537855200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-09-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:91843", + "wmoid": 91843, + "name": "NCRG", + "geo": [ + { + "lat": -2120, + "lon": -15982, + "elev": 7, + "firstTime": 0, + "lastTime": 1482645600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2016-12-24 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:91925", + "wmoid": 91925, + "name": "91925", + "geo": [ + { + "lat": -980, + "lon": -13903, + "elev": 52, + "firstTime": 0, + "lastTime": 1630386000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2021-08-30 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:26629", + "wmoid": 26629, + "name": "26629", + "geo": [ + { + "lat": 5488, + "lon": 2388, + "elev": 75, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:37789", + "wmoid": 37789, + "name": "UGEE", + "geo": [ + { + "lat": 4013, + "lon": 4447, + "elev": 890, + "firstTime": 0, + "lastTime": 1648965600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-04-03 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:40265", + "wmoid": 40265, + "name": "OJMF", + "geo": [ + { + "lat": 3237, + "lon": 3627, + "elev": 687, + "firstTime": 0, + "lastTime": 1700974800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-11-25 22:00:00" +}, +{ + "id": "MD:V01:RAOB:station:48327", + "wmoid": 48327, + "name": "VTCC", + "geo": [ + { + "lat": 1878, + "lon": 9898, + "elev": 314, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72381", + "wmoid": 72381, + "name": "EDW", + "geo": [ + { + "lat": 3490, + "lon": -11792, + "elev": 724, + "firstTime": 0, + "lastTime": 1713999600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 17:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72451", + "wmoid": 72451, + "name": "DDC", + "geo": [ + { + "lat": 3777, + "lon": -9997, + "elev": 791, + "firstTime": 1277100000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "2010-06-21", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:48455", + "wmoid": 48455, + "name": "48455", + "geo": [ + { + "lat": 1373, + "lon": 10050, + "elev": 20, + "firstTime": 0, + "lastTime": 1358312400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2013-01-15 22:00:00" +}, +{ + "id": "MD:V01:RAOB:station:48565", + "wmoid": 48565, + "name": "VTSP", + "geo": [ + { + "lat": 812, + "lon": 9832, + "elev": 10, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:74002", + "wmoid": 74002, + "name": "APG", + "geo": [ + { + "lat": 3947, + "lon": -7607, + "elev": 5, + "firstTime": 0, + "lastTime": 1492020000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2017-04-12 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:60155", + "wmoid": 60155, + "name": "GMMC", + "geo": [ + { + "lat": 3357, + "lon": -767, + "elev": 62, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:89564", + "wmoid": 89564, + "name": "89564", + "geo": [ + { + "lat": -6860, + "lon": 6287, + "elev": 16, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:78384", + "wmoid": 78384, + "name": "KCR", + "geo": [ + { + "lat": 1930, + "lon": -8137, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:91948", + "wmoid": 91948, + "name": "91948", + "geo": [ + { + "lat": -2313, + "lon": -13497, + "elev": 89, + "firstTime": 0, + "lastTime": 1651035600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-04-26 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:78807", + "wmoid": 78807, + "name": "78807", + "geo": [ + { + "lat": 897, + "lon": -7966, + "elev": 9, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:82022", + "wmoid": 82022, + "name": "SBBV", + "geo": [ + { + "lat": 283, + "lon": -6070, + "elev": 140, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:82026", + "wmoid": 82026, + "name": "SBTS", + "geo": [ + { + "lat": -222, + "lon": -5595, + "elev": 326, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:82099", + "wmoid": 82099, + "name": "82099", + "geo": [ + { + "lat": 5, + "lon": -5107, + "elev": 17, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:82193", + "wmoid": 82193, + "name": "SBBE", + "geo": [ + { + "lat": -138, + "lon": -4848, + "elev": 16, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:82244", + "wmoid": 82244, + "name": "82244", + "geo": [ + { + "lat": -243, + "lon": -5472, + "elev": 72, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:82281", + "wmoid": 82281, + "name": "SBSL", + "geo": [ + { + "lat": -260, + "lon": -4423, + "elev": 53, + "firstTime": 0, + "lastTime": 1617213600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2021-03-31 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:82400", + "wmoid": 82400, + "name": "SBFN", + "geo": [ + { + "lat": -385, + "lon": -3242, + "elev": 56, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:82411", + "wmoid": 82411, + "name": "82411", + "geo": [ + { + "lat": -423, + "lon": -6992, + "elev": 120, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:82599", + "wmoid": 82599, + "name": "SBNT", + "geo": [ + { + "lat": -592, + "lon": -3525, + "elev": 52, + "firstTime": 0, + "lastTime": 1713765600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-22 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:82678", + "wmoid": 82678, + "name": "82678", + "geo": [ + { + "lat": -677, + "lon": -4302, + "elev": 138, + "firstTime": 0, + "lastTime": 1554487200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-04-05 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:82917", + "wmoid": 82917, + "name": "82917", + "geo": [ + { + "lat": -1000, + "lon": -4780, + "elev": 143, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:83208", + "wmoid": 83208, + "name": "SBVH", + "geo": [ + { + "lat": -1273, + "lon": -6013, + "elev": 652, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:83229", + "wmoid": 83229, + "name": "83229", + "geo": [ + { + "lat": -1302, + "lon": -3852, + "elev": 51, + "firstTime": 0, + "lastTime": 1540404000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-10-24 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:83554", + "wmoid": 83554, + "name": "83554", + "geo": [ + { + "lat": -1900, + "lon": -5767, + "elev": 142, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:83899", + "wmoid": 83899, + "name": "83899", + "geo": [ + { + "lat": -2767, + "lon": -4855, + "elev": 5, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:83928", + "wmoid": 83928, + "name": "SBUG", + "geo": [ + { + "lat": -2978, + "lon": -5703, + "elev": 74, + "firstTime": 0, + "lastTime": 1713808800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-22 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:83937", + "wmoid": 83937, + "name": "SBSM", + "geo": [ + { + "lat": -2972, + "lon": -5370, + "elev": 85, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:83971", + "wmoid": 83971, + "name": "SBPA", + "geo": [ + { + "lat": -3000, + "lon": -5118, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:88889", + "wmoid": 88889, + "name": "EGYP", + "geo": [ + { + "lat": -5182, + "lon": -5845, + "elev": 73, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:89062", + "wmoid": 89062, + "name": "89062", + "geo": [ + { + "lat": -6757, + "lon": -6813, + "elev": 16, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:89571", + "wmoid": 89571, + "name": "89571", + "geo": [ + { + "lat": -6857, + "lon": 7795, + "elev": 13, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:89611", + "wmoid": 89611, + "name": "89611", + "geo": [ + { + "lat": -6628, + "lon": 11052, + "elev": 41, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:91165", + "wmoid": 91165, + "name": "LIH", + "geo": [ + { + "lat": 2198, + "lon": -15935, + "elev": 36, + "firstTime": 1280124000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "2010-07-26", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:91376", + "wmoid": 91376, + "name": "PKMJ", + "geo": [ + { + "lat": 708, + "lon": 17138, + "elev": 3, + "firstTime": 1305957600, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MAJURO/MARSHALL_ISL,MH", + "near_airport": "", + "gps_date": "2011-05-21", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:91532", + "wmoid": 91532, + "name": "91532", + "geo": [ + { + "lat": -53, + "lon": 16692, + "elev": 0, + "firstTime": 0, + "lastTime": 1377496800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2013-08-26 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:91680", + "wmoid": 91680, + "name": "NFFN", + "geo": [ + { + "lat": -1775, + "lon": 17745, + "elev": 18, + "firstTime": 0, + "lastTime": 1713675600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-20 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:92044", + "wmoid": 92044, + "name": "92044", + "geo": [ + { + "lat": -207, + "lon": 14743, + "elev": 5, + "firstTime": 0, + "lastTime": 1386050400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2013-12-02 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:93112", + "wmoid": 93112, + "name": "NZWP", + "geo": [ + { + "lat": -3678, + "lon": 17463, + "elev": 27, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:93417", + "wmoid": 93417, + "name": "NZPP", + "geo": [ + { + "lat": -4090, + "lon": 17498, + "elev": 12, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94299", + "wmoid": 94299, + "name": "94299", + "geo": [ + { + "lat": -1630, + "lon": 14998, + "elev": 9, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94711", + "wmoid": 94711, + "name": "94711", + "geo": [ + { + "lat": -3148, + "lon": 14582, + "elev": 265, + "firstTime": 0, + "lastTime": 1713243600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-15 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94995", + "wmoid": 94995, + "name": "ASLH", + "geo": [ + { + "lat": -3153, + "lon": 15907, + "elev": 6, + "firstTime": 0, + "lastTime": 1712638800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-08 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:95527", + "wmoid": 95527, + "name": "95527", + "geo": [ + { + "lat": -2950, + "lon": 14983, + "elev": 214, + "firstTime": 0, + "lastTime": 1713934800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-23 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:96035", + "wmoid": 96035, + "name": "WIMM", + "geo": [ + { + "lat": 357, + "lon": 9868, + "elev": 25, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:96163", + "wmoid": 96163, + "name": "WIMG", + "geo": [ + { + "lat": -88, + "lon": 10035, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:96237", + "wmoid": 96237, + "name": "WIKK", + "geo": [ + { + "lat": -217, + "lon": 10613, + "elev": 33, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:97014", + "wmoid": 97014, + "name": "WAMM", + "geo": [ + { + "lat": 153, + "lon": 12492, + "elev": 80, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:97072", + "wmoid": 97072, + "name": "WAML", + "geo": [ + { + "lat": -68, + "lon": 11973, + "elev": 6, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:97372", + "wmoid": 97372, + "name": "WRKK", + "geo": [ + { + "lat": -1017, + "lon": 12367, + "elev": 108, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:97560", + "wmoid": 97560, + "name": "WABB", + "geo": [ + { + "lat": -118, + "lon": 13612, + "elev": 11, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:26038", + "wmoid": 26038, + "name": "ULTT", + "geo": [ + { + "lat": 5945, + "lon": 2480, + "elev": 44, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:6458", + "wmoid": 6458, + "name": "EBBE", + "geo": [ + { + "lat": 5075, + "lon": 477, + "elev": 127, + "firstTime": 0, + "lastTime": 1714017600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BEAUVECHAIN, BX", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 22:00:00" +}, +{ + "id": "MD:V01:RAOB:station:91954", + "wmoid": 91954, + "name": "NTAT", + "geo": [ + { + "lat": -2335, + "lon": -14948, + "elev": 3, + "firstTime": 0, + "lastTime": 1258437600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-11-16 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:93986", + "wmoid": 93986, + "name": "NZCI", + "geo": [ + { + "lat": -4395, + "lon": -17657, + "elev": 48, + "firstTime": 0, + "lastTime": 1325221200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-12-29 22:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94170", + "wmoid": 94170, + "name": "94170", + "geo": [ + { + "lat": -1263, + "lon": 14190, + "elev": 0, + "firstTime": 0, + "lastTime": 1713934800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-23 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94312", + "wmoid": 94312, + "name": "YPPD", + "geo": [ + { + "lat": -2037, + "lon": 11862, + "elev": 6, + "firstTime": 0, + "lastTime": 1713848400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-22 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94332", + "wmoid": 94332, + "name": "YBMA", + "geo": [ + { + "lat": -2067, + "lon": 13948, + "elev": 344, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94374", + "wmoid": 94374, + "name": "YBRK", + "geo": [ + { + "lat": -2338, + "lon": 15047, + "elev": 14, + "firstTime": 0, + "lastTime": 1669960800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-12-01 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94430", + "wmoid": 94430, + "name": "YPMR", + "geo": [ + { + "lat": -2660, + "lon": 11853, + "elev": 518, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94461", + "wmoid": 94461, + "name": "94461", + "geo": [ + { + "lat": -2503, + "lon": 12828, + "elev": 599, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94510", + "wmoid": 94510, + "name": "YBCV", + "geo": [ + { + "lat": -2640, + "lon": 14627, + "elev": 304, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94802", + "wmoid": 94802, + "name": "YPAL", + "geo": [ + { + "lat": -3493, + "lon": 11780, + "elev": 69, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94821", + "wmoid": 94821, + "name": "YMMG", + "geo": [ + { + "lat": -3773, + "lon": 14078, + "elev": 69, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:96996", + "wmoid": 96996, + "name": "YPCC", + "geo": [ + { + "lat": -1218, + "lon": 9682, + "elev": 3, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:8160", + "wmoid": 8160, + "name": "LEZG", + "geo": [ + { + "lat": 4167, + "lon": -102, + "elev": 258, + "firstTime": 0, + "lastTime": 1446271200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-10-31 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:10962", + "wmoid": 10962, + "name": "10962", + "geo": [ + { + "lat": 4780, + "lon": 1102, + "elev": 986, + "firstTime": 0, + "lastTime": 1714060800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 10:00:00" +}, +{ + "id": "MD:V01:RAOB:station:11010", + "wmoid": 11010, + "name": "LOWL", + "geo": [ + { + "lat": 4823, + "lon": 1420, + "elev": 313, + "firstTime": 0, + "lastTime": 1569916800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-01 02:00:00" +}, +{ + "id": "MD:V01:RAOB:station:11120", + "wmoid": 11120, + "name": "LOWI", + "geo": [ + { + "lat": 4727, + "lon": 1135, + "elev": 581, + "firstTime": 0, + "lastTime": 1569916800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-01 02:00:00" +}, +{ + "id": "MD:V01:RAOB:station:11240", + "wmoid": 11240, + "name": "LOWG", + "geo": [ + { + "lat": 4700, + "lon": 1543, + "elev": 347, + "firstTime": 0, + "lastTime": 1569916800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-01 02:00:00" +}, +{ + "id": "MD:V01:RAOB:station:14015", + "wmoid": 14015, + "name": "14015", + "geo": [ + { + "lat": 4607, + "lon": 1452, + "elev": 316, + "firstTime": 0, + "lastTime": 1713956400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 05:00:00" +}, +{ + "id": "MD:V01:RAOB:station:20744", + "wmoid": 20744, + "name": "20744", + "geo": [ + { + "lat": 7238, + "lon": 5273, + "elev": 16, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:20891", + "wmoid": 20891, + "name": "20891", + "geo": [ + { + "lat": 7200, + "lon": 10245, + "elev": 33, + "firstTime": 0, + "lastTime": 1348639200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-09-26 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:31168", + "wmoid": 31168, + "name": "31168", + "geo": [ + { + "lat": 5645, + "lon": 13815, + "elev": 9, + "firstTime": 0, + "lastTime": 1607583600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-12-10 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:32098", + "wmoid": 32098, + "name": "32098", + "geo": [ + { + "lat": 4922, + "lon": 14310, + "elev": 4, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:33317", + "wmoid": 33317, + "name": "33317", + "geo": [ + { + "lat": 5017, + "lon": 2705, + "elev": 278, + "firstTime": 0, + "lastTime": 1645642800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-02-23 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:33393", + "wmoid": 33393, + "name": "UKLL", + "geo": [ + { + "lat": 4982, + "lon": 2395, + "elev": 325, + "firstTime": 0, + "lastTime": 1645686000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-02-24 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:33631", + "wmoid": 33631, + "name": "33631", + "geo": [ + { + "lat": 4863, + "lon": 2227, + "elev": 118, + "firstTime": 0, + "lastTime": 1234508400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-02-13 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:33837", + "wmoid": 33837, + "name": "UKOO", + "geo": [ + { + "lat": 4643, + "lon": 3077, + "elev": 43, + "firstTime": 0, + "lastTime": 1645686000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-02-24 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:33946", + "wmoid": 33946, + "name": "UKFF", + "geo": [ + { + "lat": 4468, + "lon": 3413, + "elev": 181, + "firstTime": 0, + "lastTime": 1288850400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2010-11-04 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:34300", + "wmoid": 34300, + "name": "34300", + "geo": [ + { + "lat": 4993, + "lon": 3628, + "elev": 152, + "firstTime": 0, + "lastTime": 1645686000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-02-24 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:40745", + "wmoid": 40745, + "name": "OIMM", + "geo": [ + { + "lat": 3627, + "lon": 5963, + "elev": 980, + "firstTime": 0, + "lastTime": 1708196400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-02-17 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:40821", + "wmoid": 40821, + "name": "40821", + "geo": [ + { + "lat": 3190, + "lon": 5428, + "elev": 1237, + "firstTime": 0, + "lastTime": 1682571600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-04-26 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:40848", + "wmoid": 40848, + "name": "OISS", + "geo": [ + { + "lat": 2953, + "lon": 5258, + "elev": 1491, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:40856", + "wmoid": 40856, + "name": "40856", + "geo": [ + { + "lat": 2947, + "lon": 6088, + "elev": 1379, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:40875", + "wmoid": 40875, + "name": "OIKB", + "geo": [ + { + "lat": 2722, + "lon": 5637, + "elev": 10, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:41316", + "wmoid": 41316, + "name": "OOSA", + "geo": [ + { + "lat": 1703, + "lon": 5408, + "elev": 17, + "firstTime": 0, + "lastTime": 1713376800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-17 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:41923", + "wmoid": 41923, + "name": "41923", + "geo": [ + { + "lat": 2343, + "lon": 9118, + "elev": 9, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:42379", + "wmoid": 42379, + "name": "VEGK", + "geo": [ + { + "lat": 2675, + "lon": 8337, + "elev": 77, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:42397", + "wmoid": 42397, + "name": "42397", + "geo": [ + { + "lat": 2667, + "lon": 8837, + "elev": 123, + "firstTime": 0, + "lastTime": 1445839200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-10-26 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:43041", + "wmoid": 43041, + "name": "43041", + "geo": [ + { + "lat": 1908, + "lon": 8203, + "elev": 553, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:43192", + "wmoid": 43192, + "name": "43192", + "geo": [ + { + "lat": 1548, + "lon": 7382, + "elev": 60, + "firstTime": 0, + "lastTime": 1698127200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-10-24 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:63741", + "wmoid": 63741, + "name": "HKNC", + "geo": [ + { + "lat": -130, + "lon": 3675, + "elev": 1798, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:83827", + "wmoid": 83827, + "name": "SBFI", + "geo": [ + { + "lat": -2552, + "lon": -5458, + "elev": 243, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:85469", + "wmoid": 85469, + "name": "SCIP", + "geo": [ + { + "lat": -2715, + "lon": -10942, + "elev": 47, + "firstTime": 0, + "lastTime": 1673766000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-01-15 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:89512", + "wmoid": 89512, + "name": "89512", + "geo": [ + { + "lat": -7077, + "lon": 1183, + "elev": 102, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:89592", + "wmoid": 89592, + "name": "89592", + "geo": [ + { + "lat": -6655, + "lon": 9302, + "elev": 30, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94659", + "wmoid": 94659, + "name": "YPWR", + "geo": [ + { + "lat": -3113, + "lon": 13682, + "elev": 167, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:96749", + "wmoid": 96749, + "name": "WIII", + "geo": [ + { + "lat": -612, + "lon": 10665, + "elev": 8, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:96935", + "wmoid": 96935, + "name": "WRSJ", + "geo": [ + { + "lat": -737, + "lon": 11277, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:97724", + "wmoid": 97724, + "name": "WAPP", + "geo": [ + { + "lat": -370, + "lon": 12808, + "elev": 12, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:97980", + "wmoid": 97980, + "name": "WAKK", + "geo": [ + { + "lat": -847, + "lon": 14038, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:12982", + "wmoid": 12982, + "name": "LHUD", + "geo": [ + { + "lat": 4625, + "lon": 2010, + "elev": 84, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:65578", + "wmoid": 65578, + "name": "DIAP", + "geo": [ + { + "lat": 525, + "lon": -393, + "elev": 8, + "firstTime": 0, + "lastTime": 1714042800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 05:00:00" +}, +{ + "id": "MD:V01:RAOB:station:83498", + "wmoid": 83498, + "name": "83498", + "geo": [ + { + "lat": -1773, + "lon": -3925, + "elev": 3, + "firstTime": 0, + "lastTime": 1470506400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2016-08-06 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:84008", + "wmoid": 84008, + "name": "SEST", + "geo": [ + { + "lat": -90, + "lon": -8960, + "elev": 6, + "firstTime": 0, + "lastTime": 1549306800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-02-04 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:84378", + "wmoid": 84378, + "name": "84378", + "geo": [ + { + "lat": -373, + "lon": -7325, + "elev": 117, + "firstTime": 0, + "lastTime": 1339779600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-06-15 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:91610", + "wmoid": 91610, + "name": "NGTA", + "geo": [ + { + "lat": 135, + "lon": 17292, + "elev": 4, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:91801", + "wmoid": 91801, + "name": "91801", + "geo": [ + { + "lat": -900, + "lon": -15805, + "elev": 1, + "firstTime": 0, + "lastTime": 1214802000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2008-06-29 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:91958", + "wmoid": 91958, + "name": "91958", + "geo": [ + { + "lat": -2762, + "lon": -14433, + "elev": 2, + "firstTime": 0, + "lastTime": 1665702000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-10-13 17:00:00" +}, +{ + "id": "MD:V01:RAOB:station:33658", + "wmoid": 33658, + "name": "33658", + "geo": [ + { + "lat": 4837, + "lon": 2590, + "elev": 246, + "firstTime": 0, + "lastTime": 1524031200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-04-18 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:40100", + "wmoid": 40100, + "name": "OLBA", + "geo": [ + { + "lat": 3382, + "lon": 3548, + "elev": 19, + "firstTime": 0, + "lastTime": 1200726000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2008-01-19 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:41594", + "wmoid": 41594, + "name": "OPSR", + "geo": [ + { + "lat": 3205, + "lon": 7267, + "elev": 188, + "firstTime": 0, + "lastTime": 1444845600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-10-14 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94638", + "wmoid": 94638, + "name": "94638", + "geo": [ + { + "lat": -3382, + "lon": 12188, + "elev": 26, + "firstTime": 0, + "lastTime": 1713502800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-18 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47058", + "wmoid": 47058, + "name": "47058", + "geo": [ + { + "lat": 3903, + "lon": 12578, + "elev": 38, + "firstTime": 0, + "lastTime": 1601877600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-10-05 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:61687", + "wmoid": 61687, + "name": "GOTT", + "geo": [ + { + "lat": 1376, + "lon": -1368, + "elev": 50, + "firstTime": 0, + "lastTime": 1676916000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-02-20 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:64700", + "wmoid": 64700, + "name": "FTTJ", + "geo": [ + { + "lat": 1213, + "lon": 1503, + "elev": 295, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:93997", + "wmoid": 93997, + "name": "NZRN", + "geo": [ + { + "lat": -2925, + "lon": -17792, + "elev": 49, + "firstTime": 0, + "lastTime": 1585281600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-03-26 22:00:00" +}, +{ + "id": "MD:V01:RAOB:station:40811", + "wmoid": 40811, + "name": "OIAW", + "geo": [ + { + "lat": 3133, + "lon": 4866, + "elev": 22, + "firstTime": 0, + "lastTime": 1698688800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-10-30 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:33041", + "wmoid": 33041, + "name": "33041", + "geo": [ + { + "lat": 5245, + "lon": 3100, + "elev": 127, + "firstTime": 0, + "lastTime": 1662357600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-09-05 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:64400", + "wmoid": 64400, + "name": "FCPP", + "geo": [ + { + "lat": -482, + "lon": 1190, + "elev": 17, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:91643", + "wmoid": 91643, + "name": "NGFU", + "geo": [ + { + "lat": -852, + "lon": 17922, + "elev": 2, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:47981", + "wmoid": 47981, + "name": "RJAW", + "geo": [ + { + "lat": 2478, + "lon": 14133, + "elev": 116, + "firstTime": 0, + "lastTime": 1223532000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2008-10-09 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:91943", + "wmoid": 91943, + "name": "91943", + "geo": [ + { + "lat": -1448, + "lon": -14503, + "elev": 3, + "firstTime": 0, + "lastTime": 1199430000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2008-01-04 00:00:00" +}, +{ + "id": "MD:V01:RAOB:station:68442", + "wmoid": 68442, + "name": "FABL", + "geo": [ + { + "lat": -2910, + "lon": 2630, + "elev": 1348, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:41977", + "wmoid": 41977, + "name": "41977", + "geo": [ + { + "lat": 2235, + "lon": 9182, + "elev": 34, + "firstTime": 0, + "lastTime": 1713981600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:94647", + "wmoid": 94647, + "name": "94647", + "geo": [ + { + "lat": -3167, + "lon": 12888, + "elev": 99, + "firstTime": 0, + "lastTime": 1349672400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-10-07 23:00:00" +}, +{ + "id": "MD:V01:RAOB:station:97180", + "wmoid": 97180, + "name": "WAAA", + "geo": [ + { + "lat": -507, + "lon": 11955, + "elev": 14, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:84416", + "wmoid": 84416, + "name": "84416", + "geo": [ + { + "lat": -518, + "lon": -8060, + "elev": 52, + "firstTime": 0, + "lastTime": 1320688800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-11-07 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:78988", + "wmoid": 78988, + "name": "ACC", + "geo": [ + { + "lat": 1220, + "lon": -6897, + "elev": 54, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:83288", + "wmoid": 83288, + "name": "SBLP", + "geo": [ + { + "lat": -1327, + "lon": -4342, + "elev": 458, + "firstTime": 0, + "lastTime": 1548961200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-01-31 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:3502", + "wmoid": 3502, + "name": "EGUC", + "geo": [ + { + "lat": 5213, + "lon": -457, + "elev": 132, + "firstTime": 0, + "lastTime": 1712779200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-10 14:00:00" +}, +{ + "id": "MD:V01:RAOB:station:67083", + "wmoid": 67083, + "name": "FMMI", + "geo": [ + { + "lat": -1880, + "lon": 4748, + "elev": 1276, + "firstTime": 0, + "lastTime": 1707915600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-02-14 06:00:00" +}, +{ + "id": "MD:V01:RAOB:station:71701", + "wmoid": 71701, + "name": "YCX", + "geo": [ + { + "lat": 4583, + "lon": -6643, + "elev": 52, + "firstTime": 0, + "lastTime": 1711544400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-03-27 07:00:00" +}, +{ + "id": "MD:V01:RAOB:station:28722", + "wmoid": 28722, + "name": "28722", + "geo": [ + { + "lat": 5475, + "lon": 5600, + "elev": 105, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:6496", + "wmoid": 6496, + "name": "EBLB", + "geo": [ + { + "lat": 5047, + "lon": 618, + "elev": 570, + "firstTime": 0, + "lastTime": 1427889600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-04-01 06:00:00" +}, +{ + "id": "MD:V01:RAOB:station:43353", + "wmoid": 43353, + "name": "VOCC", + "geo": [ + { + "lat": 995, + "lon": 7627, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:96491", + "wmoid": 96491, + "name": "WBKS", + "geo": [ + { + "lat": 590, + "lon": 11807, + "elev": 13, + "firstTime": 0, + "lastTime": 1527508800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-05-28 06:00:00" +}, +{ + "id": "MD:V01:RAOB:station:82765", + "wmoid": 82765, + "name": "82765", + "geo": [ + { + "lat": -733, + "lon": -4747, + "elev": 212, + "firstTime": 0, + "lastTime": 1580756400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-02-03 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:28661", + "wmoid": 28661, + "name": "28661", + "geo": [ + { + "lat": 5547, + "lon": 6540, + "elev": 79, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:80001", + "wmoid": 80001, + "name": "80001", + "geo": [ + { + "lat": 1258, + "lon": -8170, + "elev": 4, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:3693", + "wmoid": 3693, + "name": "3693", + "geo": [ + { + "lat": 5155, + "lon": 83, + "elev": 3, + "firstTime": 0, + "lastTime": 1292950800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2010-12-21 10:00:00" +}, +{ + "id": "MD:V01:RAOB:station:61442", + "wmoid": 61442, + "name": "GQNN", + "geo": [ + { + "lat": 1810, + "lon": -1595, + "elev": 3, + "firstTime": 0, + "lastTime": 1531501200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-07-13 11:00:00" +}, +{ + "id": "MD:V01:RAOB:station:98444", + "wmoid": 98444, + "name": "RPMP", + "geo": [ + { + "lat": 1313, + "lon": 12373, + "elev": 17, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +}, +{ + "id": "MD:V01:RAOB:station:72388", + "wmoid": 72388, + "name": "DRAne", + "geo": [ + { + "lat": 3605, + "lon": -11518, + "elev": 693, + "firstTime": 1292655600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LAS VEGAS", + "near_airport": "", + "gps_date": "2010-12-18", + "updateTime": "2024-04-25 12:00:00" +} +] diff --git a/tests/vxingest/prepbufr_to_cb/testdata/stations1.json b/tests/vxingest/prepbufr_to_cb/testdata/stations1.json new file mode 100644 index 00000000..10b19231 --- /dev/null +++ b/tests/vxingest/prepbufr_to_cb/testdata/stations1.json @@ -0,0 +1,17191 @@ +[ +{ + "id": "MD:V01:RAOB:station:70398", + "wmoid": 70398, + "name": "ANN", + "geo": [ + { + "lat": 55.03, + "lon": -131.57, + "elev": 37, + "firstTime": 1257145200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ANNETTE ISLAND", + "near_airport": "", + "gps_date": "2009-11-02", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71109", + "wmoid": 71109, + "name": "YZT", + "geo": [ + { + "lat": 50.68, + "lon": -127.37, + "elev": 17, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PORT HARDY", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71119", + "wmoid": 71119, + "name": "WSE", + "geo": [ + { + "lat": 53.55, + "lon": -114.1, + "elev": 766, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "EDMONTON/STONY PLAIN", + "near_airport": "CYEG", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71203", + "wmoid": 71203, + "name": "YLW", + "geo": [ + { + "lat": 49.97, + "lon": -119.38, + "elev": 454, + "firstTime": 0, + "lastTime": 1498888800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KELOWNA APT", + "near_airport": "", + "gps_date": "", + "updateTime": "2017-07-01 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71603", + "wmoid": 71603, + "name": "WQI", + "geo": [ + { + "lat": 43.87, + "lon": -66.05, + "elev": 9, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YARMOUTH", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71625", + "wmoid": 71625, + "name": "YWA", + "geo": [ + { + "lat": 45.95, + "lon": -77.32, + "elev": 130, + "firstTime": 0, + "lastTime": 0, + "updateTime": 0 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PETAWAWA/ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "" +} , +{ + "id": "MD:V01:RAOB:station:71722", + "wmoid": 71722, + "name": "YMW", + "geo": [ + { + "lat": 46.38, + "lon": -75.97, + "elev": 170, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MANIWAKI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71811", + "wmoid": 71811, + "name": "YZV", + "geo": [ + { + "lat": 50.22, + "lon": -66.27, + "elev": 52, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SEPT ILES (UA)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71816", + "wmoid": 71816, + "name": "YYR", + "geo": [ + { + "lat": 53.3, + "lon": -60.37, + "elev": 36, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GOOSE/GOOSE BAY", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71823", + "wmoid": 71823, + "name": "YAH", + "geo": [ + { + "lat": 53.75, + "lon": -73.67, + "elev": 307, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LA GRANDE IV", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71836", + "wmoid": 71836, + "name": "YMO", + "geo": [ + { + "lat": 51.27, + "lon": -80.65, + "elev": 10, + "firstTime": 0, + "lastTime": 1680285600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MOOSONEE", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-03-31 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71845", + "wmoid": 71845, + "name": "WPL", + "geo": [ + { + "lat": 51.47, + "lon": -90.2, + "elev": 386, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PICKLE LAKE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71867", + "wmoid": 71867, + "name": "YQD", + "geo": [ + { + "lat": 53.97, + "lon": -101.1, + "elev": 273, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "THE PAS", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71908", + "wmoid": 71908, + "name": "ZXS", + "geo": [ + { + "lat": 53.9, + "lon": -122.8, + "elev": 601, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PRINCE GEORGE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72201", + "wmoid": 72201, + "name": "EYW", + "geo": [ + { + "lat": 24.55, + "lon": -81.75, + "elev": 1, + "firstTime": 1340690400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KEY WEST INT AP", + "near_airport": "", + "gps_date": "2012-06-26", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72202", + "wmoid": 72202, + "name": "MFL", + "geo": [ + { + "lat": 25.75, + "lon": -80.38, + "elev": 4, + "firstTime": 1178517600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MIAMI/FL INTL UNIV", + "near_airport": "MIA", + "gps_date": "2007-05-07", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72206", + "wmoid": 72206, + "name": "JAX", + "geo": [ + { + "lat": 30.43, + "lon": -81.7, + "elev": 10, + "firstTime": 1168844400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JACKSONVILLE", + "near_airport": "", + "gps_date": "2007-01-15", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72208", + "wmoid": 72208, + "name": "CHS", + "geo": [ + { + "lat": 32.9, + "lon": -80.03, + "elev": 15, + "firstTime": 1214200800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHARLESTON", + "near_airport": "", + "gps_date": "2008-06-23", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72210", + "wmoid": 72210, + "name": "TBW", + "geo": [ + { + "lat": 27.7, + "lon": -82.4, + "elev": 13, + "firstTime": 1174888800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TAMPA BAY/RUSKIN", + "near_airport": "TPA", + "gps_date": "2007-03-26", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72214", + "wmoid": 72214, + "name": "TLH", + "geo": [ + { + "lat": 30.45, + "lon": -84.3, + "elev": 52, + "firstTime": 1142233200, + "lastTime": 1713722400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TALLAHASEE", + "near_airport": "", + "gps_date": "2006-03-13", + "updateTime": "2024-04-21 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72215", + "wmoid": 72215, + "name": "FFC", + "geo": [ + { + "lat": 33.35, + "lon": -84.56, + "elev": 246, + "firstTime": 1208757600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PEACHTREE CITY", + "near_airport": "ATL", + "gps_date": "2008-04-21", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72230", + "wmoid": 72230, + "name": "BMX", + "geo": [ + { + "lat": 33.1, + "lon": -86.7, + "elev": 178, + "firstTime": 1173679200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BIRMINGHAM (SHELBY APT)", + "near_airport": "", + "gps_date": "2007-03-12", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72233", + "wmoid": 72233, + "name": "SIL", + "geo": [ + { + "lat": 30.34, + "lon": -89.83, + "elev": 10, + "firstTime": 1204527600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SLIDELL", + "near_airport": "MSY", + "gps_date": "2008-03-03", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72235", + "wmoid": 72235, + "name": "JAN", + "geo": [ + { + "lat": 32.32, + "lon": -90.07, + "elev": 91, + "firstTime": 1142578800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JACKSON/THOMPSON FLD", + "near_airport": "", + "gps_date": "2006-03-17", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72240", + "wmoid": 72240, + "name": "LCH", + "geo": [ + { + "lat": 30.12, + "lon": -93.22, + "elev": 5, + "firstTime": 1206597600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LAKE CHARLES", + "near_airport": "", + "gps_date": "2008-03-27", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72248", + "wmoid": 72248, + "name": "SHV", + "geo": [ + { + "lat": 32.45, + "lon": -93.84, + "elev": 85, + "firstTime": 1144648800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SHREVEPORT REGIONAL AP", + "near_airport": "", + "gps_date": "2006-04-10", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72249", + "wmoid": 72249, + "name": "FWD", + "geo": [ + { + "lat": 32.8, + "lon": -97.3, + "elev": 196, + "firstTime": 1197270000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FT WORTH", + "near_airport": "DFW", + "gps_date": "2007-12-10", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72250", + "wmoid": 72250, + "name": "BRO", + "geo": [ + { + "lat": 25.92, + "lon": -97.42, + "elev": 7, + "firstTime": 1235977200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BROWNSVILLE", + "near_airport": "", + "gps_date": "2009-03-02", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72251", + "wmoid": 72251, + "name": "CRP", + "geo": [ + { + "lat": 27.77, + "lon": -97.5, + "elev": 14, + "firstTime": 1128405600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CORPUS CHRISTI", + "near_airport": "", + "gps_date": "2005-10-04", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72261", + "wmoid": 72261, + "name": "DRT", + "geo": [ + { + "lat": 29.37, + "lon": -100.92, + "elev": 313, + "firstTime": 1212991200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DEL RIO", + "near_airport": "", + "gps_date": "2008-06-09", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72265", + "wmoid": 72265, + "name": "MAF", + "geo": [ + { + "lat": 31.93, + "lon": -102.2, + "elev": 873, + "firstTime": 1145858400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MIDLAND", + "near_airport": "", + "gps_date": "2006-04-24", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72274", + "wmoid": 72274, + "name": "TWC", + "geo": [ + { + "lat": 32.23, + "lon": -110.96, + "elev": 753, + "firstTime": 1180936800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TUSCON", + "near_airport": "", + "gps_date": "2007-06-04", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72293", + "wmoid": 72293, + "name": "NKX", + "geo": [ + { + "lat": 32.85, + "lon": -117.12, + "elev": 134, + "firstTime": 1272866400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MIRAMAR NAS", + "near_airport": "SAN", + "gps_date": "2010-05-03", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72305", + "wmoid": 72305, + "name": "MHX", + "geo": [ + { + "lat": 34.7, + "lon": -76.8, + "elev": 11, + "firstTime": 1170054000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MOREHEAD CITY/NEWPORT", + "near_airport": "", + "gps_date": "2007-01-29", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72317", + "wmoid": 72317, + "name": "GSO", + "geo": [ + { + "lat": 36.08, + "lon": -79.95, + "elev": 277, + "firstTime": 1171263600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GREENSBORO", + "near_airport": "", + "gps_date": "2007-02-12", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72318", + "wmoid": 72318, + "name": "RNK", + "geo": [ + { + "lat": 37.2, + "lon": -80.41, + "elev": 648, + "firstTime": 1172473200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ROANOKE/BLACKSBURG", + "near_airport": "", + "gps_date": "2007-02-26", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72327", + "wmoid": 72327, + "name": "BNA", + "geo": [ + { + "lat": 36.25, + "lon": -86.57, + "elev": 180, + "firstTime": 1179727200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NASHVILLE", + "near_airport": "", + "gps_date": "2007-05-21", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72340", + "wmoid": 72340, + "name": "LZK", + "geo": [ + { + "lat": 34.83, + "lon": -92.27, + "elev": 172, + "firstTime": 1207548000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "N LITTLE ROCK", + "near_airport": "", + "gps_date": "2008-04-07", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72355", + "wmoid": 72355, + "name": "FSI", + "geo": [ + { + "lat": 34.65, + "lon": -98.4, + "elev": 362, + "firstTime": 0, + "lastTime": 1231786800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FORT SILL", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-01-12 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72357", + "wmoid": 72357, + "name": "OUN", + "geo": [ + { + "lat": 35.23, + "lon": -97.47, + "elev": 362, + "firstTime": 1163401200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NORMAN", + "near_airport": "", + "gps_date": "2006-11-13", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72363", + "wmoid": 72363, + "name": "AMA", + "geo": [ + { + "lat": 35.23, + "lon": -101.7, + "elev": 1095, + "firstTime": 1147068000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AMARILLO", + "near_airport": "", + "gps_date": "2006-05-08", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72364", + "wmoid": 72364, + "name": "EPZ", + "geo": [ + { + "lat": 31.9, + "lon": -106.7, + "elev": 1257, + "firstTime": 1362121200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SANTA TERESA", + "near_airport": "ELP", + "gps_date": "2013-03-01", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72365", + "wmoid": 72365, + "name": "ABQ", + "geo": [ + { + "lat": 35.05, + "lon": -106.62, + "elev": 1619, + "firstTime": 1211176800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALBUQUERQUE", + "near_airport": "", + "gps_date": "2008-05-19", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72376", + "wmoid": 72376, + "name": "FGZ", + "geo": [ + { + "lat": 35.23, + "lon": -111.82, + "elev": 2179, + "firstTime": 1150696800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FLAGSTAFF/BELLEMT (ARMY)", + "near_airport": "", + "gps_date": "2006-06-19", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72387", + "wmoid": 72387, + "name": "DRA", + "geo": [ + { + "lat": 36.62, + "lon": -116.02, + "elev": 1007, + "firstTime": 0, + "lastTime": 1290819600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DESERT ROCK/MERCURY", + "near_airport": "", + "gps_date": "", + "updateTime": "2010-11-26 18:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72393", + "wmoid": 72393, + "name": "VBG", + "geo": [ + { + "lat": 34.75, + "lon": -120.57, + "elev": 100, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VANDENBERG", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72402", + "wmoid": 72402, + "name": "WAL", + "geo": [ + { + "lat": 37.93, + "lon": -75.48, + "elev": 13, + "firstTime": 1265698800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WALLOPS ISLAND", + "near_airport": "", + "gps_date": "2010-02-09", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72403", + "wmoid": 72403, + "name": "IAD", + "geo": [ + { + "lat": 38.98, + "lon": -77.49, + "elev": 88, + "firstTime": 1122876000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "STERLING(WASH DULLES)", + "near_airport": "IAD", + "gps_date": "2005-08-01", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72426", + "wmoid": 72426, + "name": "ILN", + "geo": [ + { + "lat": 39.42, + "lon": -83.82, + "elev": 317, + "firstTime": 1176098400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WILMINGTON", + "near_airport": "", + "gps_date": "2007-04-09", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72440", + "wmoid": 72440, + "name": "SGF", + "geo": [ + { + "lat": 37.23, + "lon": -93.4, + "elev": 394, + "firstTime": 1186984800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SPRINGFIELD REGIONAL AP", + "near_airport": "", + "gps_date": "2007-08-13", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72456", + "wmoid": 72456, + "name": "TOP", + "geo": [ + { + "lat": 39.07, + "lon": -95.63, + "elev": 268, + "firstTime": 1238997600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TOPEKA", + "near_airport": "MKC", + "gps_date": "2009-04-06", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72469", + "wmoid": 72469, + "name": "DNR", + "geo": [ + { + "lat": 39.77, + "lon": -104.87, + "elev": 1611, + "firstTime": 1225087200, + "lastTime": 1657346400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DENVER/STAPLETON ARPT", + "near_airport": "DEN", + "gps_date": "2008-10-27", + "updateTime": "2022-07-09 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72476", + "wmoid": 72476, + "name": "GJT", + "geo": [ + { + "lat": 39.12, + "lon": -108.53, + "elev": 1472, + "firstTime": 1158559200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GRAND JUNCTION", + "near_airport": "", + "gps_date": "2006-09-18", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72489", + "wmoid": 72489, + "name": "REV", + "geo": [ + { + "lat": 39.57, + "lon": -119.8, + "elev": 1516, + "firstTime": 1151906400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "RENO", + "near_airport": "", + "gps_date": "2006-07-03", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72493", + "wmoid": 72493, + "name": "OAK", + "geo": [ + { + "lat": 37.74, + "lon": -122.22, + "elev": 2, + "firstTime": 1234162800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OAKLAND INT AP", + "near_airport": "OAK", + "gps_date": "2009-02-09", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72501", + "wmoid": 72501, + "name": "OKX", + "geo": [ + { + "lat": 40.87, + "lon": -72.87, + "elev": 20, + "firstTime": 1245650400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BROOKHAVEN", + "near_airport": "ISP", + "gps_date": "2009-06-22", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72518", + "wmoid": 72518, + "name": "ALY", + "geo": [ + { + "lat": 42.69, + "lon": -73.83, + "elev": 94, + "firstTime": 1270879200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALBANY", + "near_airport": "", + "gps_date": "2010-04-10", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72520", + "wmoid": 72520, + "name": "PIT", + "geo": [ + { + "lat": 40.53, + "lon": -80.23, + "elev": 360, + "firstTime": 1243576800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PITTSBURGH/MOON TOWNSHIP", + "near_airport": "", + "gps_date": "2009-05-29", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72528", + "wmoid": 72528, + "name": "BUF", + "geo": [ + { + "lat": 42.93, + "lon": -78.73, + "elev": 218, + "firstTime": 1160978400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BUFFALO/GRTR ARPT", + "near_airport": "", + "gps_date": "2006-10-16", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72558", + "wmoid": 72558, + "name": "OAX", + "geo": [ + { + "lat": 41.32, + "lon": -96.37, + "elev": 350, + "firstTime": 1190613600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OMAHA/VALLEY", + "near_airport": "", + "gps_date": "2007-09-24", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72562", + "wmoid": 72562, + "name": "LBF", + "geo": [ + { + "lat": 41.13, + "lon": -100.68, + "elev": 847, + "firstTime": 1189404000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NORTH PLATTE", + "near_airport": "", + "gps_date": "2007-09-10", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72572", + "wmoid": 72572, + "name": "SLC", + "geo": [ + { + "lat": 40.77, + "lon": -111.97, + "elev": 1288, + "firstTime": 1127196000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SALT LAKE CITY", + "near_airport": "", + "gps_date": "2005-09-20", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72582", + "wmoid": 72582, + "name": "LKN", + "geo": [ + { + "lat": 40.87, + "lon": -115.73, + "elev": 1608, + "firstTime": 1182146400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ELKO", + "near_airport": "", + "gps_date": "2007-06-18", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72597", + "wmoid": 72597, + "name": "MFR", + "geo": [ + { + "lat": 42.38, + "lon": -122.88, + "elev": 398, + "firstTime": 1237183200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MEDFORD", + "near_airport": "", + "gps_date": "2009-03-16", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72632", + "wmoid": 72632, + "name": "DTX", + "geo": [ + { + "lat": 42.7, + "lon": -83.47, + "elev": 329, + "firstTime": 1242021600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DETROIT/PONTIAC", + "near_airport": "DTW", + "gps_date": "2009-05-11", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72634", + "wmoid": 72634, + "name": "APX", + "geo": [ + { + "lat": 44.55, + "lon": -84.43, + "elev": 448, + "firstTime": 1188194400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GAYLORD / ALPENA", + "near_airport": "", + "gps_date": "2007-08-27", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72645", + "wmoid": 72645, + "name": "GRB", + "geo": [ + { + "lat": 44.5, + "lon": -88.11, + "elev": 209, + "firstTime": 1223964000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GREEN BAY", + "near_airport": "ATW", + "gps_date": "2008-10-14", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72649", + "wmoid": 72649, + "name": "MPX", + "geo": [ + { + "lat": 44.83, + "lon": -93.55, + "elev": 287, + "firstTime": 1126072800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MINNEAPOLIS", + "near_airport": "MSP", + "gps_date": "2005-09-07", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72659", + "wmoid": 72659, + "name": "ABR", + "geo": [ + { + "lat": 45.45, + "lon": -98.42, + "elev": 397, + "firstTime": 1154930400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ABERDEEN", + "near_airport": "", + "gps_date": "2006-08-07", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72662", + "wmoid": 72662, + "name": "UNR", + "geo": [ + { + "lat": 44.07, + "lon": -103.21, + "elev": 1037, + "firstTime": 1153720800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "RAPID CITY", + "near_airport": "", + "gps_date": "2006-07-24", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72672", + "wmoid": 72672, + "name": "RIW", + "geo": [ + { + "lat": 43.06, + "lon": -108.47, + "elev": 1688, + "firstTime": 1157436000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "RIVERTON", + "near_airport": "", + "gps_date": "2006-09-05", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72681", + "wmoid": 72681, + "name": "BOI", + "geo": [ + { + "lat": 43.57, + "lon": -116.22, + "elev": 871, + "firstTime": 1161928800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BOISE", + "near_airport": "", + "gps_date": "2006-10-27", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72694", + "wmoid": 72694, + "name": "SLE", + "geo": [ + { + "lat": 44.92, + "lon": -123.02, + "elev": 61, + "firstTime": 1183356000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SALEM", + "near_airport": "PDX", + "gps_date": "2007-07-02", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72712", + "wmoid": 72712, + "name": "CAR", + "geo": [ + { + "lat": 46.87, + "lon": -68.02, + "elev": 191, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CARIBOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72747", + "wmoid": 72747, + "name": "INL", + "geo": [ + { + "lat": 48.57, + "lon": -93.38, + "elev": 359, + "firstTime": 1243231200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "INTERNATIONAL FALLS", + "near_airport": "", + "gps_date": "2009-05-25", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72764", + "wmoid": 72764, + "name": "BIS", + "geo": [ + { + "lat": 46.77, + "lon": -100.75, + "elev": 503, + "firstTime": 1156140000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BISMARCK", + "near_airport": "", + "gps_date": "2006-08-21", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72768", + "wmoid": 72768, + "name": "GGW", + "geo": [ + { + "lat": 48.2, + "lon": -106.62, + "elev": 693, + "firstTime": 1184565600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GLASGOW", + "near_airport": "", + "gps_date": "2007-07-16", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72776", + "wmoid": 72776, + "name": "TFX", + "geo": [ + { + "lat": 47.45, + "lon": -111.38, + "elev": 1130, + "firstTime": 1364796000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GREAT FALLS", + "near_airport": "", + "gps_date": "2013-04-01", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72786", + "wmoid": 72786, + "name": "OTX", + "geo": [ + { + "lat": 47.68, + "lon": -117.63, + "elev": 728, + "firstTime": 1148277600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SPOKANE INTNL APT", + "near_airport": "GEG", + "gps_date": "2006-05-22", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72797", + "wmoid": 72797, + "name": "UIL", + "geo": [ + { + "lat": 47.95, + "lon": -124.55, + "elev": 56, + "firstTime": 1193032800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "QUILLAYUTE", + "near_airport": "", + "gps_date": "2007-10-22", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:74389", + "wmoid": 74389, + "name": "GYX", + "geo": [ + { + "lat": 43.89, + "lon": -70.25, + "elev": 125, + "firstTime": 1159768800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GRAY", + "near_airport": "", + "gps_date": "2006-10-02", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:74455", + "wmoid": 74455, + "name": "DVN", + "geo": [ + { + "lat": 41.61, + "lon": -90.58, + "elev": 230, + "firstTime": 1194246000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DAVENPORT MUNICIPAL AP", + "near_airport": "MLI", + "gps_date": "2007-11-05", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:74494", + "wmoid": 74494, + "name": "CHH", + "geo": [ + { + "lat": 41.66, + "lon": -69.96, + "elev": 15, + "firstTime": 1240812000, + "lastTime": 1617213600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHATHAM", + "near_airport": "", + "gps_date": "2009-04-27", + "updateTime": "2021-03-31 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:74560", + "wmoid": 74560, + "name": "ILX", + "geo": [ + { + "lat": 40.15, + "lon": -89.33, + "elev": 178, + "firstTime": 1185775200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LINCOLN-LOGAN COUNTY AP", + "near_airport": "BMI", + "gps_date": "2007-07-30", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:74646", + "wmoid": 74646, + "name": "LMN", + "geo": [ + { + "lat": 36.68, + "lon": -97.47, + "elev": 306, + "firstTime": 0, + "lastTime": 1713355200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SULPHUR MUNICIPAL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-17 06:00:00" +} , +{ + "id": "MD:V01:RAOB:station:74794", + "wmoid": 74794, + "name": "XMR", + "geo": [ + { + "lat": 28.48, + "lon": -80.55, + "elev": 5, + "firstTime": 0, + "lastTime": 1714060800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CAPE KENNEDY", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 10:00:00" +} , +{ + "id": "MD:V01:RAOB:station:76225", + "wmoid": 76225, + "name": "MCV", + "geo": [ + { + "lat": 28.7, + "lon": -106.07, + "elev": 1428, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHIHUAHUA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:76256", + "wmoid": 76256, + "name": "GYM", + "geo": [ + { + "lat": 27.95, + "lon": -110.8, + "elev": 12, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "EMPALME SONORA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:76394", + "wmoid": 76394, + "name": "MTY", + "geo": [ + { + "lat": 25.87, + "lon": -100.2, + "elev": 450, + "firstTime": 0, + "lastTime": 1701370800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MONTERREY", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-11-30 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:76405", + "wmoid": 76405, + "name": "LAP", + "geo": [ + { + "lat": 24.07, + "lon": -110.33, + "elev": 14, + "firstTime": 0, + "lastTime": 1710093600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LA PAZ/DE LEON", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-03-10 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:76458", + "wmoid": 76458, + "name": "MZT", + "geo": [ + { + "lat": 23.18, + "lon": -106.42, + "elev": 4, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MAZATLAN SINALOA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:76595", + "wmoid": 76595, + "name": "CUN", + "geo": [ + { + "lat": 21.03, + "lon": -86.92, + "elev": 10, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CANCUN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:76612", + "wmoid": 76612, + "name": "MGDJ", + "geo": [ + { + "lat": 20.68, + "lon": -103.33, + "elev": 1551, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GUADALAJARA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:76644", + "wmoid": 76644, + "name": "MID", + "geo": [ + { + "lat": 20.95, + "lon": -89.65, + "elev": 11, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MERIDA IAP", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:76679", + "wmoid": 76679, + "name": "MEX", + "geo": [ + { + "lat": 19.43, + "lon": -99.07, + "elev": 2309, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MEXICO CITY/INT APT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:76723", + "wmoid": 76723, + "name": "SIC", + "geo": [ + { + "lat": 18.72, + "lon": -110.95, + "elev": 34, + "firstTime": 0, + "lastTime": 0, + "updateTime": 0 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SOCORRO ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "" +} , +{ + "id": "MD:V01:RAOB:station:78073", + "wmoid": 78073, + "name": "YNN", + "geo": [ + { + "lat": 25.05, + "lon": -77.47, + "elev": 2, + "firstTime": 0, + "lastTime": 1595268000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NASSAU APT", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-07-20 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78486", + "wmoid": 78486, + "name": "SDQ", + "geo": [ + { + "lat": 18.47, + "lon": -69.88, + "elev": 14, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SANTO DOMINGO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68263", + "wmoid": 68263, + "name": "FAIR", + "geo": [ + { + "lat": -25.92, + "lon": 28.22, + "elev": 1500, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PRETORIA/IRENE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68174", + "wmoid": 68174, + "name": "FAPB", + "geo": [ + { + "lat": -23.87, + "lon": 29.45, + "elev": 1222, + "firstTime": 0, + "lastTime": 1248670800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PIETERSBURG (SAAF)", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-07-26 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:65503", + "wmoid": 65503, + "name": "DHHH", + "geo": [ + { + "lat": 12.35, + "lon": -1.52, + "elev": 306, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OUAGADOUGOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:64910", + "wmoid": 64910, + "name": "FKKD", + "geo": [ + { + "lat": 4.0, + "lon": 9.7, + "elev": 9, + "firstTime": 0, + "lastTime": 1678345200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DOUALA (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-03-09 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:64650", + "wmoid": 64650, + "name": "FEFF", + "geo": [ + { + "lat": 4.4, + "lon": 18.52, + "elev": 366, + "firstTime": 0, + "lastTime": 1578333600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BANGUI/M'POKO (MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-06 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:64458", + "wmoid": 64458, + "name": "FCOU", + "geo": [ + { + "lat": 1.62, + "lon": 16.05, + "elev": 352, + "firstTime": 0, + "lastTime": 1657040400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OUESSO", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-07-05 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:64450", + "wmoid": 64450, + "name": "FCBB", + "geo": [ + { + "lat": -4.25, + "lon": 15.25, + "elev": 316, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BRAZZAVILLE/MAYA-MAYA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:63985", + "wmoid": 63985, + "name": "FSSS", + "geo": [ + { + "lat": -4.68, + "lon": 55.53, + "elev": 4, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SEYCHELLES INTL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:62721", + "wmoid": 62721, + "name": "HSSS", + "geo": [ + { + "lat": 15.6, + "lon": 32.54, + "elev": 380, + "firstTime": 0, + "lastTime": 1399046400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KHARTOUM (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2014-05-02 10:00:00" +} , +{ + "id": "MD:V01:RAOB:station:62414", + "wmoid": 62414, + "name": "HESN", + "geo": [ + { + "lat": 23.97, + "lon": 32.78, + "elev": 194, + "firstTime": 0, + "lastTime": 1713938400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ASWAN (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:62378", + "wmoid": 62378, + "name": "62378", + "geo": [ + { + "lat": 29.87, + "lon": 31.33, + "elev": 141, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HELWAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:62337", + "wmoid": 62337, + "name": "HEAR", + "geo": [ + { + "lat": 31.08, + "lon": 33.75, + "elev": 32, + "firstTime": 0, + "lastTime": 1676919600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "EL ARISH", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-02-20 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:62306", + "wmoid": 62306, + "name": "HEMM", + "geo": [ + { + "lat": 31.33, + "lon": 27.22, + "elev": 30, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MERSA MATRUH (MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61998", + "wmoid": 61998, + "name": "61998", + "geo": [ + { + "lat": -49.35, + "lon": 70.25, + "elev": 30, + "firstTime": 0, + "lastTime": 1543258800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PORT-AUX-FRANCAIS", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-11-26 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61996", + "wmoid": 61996, + "name": "61996", + "geo": [ + { + "lat": -37.8, + "lon": 77.53, + "elev": 29, + "firstTime": 0, + "lastTime": 1323367200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MARTIN DE VIVIES", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-12-08 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61976", + "wmoid": 61976, + "name": "61976", + "geo": [ + { + "lat": -15.88, + "lon": 54.52, + "elev": 13, + "firstTime": 0, + "lastTime": 1307638800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SERGE-FROLOW/TROMELIN", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-06-09 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61967", + "wmoid": 61967, + "name": "FJDG", + "geo": [ + { + "lat": -7.3, + "lon": 72.4, + "elev": 3, + "firstTime": 0, + "lastTime": 0, + "updateTime": 0 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DIEGO GARCIA", + "near_airport": "", + "gps_date": "", + "updateTime": "" +} , +{ + "id": "MD:V01:RAOB:station:61901", + "wmoid": 61901, + "name": "61901", + "geo": [ + { + "lat": -15.97, + "lon": -5.7, + "elev": 436, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ST. HELENA ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61641", + "wmoid": 61641, + "name": "GOOY", + "geo": [ + { + "lat": 14.73, + "lon": -17.5, + "elev": 24, + "firstTime": 0, + "lastTime": 1528606800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DAKAR/YOFF", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-06-09 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61291", + "wmoid": 61291, + "name": "GABS", + "geo": [ + { + "lat": 12.53, + "lon": -7.95, + "elev": 381, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BAMAKO/SENOU (MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61223", + "wmoid": 61223, + "name": "GATB", + "geo": [ + { + "lat": 16.72, + "lon": -3.0, + "elev": 264, + "firstTime": 0, + "lastTime": 1333126800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TOMBOUCTOU/TIMBUKTU", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-03-30 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61052", + "wmoid": 61052, + "name": "DRRR", + "geo": [ + { + "lat": 13.48, + "lon": 2.17, + "elev": 227, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NIAMEY-AERO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61024", + "wmoid": 61024, + "name": "DRZA", + "geo": [ + { + "lat": 16.97, + "lon": 7.98, + "elev": 502, + "firstTime": 0, + "lastTime": 1713978000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AGADEZ SOUTH (MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:60680", + "wmoid": 60680, + "name": "60680", + "geo": [ + { + "lat": 22.78, + "lon": 5.52, + "elev": 1378, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TAMANRASSET", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:60656", + "wmoid": 60656, + "name": "DAOF", + "geo": [ + { + "lat": 27.67, + "lon": -8.13, + "elev": 431, + "firstTime": 0, + "lastTime": 1713938400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TINDOUF", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:60630", + "wmoid": 60630, + "name": "60630", + "geo": [ + { + "lat": 27.2, + "lon": 2.47, + "elev": 293, + "firstTime": 0, + "lastTime": 1713938400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "IN SALAH", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:60571", + "wmoid": 60571, + "name": "DAOR", + "geo": [ + { + "lat": 31.62, + "lon": -2.23, + "elev": 773, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BECHAR/OUAKDA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:60390", + "wmoid": 60390, + "name": "DAAG", + "geo": [ + { + "lat": 36.72, + "lon": 3.25, + "elev": 25, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DAR-EL-BEIDA/HOUARI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:60018", + "wmoid": 60018, + "name": "60018", + "geo": [ + { + "lat": 28.31, + "lon": -16.25, + "elev": 120, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VALLE DE GUIMAR TENERIFE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:59981", + "wmoid": 59981, + "name": "59981", + "geo": [ + { + "lat": 16.83, + "lon": 112.33, + "elev": 5, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "XISHA ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:59758", + "wmoid": 59758, + "name": "ZGHK", + "geo": [ + { + "lat": 20.03, + "lon": 110.35, + "elev": 15, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HAIKOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:59431", + "wmoid": 59431, + "name": "ZGNN", + "geo": [ + { + "lat": 22.82, + "lon": 108.35, + "elev": 73, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NANNING/WUXU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:59316", + "wmoid": 59316, + "name": "ZGOW", + "geo": [ + { + "lat": 23.4, + "lon": 116.68, + "elev": 3, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SHANTOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:59280", + "wmoid": 59280, + "name": "59280", + "geo": [ + { + "lat": 23.67, + "lon": 113.05, + "elev": 19, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PING YUAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:59265", + "wmoid": 59265, + "name": "59265", + "geo": [ + { + "lat": 23.48, + "lon": 111.3, + "elev": 120, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WUZHOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:59211", + "wmoid": 59211, + "name": "59211", + "geo": [ + { + "lat": 23.92, + "lon": 106.62, + "elev": 242, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BOSE", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:59134", + "wmoid": 59134, + "name": "59134", + "geo": [ + { + "lat": 24.45, + "lon": 118.07, + "elev": 63, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "XIA-MEN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58847", + "wmoid": 58847, + "name": "ZSFZ", + "geo": [ + { + "lat": 26.08, + "lon": 119.28, + "elev": 85, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FUZHOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58725", + "wmoid": 58725, + "name": "58725", + "geo": [ + { + "lat": 27.33, + "lon": 117.43, + "elev": 192, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SHAOWU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58665", + "wmoid": 58665, + "name": "58665", + "geo": [ + { + "lat": 28.65, + "lon": 120.08, + "elev": 9, + "firstTime": 0, + "lastTime": 1579370400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LUQIAO", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58633", + "wmoid": 58633, + "name": "58633", + "geo": [ + { + "lat": 28.97, + "lon": 118.87, + "elev": 71, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "QU XIAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58606", + "wmoid": 58606, + "name": "ZSCN", + "geo": [ + { + "lat": 28.6, + "lon": 115.92, + "elev": 50, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NANCHANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58457", + "wmoid": 58457, + "name": "ZSHC", + "geo": [ + { + "lat": 30.23, + "lon": 120.17, + "elev": 43, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HANGZHOU/JIANQIAO", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58424", + "wmoid": 58424, + "name": "58424", + "geo": [ + { + "lat": 30.52, + "lon": 117.03, + "elev": 20, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ANQING", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58362", + "wmoid": 58362, + "name": "58362", + "geo": [ + { + "lat": 31.4, + "lon": 121.47, + "elev": 4, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SHANGHAI", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58238", + "wmoid": 58238, + "name": "ZSNJ", + "geo": [ + { + "lat": 32.0, + "lon": 118.8, + "elev": 12, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NANJING/NANKING", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58203", + "wmoid": 58203, + "name": "58203", + "geo": [ + { + "lat": 32.93, + "lon": 115.83, + "elev": 39, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FUYANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58150", + "wmoid": 58150, + "name": "58150", + "geo": [ + { + "lat": 33.77, + "lon": 120.25, + "elev": 7, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SHEYANG/HEDE", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58027", + "wmoid": 58027, + "name": "58027", + "geo": [ + { + "lat": 34.28, + "lon": 117.15, + "elev": 42, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "XUZHOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57993", + "wmoid": 57993, + "name": "ZSGZ", + "geo": [ + { + "lat": 25.85, + "lon": 114.95, + "elev": 125, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GANZHOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57972", + "wmoid": 57972, + "name": "57972", + "geo": [ + { + "lat": 25.82, + "lon": 113.02, + "elev": 185, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHENZHOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57957", + "wmoid": 57957, + "name": "ZGKL", + "geo": [ + { + "lat": 25.33, + "lon": 110.3, + "elev": 166, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GUILIN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57816", + "wmoid": 57816, + "name": "ZUGY", + "geo": [ + { + "lat": 26.58, + "lon": 106.72, + "elev": 1074, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GUIYANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57749", + "wmoid": 57749, + "name": "57749", + "geo": [ + { + "lat": 27.57, + "lon": 110.0, + "elev": 261, + "firstTime": 0, + "lastTime": 1579370400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HUAIHUA", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57679", + "wmoid": 57679, + "name": "ZGCS", + "geo": [ + { + "lat": 28.2, + "lon": 113.08, + "elev": 46, + "firstTime": 0, + "lastTime": 1522515600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHANGSHA/DATUOPU", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-03-31 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57516", + "wmoid": 57516, + "name": "ZUCK", + "geo": [ + { + "lat": 29.52, + "lon": 106.48, + "elev": 351, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHONGQING/CHUNGKING", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57494", + "wmoid": 57494, + "name": "ZHHH", + "geo": [ + { + "lat": 30.62, + "lon": 114.13, + "elev": 23, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WUHAN/NANHU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57461", + "wmoid": 57461, + "name": "57461", + "geo": [ + { + "lat": 30.7, + "lon": 111.28, + "elev": 134, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YICHANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57447", + "wmoid": 57447, + "name": "57447", + "geo": [ + { + "lat": 30.28, + "lon": 109.47, + "elev": 458, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ENSHI", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57178", + "wmoid": 57178, + "name": "57178", + "geo": [ + { + "lat": 33.02, + "lon": 112.53, + "elev": 131, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NANYANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57127", + "wmoid": 57127, + "name": "57127", + "geo": [ + { + "lat": 33.07, + "lon": 107.03, + "elev": 509, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HANZHONG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57083", + "wmoid": 57083, + "name": "ZHCC", + "geo": [ + { + "lat": 34.72, + "lon": 113.65, + "elev": 111, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ZHENGZHOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:57036", + "wmoid": 57036, + "name": "ZLSN", + "geo": [ + { + "lat": 34.29, + "lon": 108.93, + "elev": 398, + "firstTime": 0, + "lastTime": 0, + "updateTime": 0 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "XI'AN", + "near_airport": "", + "gps_date": "", + "updateTime": "" +} , +{ + "id": "MD:V01:RAOB:station:56985", + "wmoid": 56985, + "name": "56985", + "geo": [ + { + "lat": 23.38, + "lon": 103.38, + "elev": 1302, + "firstTime": 0, + "lastTime": 1579460400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MENGZI", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:56964", + "wmoid": 56964, + "name": "56964", + "geo": [ + { + "lat": 22.77, + "lon": 100.98, + "elev": 1303, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SIMAO", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:56778", + "wmoid": 56778, + "name": "ZPPP", + "geo": [ + { + "lat": 25.02, + "lon": 102.68, + "elev": 1892, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KUNMING/WUJIABA", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:56739", + "wmoid": 56739, + "name": "56739", + "geo": [ + { + "lat": 25.03, + "lon": 98.48, + "elev": 1649, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TENGCHONG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:56691", + "wmoid": 56691, + "name": "56691", + "geo": [ + { + "lat": 26.87, + "lon": 104.28, + "elev": 2236, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WEINING", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:56571", + "wmoid": 56571, + "name": "56571", + "geo": [ + { + "lat": 27.9, + "lon": 102.27, + "elev": 1599, + "firstTime": 0, + "lastTime": 1579413600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "XICHANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:56146", + "wmoid": 56146, + "name": "56146", + "geo": [ + { + "lat": 31.62, + "lon": 100.0, + "elev": 3394, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GARZE", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:56137", + "wmoid": 56137, + "name": "56137", + "geo": [ + { + "lat": 31.15, + "lon": 97.17, + "elev": 3307, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "QAMDO", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:56080", + "wmoid": 56080, + "name": "56080", + "geo": [ + { + "lat": 34.97, + "lon": 102.9, + "elev": 2910, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HEZUO", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:56029", + "wmoid": 56029, + "name": "56029", + "geo": [ + { + "lat": 33.02, + "lon": 97.02, + "elev": 3682, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YUSHU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:55591", + "wmoid": 55591, + "name": "ZULS", + "geo": [ + { + "lat": 29.67, + "lon": 91.13, + "elev": 3650, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LHASA", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:55299", + "wmoid": 55299, + "name": "55299", + "geo": [ + { + "lat": 31.48, + "lon": 92.07, + "elev": 4508, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NAGQU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:54857", + "wmoid": 54857, + "name": "ZSQD", + "geo": [ + { + "lat": 36.07, + "lon": 120.33, + "elev": 77, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "QINGDAO/TSINGTAO", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:54662", + "wmoid": 54662, + "name": "ZYTL", + "geo": [ + { + "lat": 38.9, + "lon": 121.63, + "elev": 97, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DALIAN/DAIREN/LUDA", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:54511", + "wmoid": 54511, + "name": "ZBAA", + "geo": [ + { + "lat": 39.93, + "lon": 116.28, + "elev": 55, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BEIJING/PEKING", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:54497", + "wmoid": 54497, + "name": "54497", + "geo": [ + { + "lat": 40.08, + "lon": 124.33, + "elev": 14, + "firstTime": 0, + "lastTime": 0, + "updateTime": 0 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DANDONG", + "near_airport": "", + "gps_date": "", + "updateTime": "" +} , +{ + "id": "MD:V01:RAOB:station:54374", + "wmoid": 54374, + "name": "54374", + "geo": [ + { + "lat": 41.72, + "lon": 126.92, + "elev": 333, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LINJIANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:54342", + "wmoid": 54342, + "name": "ZYYY", + "geo": [ + { + "lat": 41.77, + "lon": 123.43, + "elev": 43, + "firstTime": 0, + "lastTime": 1554051600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SHENYANG/DONGTA", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-03-31 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:54337", + "wmoid": 54337, + "name": "54337", + "geo": [ + { + "lat": 41.12, + "lon": 121.07, + "elev": 70, + "firstTime": 0, + "lastTime": 0, + "updateTime": 0 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JINZHOU", + "near_airport": "", + "gps_date": "", + "updateTime": "" +} , +{ + "id": "MD:V01:RAOB:station:54292", + "wmoid": 54292, + "name": "54292", + "geo": [ + { + "lat": 42.88, + "lon": 129.47, + "elev": 178, + "firstTime": 0, + "lastTime": 1579370400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YANJI", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:54218", + "wmoid": 54218, + "name": "54218", + "geo": [ + { + "lat": 42.27, + "lon": 118.97, + "elev": 572, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHIFENG/ULANHAD", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:54161", + "wmoid": 54161, + "name": "ZYCC", + "geo": [ + { + "lat": 43.9, + "lon": 125.22, + "elev": 238, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHANGCHUN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:54135", + "wmoid": 54135, + "name": "54135", + "geo": [ + { + "lat": 43.6, + "lon": 122.27, + "elev": 180, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TONGLIAO", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:54102", + "wmoid": 54102, + "name": "54102", + "geo": [ + { + "lat": 43.95, + "lon": 116.07, + "elev": 991, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "XILIN HOT/ABAGNAR", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:53915", + "wmoid": 53915, + "name": "53915", + "geo": [ + { + "lat": 35.55, + "lon": 106.67, + "elev": 1348, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PINGLIANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:53845", + "wmoid": 53845, + "name": "ZLYA", + "geo": [ + { + "lat": 36.6, + "lon": 109.5, + "elev": 959, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YAN AN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:53772", + "wmoid": 53772, + "name": "ZBYN", + "geo": [ + { + "lat": 37.78, + "lon": 112.55, + "elev": 779, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TAIYUAN/WUSU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:53614", + "wmoid": 53614, + "name": "ZLIC", + "geo": [ + { + "lat": 38.48, + "lon": 106.22, + "elev": 1112, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YINCHUAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:53513", + "wmoid": 53513, + "name": "53513", + "geo": [ + { + "lat": 40.77, + "lon": 107.4, + "elev": 1041, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LINHE", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:53463", + "wmoid": 53463, + "name": "ZBHH", + "geo": [ + { + "lat": 40.82, + "lon": 111.68, + "elev": 1065, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HOHHOT", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:53068", + "wmoid": 53068, + "name": "53068", + "geo": [ + { + "lat": 43.65, + "lon": 112.0, + "elev": 966, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ERENHOT", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:52866", + "wmoid": 52866, + "name": "ZLXN", + "geo": [ + { + "lat": 36.62, + "lon": 101.77, + "elev": 2262, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "XINING", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:52836", + "wmoid": 52836, + "name": "52836", + "geo": [ + { + "lat": 36.3, + "lon": 98.1, + "elev": 3192, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DULAN/QAGAN US", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:52818", + "wmoid": 52818, + "name": "52818", + "geo": [ + { + "lat": 36.42, + "lon": 94.9, + "elev": 2809, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GOLMUD", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:52681", + "wmoid": 52681, + "name": "52681", + "geo": [ + { + "lat": 38.63, + "lon": 103.08, + "elev": 1367, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MINQIN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:52533", + "wmoid": 52533, + "name": "ZLJQ", + "geo": [ + { + "lat": 39.77, + "lon": 98.48, + "elev": 1478, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JIUQUAN/SUZHOU", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:52418", + "wmoid": 52418, + "name": "52418", + "geo": [ + { + "lat": 40.15, + "lon": 94.68, + "elev": 1140, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DUNHUANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:52323", + "wmoid": 52323, + "name": "52323", + "geo": [ + { + "lat": 41.8, + "lon": 97.03, + "elev": 1770, + "firstTime": 0, + "lastTime": 1579413600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MAZONG SHAN (MOUNT)", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:52267", + "wmoid": 52267, + "name": "52267", + "geo": [ + { + "lat": 41.95, + "lon": 101.07, + "elev": 941, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "EJIN QI", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:52203", + "wmoid": 52203, + "name": "ZWHM", + "geo": [ + { + "lat": 42.82, + "lon": 93.52, + "elev": 739, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HAMI", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:51839", + "wmoid": 51839, + "name": "51839", + "geo": [ + { + "lat": 37.07, + "lon": 82.77, + "elev": 1410, + "firstTime": 0, + "lastTime": 1579370400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MINFENG/NIYA", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:51828", + "wmoid": 51828, + "name": "ZWTN", + "geo": [ + { + "lat": 37.13, + "lon": 79.93, + "elev": 1375, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HOTAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:51777", + "wmoid": 51777, + "name": "51777", + "geo": [ + { + "lat": 39.03, + "lon": 88.17, + "elev": 889, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "RUOQIANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:51709", + "wmoid": 51709, + "name": "ZWSH", + "geo": [ + { + "lat": 39.47, + "lon": 75.98, + "elev": 1291, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KASHI", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:51644", + "wmoid": 51644, + "name": "51644", + "geo": [ + { + "lat": 41.72, + "lon": 82.95, + "elev": 1100, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KUQA", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:51463", + "wmoid": 51463, + "name": "51463", + "geo": [ + { + "lat": 43.78, + "lon": 87.62, + "elev": 919, + "firstTime": 0, + "lastTime": 1579586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "URUMQI", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:51431", + "wmoid": 51431, + "name": "ZWYN", + "geo": [ + { + "lat": 43.95, + "lon": 81.33, + "elev": 663, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YINING", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:51076", + "wmoid": 51076, + "name": "51076", + "geo": [ + { + "lat": 47.73, + "lon": 88.08, + "elev": 737, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALTAY", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:50953", + "wmoid": 50953, + "name": "50953", + "geo": [ + { + "lat": 45.75, + "lon": 126.77, + "elev": 143, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HARBIN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:50774", + "wmoid": 50774, + "name": "50774", + "geo": [ + { + "lat": 47.72, + "lon": 128.9, + "elev": 232, + "firstTime": 0, + "lastTime": 1579413600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YICHUN", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:50557", + "wmoid": 50557, + "name": "50557", + "geo": [ + { + "lat": 49.17, + "lon": 125.23, + "elev": 243, + "firstTime": 0, + "lastTime": 1579456800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NENJIANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:50527", + "wmoid": 50527, + "name": "50527", + "geo": [ + { + "lat": 49.22, + "lon": 119.75, + "elev": 611, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HAILAR", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48820", + "wmoid": 48820, + "name": "VVNB", + "geo": [ + { + "lat": 21.02, + "lon": 105.8, + "elev": 6, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HANOI/NOIBAI INTL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48615", + "wmoid": 48615, + "name": "WMKC", + "geo": [ + { + "lat": 6.17, + "lon": 102.28, + "elev": 5, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KOTA BHARU/SULTAN P", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48601", + "wmoid": 48601, + "name": "WMKP", + "geo": [ + { + "lat": 5.3, + "lon": 100.27, + "elev": 4, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PENANG/BAYAN LEPAS", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48407", + "wmoid": 48407, + "name": "VTUU", + "geo": [ + { + "lat": 15.25, + "lon": 104.87, + "elev": 127, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "UBON/RATCHATHANI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47991", + "wmoid": 47991, + "name": "RJAM", + "geo": [ + { + "lat": 24.3, + "lon": 153.97, + "elev": 9, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MINAMITORISHIMA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47971", + "wmoid": 47971, + "name": "RJAO", + "geo": [ + { + "lat": 27.08, + "lon": 142.18, + "elev": 8, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHICHIJIMA ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47945", + "wmoid": 47945, + "name": "ROMD", + "geo": [ + { + "lat": 25.83, + "lon": 131.23, + "elev": 20, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MINAMIDAITOJIMA ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47936", + "wmoid": 47936, + "name": "47936", + "geo": [ + { + "lat": 26.2, + "lon": 127.68, + "elev": 27, + "firstTime": 0, + "lastTime": 1206986400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NAHA AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2008-03-31 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47918", + "wmoid": 47918, + "name": "ROIG", + "geo": [ + { + "lat": 24.33, + "lon": 124.17, + "elev": 7, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ISHIGAKIJIMA ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47909", + "wmoid": 47909, + "name": "47909", + "geo": [ + { + "lat": 28.38, + "lon": 129.55, + "elev": 295, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NAZE/FUNCHATOGE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47827", + "wmoid": 47827, + "name": "47827", + "geo": [ + { + "lat": 31.63, + "lon": 130.58, + "elev": 31, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KAGOSHIMA/YOSHINO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47807", + "wmoid": 47807, + "name": "47807", + "geo": [ + { + "lat": 33.58, + "lon": 130.38, + "elev": 14, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FUKUOKA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47778", + "wmoid": 47778, + "name": "47778", + "geo": [ + { + "lat": 33.45, + "lon": 135.77, + "elev": 75, + "firstTime": 0, + "lastTime": 1693202400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SHIONOMISAKI", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-08-28 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47744", + "wmoid": 47744, + "name": "47744", + "geo": [ + { + "lat": 35.43, + "lon": 133.35, + "elev": 8, + "firstTime": 0, + "lastTime": 1258441200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YONAGO", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-11-17 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47681", + "wmoid": 47681, + "name": "RJNH", + "geo": [ + { + "lat": 34.73, + "lon": 137.67, + "elev": 48, + "firstTime": 0, + "lastTime": 1561917600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HAMAMATSU AB", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-06-30 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47678", + "wmoid": 47678, + "name": "47678", + "geo": [ + { + "lat": 33.12, + "lon": 139.78, + "elev": 80, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HACHIJOJIMA/OMURE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47646", + "wmoid": 47646, + "name": "47646", + "geo": [ + { + "lat": 36.05, + "lon": 140.13, + "elev": 31, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TATENO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47600", + "wmoid": 47600, + "name": "47600", + "geo": [ + { + "lat": 37.38, + "lon": 136.9, + "elev": 14, + "firstTime": 0, + "lastTime": 1708326000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WAJIMA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-02-19 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47590", + "wmoid": 47590, + "name": "47590", + "geo": [ + { + "lat": 38.27, + "lon": 140.9, + "elev": 43, + "firstTime": 0, + "lastTime": 1206986400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SENDAI", + "near_airport": "", + "gps_date": "", + "updateTime": "2008-03-31 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47582", + "wmoid": 47582, + "name": "47582", + "geo": [ + { + "lat": 39.72, + "lon": 140.1, + "elev": 21, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AKITA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47580", + "wmoid": 47580, + "name": "RJSM", + "geo": [ + { + "lat": 40.68, + "lon": 141.38, + "elev": 39, + "firstTime": 0, + "lastTime": 1585677600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MISAWA", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-03-31 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47420", + "wmoid": 47420, + "name": "47420", + "geo": [ + { + "lat": 43.33, + "lon": 145.58, + "elev": 26, + "firstTime": 0, + "lastTime": 1258441200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NEMURO", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-11-17 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47412", + "wmoid": 47412, + "name": "47412", + "geo": [ + { + "lat": 43.05, + "lon": 141.33, + "elev": 19, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SAPPORO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47401", + "wmoid": 47401, + "name": "47401", + "geo": [ + { + "lat": 45.42, + "lon": 141.68, + "elev": 11, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WAKKANAI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47185", + "wmoid": 47185, + "name": "47185", + "geo": [ + { + "lat": 33.28, + "lon": 126.17, + "elev": 73, + "firstTime": 0, + "lastTime": 1464717600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHEJU", + "near_airport": "", + "gps_date": "", + "updateTime": "2016-05-31 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47158", + "wmoid": 47158, + "name": "RKJJ", + "geo": [ + { + "lat": 35.12, + "lon": 126.82, + "elev": 13, + "firstTime": 0, + "lastTime": 1703746800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KWANGJU (KOR-AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-12-28 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47138", + "wmoid": 47138, + "name": "47138", + "geo": [ + { + "lat": 36.03, + "lon": 129.38, + "elev": 6, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "POHANG", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47122", + "wmoid": 47122, + "name": "RKSO", + "geo": [ + { + "lat": 37.1, + "lon": 127.03, + "elev": 12, + "firstTime": 0, + "lastTime": 1703746800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OSAN (US/KOR-AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-12-28 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47102", + "wmoid": 47102, + "name": "47102", + "geo": [ + { + "lat": 38.03, + "lon": 127.15, + "elev": 70, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHONGONG-NI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:45004", + "wmoid": 45004, + "name": "45004", + "geo": [ + { + "lat": 22.32, + "lon": 114.17, + "elev": 66, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KING'S PARK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:44292", + "wmoid": 44292, + "name": "44292", + "geo": [ + { + "lat": 47.93, + "lon": 106.98, + "elev": 1313, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ULAN-BATOR", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:44212", + "wmoid": 44212, + "name": "44212", + "geo": [ + { + "lat": 49.97, + "lon": 92.08, + "elev": 936, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ULAN-GOM", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43371", + "wmoid": 43371, + "name": "43371", + "geo": [ + { + "lat": 8.48, + "lon": 76.95, + "elev": 64, + "firstTime": 0, + "lastTime": 1698127200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "THIRUVANANTHAPURAM", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-10-24 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43369", + "wmoid": 43369, + "name": "43369", + "geo": [ + { + "lat": 8.3, + "lon": 73.15, + "elev": 2, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MINICOY ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43346", + "wmoid": 43346, + "name": "43346", + "geo": [ + { + "lat": 10.92, + "lon": 79.83, + "elev": 7, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KARAIKAL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43333", + "wmoid": 43333, + "name": "VEPB", + "geo": [ + { + "lat": 11.67, + "lon": 92.72, + "elev": 79, + "firstTime": 0, + "lastTime": 1711130400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PORT BLAIR", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-03-22 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43295", + "wmoid": 43295, + "name": "43295", + "geo": [ + { + "lat": 12.97, + "lon": 77.58, + "elev": 921, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BANGALORE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43285", + "wmoid": 43285, + "name": "43285", + "geo": [ + { + "lat": 12.95, + "lon": 74.83, + "elev": 31, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PANAMBUR", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43185", + "wmoid": 43185, + "name": "43185", + "geo": [ + { + "lat": 16.2, + "lon": 81.15, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MACHILIPATNAM", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43150", + "wmoid": 43150, + "name": "43150", + "geo": [ + { + "lat": 17.7, + "lon": 83.3, + "elev": 66, + "firstTime": 0, + "lastTime": 1714042800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VISHAKHAPATNAM/WALT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 05:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43128", + "wmoid": 43128, + "name": "VOHY", + "geo": [ + { + "lat": 17.45, + "lon": 78.47, + "elev": 545, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HYDERABAD (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43014", + "wmoid": 43014, + "name": "VAAU", + "geo": [ + { + "lat": 19.85, + "lon": 75.4, + "elev": 579, + "firstTime": 0, + "lastTime": 1714042800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AURANGABAD AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 05:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43003", + "wmoid": 43003, + "name": "VABB", + "geo": [ + { + "lat": 19.12, + "lon": 72.85, + "elev": 14, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BOMBAY/SANTACRUZ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42971", + "wmoid": 42971, + "name": "VEBS", + "geo": [ + { + "lat": 20.25, + "lon": 85.83, + "elev": 46, + "firstTime": 0, + "lastTime": 1714046400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BHUBANESWAR", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 06:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42874", + "wmoid": 42874, + "name": "42874", + "geo": [ + { + "lat": 21.22, + "lon": 81.67, + "elev": 298, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PBO RAIPUR", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42867", + "wmoid": 42867, + "name": "VANP", + "geo": [ + { + "lat": 21.1, + "lon": 79.05, + "elev": 310, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NAGPUR SONEGAON AFB", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42809", + "wmoid": 42809, + "name": "VECC", + "geo": [ + { + "lat": 22.65, + "lon": 88.45, + "elev": 6, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CALCUTTA/DUM DUM", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42724", + "wmoid": 42724, + "name": "VEAT", + "geo": [ + { + "lat": 23.88, + "lon": 91.25, + "elev": 16, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AGARTALA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42701", + "wmoid": 42701, + "name": "VERC", + "geo": [ + { + "lat": 23.32, + "lon": 85.32, + "elev": 652, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "RANCHI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42667", + "wmoid": 42667, + "name": "VABP", + "geo": [ + { + "lat": 23.28, + "lon": 77.35, + "elev": 523, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BHOPAL/BAIRAGARH", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42647", + "wmoid": 42647, + "name": "VAAH", + "geo": [ + { + "lat": 23.07, + "lon": 72.63, + "elev": 55, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AHMADABAD", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42492", + "wmoid": 42492, + "name": "VEPT", + "geo": [ + { + "lat": 25.6, + "lon": 85.1, + "elev": 60, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PATNA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42410", + "wmoid": 42410, + "name": "VEGT", + "geo": [ + { + "lat": 26.1, + "lon": 91.58, + "elev": 54, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GAUHATI (IN-AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42369", + "wmoid": 42369, + "name": "VILK", + "geo": [ + { + "lat": 26.75, + "lon": 80.88, + "elev": 128, + "firstTime": 0, + "lastTime": 1714042800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LUCKNOW/AMAUSI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 05:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42361", + "wmoid": 42361, + "name": "VIGR", + "geo": [ + { + "lat": 26.23, + "lon": 78.25, + "elev": 207, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GWALIOR (IN-AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42339", + "wmoid": 42339, + "name": "VIJO", + "geo": [ + { + "lat": 26.3, + "lon": 73.02, + "elev": 224, + "firstTime": 0, + "lastTime": 1713981600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JODHPUR (IN-AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42314", + "wmoid": 42314, + "name": "VEMN", + "geo": [ + { + "lat": 27.48, + "lon": 95.02, + "elev": 111, + "firstTime": 0, + "lastTime": 1713852000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DIBRUGARH/MOHANBARI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-23 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42182", + "wmoid": 42182, + "name": "VIDD", + "geo": [ + { + "lat": 28.58, + "lon": 77.2, + "elev": 216, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DELHI/SAFDARJUNG", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42101", + "wmoid": 42101, + "name": "42101", + "geo": [ + { + "lat": 30.33, + "lon": 76.47, + "elev": 251, + "firstTime": 0, + "lastTime": 1711778400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PATIALA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-03-30 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:41256", + "wmoid": 41256, + "name": "OOMS", + "geo": [ + { + "lat": 23.58, + "lon": 58.28, + "elev": 17, + "firstTime": 0, + "lastTime": 1714028400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SEEB INTL/MUSCAT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 01:00:00" +} , +{ + "id": "MD:V01:RAOB:station:41217", + "wmoid": 41217, + "name": "OMAA", + "geo": [ + { + "lat": 24.43, + "lon": 54.65, + "elev": 27, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ABU DHABI INTL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:41112", + "wmoid": 41112, + "name": "OEAB", + "geo": [ + { + "lat": 18.23, + "lon": 42.65, + "elev": 2084, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ABHA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:41024", + "wmoid": 41024, + "name": "OEJN", + "geo": [ + { + "lat": 21.67, + "lon": 39.15, + "elev": 17, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JEDDAH/ABDUL AZIZ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40800", + "wmoid": 40800, + "name": "OIFM", + "geo": [ + { + "lat": 32.62, + "lon": 51.67, + "elev": 1590, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ESFAHAN (CIV/AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40766", + "wmoid": 40766, + "name": "OICC", + "geo": [ + { + "lat": 34.27, + "lon": 47.12, + "elev": 1322, + "firstTime": 0, + "lastTime": 1713938400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KERMANSHAH/BAKTARAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40754", + "wmoid": 40754, + "name": "OIII", + "geo": [ + { + "lat": 35.68, + "lon": 51.35, + "elev": 1191, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TEHRAN/MEHRABAD AFB", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40582", + "wmoid": 40582, + "name": "OKBK", + "geo": [ + { + "lat": 29.22, + "lon": 47.98, + "elev": 55, + "firstTime": 0, + "lastTime": 1677092400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KUWAIT INTERNATIONAL AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-02-22 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40430", + "wmoid": 40430, + "name": "OEMA", + "geo": [ + { + "lat": 24.55, + "lon": 39.72, + "elev": 636, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MADINAH INTL ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40417", + "wmoid": 40417, + "name": "OEMF", + "geo": [ + { + "lat": 26.45, + "lon": 49.82, + "elev": 12, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KING FAHAD INTERNATIONAL APT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40375", + "wmoid": 40375, + "name": "OETB", + "geo": [ + { + "lat": 28.37, + "lon": 36.58, + "elev": 770, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TABUK (SAUD-AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40373", + "wmoid": 40373, + "name": "OEPA", + "geo": [ + { + "lat": 28.33, + "lon": 46.12, + "elev": 355, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HAFR AL-BATIN ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40179", + "wmoid": 40179, + "name": "40179", + "geo": [ + { + "lat": 32.0, + "lon": 34.82, + "elev": 30, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BET DAGAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:38341", + "wmoid": 38341, + "name": "38341", + "geo": [ + { + "lat": 42.85, + "lon": 71.38, + "elev": 653, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DZAMBUL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:36870", + "wmoid": 36870, + "name": "UAAA", + "geo": [ + { + "lat": 43.23, + "lon": 76.93, + "elev": 847, + "firstTime": 0, + "lastTime": 1342720800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALMA-ATA", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-07-19 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:35700", + "wmoid": 35700, + "name": "35700", + "geo": [ + { + "lat": 47.02, + "lon": 51.85, + "elev": -15, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GUR'EV", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:35394", + "wmoid": 35394, + "name": "35394", + "geo": [ + { + "lat": 49.8, + "lon": 73.13, + "elev": 553, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KARAGANDA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:35229", + "wmoid": 35229, + "name": "UATT", + "geo": [ + { + "lat": 50.28, + "lon": 57.15, + "elev": 224, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AKTJUBINSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:35121", + "wmoid": 35121, + "name": "35121", + "geo": [ + { + "lat": 51.78, + "lon": 55.22, + "elev": 109, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ORENBURG", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:34880", + "wmoid": 34880, + "name": "34880", + "geo": [ + { + "lat": 46.27, + "lon": 48.03, + "elev": -18, + "firstTime": 0, + "lastTime": 1348639200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ASTRAHAN'", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-09-26 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:34858", + "wmoid": 34858, + "name": "34858", + "geo": [ + { + "lat": 45.92, + "lon": 43.35, + "elev": 87, + "firstTime": 0, + "lastTime": 1713247200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DIVNOE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-16 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:34560", + "wmoid": 34560, + "name": "URWW", + "geo": [ + { + "lat": 48.68, + "lon": 44.35, + "elev": 145, + "firstTime": 0, + "lastTime": 1348639200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VOLGOGRAD", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-09-26 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:34247", + "wmoid": 34247, + "name": "34247", + "geo": [ + { + "lat": 50.42, + "lon": 41.05, + "elev": 93, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KALAC", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:34122", + "wmoid": 34122, + "name": "UUOO", + "geo": [ + { + "lat": 51.67, + "lon": 39.27, + "elev": 104, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VORONEZ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:34009", + "wmoid": 34009, + "name": "34009", + "geo": [ + { + "lat": 51.77, + "lon": 36.17, + "elev": 247, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KURSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:33791", + "wmoid": 33791, + "name": "33791", + "geo": [ + { + "lat": 43.03, + "lon": 33.22, + "elev": 125, + "firstTime": 0, + "lastTime": 1645642800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KRYVYI RIH", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-02-23 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:33345", + "wmoid": 33345, + "name": "UKKK", + "geo": [ + { + "lat": 50.4, + "lon": 30.45, + "elev": 167, + "firstTime": 0, + "lastTime": 1645686000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KIEV/ZHULYANY", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-02-24 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:32540", + "wmoid": 32540, + "name": "UHPP", + "geo": [ + { + "lat": 52.97, + "lon": 158.75, + "elev": 24, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PETROPAVLOVSK-KAMCHATSKIJ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:32150", + "wmoid": 32150, + "name": "UHSS", + "geo": [ + { + "lat": 46.92, + "lon": 142.73, + "elev": 31, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JUZNO-SAHALINSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:32061", + "wmoid": 32061, + "name": "32061", + "geo": [ + { + "lat": 50.9, + "lon": 142.17, + "elev": 31, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALEKSANDROVSK-SAHALINSKIJ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:31977", + "wmoid": 31977, + "name": "31977", + "geo": [ + { + "lat": 43.27, + "lon": 132.05, + "elev": 82, + "firstTime": 0, + "lastTime": 1713722400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SAD-GOROD", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-21 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:31873", + "wmoid": 31873, + "name": "31873", + "geo": [ + { + "lat": 45.87, + "lon": 133.73, + "elev": 107, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DAL'NERECENSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:31736", + "wmoid": 31736, + "name": "31736", + "geo": [ + { + "lat": 48.53, + "lon": 135.23, + "elev": 72, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HABAROVSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:31510", + "wmoid": 31510, + "name": "31510", + "geo": [ + { + "lat": 50.27, + "lon": 127.5, + "elev": 137, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BLAGOVESCENSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:31369", + "wmoid": 31369, + "name": "31369", + "geo": [ + { + "lat": 53.15, + "lon": 140.7, + "elev": 68, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NIKOLAEVSK-ON-AM", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:31300", + "wmoid": 31300, + "name": "31300", + "geo": [ + { + "lat": 53.75, + "lon": 127.23, + "elev": 232, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ZEJA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:31088", + "wmoid": 31088, + "name": "31088", + "geo": [ + { + "lat": 59.37, + "lon": 143.2, + "elev": 6, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OHOTSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:31004", + "wmoid": 31004, + "name": "31004", + "geo": [ + { + "lat": 58.62, + "lon": 125.37, + "elev": 682, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALDAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:30965", + "wmoid": 30965, + "name": "30965", + "geo": [ + { + "lat": 50.38, + "lon": 116.52, + "elev": 684, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BORZJA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:30935", + "wmoid": 30935, + "name": "30935", + "geo": [ + { + "lat": 50.37, + "lon": 108.75, + "elev": 770, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KRASNYJ CIKOJ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:30758", + "wmoid": 30758, + "name": "30758", + "geo": [ + { + "lat": 52.02, + "lon": 113.33, + "elev": 685, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHITA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:30715", + "wmoid": 30715, + "name": "30715", + "geo": [ + { + "lat": 52.48, + "lon": 103.85, + "elev": 450, + "firstTime": 0, + "lastTime": 1708801200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ANGARSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-02-24 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:30635", + "wmoid": 30635, + "name": "30635", + "geo": [ + { + "lat": 54.42, + "lon": 109.02, + "elev": 457, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "UST-BARGUZIN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:30554", + "wmoid": 30554, + "name": "30554", + "geo": [ + { + "lat": 54.62, + "lon": 113.13, + "elev": 995, + "firstTime": 0, + "lastTime": 1540965600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BOGDARIN", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-10-31 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:30372", + "wmoid": 30372, + "name": "30372", + "geo": [ + { + "lat": 56.92, + "lon": 118.37, + "elev": 711, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CARA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:30309", + "wmoid": 30309, + "name": "30309", + "geo": [ + { + "lat": 56.07, + "lon": 101.83, + "elev": 489, + "firstTime": 0, + "lastTime": 1708498800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BRATSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-02-21 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:30230", + "wmoid": 30230, + "name": "UIKK", + "geo": [ + { + "lat": 57.77, + "lon": 108.12, + "elev": 258, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KIRENSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:30054", + "wmoid": 30054, + "name": "30054", + "geo": [ + { + "lat": 59.45, + "lon": 112.58, + "elev": 193, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VITIM", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:29698", + "wmoid": 29698, + "name": "UINN", + "geo": [ + { + "lat": 54.88, + "lon": 99.03, + "elev": 410, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NIZNE-UDINSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:29634", + "wmoid": 29634, + "name": "UNNN", + "geo": [ + { + "lat": 55.03, + "lon": 82.9, + "elev": 176, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NOVOSIBIRSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:29612", + "wmoid": 29612, + "name": "29612", + "geo": [ + { + "lat": 55.37, + "lon": 78.37, + "elev": 120, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BARABINSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:29572", + "wmoid": 29572, + "name": "29572", + "geo": [ + { + "lat": 56.18, + "lon": 92.62, + "elev": 296, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "EMEL'JANOVO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:28952", + "wmoid": 28952, + "name": "28952", + "geo": [ + { + "lat": 53.22, + "lon": 63.62, + "elev": 156, + "firstTime": 0, + "lastTime": 1320649200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KUSTANAJ", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-11-07 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:28698", + "wmoid": 28698, + "name": "28698", + "geo": [ + { + "lat": 54.93, + "lon": 73.4, + "elev": 123, + "firstTime": 0, + "lastTime": 1540965600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OMSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-10-31 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:28445", + "wmoid": 28445, + "name": "28445", + "geo": [ + { + "lat": 56.73, + "lon": 61.07, + "elev": 290, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VERHNEE DUBROVO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:28275", + "wmoid": 28275, + "name": "28275", + "geo": [ + { + "lat": 58.15, + "lon": 68.18, + "elev": 44, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TOBOLSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:28225", + "wmoid": 28225, + "name": "28225", + "geo": [ + { + "lat": 57.95, + "lon": 56.2, + "elev": 170, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PERM", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:27995", + "wmoid": 27995, + "name": "27995", + "geo": [ + { + "lat": 52.98, + "lon": 49.43, + "elev": 45, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BEZENCUKSKAJA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:27962", + "wmoid": 27962, + "name": "UWPP", + "geo": [ + { + "lat": 53.13, + "lon": 45.02, + "elev": 174, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PENZA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:27707", + "wmoid": 27707, + "name": "27707", + "geo": [ + { + "lat": 54.12, + "lon": 35.33, + "elev": 239, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SUHINICI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:27612", + "wmoid": 27612, + "name": "27612", + "geo": [ + { + "lat": 55.75, + "lon": 37.57, + "elev": 156, + "firstTime": 0, + "lastTime": 1568656800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MOSCOW", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-09-16 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:27595", + "wmoid": 27595, + "name": "27595", + "geo": [ + { + "lat": 55.78, + "lon": 49.18, + "elev": 116, + "firstTime": 0, + "lastTime": 1508911200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KAZAN'", + "near_airport": "", + "gps_date": "", + "updateTime": "2017-10-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:27459", + "wmoid": 27459, + "name": "27459", + "geo": [ + { + "lat": 56.27, + "lon": 44.0, + "elev": 157, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NIZNIJ NOVGOROD", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:27199", + "wmoid": 27199, + "name": "27199", + "geo": [ + { + "lat": 58.6, + "lon": 49.63, + "elev": 158, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KIROV", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:27037", + "wmoid": 27037, + "name": "ULWW", + "geo": [ + { + "lat": 59.23, + "lon": 39.87, + "elev": 131, + "firstTime": 0, + "lastTime": 1298876400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VOLOGDA", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-02-28 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:26781", + "wmoid": 26781, + "name": "26781", + "geo": [ + { + "lat": 54.75, + "lon": 32.07, + "elev": 241, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SMOLENSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:26298", + "wmoid": 26298, + "name": "26298", + "geo": [ + { + "lat": 57.9, + "lon": 34.05, + "elev": 178, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BOLOGOE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:26063", + "wmoid": 26063, + "name": "ULLI", + "geo": [ + { + "lat": 59.97, + "lon": 30.3, + "elev": 4, + "firstTime": 0, + "lastTime": 1540965600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ST. PETERBURG", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-10-31 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:25913", + "wmoid": 25913, + "name": "UHMM", + "geo": [ + { + "lat": 59.58, + "lon": 150.78, + "elev": 118, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MAGADAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:25703", + "wmoid": 25703, + "name": "25703", + "geo": [ + { + "lat": 62.92, + "lon": 152.42, + "elev": 207, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SEJMCAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:25400", + "wmoid": 25400, + "name": "25400", + "geo": [ + { + "lat": 65.73, + "lon": 150.9, + "elev": 43, + "firstTime": 0, + "lastTime": 1540965600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ZYRJANKA", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-10-31 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:24959", + "wmoid": 24959, + "name": "UEEE", + "geo": [ + { + "lat": 62.08, + "lon": 129.75, + "elev": 103, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YAKUTSK AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:24908", + "wmoid": 24908, + "name": "24908", + "geo": [ + { + "lat": 60.33, + "lon": 102.27, + "elev": 260, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VANAVARA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:24688", + "wmoid": 24688, + "name": "24688", + "geo": [ + { + "lat": 63.27, + "lon": 143.15, + "elev": 745, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OJMJAKON", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:24641", + "wmoid": 24641, + "name": "24641", + "geo": [ + { + "lat": 63.77, + "lon": 121.62, + "elev": 107, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VILJUJSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:24266", + "wmoid": 24266, + "name": "24266", + "geo": [ + { + "lat": 67.55, + "lon": 133.38, + "elev": 137, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VERHOJANSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:24125", + "wmoid": 24125, + "name": "24125", + "geo": [ + { + "lat": 68.5, + "lon": 112.43, + "elev": 220, + "firstTime": 0, + "lastTime": 1540965600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "OLENEK", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-10-31 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:23955", + "wmoid": 23955, + "name": "23955", + "geo": [ + { + "lat": 60.43, + "lon": 77.87, + "elev": 47, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALEKSANDROVSKOE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:23921", + "wmoid": 23921, + "name": "23921", + "geo": [ + { + "lat": 60.68, + "lon": 60.43, + "elev": 101, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "IVDEL'", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:23472", + "wmoid": 23472, + "name": "23472", + "geo": [ + { + "lat": 65.78, + "lon": 87.95, + "elev": 32, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TURUHANSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:23330", + "wmoid": 23330, + "name": "23330", + "geo": [ + { + "lat": 66.53, + "lon": 66.53, + "elev": 16, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SALEHARD", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:23205", + "wmoid": 23205, + "name": "23205", + "geo": [ + { + "lat": 67.65, + "lon": 53.02, + "elev": 7, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NAR'JAN-MAR", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:22845", + "wmoid": 22845, + "name": "22845", + "geo": [ + { + "lat": 61.5, + "lon": 38.93, + "elev": 121, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KARGOPOL'", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:22550", + "wmoid": 22550, + "name": "ULAA", + "geo": [ + { + "lat": 64.53, + "lon": 40.58, + "elev": 5, + "firstTime": 0, + "lastTime": 1298876400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ARHANGEL'SK", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-02-28 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:22522", + "wmoid": 22522, + "name": "22522", + "geo": [ + { + "lat": 64.98, + "lon": 34.8, + "elev": 10, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KEM (PORT)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:22271", + "wmoid": 22271, + "name": "22271", + "geo": [ + { + "lat": 67.88, + "lon": 44.13, + "elev": 16, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SOJNA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:22217", + "wmoid": 22217, + "name": "22217", + "geo": [ + { + "lat": 67.15, + "lon": 32.35, + "elev": 26, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KANDALAKSA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:22113", + "wmoid": 22113, + "name": "ULMM", + "geo": [ + { + "lat": 68.97, + "lon": 33.05, + "elev": 51, + "firstTime": 0, + "lastTime": 1540965600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MURMANSK", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-10-31 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:21946", + "wmoid": 21946, + "name": "21946", + "geo": [ + { + "lat": 70.62, + "lon": 147.9, + "elev": 61, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "COKURDAH", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:21824", + "wmoid": 21824, + "name": "21824", + "geo": [ + { + "lat": 71.58, + "lon": 128.92, + "elev": 8, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TIKSI", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:17607", + "wmoid": 17607, + "name": "LCNC", + "geo": [ + { + "lat": 35.15, + "lon": 33.4, + "elev": 161, + "firstTime": 0, + "lastTime": 1507118400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NICOSIA/ATHALASSA", + "near_airport": "", + "gps_date": "", + "updateTime": "2017-10-04 06:00:00" +} , +{ + "id": "MD:V01:RAOB:station:17351", + "wmoid": 17351, + "name": "17351", + "geo": [ + { + "lat": 37.05, + "lon": 35.35, + "elev": 28, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ADANA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:17240", + "wmoid": 17240, + "name": "LTBM", + "geo": [ + { + "lat": 37.75, + "lon": 30.55, + "elev": 997, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ISPARTA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:17220", + "wmoid": 17220, + "name": "17220", + "geo": [ + { + "lat": 38.43, + "lon": 27.17, + "elev": 25, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "IZMIR", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:17130", + "wmoid": 17130, + "name": "17130", + "geo": [ + { + "lat": 39.95, + "lon": 32.88, + "elev": 894, + "firstTime": 0, + "lastTime": 1704394800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ANKARA/CENTRAL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-01-04 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:17062", + "wmoid": 17062, + "name": "17062", + "geo": [ + { + "lat": 40.97, + "lon": 29.08, + "elev": 33, + "firstTime": 0, + "lastTime": 1387911600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ISTANBUL/GOZTEPE", + "near_airport": "", + "gps_date": "", + "updateTime": "2013-12-24 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:17030", + "wmoid": 17030, + "name": "17030", + "geo": [ + { + "lat": 41.28, + "lon": 36.33, + "elev": 4, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SAMSUN CITY", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:16716", + "wmoid": 16716, + "name": "LGAT", + "geo": [ + { + "lat": 37.9, + "lon": 23.73, + "elev": 14, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ATHENS/HELLENKION", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:16622", + "wmoid": 16622, + "name": "LGTS", + "geo": [ + { + "lat": 40.52, + "lon": 22.97, + "elev": 4, + "firstTime": 0, + "lastTime": 1714046400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "THESSALONIKI/MIKRA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 06:00:00" +} , +{ + "id": "MD:V01:RAOB:station:16560", + "wmoid": 16560, + "name": "LIEE", + "geo": [ + { + "lat": 39.25, + "lon": 9.05, + "elev": 7, + "firstTime": 0, + "lastTime": 1330538400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CAGLIARI/ELMAS(AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-02-29 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:16429", + "wmoid": 16429, + "name": "LICT", + "geo": [ + { + "lat": 37.92, + "lon": 12.5, + "elev": 14, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TRAPANI/BIRGI (AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:16320", + "wmoid": 16320, + "name": "LIBR", + "geo": [ + { + "lat": 40.65, + "lon": 17.95, + "elev": 10, + "firstTime": 0, + "lastTime": 1615183200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BRINDISI/CASALE AFB", + "near_airport": "", + "gps_date": "", + "updateTime": "2021-03-07 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:16245", + "wmoid": 16245, + "name": "LIRE", + "geo": [ + { + "lat": 41.65, + "lon": 12.43, + "elev": 12, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PRATICA DI MARE(AB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:16144", + "wmoid": 16144, + "name": "16144", + "geo": [ + { + "lat": 44.65, + "lon": 11.62, + "elev": 38, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "S. PIETRO CAPOFIUME", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:16080", + "wmoid": 16080, + "name": "LIML", + "geo": [ + { + "lat": 45.43, + "lon": 9.28, + "elev": 103, + "firstTime": 0, + "lastTime": 1621832400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MILANO/LINATE", + "near_airport": "", + "gps_date": "", + "updateTime": "2021-05-23 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:16044", + "wmoid": 16044, + "name": "LIPD", + "geo": [ + { + "lat": 46.03, + "lon": 13.18, + "elev": 92, + "firstTime": 0, + "lastTime": 1466096400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "UDINE/CAMPOFORMIDO", + "near_airport": "", + "gps_date": "", + "updateTime": "2016-06-16 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:15614", + "wmoid": 15614, + "name": "LBSF", + "geo": [ + { + "lat": 42.65, + "lon": 23.38, + "elev": 595, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SOFIA (OBSERVATORY)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:15420", + "wmoid": 15420, + "name": "LRBS", + "geo": [ + { + "lat": 44.5, + "lon": 26.13, + "elev": 91, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BUCHAREST/BANEASA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:15120", + "wmoid": 15120, + "name": "LRCL", + "geo": [ + { + "lat": 46.78, + "lon": 23.57, + "elev": 413, + "firstTime": 0, + "lastTime": 1351058400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CLUJ-NAPOCA/SOMESEN", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-10-24 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:14240", + "wmoid": 14240, + "name": "LDDD", + "geo": [ + { + "lat": 45.82, + "lon": 16.03, + "elev": 123, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ZAGREB\\MAKSIMIR", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:12843", + "wmoid": 12843, + "name": "12843", + "geo": [ + { + "lat": 47.43, + "lon": 19.18, + "elev": 139, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BUDAPEST/LORINC", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:12425", + "wmoid": 12425, + "name": "12425", + "geo": [ + { + "lat": 51.13, + "lon": 16.98, + "elev": 116, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WROCLAW/MALY GADOW", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:12374", + "wmoid": 12374, + "name": "12374", + "geo": [ + { + "lat": 52.4, + "lon": 20.97, + "elev": 96, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LEGIONOWO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:12120", + "wmoid": 12120, + "name": "12120", + "geo": [ + { + "lat": 54.75, + "lon": 17.53, + "elev": 2, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LEBA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:11952", + "wmoid": 11952, + "name": "11952", + "geo": [ + { + "lat": 49.03, + "lon": 20.32, + "elev": 701, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "POPRAD/GANOVCE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:11520", + "wmoid": 11520, + "name": "11520", + "geo": [ + { + "lat": 50.0, + "lon": 14.45, + "elev": 303, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PRAGUE/LIBUS", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:11035", + "wmoid": 11035, + "name": "11035", + "geo": [ + { + "lat": 48.25, + "lon": 16.37, + "elev": 200, + "firstTime": 0, + "lastTime": 1569909600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WIEN/HOHE WARTE", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-01 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:10868", + "wmoid": 10868, + "name": "10868", + "geo": [ + { + "lat": 48.25, + "lon": 11.55, + "elev": 489, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MUENCHEN/OBERSCHLEISSHEIM", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:10771", + "wmoid": 10771, + "name": "ETGK", + "geo": [ + { + "lat": 49.43, + "lon": 11.9, + "elev": 419, + "firstTime": 0, + "lastTime": 1568116800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KUEMMERSBRUCK", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-09-10 06:00:00" +} , +{ + "id": "MD:V01:RAOB:station:10739", + "wmoid": 10739, + "name": "10739", + "geo": [ + { + "lat": 48.83, + "lon": 9.2, + "elev": 315, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "STUTTGART/SCHNARRENBERG", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:10618", + "wmoid": 10618, + "name": "ETGI", + "geo": [ + { + "lat": 49.7, + "lon": 7.33, + "elev": 376, + "firstTime": 0, + "lastTime": 1568116800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "IDAR-OBERSTEIN(MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-09-10 06:00:00" +} , +{ + "id": "MD:V01:RAOB:station:10548", + "wmoid": 10548, + "name": "10548", + "geo": [ + { + "lat": 50.57, + "lon": 10.37, + "elev": 450, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MEININGEN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:10410", + "wmoid": 10410, + "name": "EDZE", + "geo": [ + { + "lat": 51.4, + "lon": 6.97, + "elev": 153, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ESSEN/MULHEIM", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:10393", + "wmoid": 10393, + "name": "10393", + "geo": [ + { + "lat": 52.22, + "lon": 14.12, + "elev": 115, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LINDENBERG", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:10238", + "wmoid": 10238, + "name": "ETGB", + "geo": [ + { + "lat": 52.82, + "lon": 9.93, + "elev": 69, + "firstTime": 0, + "lastTime": 1568113200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BERGEN (MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-09-10 05:00:00" +} , +{ + "id": "MD:V01:RAOB:station:10200", + "wmoid": 10200, + "name": "EDWE", + "geo": [ + { + "lat": 52.38, + "lon": 7.23, + "elev": 5, + "firstTime": 0, + "lastTime": 1314810000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "EMDEN/KOENIGSPOLDER", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-08-31 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:10184", + "wmoid": 10184, + "name": "10184", + "geo": [ + { + "lat": 54.1, + "lon": 13.4, + "elev": 6, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GREIFSWALD", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:10035", + "wmoid": 10035, + "name": "10035", + "geo": [ + { + "lat": 54.53, + "lon": 9.55, + "elev": 48, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SCHLESWIG", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:8594", + "wmoid": 8594, + "name": "GVAC", + "geo": [ + { + "lat": 16.73, + "lon": -22.95, + "elev": 55, + "firstTime": 0, + "lastTime": 1498586400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SAL ISL/AMILCAR CAB", + "near_airport": "", + "gps_date": "", + "updateTime": "2017-06-27 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:8579", + "wmoid": 8579, + "name": "8579", + "geo": [ + { + "lat": 38.77, + "lon": -9.13, + "elev": 105, + "firstTime": 0, + "lastTime": 1577905200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LISBON/GAGO COUTINHO", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-01 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:8522", + "wmoid": 8522, + "name": "8522", + "geo": [ + { + "lat": 32.63, + "lon": -16.9, + "elev": 56, + "firstTime": 0, + "lastTime": 1668538800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FUNCHAL", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-11-15 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:8508", + "wmoid": 8508, + "name": "8508", + "geo": [ + { + "lat": 38.73, + "lon": -27.07, + "elev": 113, + "firstTime": 0, + "lastTime": 1668538800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LAJES/SANTA RITA", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-11-15 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:8495", + "wmoid": 8495, + "name": "LXGB", + "geo": [ + { + "lat": 36.15, + "lon": -5.33, + "elev": 3, + "firstTime": 0, + "lastTime": 1443790800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GIBRALTAR (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-10-02 07:00:00" +} , +{ + "id": "MD:V01:RAOB:station:8430", + "wmoid": 8430, + "name": "8430", + "geo": [ + { + "lat": 38.0, + "lon": -1.17, + "elev": 62, + "firstTime": 0, + "lastTime": 1450378800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MURCIA CITY", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-12-17 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:8023", + "wmoid": 8023, + "name": "8023", + "geo": [ + { + "lat": 43.47, + "lon": -3.82, + "elev": 65, + "firstTime": 0, + "lastTime": 1450378800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SANTANDER CITY", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-12-17 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:8001", + "wmoid": 8001, + "name": "8001", + "geo": [ + { + "lat": 43.37, + "lon": -8.42, + "elev": 67, + "firstTime": 0, + "lastTime": 1450378800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LA CORUNA CITY", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-12-17 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:7761", + "wmoid": 7761, + "name": "LFKJ", + "geo": [ + { + "lat": 41.92, + "lon": 8.8, + "elev": 5, + "firstTime": 0, + "lastTime": 1531112400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AJACCIO/CAMPO ORO", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-07-08 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:7645", + "wmoid": 7645, + "name": "LFME", + "geo": [ + { + "lat": 43.87, + "lon": 4.4, + "elev": 60, + "firstTime": 0, + "lastTime": 1530507600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NIMES/COURBESSAC", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-07-01 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:7510", + "wmoid": 7510, + "name": "LFBD", + "geo": [ + { + "lat": 44.83, + "lon": -0.7, + "elev": 45, + "firstTime": 0, + "lastTime": 1531112400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BORDEAUX/MERIGNAC", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-07-08 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:7481", + "wmoid": 7481, + "name": "LFLL", + "geo": [ + { + "lat": 45.73, + "lon": 5.08, + "elev": 248, + "firstTime": 0, + "lastTime": 1298898000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LYON/SATOLAS", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-02-28 06:00:00" +} , +{ + "id": "MD:V01:RAOB:station:7180", + "wmoid": 7180, + "name": "LFSN", + "geo": [ + { + "lat": 48.68, + "lon": 6.22, + "elev": 225, + "firstTime": 0, + "lastTime": 1303405200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NANCY/ESSEY", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-04-21 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:7145", + "wmoid": 7145, + "name": "7145", + "geo": [ + { + "lat": 48.77, + "lon": 2.02, + "elev": 168, + "firstTime": 0, + "lastTime": 1531112400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TRAPPES (AUT)", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-07-08 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:7110", + "wmoid": 7110, + "name": "LFRB", + "geo": [ + { + "lat": 48.45, + "lon": -4.42, + "elev": 99, + "firstTime": 0, + "lastTime": 1531112400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BREST/GUIPAVAS", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-07-08 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:6610", + "wmoid": 6610, + "name": "LSMP", + "geo": [ + { + "lat": 46.82, + "lon": 6.95, + "elev": 490, + "firstTime": 0, + "lastTime": 1520229600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PAYERNE (MIL/AUT)", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-03-04 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:6260", + "wmoid": 6260, + "name": "EHDB", + "geo": [ + { + "lat": 52.1, + "lon": 5.18, + "elev": 2, + "firstTime": 0, + "lastTime": 1414998000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DE BILT", + "near_airport": "", + "gps_date": "", + "updateTime": "2014-11-03 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:6181", + "wmoid": 6181, + "name": "6181", + "geo": [ + { + "lat": 55.77, + "lon": 12.53, + "elev": 40, + "firstTime": 0, + "lastTime": 0, + "updateTime": 0 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KOEBENHAVN\\JAEGERSBORG", + "near_airport": "", + "gps_date": "", + "updateTime": "" +} , +{ + "id": "MD:V01:RAOB:station:6011", + "wmoid": 6011, + "name": "6011", + "geo": [ + { + "lat": 62.02, + "lon": -6.77, + "elev": 55, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "THORSHAVN (PORT)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:4360", + "wmoid": 4360, + "name": "BGAM", + "geo": [ + { + "lat": 65.6, + "lon": -37.63, + "elev": 50, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ANGMAGSSALIK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:4339", + "wmoid": 4339, + "name": "BGSC", + "geo": [ + { + "lat": 70.48, + "lon": -21.97, + "elev": 66, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SCORESBYSUND", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:4320", + "wmoid": 4320, + "name": "BGDH", + "geo": [ + { + "lat": 76.77, + "lon": -18.67, + "elev": 12, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DANMARKSHAVN (PORT)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:4270", + "wmoid": 4270, + "name": "BGBW", + "geo": [ + { + "lat": 61.18, + "lon": -45.43, + "elev": 4, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NARSSARSSUAQ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:4220", + "wmoid": 4220, + "name": "BGEM", + "geo": [ + { + "lat": 68.7, + "lon": -52.75, + "elev": 40, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "EGEDESMINDE/AUSIAT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:4018", + "wmoid": 4018, + "name": "BIKF", + "geo": [ + { + "lat": 63.97, + "lon": -22.6, + "elev": 54, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KEFLAVIK (CIV\\NAS)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:3953", + "wmoid": 3953, + "name": "3953", + "geo": [ + { + "lat": 51.93, + "lon": -10.25, + "elev": 9, + "firstTime": 0, + "lastTime": 1602698400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VALENTIA OBSERVATORY", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-10-14 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:3918", + "wmoid": 3918, + "name": "3918", + "geo": [ + { + "lat": 54.3, + "lon": -6.19, + "elev": 15, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CASTOR BAY", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:3882", + "wmoid": 3882, + "name": "3882", + "geo": [ + { + "lat": 50.9, + "lon": 0.32, + "elev": 54, + "firstTime": 0, + "lastTime": 1712984400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HERSTOMONCEUX WEST", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-12 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:3808", + "wmoid": 3808, + "name": "3808", + "geo": [ + { + "lat": 50.22, + "lon": -5.32, + "elev": 87, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CAMBORNE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:3238", + "wmoid": 3238, + "name": "3238", + "geo": [ + { + "lat": 55.01, + "lon": -1.52, + "elev": 141, + "firstTime": 0, + "lastTime": 1713416400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALBEMARLE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-17 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:3005", + "wmoid": 3005, + "name": "3005", + "geo": [ + { + "lat": 60.13, + "lon": -1.18, + "elev": 82, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LERWICK/SHETLAND IS", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:2963", + "wmoid": 2963, + "name": "2963", + "geo": [ + { + "lat": 60.82, + "lon": 23.5, + "elev": 103, + "firstTime": 0, + "lastTime": 1509537600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JOKIOINEN", + "near_airport": "", + "gps_date": "", + "updateTime": "2017-11-01 06:00:00" +} , +{ + "id": "MD:V01:RAOB:station:2935", + "wmoid": 2935, + "name": "EFJY", + "geo": [ + { + "lat": 62.4, + "lon": 25.67, + "elev": 139, + "firstTime": 0, + "lastTime": 1483232400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JYVASKYLA (MIL/CIV)", + "near_airport": "", + "gps_date": "", + "updateTime": "2016-12-31 18:00:00" +} , +{ + "id": "MD:V01:RAOB:station:2836", + "wmoid": 2836, + "name": "EFSO", + "geo": [ + { + "lat": 67.37, + "lon": 26.65, + "elev": 178, + "firstTime": 0, + "lastTime": 1509516000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SODANKYLA", + "near_airport": "", + "gps_date": "", + "updateTime": "2017-11-01 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:2591", + "wmoid": 2591, + "name": "ESQV", + "geo": [ + { + "lat": 57.65, + "lon": 18.35, + "elev": 45, + "firstTime": 0, + "lastTime": 1584079200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VISBY AERO STATION", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-03-13 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:2527", + "wmoid": 2527, + "name": "ESGG", + "geo": [ + { + "lat": 57.67, + "lon": 12.3, + "elev": 155, + "firstTime": 0, + "lastTime": 1593496800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GOTEBORG/LANDVETTER", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-06-30 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:2365", + "wmoid": 2365, + "name": "ESNN", + "geo": [ + { + "lat": 62.53, + "lon": 17.47, + "elev": 6, + "firstTime": 0, + "lastTime": 1593108000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SUNDSVALL/HARNOSAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-06-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:2185", + "wmoid": 2185, + "name": "ESPA", + "geo": [ + { + "lat": 65.55, + "lon": 22.13, + "elev": 16, + "firstTime": 0, + "lastTime": 1573801200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LULEA/KALLAX (AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-11-15 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:1415", + "wmoid": 1415, + "name": "ENZV", + "geo": [ + { + "lat": 58.87, + "lon": 5.67, + "elev": 33, + "firstTime": 0, + "lastTime": 1587016800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "STAVANGER/SOLA(AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-04-16 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:1241", + "wmoid": 1241, + "name": "ENOL", + "geo": [ + { + "lat": 63.7, + "lon": 9.6, + "elev": 7, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ORLAND III(NOR-AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:1152", + "wmoid": 1152, + "name": "ENBO", + "geo": [ + { + "lat": 67.25, + "lon": 14.4, + "elev": 8, + "firstTime": 0, + "lastTime": 1416942000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BODO VI (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2014-11-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:1028", + "wmoid": 1028, + "name": "ENBJ", + "geo": [ + { + "lat": 74.52, + "lon": 19.02, + "elev": 18, + "firstTime": 0, + "lastTime": 1601143200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BJORNOYA ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-09-26 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:1004", + "wmoid": 1004, + "name": "ENAS", + "geo": [ + { + "lat": 78.92, + "lon": 11.93, + "elev": 8, + "firstTime": 0, + "lastTime": 1712426400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NY-ALESUND II", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-06 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:1001", + "wmoid": 1001, + "name": "ENJA", + "geo": [ + { + "lat": 70.93, + "lon": -8.67, + "elev": 9, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "JAN MAYEN(NOR-NAVY)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68424", + "wmoid": 68424, + "name": "FAUP", + "geo": [ + { + "lat": -28.4, + "lon": 21.27, + "elev": 836, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "UPINGTON/PIERRE VAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68512", + "wmoid": 68512, + "name": "FASB", + "geo": [ + { + "lat": -29.67, + "lon": 17.87, + "elev": 1006, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SPRINGBOK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68906", + "wmoid": 68906, + "name": "FAGE", + "geo": [ + { + "lat": -40.35, + "lon": -9.88, + "elev": 54, + "firstTime": 0, + "lastTime": 1713463200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GOUGH ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-18 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70026", + "wmoid": 70026, + "name": "BRW", + "geo": [ + { + "lat": 71.3, + "lon": -156.78, + "elev": 12, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "POINT BARROW", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70133", + "wmoid": 70133, + "name": "OTZ", + "geo": [ + { + "lat": 66.87, + "lon": -162.63, + "elev": 5, + "firstTime": 1376719200, + "lastTime": 1713808800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KOTZEBUE", + "near_airport": "", + "gps_date": "2013-08-17", + "updateTime": "2024-04-22 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70200", + "wmoid": 70200, + "name": "OME", + "geo": [ + { + "lat": 64.5, + "lon": -165.43, + "elev": 5, + "firstTime": 1248415200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NOME AP", + "near_airport": "", + "gps_date": "2009-07-24", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70219", + "wmoid": 70219, + "name": "BET", + "geo": [ + { + "lat": 60.78, + "lon": -161.8, + "elev": 36, + "firstTime": 1282543200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BETHEL", + "near_airport": "", + "gps_date": "2010-08-23", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70231", + "wmoid": 70231, + "name": "MCG", + "geo": [ + { + "lat": 62.97, + "lon": -155.62, + "elev": 103, + "firstTime": 1376978400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MCGRATH", + "near_airport": "", + "gps_date": "2013-08-20", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70261", + "wmoid": 70261, + "name": "FAI", + "geo": [ + { + "lat": 64.82, + "lon": -147.87, + "elev": 135, + "firstTime": 1250488800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FAIRBANKS", + "near_airport": "", + "gps_date": "2009-08-17", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70273", + "wmoid": 70273, + "name": "ANC", + "geo": [ + { + "lat": 61.17, + "lon": -150.02, + "elev": 45, + "firstTime": 1216620000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ANCHORAGE IAP/PT. CAMPBE", + "near_airport": "", + "gps_date": "2008-07-21", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70308", + "wmoid": 70308, + "name": "SNP", + "geo": [ + { + "lat": 57.15, + "lon": -170.22, + "elev": 10, + "firstTime": 1283148000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ST PAUL ISLAND", + "near_airport": "", + "gps_date": "2010-08-30", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70316", + "wmoid": 70316, + "name": "CDB", + "geo": [ + { + "lat": 55.2, + "lon": -162.72, + "elev": 30, + "firstTime": 1379829600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "COLD BAY", + "near_airport": "", + "gps_date": "2013-09-22", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70326", + "wmoid": 70326, + "name": "AKN", + "geo": [ + { + "lat": 58.68, + "lon": -156.65, + "elev": 15, + "firstTime": 1248069600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KING SALMON", + "near_airport": "", + "gps_date": "2009-07-20", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70350", + "wmoid": 70350, + "name": "ADQ", + "geo": [ + { + "lat": 57.75, + "lon": -152.48, + "elev": 4, + "firstTime": 0, + "lastTime": 1713765600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KODIAK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-22 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70361", + "wmoid": 70361, + "name": "YAK", + "geo": [ + { + "lat": 59.52, + "lon": -139.67, + "elev": 10, + "firstTime": 1255154400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YAKUTAT", + "near_airport": "", + "gps_date": "2009-10-10", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:70414", + "wmoid": 70414, + "name": "SYA", + "geo": [ + { + "lat": 52.72, + "lon": -174.1, + "elev": 37, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SHEMYA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71043", + "wmoid": 71043, + "name": "YVQ", + "geo": [ + { + "lat": 65.28, + "lon": -126.75, + "elev": 95, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NORMAN WELLS (UA)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71081", + "wmoid": 71081, + "name": "YUX", + "geo": [ + { + "lat": 68.78, + "lon": -81.25, + "elev": 7, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HALL BEACH/HALL LK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71082", + "wmoid": 71082, + "name": "YLT", + "geo": [ + { + "lat": 82.5, + "lon": -62.33, + "elev": 66, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALERT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71600", + "wmoid": 71600, + "name": "YSA", + "geo": [ + { + "lat": 43.93, + "lon": -60.02, + "elev": 4, + "firstTime": 0, + "lastTime": 1566367200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SABLE ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-08-21 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71801", + "wmoid": 71801, + "name": "YYT", + "geo": [ + { + "lat": 47.67, + "lon": -52.75, + "elev": 140, + "firstTime": 0, + "lastTime": 1250186400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TORBAY/ST JOHNS", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-08-13 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71815", + "wmoid": 71815, + "name": "YJT", + "geo": [ + { + "lat": 48.53, + "lon": -58.55, + "elev": 60, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "STEPHENVILLE/HARMON AFB", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71906", + "wmoid": 71906, + "name": "YVP", + "geo": [ + { + "lat": 58.1, + "lon": -68.42, + "elev": 60, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KUUJJUAQ (UA)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71907", + "wmoid": 71907, + "name": "YPH", + "geo": [ + { + "lat": 58.45, + "lon": -78.12, + "elev": 26, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "INUKJUAK", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71909", + "wmoid": 71909, + "name": "YVN", + "geo": [ + { + "lat": 63.75, + "lon": -68.55, + "elev": 35, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "IQALUIT (UA)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71913", + "wmoid": 71913, + "name": "YYQ", + "geo": [ + { + "lat": 58.75, + "lon": -94.07, + "elev": 29, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CHURCHILL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71915", + "wmoid": 71915, + "name": "YZS", + "geo": [ + { + "lat": 64.2, + "lon": -83.37, + "elev": 57, + "firstTime": 0, + "lastTime": 1504202400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CORAL HARBOUR", + "near_airport": "", + "gps_date": "", + "updateTime": "2017-08-31 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71917", + "wmoid": 71917, + "name": "YEU", + "geo": [ + { + "lat": 79.98, + "lon": -85.93, + "elev": 10, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "EUREKA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71924", + "wmoid": 71924, + "name": "YRB", + "geo": [ + { + "lat": 74.72, + "lon": -94.98, + "elev": 40, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "RESOLUTE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71925", + "wmoid": 71925, + "name": "YCB", + "geo": [ + { + "lat": 69.1, + "lon": -105.12, + "elev": 25, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CAMBRIDGE BAY", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71926", + "wmoid": 71926, + "name": "YBK", + "geo": [ + { + "lat": 64.3, + "lon": -96.0, + "elev": 49, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BAKER LAKE (UA)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71934", + "wmoid": 71934, + "name": "YSM", + "geo": [ + { + "lat": 60.03, + "lon": -111.95, + "elev": 203, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FT SMITH (UA)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71945", + "wmoid": 71945, + "name": "YYE", + "geo": [ + { + "lat": 58.83, + "lon": -122.6, + "elev": 377, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FORT NELSON UA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71957", + "wmoid": 71957, + "name": "YEV", + "geo": [ + { + "lat": 68.32, + "lon": -133.53, + "elev": 103, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "INUVIK (UA)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71964", + "wmoid": 71964, + "name": "YXY", + "geo": [ + { + "lat": 60.72, + "lon": -135.07, + "elev": 704, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WHITEHORSE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:76654", + "wmoid": 76654, + "name": "MMZL", + "geo": [ + { + "lat": 19.07, + "lon": -104.33, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MANZANILLO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:76692", + "wmoid": 76692, + "name": "VER", + "geo": [ + { + "lat": 19.17, + "lon": -96.12, + "elev": 13, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VERACRUZ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78016", + "wmoid": 78016, + "name": "XKF", + "geo": [ + { + "lat": 32.37, + "lon": -64.68, + "elev": 37, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BERMUDA/(MCKINDLY AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78397", + "wmoid": 78397, + "name": "KJP", + "geo": [ + { + "lat": 17.93, + "lon": -76.78, + "elev": 1, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KINGSTON/PALISADOES", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78526", + "wmoid": 78526, + "name": "JSJ", + "geo": [ + { + "lat": 18.43, + "lon": -66.0, + "elev": 3, + "firstTime": 1267426800, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SAN JUAN/ISLA VERDE", + "near_airport": "", + "gps_date": "2010-03-01", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78583", + "wmoid": 78583, + "name": "ZBZ", + "geo": [ + { + "lat": 17.53, + "lon": -88.3, + "elev": 5, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BELIZE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78762", + "wmoid": 78762, + "name": "ROL", + "geo": [ + { + "lat": 9.98, + "lon": -84.22, + "elev": 920, + "firstTime": 0, + "lastTime": 1622743200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SAN JOSE/JUAN SANTA MARIA", + "near_airport": "", + "gps_date": "", + "updateTime": "2021-06-03 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78866", + "wmoid": 78866, + "name": "ACM", + "geo": [ + { + "lat": 18.05, + "lon": -63.12, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SINT MARTIN/JULIANA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78897", + "wmoid": 78897, + "name": "FFR", + "geo": [ + { + "lat": 16.27, + "lon": -61.52, + "elev": 8, + "firstTime": 0, + "lastTime": 1572411600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "POINT A PITRE/RAIZET", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-29 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78954", + "wmoid": 78954, + "name": "BDI", + "geo": [ + { + "lat": 13.07, + "lon": -59.5, + "elev": 47, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SEAWELL APT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78970", + "wmoid": 78970, + "name": "KPP", + "geo": [ + { + "lat": 10.58, + "lon": -61.35, + "elev": 12, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TRINIDAD/PIARCO IAP", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:80222", + "wmoid": 80222, + "name": "SKBO", + "geo": [ + { + "lat": 4.7, + "lon": -74.13, + "elev": 2548, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BOGOTA/ELDORADO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:81405", + "wmoid": 81405, + "name": "SOCA", + "geo": [ + { + "lat": 4.83, + "lon": -52.37, + "elev": 9, + "firstTime": 0, + "lastTime": 1572411600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CAYENNE/ROCHAMBEAU", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-29 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82332", + "wmoid": 82332, + "name": "SBMN", + "geo": [ + { + "lat": -3.15, + "lon": -59.98, + "elev": 84, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MANAUS/PONTA PELADA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82397", + "wmoid": 82397, + "name": "82397", + "geo": [ + { + "lat": -3.73, + "lon": -38.55, + "elev": 19, + "firstTime": 0, + "lastTime": 1564164000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "FORTALEZA", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-07-26 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82824", + "wmoid": 82824, + "name": "SBPV", + "geo": [ + { + "lat": -8.77, + "lon": -63.92, + "elev": 88, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PORTO VELHO(CV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82900", + "wmoid": 82900, + "name": "82900", + "geo": [ + { + "lat": -8.05, + "lon": -34.92, + "elev": 7, + "firstTime": 0, + "lastTime": 1575745200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "RECIFE/CURADO", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-12-07 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82965", + "wmoid": 82965, + "name": "SBAT", + "geo": [ + { + "lat": -9.87, + "lon": -56.1, + "elev": 288, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALTA FLORESTA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82983", + "wmoid": 82983, + "name": "82983", + "geo": [ + { + "lat": -9.38, + "lon": -40.48, + "elev": 370, + "firstTime": 0, + "lastTime": 1601229600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PETROLINA", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-09-27 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83362", + "wmoid": 83362, + "name": "SBCY", + "geo": [ + { + "lat": -15.65, + "lon": -56.1, + "elev": 182, + "firstTime": 0, + "lastTime": 1632938400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CUIABA/MARECHAL", + "near_airport": "", + "gps_date": "", + "updateTime": "2021-09-29 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83378", + "wmoid": 83378, + "name": "SBBR", + "geo": [ + { + "lat": -15.87, + "lon": -47.93, + "elev": 1061, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BRASILIA (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83566", + "wmoid": 83566, + "name": "83566", + "geo": [ + { + "lat": -19.62, + "lon": -43.57, + "elev": 827, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CONFIS INTNL ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83612", + "wmoid": 83612, + "name": "SBCG", + "geo": [ + { + "lat": -20.47, + "lon": -54.67, + "elev": 556, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CAMPO GRANDE INTL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83650", + "wmoid": 83650, + "name": "83650", + "geo": [ + { + "lat": -20.5, + "lon": -29.32, + "elev": 5, + "firstTime": 0, + "lastTime": 1555437600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TRINDADE ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-04-16 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83746", + "wmoid": 83746, + "name": "SBGL", + "geo": [ + { + "lat": -22.82, + "lon": -43.25, + "elev": 6, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GALEAO/RIO(CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83779", + "wmoid": 83779, + "name": "SBMT", + "geo": [ + { + "lat": -23.52, + "lon": -46.63, + "elev": 722, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MARTE (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83840", + "wmoid": 83840, + "name": "SBCT", + "geo": [ + { + "lat": -25.52, + "lon": -49.17, + "elev": 908, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CURITIBA/AFONSO PEN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:85442", + "wmoid": 85442, + "name": "SCFA", + "geo": [ + { + "lat": -23.43, + "lon": -70.43, + "elev": 120, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ANTOFAGASTA/CERRO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:85586", + "wmoid": 85586, + "name": "SCSN", + "geo": [ + { + "lat": -33.65, + "lon": -71.62, + "elev": 75, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SANTO DOMINGO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:85799", + "wmoid": 85799, + "name": "SCTE", + "geo": [ + { + "lat": -41.42, + "lon": -73.08, + "elev": 86, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PUERTO MONTT/TEPUAL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:85934", + "wmoid": 85934, + "name": "SCCI", + "geo": [ + { + "lat": -53.0, + "lon": -70.85, + "elev": 37, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PUNTA ARENAS", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:87047", + "wmoid": 87047, + "name": "SASA", + "geo": [ + { + "lat": -24.85, + "lon": -65.48, + "elev": 1216, + "firstTime": 0, + "lastTime": 1395856800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SALTA AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2014-03-26 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:87155", + "wmoid": 87155, + "name": "SARE", + "geo": [ + { + "lat": -27.45, + "lon": -59.05, + "elev": 52, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "RESISTENCIA AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:87344", + "wmoid": 87344, + "name": "SACO", + "geo": [ + { + "lat": -31.32, + "lon": -64.22, + "elev": 474, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "CORDOBA AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:87418", + "wmoid": 87418, + "name": "SAME", + "geo": [ + { + "lat": -32.83, + "lon": -68.78, + "elev": 704, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MENDOZA/EL PLUMERIL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:87576", + "wmoid": 87576, + "name": "SAEZ", + "geo": [ + { + "lat": -34.82, + "lon": -58.53, + "elev": 20, + "firstTime": 0, + "lastTime": 1657497600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BUENOS AIRES/EZEIZA", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-07-10 18:00:00" +} , +{ + "id": "MD:V01:RAOB:station:87623", + "wmoid": 87623, + "name": "SAZR", + "geo": [ + { + "lat": -36.57, + "lon": -64.27, + "elev": 191, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SANTA ROSA AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:87860", + "wmoid": 87860, + "name": "SAVC", + "geo": [ + { + "lat": -45.78, + "lon": -67.5, + "elev": 46, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "COMODORO RIVADAVIA", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:89002", + "wmoid": 89002, + "name": "89002", + "geo": [ + { + "lat": -70.67, + "lon": -8.25, + "elev": 40, + "firstTime": 0, + "lastTime": 1675018800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "VON-NEUMAYER G-BASE", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-01-29 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:89009", + "wmoid": 89009, + "name": "89009", + "geo": [ + { + "lat": -90.0, + "lon": 0.0, + "elev": 2830, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "AMUNDSEN-SCOTT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:89022", + "wmoid": 89022, + "name": "89022", + "geo": [ + { + "lat": -75.5, + "lon": -26.65, + "elev": 30, + "firstTime": 0, + "lastTime": 1706724000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HALLEY BRI-BASE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-01-31 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:89532", + "wmoid": 89532, + "name": "89532", + "geo": [ + { + "lat": -69.0, + "lon": 39.58, + "elev": 21, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SYOWA JAPAN-BASE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:89664", + "wmoid": 89664, + "name": "89664", + "geo": [ + { + "lat": -77.85, + "lon": 166.67, + "elev": 34, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MCMURDO USA-BASE", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91212", + "wmoid": 91212, + "name": "PGAC", + "geo": [ + { + "lat": 13.55, + "lon": 144.83, + "elev": 111, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GUAM,MARIANA IS", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91285", + "wmoid": 91285, + "name": "ITO", + "geo": [ + { + "lat": 19.72, + "lon": -155.07, + "elev": 10, + "firstTime": 1278914400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HILO", + "near_airport": "", + "gps_date": "2010-07-12", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91334", + "wmoid": 91334, + "name": "PTKK", + "geo": [ + { + "lat": 7.47, + "lon": 151.85, + "elev": 2, + "firstTime": 1304143200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TRUK INTL/MOEN ISL", + "near_airport": "", + "gps_date": "2011-04-30", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91348", + "wmoid": 91348, + "name": "PTPN", + "geo": [ + { + "lat": 6.96, + "lon": 158.2, + "elev": 38, + "firstTime": 1305007200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PONAPE ISLAND", + "near_airport": "", + "gps_date": "2011-05-10", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91366", + "wmoid": 91366, + "name": "PKWA", + "geo": [ + { + "lat": 8.73, + "lon": 167.73, + "elev": 8, + "firstTime": 0, + "lastTime": 1704524400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KWAJALEIN/BUCHOLZ", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-01-06 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91408", + "wmoid": 91408, + "name": "PTRO", + "geo": [ + { + "lat": 7.33, + "lon": 134.48, + "elev": 33, + "firstTime": 1300082400, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KOROR/PALAU ISLAND", + "near_airport": "", + "gps_date": "2011-03-14", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91413", + "wmoid": 91413, + "name": "PTYA", + "geo": [ + { + "lat": 9.48, + "lon": 138.08, + "elev": 17, + "firstTime": 1301119200, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "YAP ISLAND", + "near_airport": "", + "gps_date": "2011-03-26", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91592", + "wmoid": 91592, + "name": "NWWN", + "geo": [ + { + "lat": -22.27, + "lon": 166.45, + "elev": 72, + "firstTime": 0, + "lastTime": 1571029200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NOUMEA", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-13 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91765", + "wmoid": 91765, + "name": "NTSU", + "geo": [ + { + "lat": -14.33, + "lon": -170.72, + "elev": 3, + "firstTime": 1296889200, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PAGO PAGO INTL ARPT", + "near_airport": "", + "gps_date": "2011-02-05", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91938", + "wmoid": 91938, + "name": "NTAA", + "geo": [ + { + "lat": -17.55, + "lon": -149.62, + "elev": 2, + "firstTime": 0, + "lastTime": 1572368400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TAHITI ISLAND/FAAA", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-29 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:93844", + "wmoid": 93844, + "name": "NZNV", + "geo": [ + { + "lat": -46.42, + "lon": 168.33, + "elev": 1, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "INVERCARGILL AERO", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94120", + "wmoid": 94120, + "name": "YPDN", + "geo": [ + { + "lat": -12.4, + "lon": 130.87, + "elev": 30, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DARWIN (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94150", + "wmoid": 94150, + "name": "YDGV", + "geo": [ + { + "lat": -12.27, + "lon": 136.82, + "elev": 54, + "firstTime": 0, + "lastTime": 1701928800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GOVE AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-12-06 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94203", + "wmoid": 94203, + "name": "YBRM", + "geo": [ + { + "lat": -17.95, + "lon": 122.22, + "elev": 9, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BROOME AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94294", + "wmoid": 94294, + "name": "YBTL", + "geo": [ + { + "lat": -19.25, + "lon": 146.75, + "elev": 6, + "firstTime": 0, + "lastTime": 1579240800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TOWNSVILLE(CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-16 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94302", + "wmoid": 94302, + "name": "YPLM", + "geo": [ + { + "lat": -22.23, + "lon": 114.08, + "elev": 6, + "firstTime": 0, + "lastTime": 1713978000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LEARMOUTH", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94326", + "wmoid": 94326, + "name": "YBAS", + "geo": [ + { + "lat": -23.8, + "lon": 133.9, + "elev": 541, + "firstTime": 0, + "lastTime": 1713934800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ALICE SPRINGS ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-23 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94403", + "wmoid": 94403, + "name": "YPGN", + "geo": [ + { + "lat": -28.78, + "lon": 114.7, + "elev": 34, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "GERALDTON AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94578", + "wmoid": 94578, + "name": "YBBN", + "geo": [ + { + "lat": -27.38, + "lon": 153.1, + "elev": 5, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BRISBANE INTL ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94610", + "wmoid": 94610, + "name": "YPPH", + "geo": [ + { + "lat": -31.93, + "lon": 115.95, + "elev": 29, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "PERTH INTL/BELMONT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94637", + "wmoid": 94637, + "name": "YPKG", + "geo": [ + { + "lat": -30.77, + "lon": 121.45, + "elev": 360, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KALGOORLIE/BOULDER", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94672", + "wmoid": 94672, + "name": "YPAD", + "geo": [ + { + "lat": -34.93, + "lon": 138.52, + "elev": 4, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "ADELAIDE INTL ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94767", + "wmoid": 94767, + "name": "YSSY", + "geo": [ + { + "lat": -33.95, + "lon": 151.18, + "elev": 3, + "firstTime": 0, + "lastTime": 1710414000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "SYDNEY INTL AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-03-14 05:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94776", + "wmoid": 94776, + "name": "YSWM", + "geo": [ + { + "lat": -32.78, + "lon": 151.82, + "elev": 8, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WILLIAMTOWN(AUS-AB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94866", + "wmoid": 94866, + "name": "YMML", + "geo": [ + { + "lat": -37.67, + "lon": 144.83, + "elev": 141, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MELBOURNE INTL ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94910", + "wmoid": 94910, + "name": "YSWG", + "geo": [ + { + "lat": -35.15, + "lon": 147.45, + "elev": 213, + "firstTime": 0, + "lastTime": 1713934800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "WAGGA WAGGA(CV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-23 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94975", + "wmoid": 94975, + "name": "YMHB", + "geo": [ + { + "lat": -42.83, + "lon": 147.48, + "elev": 27, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "HOBART AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94996", + "wmoid": 94996, + "name": "YSNF", + "geo": [ + { + "lat": -29.03, + "lon": 167.93, + "elev": 109, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "NORFOLK ISLAND ARPT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94998", + "wmoid": 94998, + "name": "YMMQ", + "geo": [ + { + "lat": -54.48, + "lon": 158.93, + "elev": 6, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MACQUARIE ISLAND", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:96315", + "wmoid": 96315, + "name": "WBGI", + "geo": [ + { + "lat": 4.93, + "lon": 114.93, + "elev": 15, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BRUNEI AIRPORT", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:96413", + "wmoid": 96413, + "name": "WBGG", + "geo": [ + { + "lat": 1.48, + "lon": 110.33, + "elev": 27, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KUCHING (CIV/MIL)", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:96441", + "wmoid": 96441, + "name": "WBGB", + "geo": [ + { + "lat": 3.2, + "lon": 113.03, + "elev": 5, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BINTULU/KALIMANTAN", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:96471", + "wmoid": 96471, + "name": "WBKK", + "geo": [ + { + "lat": 5.93, + "lon": 116.05, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "KOTA KINABALU INTL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:96481", + "wmoid": 96481, + "name": "WBKW", + "geo": [ + { + "lat": 4.27, + "lon": 117.88, + "elev": 20, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "TAWAU/KALIMANTAN IL", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:1400", + "wmoid": 1400, + "name": "ENEK", + "geo": [ + { + "lat": 56.53, + "lon": 3.22, + "elev": 46, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:3354", + "wmoid": 3354, + "name": "3354", + "geo": [ + { + "lat": 53.0, + "lon": -1.25, + "elev": 117, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:3743", + "wmoid": 3743, + "name": "3743", + "geo": [ + { + "lat": 51.2, + "lon": -1.8, + "elev": 132, + "firstTime": 0, + "lastTime": 1714042800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 05:00:00" +} , +{ + "id": "MD:V01:RAOB:station:8221", + "wmoid": 8221, + "name": "LEMD", + "geo": [ + { + "lat": 40.47, + "lon": -3.58, + "elev": 638, + "firstTime": 0, + "lastTime": 1450378800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-12-17 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:8302", + "wmoid": 8302, + "name": "8302", + "geo": [ + { + "lat": 39.6, + "lon": 2.7, + "elev": 45, + "firstTime": 0, + "lastTime": 1450378800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-12-17 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:11747", + "wmoid": 11747, + "name": "11747", + "geo": [ + { + "lat": 49.45, + "lon": 17.13, + "elev": 216, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:13275", + "wmoid": 13275, + "name": "13275", + "geo": [ + { + "lat": 44.77, + "lon": 20.42, + "elev": 203, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:14430", + "wmoid": 14430, + "name": "14430", + "geo": [ + { + "lat": 44.09, + "lon": 15.35, + "elev": 84, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:16113", + "wmoid": 16113, + "name": "16113", + "geo": [ + { + "lat": 44.53, + "lon": 7.62, + "elev": 386, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:16754", + "wmoid": 16754, + "name": "LGIR", + "geo": [ + { + "lat": 35.33, + "lon": 25.18, + "elev": 39, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:17281", + "wmoid": 17281, + "name": "LTCC", + "geo": [ + { + "lat": 37.88, + "lon": 40.18, + "elev": 677, + "firstTime": 0, + "lastTime": 1647540000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "DIYARBAKIR(CIV/AFB)", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-03-17 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:20674", + "wmoid": 20674, + "name": "20674", + "geo": [ + { + "lat": 73.53, + "lon": 80.4, + "elev": 47, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:22820", + "wmoid": 22820, + "name": "22820", + "geo": [ + { + "lat": 61.82, + "lon": 34.27, + "elev": 109, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:23418", + "wmoid": 23418, + "name": "23418", + "geo": [ + { + "lat": 65.12, + "lon": 57.1, + "elev": 56, + "firstTime": 0, + "lastTime": 1348639200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-09-26 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:23804", + "wmoid": 23804, + "name": "UUYY", + "geo": [ + { + "lat": 61.72, + "lon": 50.83, + "elev": 119, + "firstTime": 0, + "lastTime": 1348639200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-09-26 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:23884", + "wmoid": 23884, + "name": "23884", + "geo": [ + { + "lat": 61.6, + "lon": 90.0, + "elev": 63, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:24343", + "wmoid": 24343, + "name": "24343", + "geo": [ + { + "lat": 66.77, + "lon": 123.4, + "elev": 93, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:24507", + "wmoid": 24507, + "name": "24507", + "geo": [ + { + "lat": 64.27, + "lon": 100.23, + "elev": 186, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:24726", + "wmoid": 24726, + "name": "24726", + "geo": [ + { + "lat": 62.55, + "lon": 113.88, + "elev": 347, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:24944", + "wmoid": 24944, + "name": "24944", + "geo": [ + { + "lat": 60.4, + "lon": 120.42, + "elev": 226, + "firstTime": 0, + "lastTime": 1540965600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-10-31 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:25123", + "wmoid": 25123, + "name": "25123", + "geo": [ + { + "lat": 68.8, + "lon": 161.28, + "elev": 32, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:25428", + "wmoid": 25428, + "name": "25428", + "geo": [ + { + "lat": 65.23, + "lon": 160.5, + "elev": 265, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:26477", + "wmoid": 26477, + "name": "ULOL", + "geo": [ + { + "lat": 56.38, + "lon": 30.6, + "elev": 98, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:27730", + "wmoid": 27730, + "name": "27730", + "geo": [ + { + "lat": 54.63, + "lon": 39.7, + "elev": 158, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:29231", + "wmoid": 29231, + "name": "29231", + "geo": [ + { + "lat": 58.3, + "lon": 82.9, + "elev": 76, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:29263", + "wmoid": 29263, + "name": "29263", + "geo": [ + { + "lat": 58.45, + "lon": 92.15, + "elev": 78, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:29282", + "wmoid": 29282, + "name": "29282", + "geo": [ + { + "lat": 58.42, + "lon": 97.4, + "elev": 134, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:29839", + "wmoid": 29839, + "name": "29839", + "geo": [ + { + "lat": 53.35, + "lon": 83.82, + "elev": 159, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:29862", + "wmoid": 29862, + "name": "29862", + "geo": [ + { + "lat": 53.77, + "lon": 91.32, + "elev": 256, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:31538", + "wmoid": 31538, + "name": "31538", + "geo": [ + { + "lat": 50.07, + "lon": 132.13, + "elev": 349, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:32389", + "wmoid": 32389, + "name": "32389", + "geo": [ + { + "lat": 56.32, + "lon": 160.83, + "elev": 28, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:34731", + "wmoid": 34731, + "name": "URRR", + "geo": [ + { + "lat": 47.25, + "lon": 39.82, + "elev": 77, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:35671", + "wmoid": 35671, + "name": "35671", + "geo": [ + { + "lat": 47.8, + "lon": 67.72, + "elev": 345, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:36003", + "wmoid": 36003, + "name": "36003", + "geo": [ + { + "lat": 52.28, + "lon": 76.95, + "elev": 123, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:37018", + "wmoid": 37018, + "name": "37018", + "geo": [ + { + "lat": 44.1, + "lon": 39.07, + "elev": 41, + "firstTime": 0, + "lastTime": 1348639200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-09-26 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:37054", + "wmoid": 37054, + "name": "URMM", + "geo": [ + { + "lat": 44.22, + "lon": 43.1, + "elev": 314, + "firstTime": 0, + "lastTime": 1348639200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-09-26 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40394", + "wmoid": 40394, + "name": "OEHL", + "geo": [ + { + "lat": 27.52, + "lon": 41.73, + "elev": 1013, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40437", + "wmoid": 40437, + "name": "OERK", + "geo": [ + { + "lat": 24.93, + "lon": 46.72, + "elev": 612, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40706", + "wmoid": 40706, + "name": "OITT", + "geo": [ + { + "lat": 38.08, + "lon": 46.28, + "elev": 1361, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40809", + "wmoid": 40809, + "name": "OIMB", + "geo": [ + { + "lat": 32.87, + "lon": 59.2, + "elev": 1491, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40841", + "wmoid": 40841, + "name": "OIKK", + "geo": [ + { + "lat": 30.25, + "lon": 56.97, + "elev": 1754, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40948", + "wmoid": 40948, + "name": "OAKB", + "geo": [ + { + "lat": 34.55, + "lon": 69.22, + "elev": 1791, + "firstTime": 0, + "lastTime": 1628917200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2021-08-13 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42027", + "wmoid": 42027, + "name": "42027", + "geo": [ + { + "lat": 34.08, + "lon": 74.83, + "elev": 1587, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43279", + "wmoid": 43279, + "name": "VOMM", + "geo": [ + { + "lat": 13.0, + "lon": 80.18, + "elev": 16, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43311", + "wmoid": 43311, + "name": "43311", + "geo": [ + { + "lat": 11.12, + "lon": 72.73, + "elev": 4, + "firstTime": 0, + "lastTime": 1694235600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-09-08 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:44231", + "wmoid": 44231, + "name": "44231", + "geo": [ + { + "lat": 49.63, + "lon": 100.17, + "elev": 1288, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47090", + "wmoid": 47090, + "name": "47090", + "geo": [ + { + "lat": 38.25, + "lon": 128.57, + "elev": 18, + "firstTime": 0, + "lastTime": 1450378800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-12-17 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47169", + "wmoid": 47169, + "name": "47169", + "geo": [ + { + "lat": 34.68, + "lon": 125.45, + "elev": 83, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48568", + "wmoid": 48568, + "name": "VTSH", + "geo": [ + { + "lat": 7.2, + "lon": 100.6, + "elev": 5, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48650", + "wmoid": 48650, + "name": "48650", + "geo": [ + { + "lat": 3.1, + "lon": 101.65, + "elev": 17, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48657", + "wmoid": 48657, + "name": "WMKD", + "geo": [ + { + "lat": 3.78, + "lon": 103.22, + "elev": 16, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48698", + "wmoid": 48698, + "name": "WSSS", + "geo": [ + { + "lat": 1.37, + "lon": 103.98, + "elev": 16, + "firstTime": 0, + "lastTime": 1689292800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-07-13 18:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48855", + "wmoid": 48855, + "name": "VVDN", + "geo": [ + { + "lat": 16.03, + "lon": 108.18, + "elev": 7, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48900", + "wmoid": 48900, + "name": "VVTS", + "geo": [ + { + "lat": 10.82, + "lon": 106.67, + "elev": 19, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:52983", + "wmoid": 52983, + "name": "52983", + "geo": [ + { + "lat": 35.87, + "lon": 104.15, + "elev": 1875, + "firstTime": 0, + "lastTime": 1579370400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:54727", + "wmoid": 54727, + "name": "54727", + "geo": [ + { + "lat": 36.7, + "lon": 117.55, + "elev": 123, + "firstTime": 0, + "lastTime": 1579370400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-18 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:56187", + "wmoid": 56187, + "name": "56187", + "geo": [ + { + "lat": 30.7, + "lon": 103.83, + "elev": 541, + "firstTime": 0, + "lastTime": 1579543200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:58968", + "wmoid": 58968, + "name": "58968", + "geo": [ + { + "lat": 25.03, + "lon": 121.53, + "elev": 9, + "firstTime": 0, + "lastTime": 1579460400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-01-19 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:60191", + "wmoid": 60191, + "name": "60191", + "geo": [ + { + "lat": 32.37, + "lon": -6.4, + "elev": 468, + "firstTime": 0, + "lastTime": 1682834400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-04-30 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:60715", + "wmoid": 60715, + "name": "DTTA", + "geo": [ + { + "lat": 36.83, + "lon": 10.23, + "elev": 4, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:60760", + "wmoid": 60760, + "name": "DTTZ", + "geo": [ + { + "lat": 33.92, + "lon": 8.17, + "elev": 93, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61902", + "wmoid": 61902, + "name": "FHAW", + "geo": [ + { + "lat": -7.97, + "lon": -14.4, + "elev": 79, + "firstTime": 0, + "lastTime": 1405098000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2014-07-11 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61980", + "wmoid": 61980, + "name": "61980", + "geo": [ + { + "lat": -20.88, + "lon": 55.52, + "elev": 20, + "firstTime": 0, + "lastTime": 1571590800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61995", + "wmoid": 61995, + "name": "61995", + "geo": [ + { + "lat": -20.3, + "lon": 57.5, + "elev": 425, + "firstTime": 0, + "lastTime": 1671602400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-12-20 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:62403", + "wmoid": 62403, + "name": "62403", + "geo": [ + { + "lat": 26.2, + "lon": 32.75, + "elev": 96, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:62423", + "wmoid": 62423, + "name": "62423", + "geo": [ + { + "lat": 27.05, + "lon": 27.97, + "elev": 92, + "firstTime": 0, + "lastTime": 1685469600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-05-30 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68110", + "wmoid": 68110, + "name": "FAWW", + "geo": [ + { + "lat": -22.57, + "lon": 17.1, + "elev": 1725, + "firstTime": 0, + "lastTime": 1686499200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-06-11 10:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68240", + "wmoid": 68240, + "name": "FBSK", + "geo": [ + { + "lat": -24.22, + "lon": 25.92, + "elev": 1005, + "firstTime": 0, + "lastTime": 1332432000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-03-22 10:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68461", + "wmoid": 68461, + "name": "FABM", + "geo": [ + { + "lat": -28.25, + "lon": 28.33, + "elev": 1682, + "firstTime": 0, + "lastTime": 1246982400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-07-07 10:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68538", + "wmoid": 68538, + "name": "68538", + "geo": [ + { + "lat": -30.67, + "lon": 24.02, + "elev": 1287, + "firstTime": 0, + "lastTime": 1698170400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-10-24 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68588", + "wmoid": 68588, + "name": "FADN", + "geo": [ + { + "lat": -29.97, + "lon": 30.95, + "elev": 8, + "firstTime": 0, + "lastTime": 1258264800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-11-14 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68816", + "wmoid": 68816, + "name": "FACT", + "geo": [ + { + "lat": -33.98, + "lon": 18.6, + "elev": 42, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68842", + "wmoid": 68842, + "name": "FAPE", + "geo": [ + { + "lat": -33.98, + "lon": 25.6, + "elev": 60, + "firstTime": 0, + "lastTime": 1707372000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-02-07 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68994", + "wmoid": 68994, + "name": "FAME", + "geo": [ + { + "lat": -46.88, + "lon": 37.87, + "elev": 22, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:89642", + "wmoid": 89642, + "name": "89642", + "geo": [ + { + "lat": -66.67, + "lon": 140.02, + "elev": 43, + "firstTime": 0, + "lastTime": 1537855200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-09-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91843", + "wmoid": 91843, + "name": "NCRG", + "geo": [ + { + "lat": -21.2, + "lon": -159.82, + "elev": 7, + "firstTime": 0, + "lastTime": 1482645600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2016-12-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91925", + "wmoid": 91925, + "name": "91925", + "geo": [ + { + "lat": -9.8, + "lon": -139.03, + "elev": 52, + "firstTime": 0, + "lastTime": 1630386000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2021-08-30 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:26629", + "wmoid": 26629, + "name": "26629", + "geo": [ + { + "lat": 54.88, + "lon": 23.88, + "elev": 75, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:37789", + "wmoid": 37789, + "name": "UGEE", + "geo": [ + { + "lat": 40.13, + "lon": 44.47, + "elev": 890, + "firstTime": 0, + "lastTime": 1648965600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-04-03 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40265", + "wmoid": 40265, + "name": "OJMF", + "geo": [ + { + "lat": 32.37, + "lon": 36.27, + "elev": 687, + "firstTime": 0, + "lastTime": 1700974800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-11-25 22:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48327", + "wmoid": 48327, + "name": "VTCC", + "geo": [ + { + "lat": 18.78, + "lon": 98.98, + "elev": 314, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72381", + "wmoid": 72381, + "name": "EDW", + "geo": [ + { + "lat": 34.9, + "lon": -117.92, + "elev": 724, + "firstTime": 0, + "lastTime": 1713999600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 17:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72451", + "wmoid": 72451, + "name": "DDC", + "geo": [ + { + "lat": 37.77, + "lon": -99.97, + "elev": 791, + "firstTime": 1277100000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "2010-06-21", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48455", + "wmoid": 48455, + "name": "48455", + "geo": [ + { + "lat": 13.73, + "lon": 100.5, + "elev": 20, + "firstTime": 0, + "lastTime": 1358312400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2013-01-15 22:00:00" +} , +{ + "id": "MD:V01:RAOB:station:48565", + "wmoid": 48565, + "name": "VTSP", + "geo": [ + { + "lat": 8.12, + "lon": 98.32, + "elev": 10, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:74002", + "wmoid": 74002, + "name": "APG", + "geo": [ + { + "lat": 39.47, + "lon": -76.07, + "elev": 5, + "firstTime": 0, + "lastTime": 1492020000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2017-04-12 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:60155", + "wmoid": 60155, + "name": "GMMC", + "geo": [ + { + "lat": 33.57, + "lon": -7.67, + "elev": 62, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:89564", + "wmoid": 89564, + "name": "89564", + "geo": [ + { + "lat": -68.6, + "lon": 62.87, + "elev": 16, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78384", + "wmoid": 78384, + "name": "KCR", + "geo": [ + { + "lat": 19.3, + "lon": -81.37, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91948", + "wmoid": 91948, + "name": "91948", + "geo": [ + { + "lat": -23.13, + "lon": -134.97, + "elev": 89, + "firstTime": 0, + "lastTime": 1651035600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-04-26 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78807", + "wmoid": 78807, + "name": "78807", + "geo": [ + { + "lat": 8.97, + "lon": -79.66, + "elev": 9, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82022", + "wmoid": 82022, + "name": "SBBV", + "geo": [ + { + "lat": 2.83, + "lon": -60.7, + "elev": 140, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82026", + "wmoid": 82026, + "name": "SBTS", + "geo": [ + { + "lat": -2.22, + "lon": -55.95, + "elev": 326, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82099", + "wmoid": 82099, + "name": "82099", + "geo": [ + { + "lat": 0.05, + "lon": -51.07, + "elev": 17, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82193", + "wmoid": 82193, + "name": "SBBE", + "geo": [ + { + "lat": -1.38, + "lon": -48.48, + "elev": 16, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82244", + "wmoid": 82244, + "name": "82244", + "geo": [ + { + "lat": -2.43, + "lon": -54.72, + "elev": 72, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82281", + "wmoid": 82281, + "name": "SBSL", + "geo": [ + { + "lat": -2.6, + "lon": -44.23, + "elev": 53, + "firstTime": 0, + "lastTime": 1617213600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2021-03-31 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82400", + "wmoid": 82400, + "name": "SBFN", + "geo": [ + { + "lat": -3.85, + "lon": -32.42, + "elev": 56, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82411", + "wmoid": 82411, + "name": "82411", + "geo": [ + { + "lat": -4.23, + "lon": -69.92, + "elev": 120, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82599", + "wmoid": 82599, + "name": "SBNT", + "geo": [ + { + "lat": -5.92, + "lon": -35.25, + "elev": 52, + "firstTime": 0, + "lastTime": 1713765600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-22 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82678", + "wmoid": 82678, + "name": "82678", + "geo": [ + { + "lat": -6.77, + "lon": -43.02, + "elev": 138, + "firstTime": 0, + "lastTime": 1554487200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-04-05 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82917", + "wmoid": 82917, + "name": "82917", + "geo": [ + { + "lat": -10.0, + "lon": -47.8, + "elev": 143, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83208", + "wmoid": 83208, + "name": "SBVH", + "geo": [ + { + "lat": -12.73, + "lon": -60.13, + "elev": 652, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83229", + "wmoid": 83229, + "name": "83229", + "geo": [ + { + "lat": -13.02, + "lon": -38.52, + "elev": 51, + "firstTime": 0, + "lastTime": 1540404000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-10-24 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83554", + "wmoid": 83554, + "name": "83554", + "geo": [ + { + "lat": -19.0, + "lon": -57.67, + "elev": 142, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83899", + "wmoid": 83899, + "name": "83899", + "geo": [ + { + "lat": -27.67, + "lon": -48.55, + "elev": 5, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83928", + "wmoid": 83928, + "name": "SBUG", + "geo": [ + { + "lat": -29.78, + "lon": -57.03, + "elev": 74, + "firstTime": 0, + "lastTime": 1713808800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-22 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83937", + "wmoid": 83937, + "name": "SBSM", + "geo": [ + { + "lat": -29.72, + "lon": -53.7, + "elev": 85, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83971", + "wmoid": 83971, + "name": "SBPA", + "geo": [ + { + "lat": -30.0, + "lon": -51.18, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:88889", + "wmoid": 88889, + "name": "EGYP", + "geo": [ + { + "lat": -51.82, + "lon": -58.45, + "elev": 73, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:89062", + "wmoid": 89062, + "name": "89062", + "geo": [ + { + "lat": -67.57, + "lon": -68.13, + "elev": 16, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:89571", + "wmoid": 89571, + "name": "89571", + "geo": [ + { + "lat": -68.57, + "lon": 77.95, + "elev": 13, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:89611", + "wmoid": 89611, + "name": "89611", + "geo": [ + { + "lat": -66.28, + "lon": 110.52, + "elev": 41, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91165", + "wmoid": 91165, + "name": "LIH", + "geo": [ + { + "lat": 21.98, + "lon": -159.35, + "elev": 36, + "firstTime": 1280124000, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "2010-07-26", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91376", + "wmoid": 91376, + "name": "PKMJ", + "geo": [ + { + "lat": 7.08, + "lon": 171.38, + "elev": 3, + "firstTime": 1305957600, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "MAJURO/MARSHALL_ISL,MH", + "near_airport": "", + "gps_date": "2011-05-21", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91532", + "wmoid": 91532, + "name": "91532", + "geo": [ + { + "lat": -0.53, + "lon": 166.92, + "elev": 0, + "firstTime": 0, + "lastTime": 1377496800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2013-08-26 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91680", + "wmoid": 91680, + "name": "NFFN", + "geo": [ + { + "lat": -17.75, + "lon": 177.45, + "elev": 18, + "firstTime": 0, + "lastTime": 1713675600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-20 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:92044", + "wmoid": 92044, + "name": "92044", + "geo": [ + { + "lat": -2.07, + "lon": 147.43, + "elev": 5, + "firstTime": 0, + "lastTime": 1386050400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2013-12-02 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:93112", + "wmoid": 93112, + "name": "NZWP", + "geo": [ + { + "lat": -36.78, + "lon": 174.63, + "elev": 27, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:93417", + "wmoid": 93417, + "name": "NZPP", + "geo": [ + { + "lat": -40.9, + "lon": 174.98, + "elev": 12, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94299", + "wmoid": 94299, + "name": "94299", + "geo": [ + { + "lat": -16.3, + "lon": 149.98, + "elev": 9, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94711", + "wmoid": 94711, + "name": "94711", + "geo": [ + { + "lat": -31.48, + "lon": 145.82, + "elev": 265, + "firstTime": 0, + "lastTime": 1713243600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-15 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94995", + "wmoid": 94995, + "name": "ASLH", + "geo": [ + { + "lat": -31.53, + "lon": 159.07, + "elev": 6, + "firstTime": 0, + "lastTime": 1712638800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-08 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:95527", + "wmoid": 95527, + "name": "95527", + "geo": [ + { + "lat": -29.5, + "lon": 149.83, + "elev": 214, + "firstTime": 0, + "lastTime": 1713934800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-23 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:96035", + "wmoid": 96035, + "name": "WIMM", + "geo": [ + { + "lat": 3.57, + "lon": 98.68, + "elev": 25, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:96163", + "wmoid": 96163, + "name": "WIMG", + "geo": [ + { + "lat": -0.88, + "lon": 100.35, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:96237", + "wmoid": 96237, + "name": "WIKK", + "geo": [ + { + "lat": -2.17, + "lon": 106.13, + "elev": 33, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:97014", + "wmoid": 97014, + "name": "WAMM", + "geo": [ + { + "lat": 1.53, + "lon": 124.92, + "elev": 80, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:97072", + "wmoid": 97072, + "name": "WAML", + "geo": [ + { + "lat": -0.68, + "lon": 119.73, + "elev": 6, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:97372", + "wmoid": 97372, + "name": "WRKK", + "geo": [ + { + "lat": -10.17, + "lon": 123.67, + "elev": 108, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:97560", + "wmoid": 97560, + "name": "WABB", + "geo": [ + { + "lat": -1.18, + "lon": 136.12, + "elev": 11, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:26038", + "wmoid": 26038, + "name": "ULTT", + "geo": [ + { + "lat": 59.45, + "lon": 24.8, + "elev": 44, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:6458", + "wmoid": 6458, + "name": "EBBE", + "geo": [ + { + "lat": 50.75, + "lon": 4.77, + "elev": 127, + "firstTime": 0, + "lastTime": 1714017600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "BEAUVECHAIN, BX", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 22:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91954", + "wmoid": 91954, + "name": "NTAT", + "geo": [ + { + "lat": -23.35, + "lon": -149.48, + "elev": 3, + "firstTime": 0, + "lastTime": 1258437600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-11-16 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:93986", + "wmoid": 93986, + "name": "NZCI", + "geo": [ + { + "lat": -43.95, + "lon": -176.57, + "elev": 48, + "firstTime": 0, + "lastTime": 1325221200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-12-29 22:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94170", + "wmoid": 94170, + "name": "94170", + "geo": [ + { + "lat": -12.63, + "lon": 141.9, + "elev": 0, + "firstTime": 0, + "lastTime": 1713934800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-23 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94312", + "wmoid": 94312, + "name": "YPPD", + "geo": [ + { + "lat": -20.37, + "lon": 118.62, + "elev": 6, + "firstTime": 0, + "lastTime": 1713848400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-22 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94332", + "wmoid": 94332, + "name": "YBMA", + "geo": [ + { + "lat": -20.67, + "lon": 139.48, + "elev": 344, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94374", + "wmoid": 94374, + "name": "YBRK", + "geo": [ + { + "lat": -23.38, + "lon": 150.47, + "elev": 14, + "firstTime": 0, + "lastTime": 1669960800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-12-01 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94430", + "wmoid": 94430, + "name": "YPMR", + "geo": [ + { + "lat": -26.6, + "lon": 118.53, + "elev": 518, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94461", + "wmoid": 94461, + "name": "94461", + "geo": [ + { + "lat": -25.03, + "lon": 128.28, + "elev": 599, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94510", + "wmoid": 94510, + "name": "YBCV", + "geo": [ + { + "lat": -26.4, + "lon": 146.27, + "elev": 304, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94802", + "wmoid": 94802, + "name": "YPAL", + "geo": [ + { + "lat": -34.93, + "lon": 117.8, + "elev": 69, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94821", + "wmoid": 94821, + "name": "YMMG", + "geo": [ + { + "lat": -37.73, + "lon": 140.78, + "elev": 69, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:96996", + "wmoid": 96996, + "name": "YPCC", + "geo": [ + { + "lat": -12.18, + "lon": 96.82, + "elev": 3, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:8160", + "wmoid": 8160, + "name": "LEZG", + "geo": [ + { + "lat": 41.67, + "lon": -1.02, + "elev": 258, + "firstTime": 0, + "lastTime": 1446271200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-10-31 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:10962", + "wmoid": 10962, + "name": "10962", + "geo": [ + { + "lat": 47.8, + "lon": 11.02, + "elev": 986, + "firstTime": 0, + "lastTime": 1714060800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 10:00:00" +} , +{ + "id": "MD:V01:RAOB:station:11010", + "wmoid": 11010, + "name": "LOWL", + "geo": [ + { + "lat": 48.23, + "lon": 14.2, + "elev": 313, + "firstTime": 0, + "lastTime": 1569916800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-01 02:00:00" +} , +{ + "id": "MD:V01:RAOB:station:11120", + "wmoid": 11120, + "name": "LOWI", + "geo": [ + { + "lat": 47.27, + "lon": 11.35, + "elev": 581, + "firstTime": 0, + "lastTime": 1569916800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-01 02:00:00" +} , +{ + "id": "MD:V01:RAOB:station:11240", + "wmoid": 11240, + "name": "LOWG", + "geo": [ + { + "lat": 47.0, + "lon": 15.43, + "elev": 347, + "firstTime": 0, + "lastTime": 1569916800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-10-01 02:00:00" +} , +{ + "id": "MD:V01:RAOB:station:14015", + "wmoid": 14015, + "name": "14015", + "geo": [ + { + "lat": 46.07, + "lon": 14.52, + "elev": 316, + "firstTime": 0, + "lastTime": 1713956400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 05:00:00" +} , +{ + "id": "MD:V01:RAOB:station:20744", + "wmoid": 20744, + "name": "20744", + "geo": [ + { + "lat": 72.38, + "lon": 52.73, + "elev": 16, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:20891", + "wmoid": 20891, + "name": "20891", + "geo": [ + { + "lat": 72.0, + "lon": 102.45, + "elev": 33, + "firstTime": 0, + "lastTime": 1348639200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-09-26 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:31168", + "wmoid": 31168, + "name": "31168", + "geo": [ + { + "lat": 56.45, + "lon": 138.15, + "elev": 9, + "firstTime": 0, + "lastTime": 1607583600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-12-10 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:32098", + "wmoid": 32098, + "name": "32098", + "geo": [ + { + "lat": 49.22, + "lon": 143.1, + "elev": 4, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:33317", + "wmoid": 33317, + "name": "33317", + "geo": [ + { + "lat": 50.17, + "lon": 27.05, + "elev": 278, + "firstTime": 0, + "lastTime": 1645642800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-02-23 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:33393", + "wmoid": 33393, + "name": "UKLL", + "geo": [ + { + "lat": 49.82, + "lon": 23.95, + "elev": 325, + "firstTime": 0, + "lastTime": 1645686000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-02-24 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:33631", + "wmoid": 33631, + "name": "33631", + "geo": [ + { + "lat": 48.63, + "lon": 22.27, + "elev": 118, + "firstTime": 0, + "lastTime": 1234508400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2009-02-13 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:33837", + "wmoid": 33837, + "name": "UKOO", + "geo": [ + { + "lat": 46.43, + "lon": 30.77, + "elev": 43, + "firstTime": 0, + "lastTime": 1645686000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-02-24 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:33946", + "wmoid": 33946, + "name": "UKFF", + "geo": [ + { + "lat": 44.68, + "lon": 34.13, + "elev": 181, + "firstTime": 0, + "lastTime": 1288850400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2010-11-04 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:34300", + "wmoid": 34300, + "name": "34300", + "geo": [ + { + "lat": 49.93, + "lon": 36.28, + "elev": 152, + "firstTime": 0, + "lastTime": 1645686000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-02-24 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40745", + "wmoid": 40745, + "name": "OIMM", + "geo": [ + { + "lat": 36.27, + "lon": 59.63, + "elev": 980, + "firstTime": 0, + "lastTime": 1708196400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-02-17 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40821", + "wmoid": 40821, + "name": "40821", + "geo": [ + { + "lat": 31.9, + "lon": 54.28, + "elev": 1237, + "firstTime": 0, + "lastTime": 1682571600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-04-26 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40848", + "wmoid": 40848, + "name": "OISS", + "geo": [ + { + "lat": 29.53, + "lon": 52.58, + "elev": 1491, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40856", + "wmoid": 40856, + "name": "40856", + "geo": [ + { + "lat": 29.47, + "lon": 60.88, + "elev": 1379, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40875", + "wmoid": 40875, + "name": "OIKB", + "geo": [ + { + "lat": 27.22, + "lon": 56.37, + "elev": 10, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:41316", + "wmoid": 41316, + "name": "OOSA", + "geo": [ + { + "lat": 17.03, + "lon": 54.08, + "elev": 17, + "firstTime": 0, + "lastTime": 1713376800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-17 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:41923", + "wmoid": 41923, + "name": "41923", + "geo": [ + { + "lat": 23.43, + "lon": 91.18, + "elev": 9, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42379", + "wmoid": 42379, + "name": "VEGK", + "geo": [ + { + "lat": 26.75, + "lon": 83.37, + "elev": 77, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:42397", + "wmoid": 42397, + "name": "42397", + "geo": [ + { + "lat": 26.67, + "lon": 88.37, + "elev": 123, + "firstTime": 0, + "lastTime": 1445839200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-10-26 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43041", + "wmoid": 43041, + "name": "43041", + "geo": [ + { + "lat": 19.08, + "lon": 82.03, + "elev": 553, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43192", + "wmoid": 43192, + "name": "43192", + "geo": [ + { + "lat": 15.48, + "lon": 73.82, + "elev": 60, + "firstTime": 0, + "lastTime": 1698127200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-10-24 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:63741", + "wmoid": 63741, + "name": "HKNC", + "geo": [ + { + "lat": -1.3, + "lon": 36.75, + "elev": 1798, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83827", + "wmoid": 83827, + "name": "SBFI", + "geo": [ + { + "lat": -25.52, + "lon": -54.58, + "elev": 243, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:85469", + "wmoid": 85469, + "name": "SCIP", + "geo": [ + { + "lat": -27.15, + "lon": -109.42, + "elev": 47, + "firstTime": 0, + "lastTime": 1673766000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-01-15 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:89512", + "wmoid": 89512, + "name": "89512", + "geo": [ + { + "lat": -70.77, + "lon": 11.83, + "elev": 102, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:89592", + "wmoid": 89592, + "name": "89592", + "geo": [ + { + "lat": -66.55, + "lon": 93.02, + "elev": 30, + "firstTime": 0, + "lastTime": 1714024800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94659", + "wmoid": 94659, + "name": "YPWR", + "geo": [ + { + "lat": -31.13, + "lon": 136.82, + "elev": 167, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:96749", + "wmoid": 96749, + "name": "WIII", + "geo": [ + { + "lat": -6.12, + "lon": 106.65, + "elev": 8, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:96935", + "wmoid": 96935, + "name": "WRSJ", + "geo": [ + { + "lat": -7.37, + "lon": 112.77, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:97724", + "wmoid": 97724, + "name": "WAPP", + "geo": [ + { + "lat": -3.7, + "lon": 128.08, + "elev": 12, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:97980", + "wmoid": 97980, + "name": "WAKK", + "geo": [ + { + "lat": -8.47, + "lon": 140.38, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:12982", + "wmoid": 12982, + "name": "LHUD", + "geo": [ + { + "lat": 46.25, + "lon": 20.1, + "elev": 84, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:65578", + "wmoid": 65578, + "name": "DIAP", + "geo": [ + { + "lat": 5.25, + "lon": -3.93, + "elev": 8, + "firstTime": 0, + "lastTime": 1714042800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 05:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83498", + "wmoid": 83498, + "name": "83498", + "geo": [ + { + "lat": -17.73, + "lon": -39.25, + "elev": 3, + "firstTime": 0, + "lastTime": 1470506400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2016-08-06 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:84008", + "wmoid": 84008, + "name": "SEST", + "geo": [ + { + "lat": -0.9, + "lon": -89.6, + "elev": 6, + "firstTime": 0, + "lastTime": 1549306800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-02-04 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:84378", + "wmoid": 84378, + "name": "84378", + "geo": [ + { + "lat": -3.73, + "lon": -73.25, + "elev": 117, + "firstTime": 0, + "lastTime": 1339779600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-06-15 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91610", + "wmoid": 91610, + "name": "NGTA", + "geo": [ + { + "lat": 1.35, + "lon": 172.92, + "elev": 4, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91801", + "wmoid": 91801, + "name": "91801", + "geo": [ + { + "lat": -9.0, + "lon": -158.05, + "elev": 1, + "firstTime": 0, + "lastTime": 1214802000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2008-06-29 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91958", + "wmoid": 91958, + "name": "91958", + "geo": [ + { + "lat": -27.62, + "lon": -144.33, + "elev": 2, + "firstTime": 0, + "lastTime": 1665702000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-10-13 17:00:00" +} , +{ + "id": "MD:V01:RAOB:station:33658", + "wmoid": 33658, + "name": "33658", + "geo": [ + { + "lat": 48.37, + "lon": 25.9, + "elev": 246, + "firstTime": 0, + "lastTime": 1524031200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-04-18 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40100", + "wmoid": 40100, + "name": "OLBA", + "geo": [ + { + "lat": 33.82, + "lon": 35.48, + "elev": 19, + "firstTime": 0, + "lastTime": 1200726000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2008-01-19 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:41594", + "wmoid": 41594, + "name": "OPSR", + "geo": [ + { + "lat": 32.05, + "lon": 72.67, + "elev": 188, + "firstTime": 0, + "lastTime": 1444845600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-10-14 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94638", + "wmoid": 94638, + "name": "94638", + "geo": [ + { + "lat": -33.82, + "lon": 121.88, + "elev": 26, + "firstTime": 0, + "lastTime": 1713502800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-18 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47058", + "wmoid": 47058, + "name": "47058", + "geo": [ + { + "lat": 39.03, + "lon": 125.78, + "elev": 38, + "firstTime": 0, + "lastTime": 1601877600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-10-05 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61687", + "wmoid": 61687, + "name": "GOTT", + "geo": [ + { + "lat": 13.76, + "lon": -13.68, + "elev": 50, + "firstTime": 0, + "lastTime": 1676916000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-02-20 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:64700", + "wmoid": 64700, + "name": "FTTJ", + "geo": [ + { + "lat": 12.13, + "lon": 15.03, + "elev": 295, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:93997", + "wmoid": 93997, + "name": "NZRN", + "geo": [ + { + "lat": -29.25, + "lon": -177.92, + "elev": 49, + "firstTime": 0, + "lastTime": 1585281600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-03-26 22:00:00" +} , +{ + "id": "MD:V01:RAOB:station:40811", + "wmoid": 40811, + "name": "OIAW", + "geo": [ + { + "lat": 31.33, + "lon": 48.66, + "elev": 22, + "firstTime": 0, + "lastTime": 1698688800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2023-10-30 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:33041", + "wmoid": 33041, + "name": "33041", + "geo": [ + { + "lat": 52.45, + "lon": 31.0, + "elev": 127, + "firstTime": 0, + "lastTime": 1662357600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2022-09-05 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:64400", + "wmoid": 64400, + "name": "FCPP", + "geo": [ + { + "lat": -4.82, + "lon": 11.9, + "elev": 17, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91643", + "wmoid": 91643, + "name": "NGFU", + "geo": [ + { + "lat": -8.52, + "lon": 179.22, + "elev": 2, + "firstTime": 0, + "lastTime": 1714021200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:47981", + "wmoid": 47981, + "name": "RJAW", + "geo": [ + { + "lat": 24.78, + "lon": 141.33, + "elev": 116, + "firstTime": 0, + "lastTime": 1223532000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2008-10-09 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:91943", + "wmoid": 91943, + "name": "91943", + "geo": [ + { + "lat": -14.48, + "lon": -145.03, + "elev": 3, + "firstTime": 0, + "lastTime": 1199430000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2008-01-04 00:00:00" +} , +{ + "id": "MD:V01:RAOB:station:68442", + "wmoid": 68442, + "name": "FABL", + "geo": [ + { + "lat": -29.1, + "lon": 26.3, + "elev": 1348, + "firstTime": 0, + "lastTime": 1714064400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:41977", + "wmoid": 41977, + "name": "41977", + "geo": [ + { + "lat": 22.35, + "lon": 91.82, + "elev": 34, + "firstTime": 0, + "lastTime": 1713981600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-24 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:94647", + "wmoid": 94647, + "name": "94647", + "geo": [ + { + "lat": -31.67, + "lon": 128.88, + "elev": 99, + "firstTime": 0, + "lastTime": 1349672400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2012-10-07 23:00:00" +} , +{ + "id": "MD:V01:RAOB:station:97180", + "wmoid": 97180, + "name": "WAAA", + "geo": [ + { + "lat": -5.07, + "lon": 119.55, + "elev": 14, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:84416", + "wmoid": 84416, + "name": "84416", + "geo": [ + { + "lat": -5.18, + "lon": -80.6, + "elev": 52, + "firstTime": 0, + "lastTime": 1320688800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2011-11-07 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:78988", + "wmoid": 78988, + "name": "ACC", + "geo": [ + { + "lat": 12.2, + "lon": -68.97, + "elev": 54, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:83288", + "wmoid": 83288, + "name": "SBLP", + "geo": [ + { + "lat": -13.27, + "lon": -43.42, + "elev": 458, + "firstTime": 0, + "lastTime": 1548961200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2019-01-31 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:3502", + "wmoid": 3502, + "name": "EGUC", + "geo": [ + { + "lat": 52.13, + "lon": -4.57, + "elev": 132, + "firstTime": 0, + "lastTime": 1712779200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-10 14:00:00" +} , +{ + "id": "MD:V01:RAOB:station:67083", + "wmoid": 67083, + "name": "FMMI", + "geo": [ + { + "lat": -18.8, + "lon": 47.48, + "elev": 1276, + "firstTime": 0, + "lastTime": 1707915600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-02-14 06:00:00" +} , +{ + "id": "MD:V01:RAOB:station:71701", + "wmoid": 71701, + "name": "YCX", + "geo": [ + { + "lat": 45.83, + "lon": -66.43, + "elev": 52, + "firstTime": 0, + "lastTime": 1711544400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-03-27 07:00:00" +} , +{ + "id": "MD:V01:RAOB:station:28722", + "wmoid": 28722, + "name": "28722", + "geo": [ + { + "lat": 54.75, + "lon": 56.0, + "elev": 105, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:6496", + "wmoid": 6496, + "name": "EBLB", + "geo": [ + { + "lat": 50.47, + "lon": 6.18, + "elev": 570, + "firstTime": 0, + "lastTime": 1427889600 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2015-04-01 06:00:00" +} , +{ + "id": "MD:V01:RAOB:station:43353", + "wmoid": 43353, + "name": "VOCC", + "geo": [ + { + "lat": 9.95, + "lon": 76.27, + "elev": 3, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:96491", + "wmoid": 96491, + "name": "WBKS", + "geo": [ + { + "lat": 5.9, + "lon": 118.07, + "elev": 13, + "firstTime": 0, + "lastTime": 1527508800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-05-28 06:00:00" +} , +{ + "id": "MD:V01:RAOB:station:82765", + "wmoid": 82765, + "name": "82765", + "geo": [ + { + "lat": -7.33, + "lon": -47.47, + "elev": 212, + "firstTime": 0, + "lastTime": 1580756400 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2020-02-03 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:28661", + "wmoid": 28661, + "name": "28661", + "geo": [ + { + "lat": 55.47, + "lon": 65.4, + "elev": 79, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:80001", + "wmoid": 80001, + "name": "80001", + "geo": [ + { + "lat": 12.58, + "lon": -81.7, + "elev": 4, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:3693", + "wmoid": 3693, + "name": "3693", + "geo": [ + { + "lat": 51.55, + "lon": 0.83, + "elev": 3, + "firstTime": 0, + "lastTime": 1292950800 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2010-12-21 10:00:00" +} , +{ + "id": "MD:V01:RAOB:station:61442", + "wmoid": 61442, + "name": "GQNN", + "geo": [ + { + "lat": 18.1, + "lon": -15.95, + "elev": 3, + "firstTime": 0, + "lastTime": 1531501200 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2018-07-13 11:00:00" +} , +{ + "id": "MD:V01:RAOB:station:98444", + "wmoid": 98444, + "name": "RPMP", + "geo": [ + { + "lat": 13.13, + "lon": 123.73, + "elev": 17, + "firstTime": 0, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "", + "near_airport": "", + "gps_date": "", + "updateTime": "2024-04-25 12:00:00" +} , +{ + "id": "MD:V01:RAOB:station:72388", + "wmoid": 72388, + "name": "DRAne", + "geo": [ + { + "lat": 36.05, + "lon": -115.18, + "elev": 693, + "firstTime": 1292655600, + "lastTime": 1714068000 + } + ], + "subset": "RAOB", + "type": "MD", + "docType": "station", + "version": "V01", + "description": "LAS VEGAS", + "near_airport": "", + "gps_date": "2010-12-18", + "updateTime": "2024-04-25 12:00:00" +} , +] diff --git a/tests/vxingest/prepbufr_to_cb/testdata/test_get_obs_by_fcstValidEpoch.n1ql b/tests/vxingest/prepbufr_to_cb/testdata/test_get_obs_by_fcstValidEpoch.n1ql new file mode 100644 index 00000000..661850d8 --- /dev/null +++ b/tests/vxingest/prepbufr_to_cb/testdata/test_get_obs_by_fcstValidEpoch.n1ql @@ -0,0 +1,6 @@ +SELECT * +FROM `vxdata`._default.METAR +WHERE type = "DD" + AND docType = "obs" + AND version = "V01" + AND fcstValidEpoch = 1636135200 diff --git a/tests/vxingest/prepbufr_to_cb/testdata/test_get_stations.n1ql b/tests/vxingest/prepbufr_to_cb/testdata/test_get_stations.n1ql new file mode 100644 index 00000000..359f0305 --- /dev/null +++ b/tests/vxingest/prepbufr_to_cb/testdata/test_get_stations.n1ql @@ -0,0 +1,3 @@ +Select ingest_document_ids +from `vxdata`._default.METAR +USE KEYS ["MD:V01:METAR:obs:ingest:netcdf"]; \ No newline at end of file diff --git a/tests/vxingest/prepbufr_to_cb/testdata/test_ingest_document_fields.n1ql b/tests/vxingest/prepbufr_to_cb/testdata/test_ingest_document_fields.n1ql new file mode 100644 index 00000000..cc73519d --- /dev/null +++ b/tests/vxingest/prepbufr_to_cb/testdata/test_ingest_document_fields.n1ql @@ -0,0 +1,4 @@ +Select file_mask, + input_data_path +from `vxdata`._default.METAR +USE KEYS ["MD:V01:METAR:obs:ingest:netcdf"]; \ No newline at end of file diff --git a/tests/vxingest/prepbufr_to_cb/testdata/test_ingest_document_id.n1ql b/tests/vxingest/prepbufr_to_cb/testdata/test_ingest_document_id.n1ql new file mode 100644 index 00000000..359f0305 --- /dev/null +++ b/tests/vxingest/prepbufr_to_cb/testdata/test_ingest_document_id.n1ql @@ -0,0 +1,3 @@ +Select ingest_document_ids +from `vxdata`._default.METAR +USE KEYS ["MD:V01:METAR:obs:ingest:netcdf"]; \ No newline at end of file diff --git a/tests/vxingest/utilities/compare_july31_raob_data.sh b/tests/vxingest/utilities/compare_july31_raob_data.sh new file mode 100755 index 00000000..8085dd21 --- /dev/null +++ b/tests/vxingest/utilities/compare_july31_raob_data.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env sh +wmoid=$1 + +echo "data for ${wmoid}" +echo +echo "data from adpupa data dump" +awk "/SID *${wmoid}/,/END/" /opt/data/prepbufr_to_cb/test_artifacts/adpupa-verbose-242130000.txt | awk '{print $3" "$4}' | awk '/SID/||/TYP/||/POB/{if($2%10==0 || $2==54161)flag=1}/PRSLEVEL/{flag=0}flag' | egrep "SID|TYP|POB|PPC|PQM|ZOB|ZPC|ZQM|TOB|TPC|TQM|TDO|QOB|QPC|QQM|DDO|FFO|DFP|DFQ" | sed 's/\(POB.*\)/\n\1/g' > "/opt/data/prepbufr_to_cb/test_artifacts/${wmoid}_mandatory_values.txt" +python ${HOME}/VxIngest/tests/vxingest/utilities/get_data_for_raobs_from_adpupa_dump.py ${wmoid} +echo +echo "data from CB" +python ${HOME}/VxIngest/tests/vxingest/utilities/get_data_for_raobs_from_cb.py ${wmoid} +echo +echo "data from mysql" +mysql --defaults-file=~/wolphin.cnf -A -B --execute "select press,z,t,dp,rh,wd,ws from ruc_ua_pb.RAOB where date = '2024-07-31' and hour = 0 and wmoid = ${wmoid} and press in (1000,850,700,600,500,400,300,250,200,150,100,70,50,30,20) order by press desc;" diff --git a/tests/vxingest/utilities/get_data_for_raobs_from_adpupa_dump.py b/tests/vxingest/utilities/get_data_for_raobs_from_adpupa_dump.py index 34e908d3..073a3a56 100644 --- a/tests/vxingest/utilities/get_data_for_raobs_from_adpupa_dump.py +++ b/tests/vxingest/utilities/get_data_for_raobs_from_adpupa_dump.py @@ -1,6 +1,8 @@ import sys from pathlib import Path +from tabulate import tabulate + def main(): _wmoid = sys.argv[1] if sys.argv and len(sys.argv) > 1 else "65578" @@ -28,11 +30,16 @@ def main(): mnemonic = line.split()[0] if mnemonic == "POB": qualified = True - _press = round(float(line.split()[1])) + _press = ( + round(float(line.split()[1])) + if line.split()[1] != "MISSING" + else None + ) if _press not in [ 1000, 850, 700, + 600, 500, 400, 300, @@ -65,14 +72,16 @@ def main(): case "TYP": continue case "PQM": - if round(float(line.split()[1])) not in [0, 1, 2]: + _val = extract_float_value(line) + if _val not in [0, 1, 2]: # disqualified because of quality marker # go to next POB qualified = False row = {} continue case "PPC": - if round(float(line.split()[1])) != 1: + _val = extract_float_value(line) + if _val != 1: # disqualified because of program code # go to next POB qualified = False @@ -83,12 +92,14 @@ def main(): row["sh"] = line.split()[1] continue case "QQM": - if round(float(line.split()[1])) not in [0, 1, 2, 9, 15]: + _val = extract_float_value(line) + if _val not in [0, 1, 2, 9, 15]: # disqualified because of quality marker row["sh"] = None continue case "QPC": - if round(float(line.split()[1])) != 1: + _val = extract_float_value(line) + if _val != 1: # disqualified because of program code row["sh"] = None continue @@ -96,12 +107,14 @@ def main(): row["z"] = line.split()[1] continue case "ZQM": - if round(float(line.split()[1])) not in [0, 1, 2]: + _val = extract_float_value(line) + if _val not in [0, 1, 2]: # disqualified because of quality marker row["z"] = None continue case "ZPC": - if round(float(line.split()[1])) != 1: + _val = extract_float_value(line) + if _val != 1: # disqualified because of program code row["z"] = None continue @@ -109,12 +122,14 @@ def main(): row["t"] = line.split()[1] continue case "TQM": - if round(float(line.split()[1])) not in [0, 1, 2]: + _val = extract_float_value(line) + if _val not in [0, 1, 2]: # disqualified because of quality marker row["t"] = None continue case "TPC": - if round(float(line.split()[1])) != 1: + _val = extract_float_value(line) + if _val != 1: # disqualified because of program code row["t"] = None continue @@ -129,13 +144,15 @@ def main(): row["ws"] = line.split()[1] continue case "DFQ": - if round(float(line.split()[1])) not in [0, 1, 2]: + _val = extract_float_value(line) + if _val not in [0, 1, 2]: # disqualified because of quality marker row["wd"] = None row["ws"] = None continue case "DFP": - if round(float(line.split()[1])) != 1: + _val = extract_float_value(line) + if _val != 1: # disqualified because of program code row["wd"] = None row["ws"] = None @@ -152,8 +169,8 @@ def main(): "t", "dp", "wd", - "ws", - "ws(FFO)", + "ws(knts)", + "ws(FFO mps)", ] ] try: @@ -167,20 +184,21 @@ def main(): row.get("t", "null"), row.get("dp", "null"), row.get("wd", "null"), - "...", + round(float(row.get("ws")) * 0.5144444444, 4) + if row.get("ws") is not None + else None, row.get("ws", "null"), ] ) - # out_table = tabulate(table, headers="firstrow", tablefmt="plain") - # # Split the table into separate columns with spaces - # columns = out_table.split('\t') - print(f"data-dump-{_wmoid}") - for row in table: - print(" ".join(list(map(str, row)))) - # print(" ".join(columns)) + print(tabulate(table, headers="firstrow", tablefmt="plain")) except Exception as e: print(f"Error: {e}") +def extract_float_value(line): + _val = round(float(line.split()[1])) if line.split()[1] != "MISSING" else None + return _val + + if __name__ == "__main__": main() diff --git a/tests/vxingest/utilities/get_data_for_raobs_from_cb.py b/tests/vxingest/utilities/get_data_for_raobs_from_cb.py index 007d0236..8796c13a 100644 --- a/tests/vxingest/utilities/get_data_for_raobs_from_cb.py +++ b/tests/vxingest/utilities/get_data_for_raobs_from_cb.py @@ -57,7 +57,7 @@ def main(): AND docType='obs' AND subDocType = 'prepbufr' AND fcstValidISO = '2024-07-31T00:00:00Z' - AND d.data.['{wmoid}'].['pressure'] IN [1000,850,700,500,400,300,250,200,150,100,70,50,30,20] + AND d.data.['{wmoid}'].['pressure'] IN [1000,850,700,600,500,400,300,250,200,150,100,70,50,30,20] ORDER BY d.data.['{wmoid}'].['pressure'] DESC;""" data_iter = connect_cb()["cluster"].query(_statement) table = [ @@ -75,13 +75,13 @@ def main(): for row in data_iter.rows(): table.append( [ - row["press"] if row["press"] != "null" else "null", - row["z"] if row["z"] else "null", - row["t"] if row["t"] else "null", - row["dp"] if row["dp"] else "null", - row["rh"] if row["rh"] else "null", - row["wd"] if row["wd"] else "null", - row["ws"] if row["ws"] else "null", + row["press"] if row["press"] == 0 or row["press"] != "null" else "null", + round(row["z"]) if row["z"] == 0 or row["z"] else "null", + row["t"] if row["t"] == 0 or row["t"] else "null", + row["dp"] if row["dp"] == 0 or row["dp"] else "null", + row["rh"] if row["rh"] == 0 or row["rh"] else "null", + round(row["wd"]) if row["wd"] == 0 or row["wd"] else "null", + row["ws"] if row["ws"] == 0 or row["ws"] else "null", ] ) print(tabulate(table, headers="firstrow", tablefmt="plain")) diff --git a/tests/vxingest/utilities/test_backfill_obs_with_rh.py b/tests/vxingest/utilities/test_backfill_obs_with_rh.py index b4f3befb..09035826 100644 --- a/tests/vxingest/utilities/test_backfill_obs_with_rh.py +++ b/tests/vxingest/utilities/test_backfill_obs_with_rh.py @@ -32,7 +32,7 @@ def test_calc_components_backfills_rh(): for entries in doc["data"]: assert "RH" not in entries calc_components(doc) - assert math.isclose(doc["data"]["NZCM"]["RH"], 81.008, abs_tol=0.001), ( + assert math.isclose(doc["data"]["NZCM"]["RH"], 80.99208, abs_tol=0.001), ( "RH wrong value - not within 0.001" ) assert math.isclose( @@ -44,7 +44,7 @@ def test_calc_components_backfills_rh(): assert doc["data"]["NZCM"]["WS"] == 5, "WS wrong value" assert doc["data"]["NZCM"]["WD"] == 180, "WD wrong value" - assert math.isclose(doc["data"]["SUMU"]["RH"], 53.152, abs_tol=0.001), ( + assert math.isclose(doc["data"]["SUMU"]["RH"], 53.12007, abs_tol=0.001), ( "RH wrong value - not within 0.001" ) assert doc["data"]["SUMU"]["WindU"] == 10.0, "WindU wrong value" @@ -66,19 +66,19 @@ def test_calc_components_backfills_windu_and_windv(): "DewPoint": 20, "WS": 5, "WD": 180, - "RH": 81.008, + "RH": 80.99208, }, "SUMU": { "Temperature": 30, "DewPoint": 15, "WS": 10, "WD": 270, - "RH": 53.152, + "RH": 53.12007, }, } } calc_components(doc) - assert math.isclose(doc["data"]["NZCM"]["RH"], 81.008, abs_tol=0.001), ( + assert math.isclose(doc["data"]["NZCM"]["RH"], 80.99208, abs_tol=0.001), ( "RH wrong value - not within 0.001" ) assert math.isclose( @@ -90,7 +90,7 @@ def test_calc_components_backfills_windu_and_windv(): assert doc["data"]["NZCM"]["WS"] == 5, "WS wrong value" assert doc["data"]["NZCM"]["WD"] == 180, "WD wrong value" - assert math.isclose(doc["data"]["SUMU"]["RH"], 53.152, abs_tol=0.001), ( + assert math.isclose(doc["data"]["SUMU"]["RH"], 53.12007, abs_tol=0.001), ( "RH wrong value - not within 0.001" ) assert doc["data"]["SUMU"]["WindU"] == 10.0, "WindU wrong value" @@ -134,7 +134,7 @@ def test_calc_components_backfills_nochange(): assert doc["data"]["NZCM"]["WD"] == 180, "WD wrong value" assert doc["data"]["NZCM"]["WindU"] == 5, "WindU wrong value" assert doc["data"]["NZCM"]["WindV"] == -5, "WindV wrong value" - assert math.isclose(doc["data"]["NZCM"]["RH"], 81.008, abs_tol=0.001), ( + assert math.isclose(doc["data"]["NZCM"]["RH"], 80.992081, abs_tol=0.001), ( "RH wrong value" ) @@ -144,6 +144,6 @@ def test_calc_components_backfills_nochange(): assert doc["data"]["SUMU"]["WD"] == 270, "WD wrong value" assert doc["data"]["SUMU"]["WindU"] == 3, "WindU wrong value" assert doc["data"]["SUMU"]["WindV"] == -7, "WindV wrong value" - assert math.isclose(doc["data"]["SUMU"]["RH"], 53.152, abs_tol=0.001), ( + assert math.isclose(doc["data"]["SUMU"]["RH"], 53.12007, abs_tol=0.001), ( "RH wrong value" ) diff --git a/third_party/NCEPLIBS-bufr/build.sh b/third_party/NCEPLIBS-bufr/build.sh index bf56e811..aa6a8e5f 100755 --- a/third_party/NCEPLIBS-bufr/build.sh +++ b/third_party/NCEPLIBS-bufr/build.sh @@ -1,12 +1,12 @@ #!/bin/bash set -euo pipefail # NOTE: -# The embedded NCEPLIBS-bufr build depends on a bufr-12.0.1.tgz file that is served from the +# The embedded NCEPLIBS-bufr build depends on a bufr-12.1.0.tgz file that is served from the # EMC's internal web server. This file may not always be available. If you are unable to -# build the NCEPLIBS-bufr package, you can download the bufr-12.0.1.tgz file from +# build the NCEPLIBS-bufr package, you can download the bufr-12.1.0.tgz file from # https://drive.google.com/file/d/1ZyQsJ77j9yFKJG9nR87zejOBPKFasShl/view?usp=sharing # and explode it in a local directory, then pass the "local_test" option to this build script. -# For example: build.sh local_test /path/to/bufr-12.0.1 (exploded test data directory) +# For example: build.sh local_test /path/to/bufr-12.1.0 (exploded test data directory) VxIngest_root_dir=$(git rev-parse --show-toplevel) ret=$? @@ -20,22 +20,41 @@ if [ "${basename_root}" != ${basename_current} ]; then echo "This script must run from the root of the VxIngest repo." exit 1 fi +local_build_dir="" +bufr_test_dir="" +usage() { + echo "Usage: $0 [-l ] [-b ] [-v NCEPLIBSbufr_version]" 1>&2 + exit 1 + echo "The local_test option requires a path to the exploded test data from the bufr-12.2.0.tgz file." + echo "The local_build option requires a path to a local build directory. If absent a tmdir will be used" + exit 1 +} local_test=false -# Check for the local_test option -if [ "${1:-}" == "local_test" ]; then - if [ -z "${2:-}" ]; then - echo "The local_test option requires a path to the exploded test data from the bufr-12.0.1.tgz file." - exit 1 - fi - bufr_test_dir=$2 - if [ ! -d ${bufr_test_dir} ]; then - echo "The directory ${bufr_test_dir} does not exist." - exit 1 - fi - echo "Using the local bufr_test_dir directory: ${bufr_test_dir}" - local_test=true -fi +NCEPLIBSbufr_version="12.2.0" +while getopts ":l:b:v:" o; do + case "${o}" in + l) + local_build_dir=${OPTARG} + [ -d ${local_build_dir} ] || usage + echo "Using local build directory ${local_build_dir}" + ;; + b) + bufr_test_dir=${OPTARG} + [ -d ${bufr_test_dir} ] || usage + local_test=true + echo "Using local test data directory ${bufr_test_dir}" + ;; + v) + NCEPLIBSbufr_version=${OPTARG} + echo "Using NCEPLIBSbufr version ${NCEPLIBSbufr_version}" + ;; + *) + usage + ;; + esac +done +shift $((OPTIND - 1)) # do we have gfortran? gfortran -v @@ -68,35 +87,44 @@ if [ $? -ne 0 ]; then exit 1 fi -# NOTE: We are using the develop version for now because none of the releases support python12 yet. -# When a release is made that supports python 3.12, we can switch to that. FIXME -# NCEPLIBSbufr_version="12.0.1" -# Use a specific sha for now - we know that one builds -NCEPLIBSbufr_version="0d9834838df19879d5469c4c121f81d00eb13c66" -tmp_workdir=$(mktemp -d) +if [ -z "${local_build_dir}" ]; then + # create a temporary directory for the build + tmp_workdir=$(mktemp -d) +else + # use the local build directory + tmp_workdir=${local_build_dir} +fi cd $tmp_workdir -#wget https://github.com/NOAA-EMC/NCEPLIBS-bufr/archive/refs/tags/v${NCEPLIBSbufr_version}.tar.gz -wget https://github.com/NOAA-EMC/NCEPLIBS-bufr/archive/${NCEPLIBSbufr_version}.zip -#tar -xzf v${NCEPLIBSbufr_version}.tar.gz -unzip ${NCEPLIBSbufr_version}.zip +wget https://github.com/NOAA-EMC/NCEPLIBS-bufr/archive/refs/tags/v${NCEPLIBSbufr_version}.tar.gz +if [ $? -ne 0 ]; then + echo "Unable to download NCEPLIBS-bufr version ${NCEPLIBSbufr_version}. Exiting." + exit 1 +fi +tar -xzf v${NCEPLIBSbufr_version}.tar.gz cd NCEPLIBS-bufr-${NCEPLIBSbufr_version} -# Create and use a 3.12 python venv +# Create and use a python venv # Check python version pver=$(python --version | awk '{print $2}' | awk -F'.' '{print $1""$2}') -if [ ${pver} != "312" ]; then - echo "Wrong python version - should be 3.12.x" +if [ ! ${pver} -ge 313 ]; then + echo "Wrong python version - should be greater than or equal to 3.11.x" exit 1 fi - +# capture the python version +pyver=$(python --version | awk '{print $2}' | awk -F'.' '{print $1"."$2}') +echo "Using python version ${pyver}" # get the platform platform=$(python -c "import sysconfig;print(sysconfig.get_platform())") # transform the platform string to the format used by many linux (change '-' and '.' to '_' and make it lowercase) platform=$(echo ${platform} | tr '[:upper:]' '[:lower:]' | tr '-' '_' | tr '.' '_') # create venv -python -m venv .venv-3.12 +python -m venv .venv-${pyver} # activate venv -. .venv-3.12/bin/activate +. .venv-${pyver}/bin/activate +# add poetry to path +PATH=$PATH:${HOME}/.local/bin +# upgrade pip +pip install --upgrade pip # set a trap to deactivate when the script exits trap "deactivate" EXIT @@ -112,25 +140,26 @@ cd build if [ "${local_test}" = true ]; then cmake -DCMAKE_INSTALL_PREFIX=./install -DENABLE_PYTHON=ON -DTEST_FILE_DIR=${bufr_test_dir} .. else - cmake -DCMAKE_INSTALL_PREFIX=./install -DENABLE_PYTHON=ON .. + cmake -DCMAKE_INSTALL_PREFIX=./install -DENABLE_PYTHON=ON -DBUILD_TESTING=OFF .. fi make -j2 VERBOSE=1 make install +#echo "Running tests..." ctest --verbose --output-on-failure --rerun-failed if [ $? -ne 0 ]; then echo "ctest did not pass!" -# exit 1 + exit 1 fi - # Now the poetry parts must be copied into the ${tmp_workdir} to enable the poetry build # linux_x86_64 appears to want to put all this lib stuff under lib64 not lib libdir="lib" if [ "$platform" = "linux_x86_64" ]; then libdir="lib64" fi -cd ${tmp_workdir}/NCEPLIBS-bufr-${NCEPLIBSbufr_version}/build/install/${libdir}/python3.12/site-packages +# copy the platform specific .so file to a common name for the petry build +cp ${tmp_workdir}/NCEPLIBS-bufr-${NCEPLIBSbufr_version}/build/install/${libdir}/python${pyver}/site-packages/_bufrlib.cpython-${pver}*.so ${tmp_workdir}/NCEPLIBS-bufr-${NCEPLIBSbufr_version}/build/install/${libdir}/python${pyver}/site-packages/_bufrlib.so +cd ${tmp_workdir}/NCEPLIBS-bufr-${NCEPLIBSbufr_version}/build/install/${libdir}/python${pyver}/site-packages cp -a ${VxIngest_root_dir}/third_party/NCEPLIBS-bufr/ncepbufr/* . - # check for poetry poetry -V if [ $? -ne 0 ]; then @@ -157,5 +186,11 @@ cp ${wheel} ${VxIngest_root_dir}/third_party/NCEPLIBS-bufr/wheel_dist/${dst_name # deactivate the venv #deactivate cd ${VxIngest_root_dir} -rm -rf ${tmp_workdir} +if [ -z "${local_build_dir}" ]; then + # remove the temporary work directory + echo "Removing temporary work directory ${tmp_workdir}" + rm -rf ${tmp_workdir} +else + echo "Using local build directory ${local_build_dir} - not removing." +fi exit 0 diff --git a/third_party/NCEPLIBS-bufr/ncepbufr/poetry.lock b/third_party/NCEPLIBS-bufr/ncepbufr/poetry.lock new file mode 100644 index 00000000..4975cf51 --- /dev/null +++ b/third_party/NCEPLIBS-bufr/ncepbufr/poetry.lock @@ -0,0 +1,155 @@ +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. + +[[package]] +name = "certifi" +version = "2024.7.4" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, + {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, +] + +[[package]] +name = "cftime" +version = "1.6.4" +description = "Time-handling functionality from netcdf4-python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "cftime-1.6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ee70074df4bae0d9ee98f201cf5f11fd302791cf1cdeb73c34f685d6b632e17d"}, + {file = "cftime-1.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e5456fd58d4cc6b8d7b4932b749617ee142b62a52bc5d8e3c282ce69ce3a20ba"}, + {file = "cftime-1.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1289e08617be350a6b26c6e4352a0cb088625ac33d25e95110df549c26d6ab8e"}, + {file = "cftime-1.6.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18b132d9225b4a109929866200846c72302316db9069e2de3ec8d8ec377f567f"}, + {file = "cftime-1.6.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ca1a264570e68fbb611bba251641b8efd0cf88c0ad2dcab5fa784df264232b75"}, + {file = "cftime-1.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:6fc82928cbf477bebf233f41914e64bff7b9e894c7f0c34170784a48250f8da7"}, + {file = "cftime-1.6.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c1558d9b477bd29626cd8bfc89e736635f72887d1a993e2834ab579bba7abb8c"}, + {file = "cftime-1.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:03494e7b66a2fbb6b04e364ab67185130dee0ced660abac5c1559070571d143d"}, + {file = "cftime-1.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4dcb2a01d4e614437582af33b36db4fb441b7666758482864827a1f037d2b639"}, + {file = "cftime-1.6.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b47bf25195fb3889bbae34df0e80957eb69c48f66902f5d538c7a8ec34253f6"}, + {file = "cftime-1.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d4f2cc0d5c6ffba9c5b0fd1ecd0c7c1c426d0be7b8de1480e2a9fb857c1905e9"}, + {file = "cftime-1.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:76b8f1e5d1e424accdf760a43e0a1793a7b640bab83cb067273d5c9dbb336c44"}, + {file = "cftime-1.6.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c349a91fa7ac9ec50118b04a8746bdea967bd2fc525d87c776003040b8d3392"}, + {file = "cftime-1.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:588d073400798adc24ece759cd1cb24ef730f55d1f70e31a898e7686f9d763d8"}, + {file = "cftime-1.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e07b91b488570573bbeb6f815656a8974d13d15b2279c82de2927f4f692bbcd"}, + {file = "cftime-1.6.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f92f2e405eeda47b30ab6231d8b7d136a55f21034d394f93ade322d356948654"}, + {file = "cftime-1.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:567574df94d0de1101bb5da76e7fbc6eabfddeeb2eb8cf83286b3599a136bbf7"}, + {file = "cftime-1.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:5b5ad7559a16bedadb66af8e417b6805f758acb57aa38d2730844dfc63a1e667"}, + {file = "cftime-1.6.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c072fe9e09925af66a9473edf5752ca1890ba752e7c1935d1f0245ad48f0977c"}, + {file = "cftime-1.6.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c05a71389f53d6340cb365b60f028c08268c72401660b9ef76108dee9f1cb5b2"}, + {file = "cftime-1.6.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0edeb1cb019d8155b2513cffb96749c0d7d459370e69bdf03077e0bee214aed8"}, + {file = "cftime-1.6.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8f05d5d6bb4137f9783fa61ad330030fcea8dcc6946dea69a27774edbe480e7"}, + {file = "cftime-1.6.4-cp38-cp38-win_amd64.whl", hash = "sha256:b32ac1278a2a111b066d5a1e6e5ce6f38c4c505993a6a3130873b56f99d7b56f"}, + {file = "cftime-1.6.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c20f03e12af39534c3450bba376272803bfb850b5ce6433c839bfaa99f8d835a"}, + {file = "cftime-1.6.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:90609b3c1a31a756a68ecdbc961a4ce0b22c1620f166c8dabfa3a4c337ac8b9e"}, + {file = "cftime-1.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbe11ad73b2a0ddc79995da21459fc2a3fd6b1593ca73f00a60e4d81c3e230f3"}, + {file = "cftime-1.6.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25f043703e785de0bd7cd8222c0a53317e9aeb3dfc062588b05e6f3ebb007468"}, + {file = "cftime-1.6.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f9acc272df1022f24fe7dbe9de43fa5d8271985161df14549e4d8d28c90dc9ea"}, + {file = "cftime-1.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:e8467b6fbf8dbfe0be8c04d61180765fdd3b9ab0fe51313a0bbf87e63634a3d8"}, + {file = "cftime-1.6.4.tar.gz", hash = "sha256:e325406193758a7ed67308deb52e727782a19e384e183378e7ff62098be0aedc"}, +] + +[package.dependencies] +numpy = {version = ">=1.26.0b1", markers = "python_version >= \"3.12.0.rc1\""} + +[[package]] +name = "netcdf4" +version = "1.7.1.post1" +description = "Provides an object-oriented python interface to the netCDF version 4 library" +optional = false +python-versions = ">=3.8" +files = [ + {file = "netCDF4-1.7.1.post1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:5abdc8ab27bcb11325547841311717a0ba8f5b73a5fc5e93b933bc23285d0c03"}, + {file = "netCDF4-1.7.1.post1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:33f5d66ee9cedf43d3932d0e5447eb471f9c53332f93476133b4bfc6b682f790"}, + {file = "netCDF4-1.7.1.post1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d649fad9d1f63e25a191576c7de158c8c3afa8d4b4001e8683e20da90b49b939"}, + {file = "netCDF4-1.7.1.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:860222bc57bbc714e55705f263162be2c935129dcb700a944bda61aee785ff03"}, + {file = "netCDF4-1.7.1.post1-cp310-cp310-win_amd64.whl", hash = "sha256:d5420155ca6c768c070922d80acd9f4088a913afd25a9fd2f429e7af626374eb"}, + {file = "netCDF4-1.7.1.post1-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:a8d3209516aa8c58d70863ab1059af4ec82ef8ecb1c6b8cb4842d7825a6f64da"}, + {file = "netCDF4-1.7.1.post1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:7a10da9b60d3358876d53a0cd691d2c900c2b39903bf25ad5235fd321d59eb2f"}, + {file = "netCDF4-1.7.1.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30ac99e03d6e28419b206444fd6dc80a5e21d0ae8e53ff37d756fbc16c5d3775"}, + {file = "netCDF4-1.7.1.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e15f3afa4e6910fc158a318ea73fdc6f9e41058c71bf98a99fd63994334d16b0"}, + {file = "netCDF4-1.7.1.post1-cp311-cp311-win_amd64.whl", hash = "sha256:115160fc8e09333754542c33d721d42625a7bd62381a74f2f759297e3e38810b"}, + {file = "netCDF4-1.7.1.post1-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:75bba24ef0354fb6913bc3acdcb3790534e86bf329bbeaaf54122b18e5fd05ea"}, + {file = "netCDF4-1.7.1.post1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:ce7f89b98dbb3acd9582db30e6478ce7a7003b2cb70dc20d85fe9506e65ab001"}, + {file = "netCDF4-1.7.1.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac4e30a0d5a8e227d6a890502cfa201388acf606c0c73a5a7594232f3a74e67e"}, + {file = "netCDF4-1.7.1.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:988c45f9122337a12267fb158953c0609e3ea50a557335a3105f104416a4821a"}, + {file = "netCDF4-1.7.1.post1-cp312-cp312-win_amd64.whl", hash = "sha256:8fb3ed3541fa1b5b46e9d92d7e803734a1a3f37d8f5adf5fdf7957c7750cb20e"}, + {file = "netCDF4-1.7.1.post1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:a4d05cc4c3628a7b88d623cb1a02908100a4938335a0289fa79c19016c21d7f9"}, + {file = "netCDF4-1.7.1.post1-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:3a9ba8dc93f3d9019db921e42d40fa6791e7e244f3bb3a874bf2bfb96aea7380"}, + {file = "netCDF4-1.7.1.post1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fbbca82a822ba74b605254f7a267d258f13d67f8a4156a09e26322bfa002a82d"}, + {file = "netCDF4-1.7.1.post1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a09da245f4784421fb4d5740dae0367cdbb270d0a931a33474ec17a9433314d"}, + {file = "netCDF4-1.7.1.post1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:fdcec3a3150f9248e76301ad723f51955efc770edf015dfb61a6480cc7c04a70"}, + {file = "netCDF4-1.7.1.post1-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:0fed0eb65a7751a99a0cee08c6df383737d46d17c73cabae81d113f1b4fa3643"}, + {file = "netCDF4-1.7.1.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daa6169fe6617a4612cb75a8ef61ee14011a012633ad1ace1b629a1ff87bf5cf"}, + {file = "netCDF4-1.7.1.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcad21e965978cc5530131bd7e73dcabe7dda1f681f9e4ebf940a65a176d25fe"}, + {file = "netCDF4-1.7.1.post1-cp39-cp39-win_amd64.whl", hash = "sha256:f24027ae19b68cc1274aad8b00d6d81879d506ddca011a080dff2117014398b9"}, + {file = "netcdf4-1.7.1.post1.tar.gz", hash = "sha256:797f0b25d87827fc6821e415d9e15a2068604b18c3be62563e72682bcba76548"}, +] + +[package.dependencies] +certifi = "*" +cftime = "*" +numpy = "*" + +[package.extras] +tests = ["Cython", "packaging", "pytest"] + +[[package]] +name = "numpy" +version = "2.0.1" +description = "Fundamental package for array computing in Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "numpy-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0fbb536eac80e27a2793ffd787895242b7f18ef792563d742c2d673bfcb75134"}, + {file = "numpy-2.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:69ff563d43c69b1baba77af455dd0a839df8d25e8590e79c90fcbe1499ebde42"}, + {file = "numpy-2.0.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:1b902ce0e0a5bb7704556a217c4f63a7974f8f43e090aff03fcf262e0b135e02"}, + {file = "numpy-2.0.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:f1659887361a7151f89e79b276ed8dff3d75877df906328f14d8bb40bb4f5101"}, + {file = "numpy-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4658c398d65d1b25e1760de3157011a80375da861709abd7cef3bad65d6543f9"}, + {file = "numpy-2.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4127d4303b9ac9f94ca0441138acead39928938660ca58329fe156f84b9f3015"}, + {file = "numpy-2.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e5eeca8067ad04bc8a2a8731183d51d7cbaac66d86085d5f4766ee6bf19c7f87"}, + {file = "numpy-2.0.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9adbd9bb520c866e1bfd7e10e1880a1f7749f1f6e5017686a5fbb9b72cf69f82"}, + {file = "numpy-2.0.1-cp310-cp310-win32.whl", hash = "sha256:7b9853803278db3bdcc6cd5beca37815b133e9e77ff3d4733c247414e78eb8d1"}, + {file = "numpy-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:81b0893a39bc5b865b8bf89e9ad7807e16717f19868e9d234bdaf9b1f1393868"}, + {file = "numpy-2.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:75b4e316c5902d8163ef9d423b1c3f2f6252226d1aa5cd8a0a03a7d01ffc6268"}, + {file = "numpy-2.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6e4eeb6eb2fced786e32e6d8df9e755ce5be920d17f7ce00bc38fcde8ccdbf9e"}, + {file = "numpy-2.0.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:a1e01dcaab205fbece13c1410253a9eea1b1c9b61d237b6fa59bcc46e8e89343"}, + {file = "numpy-2.0.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:a8fc2de81ad835d999113ddf87d1ea2b0f4704cbd947c948d2f5513deafe5a7b"}, + {file = "numpy-2.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a3d94942c331dd4e0e1147f7a8699a4aa47dffc11bf8a1523c12af8b2e91bbe"}, + {file = "numpy-2.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15eb4eca47d36ec3f78cde0a3a2ee24cf05ca7396ef808dda2c0ddad7c2bde67"}, + {file = "numpy-2.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b83e16a5511d1b1f8a88cbabb1a6f6a499f82c062a4251892d9ad5d609863fb7"}, + {file = "numpy-2.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1f87fec1f9bc1efd23f4227becff04bd0e979e23ca50cc92ec88b38489db3b55"}, + {file = "numpy-2.0.1-cp311-cp311-win32.whl", hash = "sha256:36d3a9405fd7c511804dc56fc32974fa5533bdeb3cd1604d6b8ff1d292b819c4"}, + {file = "numpy-2.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:08458fbf403bff5e2b45f08eda195d4b0c9b35682311da5a5a0a0925b11b9bd8"}, + {file = "numpy-2.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6bf4e6f4a2a2e26655717a1983ef6324f2664d7011f6ef7482e8c0b3d51e82ac"}, + {file = "numpy-2.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d6fddc5fe258d3328cd8e3d7d3e02234c5d70e01ebe377a6ab92adb14039cb4"}, + {file = "numpy-2.0.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:5daab361be6ddeb299a918a7c0864fa8618af66019138263247af405018b04e1"}, + {file = "numpy-2.0.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:ea2326a4dca88e4a274ba3a4405eb6c6467d3ffbd8c7d38632502eaae3820587"}, + {file = "numpy-2.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:529af13c5f4b7a932fb0e1911d3a75da204eff023ee5e0e79c1751564221a5c8"}, + {file = "numpy-2.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6790654cb13eab303d8402354fabd47472b24635700f631f041bd0b65e37298a"}, + {file = "numpy-2.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:cbab9fc9c391700e3e1287666dfd82d8666d10e69a6c4a09ab97574c0b7ee0a7"}, + {file = "numpy-2.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:99d0d92a5e3613c33a5f01db206a33f8fdf3d71f2912b0de1739894668b7a93b"}, + {file = "numpy-2.0.1-cp312-cp312-win32.whl", hash = "sha256:173a00b9995f73b79eb0191129f2455f1e34c203f559dd118636858cc452a1bf"}, + {file = "numpy-2.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:bb2124fdc6e62baae159ebcfa368708867eb56806804d005860b6007388df171"}, + {file = "numpy-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bfc085b28d62ff4009364e7ca34b80a9a080cbd97c2c0630bb5f7f770dae9414"}, + {file = "numpy-2.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8fae4ebbf95a179c1156fab0b142b74e4ba4204c87bde8d3d8b6f9c34c5825ef"}, + {file = "numpy-2.0.1-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:72dc22e9ec8f6eaa206deb1b1355eb2e253899d7347f5e2fae5f0af613741d06"}, + {file = "numpy-2.0.1-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:ec87f5f8aca726117a1c9b7083e7656a9d0d606eec7299cc067bb83d26f16e0c"}, + {file = "numpy-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f682ea61a88479d9498bf2091fdcd722b090724b08b31d63e022adc063bad59"}, + {file = "numpy-2.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8efc84f01c1cd7e34b3fb310183e72fcdf55293ee736d679b6d35b35d80bba26"}, + {file = "numpy-2.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3fdabe3e2a52bc4eff8dc7a5044342f8bd9f11ef0934fcd3289a788c0eb10018"}, + {file = "numpy-2.0.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:24a0e1befbfa14615b49ba9659d3d8818a0f4d8a1c5822af8696706fbda7310c"}, + {file = "numpy-2.0.1-cp39-cp39-win32.whl", hash = "sha256:f9cf5ea551aec449206954b075db819f52adc1638d46a6738253a712d553c7b4"}, + {file = "numpy-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:e9e81fa9017eaa416c056e5d9e71be93d05e2c3c2ab308d23307a8bc4443c368"}, + {file = "numpy-2.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:61728fba1e464f789b11deb78a57805c70b2ed02343560456190d0501ba37b0f"}, + {file = "numpy-2.0.1-pp39-pypy39_pp73-macosx_14_0_x86_64.whl", hash = "sha256:12f5d865d60fb9734e60a60f1d5afa6d962d8d4467c120a1c0cda6eb2964437d"}, + {file = "numpy-2.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eacf3291e263d5a67d8c1a581a8ebbcfd6447204ef58828caf69a5e3e8c75990"}, + {file = "numpy-2.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2c3a346ae20cfd80b6cfd3e60dc179963ef2ea58da5ec074fd3d9e7a1e7ba97f"}, + {file = "numpy-2.0.1.tar.gz", hash = "sha256:485b87235796410c3519a699cfe1faab097e509e90ebb05dcd098db2ae87e7b3"}, +] + +[metadata] +lock-version = "2.0" +python-versions = "^3.12" +content-hash = "4ab469034dda60ccf3540aba39ad2b477e5e2e577e92a230b6be45e8431fe050" diff --git a/third_party/NCEPLIBS-bufr/ncepbufr/pyproject.toml b/third_party/NCEPLIBS-bufr/ncepbufr/pyproject.toml index 36f215ad..beb60ea2 100644 --- a/third_party/NCEPLIBS-bufr/ncepbufr/pyproject.toml +++ b/third_party/NCEPLIBS-bufr/ncepbufr/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "ncepbufr" -version = "12.0.1" +version = "12.2.0" description = "packaging the ncepbufr library for use in python" authors = [ "Ian McGinnis ", @@ -8,12 +8,14 @@ authors = [ ] readme = "README.md" license = "GNU Lesser General Public License v3.0" -include = ["_bufrlib.cpython-312-darwin.so"] +include = [ + { path = "_bufrlib.so", format = ["sdist", "wheel"] } +] [tool.poetry.dependencies] -python = "^3.12" -numpy = "^1" -netcdf4 = "^1" +python = "^3.13" +numpy = "^2.0.0" +netcdf4 = "^1.7.2" [build-system] requires = ["poetry-core"] diff --git a/third_party/NCEPLIBS-bufr/tests/dump.py b/third_party/NCEPLIBS-bufr/tests/dump.py new file mode 100644 index 00000000..bfb1fb79 --- /dev/null +++ b/third_party/NCEPLIBS-bufr/tests/dump.py @@ -0,0 +1,24 @@ +import sys + +import ncepbufr + +# dump contents of bufr file to stdout or to a text file. +# Warning: resulting output may be HUGE. + +bufr = ncepbufr.open(sys.argv[1]) +first_dump = True # after first write, append to existing file. +verbose = False # this produces more readable output. +while bufr.advance() == 0: # loop over messages. + while bufr.load_subset() == 0: # loop over subsets in message. + if len(sys.argv) > 2: + # dump decoded data to a file. + if first_dump: + # clobber file if it exists + bufr.dump_subset(sys.argv[2], verbose=verbose) + first_dump = False + else: + # append to existing file. + bufr.dump_subset(sys.argv[2], append=True, verbose=verbose) + else: + bufr.print_subset(verbose=verbose) # print decoded subset to stdout +bufr.close() diff --git a/third_party/NCEPLIBS-bufr/tests/dump_by_mnemonic.py b/third_party/NCEPLIBS-bufr/tests/dump_by_mnemonic.py new file mode 100644 index 00000000..678f074f --- /dev/null +++ b/third_party/NCEPLIBS-bufr/tests/dump_by_mnemonic.py @@ -0,0 +1,31 @@ +import sys + +import ncepbufr + +# dump contents of bufr file to stdout or to a text file by mnemonic. +# Warning: resulting output may be HUGE. + +if len(sys.argv) < 3: + print(f"Usage: {sys.argv[0]} ") + sys.exit(1) +bufr = ncepbufr.open(sys.argv[1]) +mnemonic = sys.argv[2] + +first_dump = True # after first write, append to existing file. +verbose = True # this produces more readable output. +while bufr.advance() == 0: # loop over messages. + if mnemonic == bufr.msg_type: + while bufr.load_subset() == 0: # loop over subsets in message. + # dump decoded data to terminal. + if len(sys.argv) > 3: + # dump decoded data to a file. + if first_dump: + # clobber file if it exists + bufr.dump_subset(sys.argv[3], verbose=verbose) + first_dump = False + else: + # append to existing file. + bufr.dump_subset(sys.argv[3], append=True, verbose=verbose) + else: + bufr.print_subset(verbose=verbose) # print decoded subset to stdout +bufr.close() diff --git a/third_party/NCEPLIBS-bufr/tests/get_inventory_by_mnemonic.py b/third_party/NCEPLIBS-bufr/tests/get_inventory_by_mnemonic.py new file mode 100644 index 00000000..6111ca69 --- /dev/null +++ b/third_party/NCEPLIBS-bufr/tests/get_inventory_by_mnemonic.py @@ -0,0 +1,20 @@ +import sys + +import ncepbufr + +# print inventory of specified bufr file messages by mnemonic +if len(sys.argv) < 3: + print(f"Usage: {sys.argv[0]} ") + sys.exit(1) +bufr = ncepbufr.open(sys.argv[1]) +mnemonic = sys.argv[2] +nsubsets = 0 +inv = bufr.inventory() +for n, msg in enumerate(inv): + if msg[1] != mnemonic: + continue + out = (n + 1,) + msg + print("message {}: {} {} {} {} subsets".format(*out)) + nsubsets += out[4] +bufr.close() +print(f"{nsubsets} total subsets in {len(inv)} messages") diff --git a/third_party/NCEPLIBS-bufr/tests/read_template_variables_by_mnemonic.py b/third_party/NCEPLIBS-bufr/tests/read_template_variables_by_mnemonic.py new file mode 100644 index 00000000..704a91b3 --- /dev/null +++ b/third_party/NCEPLIBS-bufr/tests/read_template_variables_by_mnemonic.py @@ -0,0 +1,31 @@ +import sys + +import ncepbufr + +if len(sys.argv) < 3: + print(f"Usage: {sys.argv[0]} ") + sys.exit(1) +bufr = ncepbufr.open(sys.argv[1]) +mnemonic = sys.argv[2] + +first_dump = True # after first write, append to existing file. +verbose = False # this produces more readable output. +while bufr.advance() == 0: # loop over messages. + if mnemonic == bufr.msg_type: + vars = { + "temperature": "TOB", + "dewpoint": "TDO", + "rh": "RHO", + "specific_humidity": "QOB", + "pressure": "POB", + "height:": "ZOB", + "wind_speed": "SOB", + "U-Wind": "UOB", + "V-Wind": "VOB", + "wind_direction": "DDO", + } + while bufr.load_subset() == 0: # loop over subsets in message. + for _v in vars: + val = bufr.read_subset(vars[_v]).squeeze() + print(f"{_v}: {val}") +bufr.close() diff --git a/third_party/NCEPLIBS-bufr/tests/test_checkpoint.py b/third_party/NCEPLIBS-bufr/tests/test_checkpoint.py index 99325c40..86e5795a 100644 --- a/third_party/NCEPLIBS-bufr/tests/test_checkpoint.py +++ b/third_party/NCEPLIBS-bufr/tests/test_checkpoint.py @@ -1,18 +1,18 @@ from __future__ import print_function import ncepbufr -hdstr='SID XOB YOB DHR TYP ELV SAID T29' -obstr='POB QOB TOB ZOB UOB VOB PWO MXGS HOVI CAT PRSS TDO PMO' -qcstr='PQM QQM TQM ZQM WQM NUL PWQ PMQ' -oestr='POE QOE TOE NUL WOE NUL PWE ' +hdstr = "SID XOB YOB DHR TYP ELV SAID T29" +obstr = "POB QOB TOB ZOB UOB VOB PWO MXGS HOVI CAT PRSS TDO PMO" +qcstr = "PQM QQM TQM ZQM WQM NUL PWQ PMQ" +oestr = "POE QOE TOE NUL WOE NUL PWE " # read prepbufr file. -print('the following lines should be the same') -bufr = ncepbufr.open('data/prepbufr') +print("the following lines should be the same") +bufr = ncepbufr.open("data/prepbufr") nmsg = 0 while bufr.advance() == 0: - #print(nmsg, bufr.msg_counter, bufr.msg_type, bufr.msg_date) + # print(nmsg, bufr.msg_counter, bufr.msg_type, bufr.msg_date) while bufr.load_subset() == 0: hdr = bufr.read_subset(hdstr).squeeze() station_id = hdr[0].tostring() @@ -21,10 +21,18 @@ oer = bufr.read_subset(oestr) qcf = bufr.read_subset(qcstr) if nmsg == 10: - print('station_id, lon, lat, time, station_type, levels =',\ - station_id,hdr[1],hdr[2],hdr[3],int(hdr[4]),nlevs) + print( + "station_id, lon, lat, time, station_type, levels =", + station_id, + hdr[1], + hdr[2], + hdr[3], + int(hdr[4]), + nlevs, + ) bufr.checkpoint() - if nmsg == 15: break + if nmsg == 15: + break nmsg += 1 bufr.restore() bufr.load_subset() @@ -34,6 +42,13 @@ nlevs = obs.shape[-1] oer = bufr.read_subset(oestr) qcf = bufr.read_subset(qcstr) -print('station_id, lon, lat, time, station_type, levels =',\ -station_id,hdr[1],hdr[2],hdr[3],int(hdr[4]),nlevs) +print( + "station_id, lon, lat, time, station_type, levels =", + station_id, + hdr[1], + hdr[2], + hdr[3], + int(hdr[4]), + nlevs, +) bufr.close() diff --git a/third_party/NCEPLIBS-bufr/tests/test_gps.py b/third_party/NCEPLIBS-bufr/tests/test_gps.py index fe9216ce..40a96f02 100644 --- a/third_party/NCEPLIBS-bufr/tests/test_gps.py +++ b/third_party/NCEPLIBS-bufr/tests/test_gps.py @@ -1,43 +1,49 @@ -from __future__ import print_function import ncepbufr -hdrstr ='YEAR MNTH DAYS HOUR MINU PCCF ELRC SAID PTID GEODU' +hdrstr = "YEAR MNTH DAYS HOUR MINU PCCF ELRC SAID PTID GEODU" # read gpsro file. -bufr = ncepbufr.open('data/gpsbufr') +bufr = ncepbufr.open("data/gpsbufr") bufr.print_table() while bufr.advance() == 0: print(bufr.msg_counter, bufr.msg_type, bufr.msg_date) while bufr.load_subset() == 0: hdr = bufr.read_subset(hdrstr).squeeze() - yyyymmddhh ='%04i%02i%02i%02i%02i' % tuple(hdr[0:5]) + yyyymmddhh = "%04i%02i%02i%02i%02i" % tuple(hdr[0:5]) satid = int(hdr[7]) ptid = int(hdr[8]) - nreps_this_ROSEQ2 = bufr.read_subset('{ROSEQ2}').squeeze() + nreps_this_ROSEQ2 = bufr.read_subset("{ROSEQ2}").squeeze() nreps_this_ROSEQ1 = len(nreps_this_ROSEQ2) - data1b = bufr.read_subset('ROSEQ1',seq=True) # bending angle - data2a = bufr.read_subset('ROSEQ3',seq=True) # refractivity + data1b = bufr.read_subset("ROSEQ1", seq=True) # bending angle + data2a = bufr.read_subset("ROSEQ3", seq=True) # refractivity levs_bend = data1b.shape[1] levs_ref = data2a.shape[1] if levs_ref != levs_bend: - print('skip report due to bending angle/refractivity mismatch') + print("skip report due to bending angle/refractivity mismatch") continue - print('sat id,platform transitter id, levels, yyyymmddhhmm =',\ - satid,ptid,levs_ref,yyyymmddhh) - print('k, height, lat, lon, ref, bend:') + print( + "sat id,platform transitter id, levels, yyyymmddhhmm =", + satid, + ptid, + levs_ref, + yyyymmddhh, + ) + print("k, height, lat, lon, ref, bend:") for k in range(levs_ref): - rlat = data1b[0,k] - rlon = data1b[1,k] - height = data2a[0,k] - ref = data2a[1,k] + rlat = data1b[0, k] + rlon = data1b[1, k] + height = data2a[0, k] + ref = data2a[1, k] for i in range(int(nreps_this_ROSEQ2[k])): - m = 6*(i+1)-3 - freq = data1b[m,k] - bend = data1b[m+2,k] + m = 6 * (i + 1) - 3 + freq = data1b[m, k] + bend = data1b[m + 2, k] # look for zero frequency bending angle ob - if int(freq) == 0: break - print(k,rlat,rlon,height,ref,bend) + if int(freq) == 0: + break + print(k, rlat, rlon, height, ref, bend) # only loop over first 6 subsets - if bufr.msg_counter == 6: break + if bufr.msg_counter == 6: + break bufr.close() diff --git a/third_party/NCEPLIBS-bufr/tests/test_misc.py b/third_party/NCEPLIBS-bufr/tests/test_misc.py index d1fefb47..c61a01de 100644 --- a/third_party/NCEPLIBS-bufr/tests/test_misc.py +++ b/third_party/NCEPLIBS-bufr/tests/test_misc.py @@ -3,96 +3,97 @@ import numpy as np # read prepbufr file. -hdstr='SID XOB YOB DHR TYP ELV SAID T29' -obstr='POB QOB TOB ZOB UOB VOB PWO MXGS HOVI CAT PRSS TDO PMO' -qcstr='PQM QQM TQM ZQM WQM NUL PWQ PMQ' -oestr='POE QOE TOE NUL WOE NUL PWE' -bufr = ncepbufr.open('data/prepbufr') -while bufr.advance() == 0: # loop over messages. - while bufr.load_subset() == 0: # loop over subsets in message. +hdstr = "SID XOB YOB DHR TYP ELV SAID T29" +obstr = "POB QOB TOB ZOB UOB VOB PWO MXGS HOVI CAT PRSS TDO PMO" +qcstr = "PQM QQM TQM ZQM WQM NUL PWQ PMQ" +oestr = "POE QOE TOE NUL WOE NUL PWE" +bufr = ncepbufr.open("data/prepbufr") +while bufr.advance() == 0: # loop over messages. + while bufr.load_subset() == 0: # loop over subsets in message. hdr = bufr.read_subset(hdstr).squeeze() station_id = hdr[0].tobytes() - lon = hdr[1]; lat = hdr[2] + lon = hdr[1] + lat = hdr[2] station_type = int(hdr[4]) obs = bufr.read_subset(obstr) nlevs = obs.shape[-1] oer = bufr.read_subset(oestr) qcf = bufr.read_subset(qcstr) # stop after first 2 messages. - if bufr.msg_counter == 2: break + if bufr.msg_counter == 2: + break # check data # station_id,lon,lat,time,station_type,nlevs -assert station_id.rstrip() == b'91925' -np.testing.assert_almost_equal(lon,220.97) -np.testing.assert_almost_equal(lat,-9.8) +assert station_id.rstrip() == b"91925" +np.testing.assert_almost_equal(lon, 220.97) +np.testing.assert_almost_equal(lat, -9.8) assert station_type == 220 assert nlevs == 41 -obs_str = '%s' % obs[:,-1] -oer_str = '%s' % oer[:,-1] -qc_str = '%s' % qcf[:,-1] -assert obs_str ==\ - '[19.0 -- -- -- -11.200000000000001 5.2 -- -- -- 3.0 -- -- --]' -assert oer_str == \ - '[-- -- -- -- 2.1 -- --]' -assert qc_str == \ - '[2.0 -- -- -- 2.0 -- -- --]' +obs_str = "%s" % obs[:, -1] +oer_str = "%s" % oer[:, -1] +qc_str = "%s" % qcf[:, -1] +assert obs_str == "[19.0 -- -- -- -11.200000000000001 5.2 -- -- -- 3.0 -- -- --]" +assert oer_str == "[-- -- -- -- 2.1 -- --]" +assert qc_str == "[2.0 -- -- -- 2.0 -- -- --]" bufr.close() # read gpsro file -hdrstr ='YEAR MNTH DAYS HOUR MINU PCCF ELRC SAID PTID GEODU' -bufr = ncepbufr.open('data/gpsbufr') +hdrstr = "YEAR MNTH DAYS HOUR MINU PCCF ELRC SAID PTID GEODU" +bufr = ncepbufr.open("data/gpsbufr") nskip = 0 while bufr.advance() == 0: while bufr.load_subset() == 0: hdr = bufr.read_subset(hdrstr).squeeze() - yyyymmddhh ='%04i%02i%02i%02i%02i' % tuple(hdr[0:5]) + yyyymmddhh = "%04i%02i%02i%02i%02i" % tuple(hdr[0:5]) satid = int(hdr[7]) ptid = int(hdr[8]) - nreps_this_ROSEQ2 = bufr.read_subset('{ROSEQ2}').squeeze() + nreps_this_ROSEQ2 = bufr.read_subset("{ROSEQ2}").squeeze() nreps_this_ROSEQ1 = len(nreps_this_ROSEQ2) - data1b = bufr.read_subset('ROSEQ1',seq=True) # bending angle - data2a = bufr.read_subset('ROSEQ3',seq=True) # refractivity + data1b = bufr.read_subset("ROSEQ1", seq=True) # bending angle + data2a = bufr.read_subset("ROSEQ3", seq=True) # refractivity levs_bend = data1b.shape[1] levs_ref = data2a.shape[1] if levs_ref != levs_bend: - #print('skip report due to bending angle/refractivity mismatch') + # print('skip report due to bending angle/refractivity mismatch') nskip += 1 continue for k in range(levs_ref): - rlat = data1b[0,k] - rlon = data1b[1,k] - height = data2a[0,k] - ref = data2a[1,k] + rlat = data1b[0, k] + rlon = data1b[1, k] + height = data2a[0, k] + ref = data2a[1, k] for i in range(int(nreps_this_ROSEQ2[k])): - m = 6*(i+1)-3 - freq = data1b[m,k] - bend = data1b[m+2,k] + m = 6 * (i + 1) - 3 + freq = data1b[m, k] + bend = data1b[m + 2, k] # look for zero frequency bending angle ob - if int(freq) == 0: break + if int(freq) == 0: + break # only loop over first 6 subsets - if bufr.msg_counter == 6: break + if bufr.msg_counter == 6: + break # check data assert levs_ref == 247 assert nskip == 2 assert satid == 3 assert ptid == 7 -assert yyyymmddhh == '201504072109' -np.testing.assert_almost_equal(rlon,-11.62675) -np.testing.assert_almost_equal(rlat,46.85915) -np.testing.assert_almost_equal(height,59844.0) -np.testing.assert_almost_equal(ref,0.068) -np.testing.assert_almost_equal(bend*1.e6,4.8) +assert yyyymmddhh == "201504072109" +np.testing.assert_almost_equal(rlon, -11.62675) +np.testing.assert_almost_equal(rlat, 46.85915) +np.testing.assert_almost_equal(height, 59844.0) +np.testing.assert_almost_equal(ref, 0.068) +np.testing.assert_almost_equal(bend * 1.0e6, 4.8) bufr.close() # read amsua radiance file. -hdstr1 ='SAID SIID FOVN YEAR MNTH DAYS HOUR MINU SECO CLAT CLON CLATH CLONH HOLS' -hdstr2 ='SAZA SOZA BEARAZ SOLAZI' -bufr = ncepbufr.open('data/1bamua') +hdstr1 = "SAID SIID FOVN YEAR MNTH DAYS HOUR MINU SECO CLAT CLON CLATH CLONH HOLS" +hdstr2 = "SAZA SOZA BEARAZ SOLAZI" +bufr = ncepbufr.open("data/1bamua") while bufr.advance() == 0: while bufr.load_subset() == 0: hdr1 = bufr.read_subset(hdstr1).squeeze() hdr2 = bufr.read_subset(hdstr2).squeeze() - yyyymmddhhss ='%04i%02i%02i%02i%02i%02i' % tuple(hdr1[3:9]) + yyyymmddhhss = "%04i%02i%02i%02i%02i%02i" % tuple(hdr1[3:9]) # for satellite id, see common code table c-5 # (http://www.emc.ncep.noaa.gov/mmb/data_processing/common_tbl_c1-c5.htm#c-5) # for sensor id, see common code table c-8 @@ -101,59 +102,79 @@ sensorid = int(hdr1[1]) lat = hdr1[9] lon = hdr1[10] - obs = bufr.read_subset('TMBR',rep=True).squeeze() + obs = bufr.read_subset("TMBR", rep=True).squeeze() nchanl = len(obs) # only loop over first 4 subsets - if bufr.msg_counter == 4: break + if bufr.msg_counter == 4: + break assert satid == 3 assert nchanl == 15 assert sensorid == 570 -assert yyyymmddhhss == '20131231210233' -assert bufr.msg_type == 'NC021023' +assert yyyymmddhhss == "20131231210233" +assert bufr.msg_type == "NC021023" assert bufr.msg_date == 2013123121 -np.testing.assert_almost_equal(lat,37.6066) -np.testing.assert_almost_equal(lon,-167.3253) -obs_tst=np.array([1.4555e+02,1.4618e+02,2.1374e+02,2.4871e+02,2.4807e+02,2.3607e+02,\ - 2.2802e+02,2.2255e+02,2.1699e+02,2.1880e+02,2.2440e+02,2.2970e+02,\ - 2.3407e+02,1.0000e+11,2.0008e+02],np.float64) -np.testing.assert_array_almost_equal(obs,obs_tst) +np.testing.assert_almost_equal(lat, 37.6066) +np.testing.assert_almost_equal(lon, -167.3253) +obs_tst = np.array( + [ + 1.4555e02, + 1.4618e02, + 2.1374e02, + 2.4871e02, + 2.4807e02, + 2.3607e02, + 2.2802e02, + 2.2255e02, + 2.1699e02, + 2.1880e02, + 2.2440e02, + 2.2970e02, + 2.3407e02, + 1.0000e11, + 2.0008e02, + ], + np.float64, +) +np.testing.assert_array_almost_equal(obs, obs_tst) bufr.close() # read satellite wind file. -hdrstr = 'SAID CLAT CLON YEAR MNTH DAYS HOUR MINU SWCM SAZA GCLONG SCCF SWQM' -obstr = 'HAMD PRLC WDIR WSPD' -qcstr = 'OGCE GNAP PCCF' -bufr = ncepbufr.open('data/satwndbufr') +hdrstr = "SAID CLAT CLON YEAR MNTH DAYS HOUR MINU SWCM SAZA GCLONG SCCF SWQM" +obstr = "HAMD PRLC WDIR WSPD" +qcstr = "OGCE GNAP PCCF" +bufr = ncepbufr.open("data/satwndbufr") while bufr.advance() == 0: while bufr.load_subset() == 0: hdr = bufr.read_subset(hdrstr).squeeze() - yyyymmddhh ='%04i%02i%02i%02i%02i' % tuple(hdr[3:8]) + yyyymmddhh = "%04i%02i%02i%02i%02i" % tuple(hdr[3:8]) satid = int(hdr[0]) windtype = int(hdr[8]) - lat = hdr[1]; lon = hdr[2] + lat = hdr[1] + lon = hdr[2] qm = hdr[12] obdata = bufr.read_subset(obstr).squeeze() # only loop over first 4 subsets - if bufr.msg_counter == 4: break + if bufr.msg_counter == 4: + break assert satid == 257 assert windtype == 1 -assert bufr.msg_type == 'NC005010' +assert bufr.msg_type == "NC005010" assert bufr.msg_date == 2014040822 -assert yyyymmddhh == '201404082245' -np.testing.assert_almost_equal(lat,14.15) -np.testing.assert_almost_equal(lon,-32.7) -np.testing.assert_almost_equal(obdata[1],77500.0) # pressure -np.testing.assert_almost_equal(qm,2.0) # quality mark -np.testing.assert_almost_equal(obdata[3],10.0) # speed -np.testing.assert_almost_equal(obdata[2],62.0) # direction +assert yyyymmddhh == "201404082245" +np.testing.assert_almost_equal(lat, 14.15) +np.testing.assert_almost_equal(lon, -32.7) +np.testing.assert_almost_equal(obdata[1], 77500.0) # pressure +np.testing.assert_almost_equal(qm, 2.0) # quality mark +np.testing.assert_almost_equal(obdata[3], 10.0) # speed +np.testing.assert_almost_equal(obdata[2], 62.0) # direction bufr.close() # test checkpointing. -hdstr='SID XOB YOB DHR TYP ELV SAID T29' -obstr='POB QOB TOB ZOB UOB VOB PWO MXGS HOVI CAT PRSS TDO PMO' -qcstr='PQM QQM TQM ZQM WQM NUL PWQ PMQ' -oestr='POE QOE TOE NUL WOE NUL PWE ' -bufr = ncepbufr.open('data/prepbufr') +hdstr = "SID XOB YOB DHR TYP ELV SAID T29" +obstr = "POB QOB TOB ZOB UOB VOB PWO MXGS HOVI CAT PRSS TDO PMO" +qcstr = "PQM QQM TQM ZQM WQM NUL PWQ PMQ" +oestr = "POE QOE TOE NUL WOE NUL PWE " +bufr = ncepbufr.open("data/prepbufr") nmsg = 0 while bufr.advance() == 0: while bufr.load_subset() == 0: @@ -164,12 +185,16 @@ oer = bufr.read_subset(oestr) qcf = bufr.read_subset(qcstr) if nmsg == 10: - obs_save = obs.copy(); oer_save = oer.copy(); qcf_save = qcf.copy() - str1 =\ - 'station_id=%s, lon=%7.2f, lat=%7.2f, time=%6.3f, station_type=%s, levels=%s' %\ - (station_id.rstrip(),hdr[1],hdr[2],hdr[3],int(hdr[4]),nlevs) + obs_save = obs.copy() + oer_save = oer.copy() + qcf_save = qcf.copy() + str1 = ( + "station_id=%s, lon=%7.2f, lat=%7.2f, time=%6.3f, station_type=%s, levels=%s" + % (station_id.rstrip(), hdr[1], hdr[2], hdr[3], int(hdr[4]), nlevs) + ) bufr.checkpoint() - if nmsg == 15: break + if nmsg == 15: + break nmsg += 1 bufr.restore() bufr.load_subset() @@ -179,9 +204,14 @@ nlevs = obs2.shape[-1] oer2 = bufr.read_subset(oestr) qcf2 = bufr.read_subset(qcstr) -str2 =\ -'station_id=%s, lon=%7.2f, lat=%7.2f, time=%6.3f, station_type=%s, levels=%s' %\ -(station_id.rstrip(),hdr[1],hdr[2],hdr[3],int(hdr[4]),nlevs) +str2 = "station_id=%s, lon=%7.2f, lat=%7.2f, time=%6.3f, station_type=%s, levels=%s" % ( + station_id.rstrip(), + hdr[1], + hdr[2], + hdr[3], + int(hdr[4]), + nlevs, +) assert str1 == str2 np.testing.assert_array_almost_equal(obs_save.filled(), obs2.filled()) np.testing.assert_array_almost_equal(oer_save.filled(), oer2.filled()) @@ -189,20 +219,25 @@ bufr.close() # test reading long strings -bufr = ncepbufr.open('data/xx103') -test_station_names = ['BOUEE_LION', 'BOUEE_ANTILLES', - 'BOUEE_COTE D\'AZUR', - 'GULF OF MAINE', 'TENERIFE'] -test_report_ids = ['6100002', '4100300', '6100001', '4400005', '1300131'] +bufr = ncepbufr.open("data/xx103") +test_station_names = [ + "BOUEE_LION", + "BOUEE_ANTILLES", + "BOUEE_COTE D'AZUR", + "GULF OF MAINE", + "TENERIFE", +] +test_report_ids = ["6100002", "4100300", "6100001", "4400005", "1300131"] i_msg = 0 while bufr.advance() == 0: # Just read the first subset from each message. if bufr.load_subset() == 0: - stsn = bufr.read_long_string(mnemonic='STSN') - rpid = bufr.read_long_string(mnemonic='RPID') + stsn = bufr.read_long_string(mnemonic="STSN") + rpid = bufr.read_long_string(mnemonic="RPID") assert stsn == test_station_names[i_msg] assert rpid == test_report_ids[i_msg] i_msg = i_msg + 1 # only loop over first 5 subsets - if i_msg == 5: break + if i_msg == 5: + break bufr.close() diff --git a/third_party/NCEPLIBS-bufr/tests/test_prepbufr.py b/third_party/NCEPLIBS-bufr/tests/test_prepbufr.py index f6b4b446..da0f987c 100644 --- a/third_party/NCEPLIBS-bufr/tests/test_prepbufr.py +++ b/third_party/NCEPLIBS-bufr/tests/test_prepbufr.py @@ -1,34 +1,42 @@ from __future__ import print_function import ncepbufr -hdstr='SID XOB YOB DHR TYP ELV SAID T29' -obstr='POB QOB TOB ZOB UOB VOB PWO MXGS HOVI CAT PRSS TDO PMO' -qcstr='PQM QQM TQM ZQM WQM NUL PWQ PMQ' -oestr='POE QOE TOE NUL WOE NUL PWE' +hdstr = "SID XOB YOB DHR TYP ELV SAID T29" +obstr = "POB QOB TOB ZOB UOB VOB PWO MXGS HOVI CAT PRSS TDO PMO" +qcstr = "PQM QQM TQM ZQM WQM NUL PWQ PMQ" +oestr = "POE QOE TOE NUL WOE NUL PWE" # read prepbufr file. -bufr = ncepbufr.open('data/prepbufr') -bufr.print_table() # print embedded table -bufr.dump_table('prepbufr.table') # dump table to file -while bufr.advance() == 0: # loop over messages. +bufr = ncepbufr.open("data/prepbufr") +bufr.print_table() # print embedded table +bufr.dump_table("prepbufr.table") # dump table to file +while bufr.advance() == 0: # loop over messages. print(bufr.msg_counter, bufr.msg_type, bufr.msg_date, bufr.receipt_time) - #bufr.read_subset(obstr) # should raise subset not loaded error - while bufr.load_subset() == 0: # loop over subsets in message. + # bufr.read_subset(obstr) # should raise subset not loaded error + while bufr.load_subset() == 0: # loop over subsets in message. hdr = bufr.read_subset(hdstr).squeeze() station_id = hdr[0].tostring() obs = bufr.read_subset(obstr) nlevs = obs.shape[-1] oer = bufr.read_subset(oestr) qcf = bufr.read_subset(qcstr) - print('station_id, lon, lat, time, station_type, levels =',\ - station_id,hdr[1],hdr[2],hdr[3],int(hdr[4]),nlevs) + print( + "station_id, lon, lat, time, station_type, levels =", + station_id, + hdr[1], + hdr[2], + hdr[3], + int(hdr[4]), + nlevs, + ) for k in range(nlevs): if nlevs > 1: - print('level',k+1) - print('obs',obs[:,k]) - print('oer',oer[:,k]) - print('qcf',qcf[:,k]) + print("level", k + 1) + print("obs", obs[:, k]) + print("oer", oer[:, k]) + print("qcf", qcf[:, k]) # stop after first 2 messages. - if bufr.msg_counter == 2: break + if bufr.msg_counter == 2: + break bufr.close() diff --git a/third_party/NCEPLIBS-bufr/wheel_dist/ncepbufr-12.0.1-py312-none-linux_aarch64.whl b/third_party/NCEPLIBS-bufr/wheel_dist/ncepbufr-12.0.1-py312-none-linux_aarch64.whl deleted file mode 100644 index 2f523ed9..00000000 Binary files a/third_party/NCEPLIBS-bufr/wheel_dist/ncepbufr-12.0.1-py312-none-linux_aarch64.whl and /dev/null differ diff --git a/third_party/NCEPLIBS-bufr/wheel_dist/ncepbufr-12.0.1-py312-none-linux_x86_64.whl b/third_party/NCEPLIBS-bufr/wheel_dist/ncepbufr-12.0.1-py312-none-linux_x86_64.whl deleted file mode 100644 index 2f523ed9..00000000 Binary files a/third_party/NCEPLIBS-bufr/wheel_dist/ncepbufr-12.0.1-py312-none-linux_x86_64.whl and /dev/null differ diff --git a/third_party/NCEPLIBS-bufr/wheel_dist/ncepbufr-12.0.1-py312-none-macosx_14_0_arm64.whl b/third_party/NCEPLIBS-bufr/wheel_dist/ncepbufr-12.0.1-py312-none-macosx_14_0_arm64.whl deleted file mode 100644 index d0a0f489..00000000 Binary files a/third_party/NCEPLIBS-bufr/wheel_dist/ncepbufr-12.0.1-py312-none-macosx_14_0_arm64.whl and /dev/null differ diff --git a/third_party/NCEPLIBS-bufr/wheel_dist/ncepbufr-12.2.0-py313-none-macosx_15_0_arm64.whl b/third_party/NCEPLIBS-bufr/wheel_dist/ncepbufr-12.2.0-py313-none-macosx_15_0_arm64.whl new file mode 100644 index 00000000..22108948 Binary files /dev/null and b/third_party/NCEPLIBS-bufr/wheel_dist/ncepbufr-12.2.0-py313-none-macosx_15_0_arm64.whl differ