diff --git a/aws-lambda/.gitignore b/aws-lambda/.gitignore deleted file mode 100644 index f5711e7..0000000 --- a/aws-lambda/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# serverless framework artifacts -.serverless/ -.requirements/ -node_modules/ -package-lock.json diff --git a/aws-lambda/README.md b/aws-lambda/README.md deleted file mode 100644 index 3c107a7..0000000 --- a/aws-lambda/README.md +++ /dev/null @@ -1,131 +0,0 @@ -# Using pygeoapi on AWS Lambda Serverless - -## Overview - -AWS Lambda Serverless is a service from Amazon that enables publishing -code which is executed as on demand functions. The value is here is that -the server is only working when requests are made, resulting in more efficient -use of server resources as well as managing costs. - -pygeoapi provides a couple of ways to publish to AWS Lambda depending on your -environment: zappa and node/serverless. - -## zappa - -[Zappa](https://github.com/zappa/Zappa) provides Python tooling to interact with AWS lambda. Ensure the environment -variables `AWS_ACCESS_KEY` and `AWS_SECRET_ACCESS_KEY` are set and available. - -```bash -# install zappa -pip install zappa - -# set environment variables -export AWS_ACCESS_KEY_ID=foo -export AWS_SECRET_ACCESS_KEY=bar - -# deploy pygeoapi to AWS Lambda -zappa deploy -s zappa_settings.json - -# update -zappa update -s zappa_settings.json - -# undeploy -zappa undeploy -s zappa_settings.json -``` - -## node/serverless - -The included `serverless.yml` and `pygeoapi-serverless-config.yml` can be used to deploy pygeoapi -on AWS Lambda Serverless Environment. - -This requires Amazon Credentials and the Serverless deployment tool. - -AWS Credentials can be created following the instructions at https://serverless.com/framework/docs/providers/aws/guide/credentials/ - -Move serverless configs to root directory: - -```bash -mv serverless.yml .. -mv pygeoapi-config.yml .. -cd .. -``` - -To install the Serverless environment - - -```bash -npm install serverless -``` - -The following serverless plugins are also used - -```bash -serverless plugin install -n serverless-python-requirements -serverless plugin install -n serverless-wsgi -``` - -To test the application as a lambda locally: - -```bash -serverless wsgi serve -``` - -To deploy to AWS Lambda: - -```bash -serverless deploy -``` - -Once deployed, if you only need to update the code and not anything in the serverless configuration, you can update the function using: - -```bash -serverless deploy function -f app -``` - -When deployed, the output will show the URL the app has been deployed to. - -## node/serverless lambda container - -In the case where your pygeoapi instance is too large to deploy as a lambda function (250MB) you can build and deploy -a docker image of pygeoapi with the lamda runtime interface installed. - -Move serverless configs to root directory: - -```bash -mv container/serverless.yml ../.. -mv container/DockerFile ../.. -``` - -*note the files below come from the serverless-wsgi node plugin, and ideally this should be part of a build process -```bash -cd container/ -npm install serverless -serverless plugin install -n serverless-wsgi -mv node_modules/serverless-wsgi/serverless-wsgi.py ../.. -mv node_modules/serverless-wsgi/wsgi_handler.py ../.. -mv container/wsgi.py ../.. -mv container/.serverless-wsgi ../.. -rm -rf container/node_modules -cd ../.. -``` - -# to build docker container -```bash -docker build -t pygeo-lambda-container . -``` - -Once built, you need to deploy to ECR. This can also be accomplished with a change to the serverless configuration. -Depending on environment permissions, you may need to create a ECR repo with appropriate policies first. - -```bash -AWS_PROFILE= aws ecr get-login-password --region | docker login --username AWS --password-stdin -docker tag pygeo-lambda-container:latest :latest -docker push :latest -``` - - -Deploy stack using serverless. - -``` -AWS_PROFILE= sls deploy -s -``` diff --git a/aws-lambda/container/.serverless-wsgi b/aws-lambda/container/.serverless-wsgi deleted file mode 100644 index 55afd1a..0000000 --- a/aws-lambda/container/.serverless-wsgi +++ /dev/null @@ -1,10 +0,0 @@ -{ - "app": "pygeoapi/flask_app.APP", - "text_mime_types": [ - "application/ld+json", - "text/html", - "application/geo+json", - "application/prs.coverage+json", - "application/xml" - ] -} diff --git a/aws-lambda/container/Dockerfile b/aws-lambda/container/Dockerfile deleted file mode 100644 index a358f09..0000000 --- a/aws-lambda/container/Dockerfile +++ /dev/null @@ -1,122 +0,0 @@ -# ================================================================= -# -# Authors: Tom Kralidis -# Just van den Broecke -# Francesco Bartoli -# Angelos Tzotsos -# -# Copyright (c) 2020 Tom Kralidis -# Copyright (c) 2019 Just van den Broecke -# Copyright (c) 2020 Francesco Bartoli -# Copyright (c) 2021 Angelos Tzotsos -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -FROM ubuntu:focal - -LABEL maintainer="Just van den Broecke " - -# Docker file for full geoapi server with libs/packages for all providers. -# Server runs with gunicorn. You can override ENV settings. -# Defaults: -# SCRIPT_NAME=/ -# CONTAINER_NAME=pygeoapi -# CONTAINER_HOST=0.0.0.0 -# CONTAINER_PORT=80 -# WSGI_WORKERS=4 -# WSGI_WORKER_TIMEOUT=6000 -# WSGI_WORKER_CLASS=gevent - -# Calls entrypoint.sh to run. Inspect it for options. -# Contains some test data. Also allows you to verify by running all unit tests. -# Simply run: docker run -it geopython/pygeoapi test -# Override the default config file /pygeoapi/local.config.yml -# via Docker Volume mapping or within a docker-compose.yml file. See example at -# https://github.com/geopython/demo.pygeoapi.io/tree/master/services/pygeoapi - -# Build arguments -# add "--build-arg BUILD_DEV_IMAGE=true" to Docker build command when building with test/doc tools - -# ARGS -ARG TIMEZONE="Europe/London" -ARG LOCALE="en_US.UTF-8" -ARG BUILD_DEV_IMAGE="false" -ARG ADD_DEB_PACKAGES="python3-gdal python3-psycopg2 python3-xarray python3-scipy python3-netcdf4 python3-rasterio python3-fiona python3-pandas python3-pyproj python3-elasticsearch python3-pymongo python3-zarr python3-dask python3-tinydb" -ARG FUNCTION_DIR="/pygeoapi" - - - - -# ENV settings -ENV TZ=${TIMEZONE} \ - DEBIAN_FRONTEND="noninteractive" \ - DEB_BUILD_DEPS="software-properties-common curl unzip" \ - DEB_PACKAGES="python3-pip python3-setuptools python3-distutils python3-yaml python3-dateutil python3-tz lsof python3-flask python3-flask-cors python3-unicodecsv python3-click python3-greenlet python3-gevent python3-wheel gunicorn libsqlite3-mod-spatialite ${ADD_DEB_PACKAGES}" \ - PYGEOAPI_CONFIG="local.config.yml" \ - PYGEOAPI_OPENAPI="pygoapi-test-openapi.yml" - - - -RUN mkdir -p /pygeoapi/pygeoapi -WORKDIR /pygeoapi -# Add files required for pip/setuptools -ADD requirements*.txt setup.py README.md /pygeoapi/ -ADD pygeoapi/__init__.py /pygeoapi/pygeoapi/ - -# Run all installs -RUN \ - # Install dependencies - apt-get update -y \ - && apt-get install -y --fix-missing --no-install-recommends ${DEB_BUILD_DEPS} \ - && add-apt-repository ppa:ubuntugis/ubuntugis-unstable \ - && apt-get --no-install-recommends install -y ${DEB_PACKAGES} \ - && echo "For ${TZ} date=$(date)" && echo "Locale=$(locale)" \ - # Install pygeoapi - && cd /pygeoapi \ - # Optionally add development/test/doc packages - && if [ "$BUILD_DEV_IMAGE" = "true" ] ; then pip3 install -r requirements-dev.txt; fi \ - && pip3 install -e . \ - # OGC schemas local setup - && mkdir /schemas.opengis.net \ - && curl -O http://schemas.opengis.net/SCHEMAS_OPENGIS_NET.zip \ - && unzip ./SCHEMAS_OPENGIS_NET.zip "ogcapi/*" -d /schemas.opengis.net \ - && rm -f ./SCHEMAS_OPENGIS_NET.zip \ - # Cleanup TODO: remove unused Locales and TZs - && apt-get remove --purge -y ${DEB_BUILD_DEPS} \ - && apt autoremove -y \ - && rm -rf /var/lib/apt/lists/* - -RUN pip3 install --target "/pygeoapi" awslambdaric -ADD . /pygeoapi - -COPY ./docker/default.config.yml /pygeoapi/local.config.yml -COPY ./docker/entry.sh /pygeoapi/entry.sh - - -ADD https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie /usr/bin/aws-lambda-rie -#COPY entry.sh / -RUN chmod 755 /usr/bin/aws-lambda-rie /pygeoapi/entry.sh -ENTRYPOINT [ "/pygeoapi/entry.sh" ] -CMD [ "wsgi_handler.handler" ] -#ENTRYPOINT ["/pygeoapi/entrypoint.sh"] diff --git a/aws-lambda/container/lambda-entry.sh b/aws-lambda/container/lambda-entry.sh deleted file mode 100644 index ae74843..0000000 --- a/aws-lambda/container/lambda-entry.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -if [ -z "${AWS_LAMBDA_RUNTIME_API}" ]; then - exec /usr/bin/aws-lambda-rie /usr/bin/python3 -m awslambdaric $1 -else - exec /usr/bin/python3 -m awslambdaric $1 -fi diff --git a/aws-lambda/container/serverless.yml b/aws-lambda/container/serverless.yml deleted file mode 100644 index 866ba31..0000000 --- a/aws-lambda/container/serverless.yml +++ /dev/null @@ -1,107 +0,0 @@ -# ================================================================= -# -# Authors: David Bitner > -# -# Copyright (c) 2019 David Bitner -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -service: pygeoapi - -provider: - name: aws - region: us-west-2 - # rolePermissionsBoundary: < perm boundary arn here > - # deploymentBucket: < deployment bucket name here > - # role: < lambda execution role here > - timeout: 30 - - ecr: - images: - pygeo-lambda-container: - uri: < url to container image in ECR > - -functions: - app: - role: - Fn::GetAtt: - - pygeoapiIamRole - - Arn - image: - name: pygeo-lambda-container - events: - - http: ANY / - - http: 'ANY {proxy+}' - entrypoint: - - '/entry.sh' - -resources: - Resources: - pygeoapiIamRole: - Type: AWS::IAM::Role - Properties: - AssumeRolePolicyDocument: - Version: "2012-10-17" - Statement: - - Effect: Allow - Principal: - Service: - - states.amazonaws.com - - events.amazonaws.com - - lambda.amazonaws.com - - ec2.amazonaws.com - Action: sts:AssumeRole - Policies: - - PolicyName: pygeo-role - PolicyDocument: - Version: "2012-10-17" - Statement: - - Effect: Allow - Action: - - "ec2:DescribeNetworkInterfaces" - - "ec2:CreateNetworkInterface" - - "ecr:GetDownloadUrlForLayer" - - "ecr:PutImage" - - "ecr:InitiateLayerUpload" - - "ecr:UploadLayerPart" - - "ecr:CompleteLayerUpload" - - "ecr:DescribeRepositories" - - "ecr:GetRepositoryPolicy" - - "ecr:ListImages" - - "ecr:GetAuthorizationToken" - - "ecr:BatchCheckLayerAvailability" - - "ecr:BatchGetImage" - Resource: "*" - RoleName: ${self:service}-${self:provider.stage}-role - ManagedPolicyArns: - - arn:aws:iam::aws:policy/service-role/AWSLambdaRole - - arn:aws:iam::aws:policy/CloudWatchFullAccess - PermissionsBoundary: - Fn::Sub: - - "< perm boundary arn >" - - accountId: - Ref: "AWS::AccountId" - -plugins: - - serverless-wsgi diff --git a/aws-lambda/container/wsgi.py b/aws-lambda/container/wsgi.py deleted file mode 100644 index fcd24fc..0000000 --- a/aws-lambda/container/wsgi.py +++ /dev/null @@ -1,41 +0,0 @@ -# ================================================================= -# -# Authors: Chris Barrett -# Tom Kralidis -# -# Copyright (c) 2019 Chris Barrett -# Copyright (c) 2022 Tom Kralidis -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -import os - -from pygeoapi.flask_app import APP - -os.environ['PYGEOAPI_CONFIG'] = 'pygeoapi-test-config.yml' -os.environ['PYGEOAPI_OPENAPI'] = 'pygeoapi-test-openapi.yml' - - -if __name__ == "__main__": - APP.run() diff --git a/aws-lambda/function/pygeoapi-config.yml b/aws-lambda/function/pygeoapi-config.yml deleted file mode 100644 index 388f6b1..0000000 --- a/aws-lambda/function/pygeoapi-config.yml +++ /dev/null @@ -1,327 +0,0 @@ -# ================================================================= -# -# Authors: David Bitner > -# -# Copyright (c) 2019 David Bitner -# Copyright (c) 2020 Tom Kralidis -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -server: - bind: - host: 0.0.0.0 - port: 80 - url: / - mimetype: application/json; charset=UTF-8 - encoding: utf-8 - language: en-US - cors: false - pretty_print: true - limit: 10 - # templates: /path/to/templates - map: - url: https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png - attribution: 'Wikimedia maps | Map data © OpenStreetMap contributors' - -logging: - level: ERROR - #logfile: /tmp/pygeoapi.log - -metadata: - identification: - title: pygeoapi default instance - description: pygeoapi provides an API to geospatial data - keywords: - - geospatial - - data - - api - keywords_type: theme - terms_of_service: https://creativecommons.org/licenses/by/4.0/ - url: http://example.org - license: - name: CC-BY 4.0 license - url: https://creativecommons.org/licenses/by/4.0/ - provider: - name: Organization Name - url: https://pygeoapi.io - contact: - name: Lastname, Firstname - position: Position Title - address: Mailing Address - city: City - stateorprovince: Administrative Area - postalcode: Zip or Postal Code - country: Country - phone: +xx-xxx-xxx-xxxx - fax: +xx-xxx-xxx-xxxx - email: you@example.org - url: Contact URL - hours: Hours of Service - instructions: During hours of service. Off on weekends. - role: pointOfContact - -resources: - obs: - type: collection - title: Observations - description: My cool observations - keywords: - - observations - - monitoring - links: - - type: text/csv - rel: canonical - title: data - href: https://github.com/mapserver/mapserver/blob/branch-7-0/msautotest/wxs/data/obs.csv - hreflang: en-US - - type: text/csv - rel: alternate - title: data - href: https://raw.githubusercontent.com/mapserver/mapserver/branch-7-0/msautotest/wxs/data/obs.csv - hreflang: en-US - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: 2000-10-30T18:24:39Z - end: 2007-10-30T08:57:29Z - trs: http://www.opengis.net/def/uom/ISO-8601/0/Gregorian - providers: - - type: feature - name: CSV - data: tests/data/obs.csv - id_field: id - geometry: - x_field: long - y_field: lat - - ne_110m_populated_places_simple: - type: collection - title: Populated Places - description: Point symbols with name attributes. Includes all admin-0 capitals and some other major cities. We favor regional significance over population census in determining our selection of places. Use the scale rankings to filter the number of towns that appear on your map. - keywords: - - populated places - - cities - - towns - links: - - type: text/html - rel: canonical - title: information - href: http://www.naturalearthdata.com/downloads/110m-cultural-vectors/110m-populated-places/ - hreflang: en-US - - type: application/gzip - rel: canonical - title: download - href: http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_populated_places_simple.zip - hreflang: en-US - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - providers: - - type: feature - name: Elasticsearch - data: http://localhost:9200/ne_110m_populated_places_simple - id_field: geonameid - - lakes: - type: collection - title: Large Lakes - description: lakes of the world, public domain - keywords: - - lakes - links: - - type: text/html - rel: canonical - title: information - href: http://www.naturalearthdata.com/ - hreflang: en-US - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: 2011-11-11 - end: null # or empty - trs: http://www.opengis.net/def/uom/ISO-8601/0/Gregorian - providers: - - type: feature - name: GeoJSON - data: tests/data/ne_110m_lakes.geojson - id_field: id - - countries: - type: collection - title: Countries in the world - description: Countries of the world - keywords: - - countries - - natural eart - links: - - type: text/html - rel: canonical - title: information - href: http://www.naturalearthdata.com/ - hreflang: en-US - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: - end: null # or empty - providers: - - type: feature - name: SQLiteGPKG - data: tests/data/ne_110m_admin_0_countries.sqlite - id_field: ogc_fid - table: ne_110m_admin_0_countries - poi: - type: collection - title: Portuguese point of interrest - description: Portuguese points of interrest obtained from OpenStreetMap. Dataset includes Madeira and Azores islands - keywords: - - Portugal - - POI - - Point of Interrest - - Madeira - - Azores - - OSM - - Open Street Map - - NaturaGIS - links: - - type: text/html - rel: canonical - title: information - href: https://wiki.openstreetmap.org/wiki/Points_of_interest/ - hreflang: en-US - extents: - spatial: - bbox: [-31.2687, 32.5898, -6.18992, 42.152] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: - end: null # or empty - providers: - - type: feature - name: GeoPackage - data: tests/data/poi_portugal.gpkg - id_field: osm_id - table: poi_portugal - - hotosm_bdi_waterways: - type: collection - title: Waterways of Burundi - description: Waterways of Burundi, Africa. Dataset timestamp 1st Sep 2018 - Humanitarian OpenStreetMap Team (HOT) - keywords: - - Burundi - - Waterways - - Africa - - OSM - - HOT - links: - - type: text/html - rel: canonical - title: information - href: https://data.humdata.org/dataset/hotosm_bdi_waterways - hreflang: en-US - extents: - spatial: - bbox: [28.9845376683957, -4.48174334765485, 30.866396969019, -2.3096796] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: - end: null # or empty - providers: - - type: feature - name: PostgreSQL - data: - host: 127.0.0.1 - dbname: test - user: postgres - password: postgres - port: 5432 - schema: public - id_field: osm_id - table: hotosm_bdi_waterways - - dutch_georef_stations: - type: collection - title: Dutch Georef Stations via OGR WFS - description: Locations of RD/GNSS-reference stations from Dutch Kadaster PDOK a.k.a RDInfo. Uses MapServer WFS v2 backend via OGRProvider. - keywords: - - Netherlands - - GNSS - - Surveying - - Holland - - RD - links: - - type: text/html - rel: canonical - title: information - href: http://www.nationaalgeoregister.nl/geonetwork/srv/dut/catalog.search#/metadata/3ebe56dc-5f09-4fb3-b224-55c2db4ca2fd?tab=general - hreflang: nl-NL - extents: - spatial: - bbox: [50.7539, 7.21097, 53.4658, 3.37087] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: - end: null # or empty - providers: - - type: feature - name: OGR - data: - source_type: WFS - source: WFS:https://service.pdok.nl/kadaster/rdinfo/wfs/v1_0? -# source_srs: EPSG:28992 -# target_srs: EPSG:4326 - source_capabilities: - paging: True - - source_options: - # OGR_WFS_VERSION: 1.1.0 - OGR_WFS_LOAD_MULTIPLE_LAYER_DEFN: NO - - gdal_ogr_options: - EMPTY_AS_NULL: NO - GDAL_CACHEMAX: 64 - # GDAL_HTTP_PROXY: (optional proxy) - # GDAL_PROXY_AUTH: (optional auth for remote WFS) - CPL_DEBUG: NO - - crs: - - http://www.opengis.net/def/crs/OGC/1.3/CRS84 - - http://www.opengis.net/def/crs/EPSG/0/4326 - - http://www.opengis.net/def/crs/EPSG/0/4258 - - http://www.opengis.net/def/crs/EPSG/0/28992 - storage_crs: http://www.opengis.net/def/crs/EPSG/0/28992 - id_field: gml_id - layer: rdinfo:stations - - hello-world: - type: process - processor: - name: HelloWorld diff --git a/aws-lambda/function/serverless.yml b/aws-lambda/function/serverless.yml deleted file mode 100644 index 89937a8..0000000 --- a/aws-lambda/function/serverless.yml +++ /dev/null @@ -1,63 +0,0 @@ -# ================================================================= -# -# Authors: David Bitner > -# -# Copyright (c) 2019 David Bitner -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -service: pygeoapi - -provider: - name: aws - runtime: python3.8 - # region: us-west-2 - # rolePermissionsBoundary: - # deploymentBucket: - # role: - # vpc: - # subnetIds: - # - subnet-id1 - # - subnet-id2 - # securityGroupIds: - # - sg-id1 - - -plugins: - - serverless-python-requirements - - serverless-wsgi -custom: - wsgi: - pythonBin: python3 - app: pygeoapi/flask_app.APP - packRequirements: false - textMimeTypes: - - application/ld+json -functions: - app: - handler: wsgi_handler.handler - events: - - http: ANY / - environment: - PYGEOAPI_CONFIG: pygeoapi-serverless-config.yml diff --git a/aws-lambda/zappa_settings.json b/aws-lambda/zappa_settings.json deleted file mode 100644 index 09e4549..0000000 --- a/aws-lambda/zappa_settings.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "dev": { - "app_function": "pygeoapi.flask_app.APP", - "profile_name": null, - "project_name": "pygeoapi", - "runtime": "python3.8", - "s3_bucket": "zappa-pwpqh2twb", - "aws_region": "us-east-2", - "environment_variables": { - "PYGEOAPI_CONFIG": "pygeoapi-config.yml", - "PYGEOAPI_OPENAPI": "pygeoapi-openapi.yml" - } - } -} diff --git a/docker/README.md b/docker/README.md index af809e6..1771aa4 100644 --- a/docker/README.md +++ b/docker/README.md @@ -1,154 +1,144 @@ # pygeoapi Docker How To -Docker Image `geopython/pygeoapi:latest` and versions are [available from DockerHub](https://hub.docker.com/r/geopython/pygeoapi). +## Overview -Each Docker Image contains a default configuration [default.config.yml](default.config.yml) with the project's test data and OGC API dataset collections. +pygeoapi's official Docker image is available on [Docker Hub](https://hub.docker.com/r/geopython/pygeoapi). `geopython/pygeoapi:latest` is the latest +image based on the master branch; there also exist images for official releases/versions. -You can override this default config via Docker Volume mapping or by extending the Docker Image and copying in your config. See an [example for the geoapi demo server](https://github.com/geopython/demo.pygeoapi.io/tree/master/services/pygeoapi) for the latter method. +## Build workflow -https://github.com/geopython/demo.pygeoapi.io/tree/master/services Depending on your config you may need specific backends to be available. +The `latest` version is automatically built whenever code in the `master` branch of this GitHub repository changes (autobuild). -### Background +This also cascades to updating the [pygeoapi demo master service](https://demo.pygeoapi.io/master). -The version tagged `latest` is automatically built whenever code in the `master` branch of this GitHub repo changes (autobuild). This also cascades to updating the [pygeoapi demo service](https://demo.pygeoapi.io/master). - -So the chain is: +So the build chain is as per below: ``` - (git push to master) --> (DockerHub Image autobuild) --> (demo server redeploy) - + (git push to master) --> (Docker Hub image autobuild) --> (demo.pygeoapi.io server redeploy) ``` -There are a number of examples at [several examples](https://github.com/geopython/pygeoapi/blob/master/docker/examples). +## Setup -### Installation +The official Docker image ships with a default configuration [default.config.yml](default.config.yml) with the project's test data and OGC API dataset collections. + +You can override this default config via a Docker volume mapping or by extending the Docker image and copying in your config. See an [example from the pygeoapi demo server](https://github.com/geopython/demo.pygeoapi.io/tree/master/services/pygeoapi) for the latter method. + +## Installing on a fresh Ubuntu installation -Install Docker (Ubuntu) ```bash -sudo apt-get install apt-transport-https -sudo apt-get install ca-certificates -sudo apt-get install curl -sudo apt-get install gnupg-agent -sudo apt-get install software-properties-common +# install Docker + +sudo apt-get install -y apt-transport-https +sudo apt-get install -y ca-certificates +sudo apt-get install -y curl +sudo apt-get install -y gnupg-agent +sudo apt-get install -y software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add – sudo apt-key fingerprint 0EBFCD88 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update -sudo apt-get install docker-ce docker-ce-cli containerd.io +sudo apt-get install -y docker-ce docker-ce-cli containerd.io sudo systemctl enable docker + +# pull official pygeoapi image from Docker Hub + +docker pull geopython/pygeoapi + +# Create your own configuration in $HOME/my.config.yml +# Example can be found in https://github.com/geopython/pygeoapi-examples/blob/main/docker/simple/my.config.yml +vi $HOME/my.config.yml + +# run and create container + +sudo docker run --name pygeoapi -p 5000:80 -v $(pwd)/my.config.yml:/pygeoapi/local.config.yml -it geopython/pygeoapi ``` -Pull dockerhub repo + +At this point, go to and the service should be up and running. + +## Running - basics + +By default, this image will start a `pygeoapi` Docker container using `gunicorn` running on port 80 internally. + +To run with the default built-in configuration and data: ```bash -docker pull geopython/pygeoapi -``` -Create your own my.config.yml (https://github.com/geopython/pygeoapi/blob/master/docker/examples/simple/my.config.yml) in home directory +docker run -p 5000:80 -it geopython/pygeoapi run +# or simply +docker run -p 5000:80 -it geopython/pygeoapi -Run/Create Container - -``` bash -$ sudo docker run --name geoapi -p 5000:80 -v $(pwd)/my.config.yml:/pygeoapi/local.config.yml -it geopython/pygeoapi -``` - -Go to http://localhost:5000/ and should be up and running. - -## Running - Basics - -By default this Image will start a `pygeoapi` Docker Container -using `gunicorn` on internal port 80. - -To run with default built-in config and data: - -``` - docker run -p 5000:80 -it geopython/pygeoapi run - # or simply - docker run -p 5000:80 -it geopython/pygeoapi - - # then browse to http://localhost:5000/ +# then browse to http://localhost:5000 ``` You can also run all unit tests to verify: -``` - docker run -it geopython/pygeoapi test +```bash +docker run -it geopython/pygeoapi test ``` -## Running - Overriding the default config +## Running - overriding the default config -Normally you would override the [default.config.yml](default.config.yml) with your own `pygeoapi` config. -This can be effected best via Docker Volume Mapping. +Normally you would override the [default.config.yml](default.config.yml) with your own configuration. -For example if your config is in `my.config.yml`: +This can be achieved using Docker volume mapping. For example, if your config is in `my.config.yml`: -``` - docker run -p 5000:80 -v $(pwd)/my.config.yml:/pygeoapi/local.config.yml -it geopython/pygeoapi +```bash +docker run -p 5000:80 -v $(pwd)/my.config.yml:/pygeoapi/local.config.yml -it geopython/pygeoapi ``` -But better/cleaner is to use `docker-compose`. Something like: +You can also achieve the same using Docker Compose: -``` +```yaml version: "3" services: - pygeoapi: image: geopython/pygeoapi:latest - volumes: - ./my.config.yml:/pygeoapi/local.config.yml - ``` -Or you can create a `Dockerfile` extending the base Image and `COPY` in your config: +Or, you can create a `Dockerfile` extending the base image and `COPY` in your config: -``` +```dockerfile FROM geopython/pygeoapi:latest - COPY ./my.config.yml /pygeoapi/local.config.yml - ``` -See how the demo server is setup this way at -https://github.com/geopython/demo.pygeoapi.io/tree/master/services/pygeoapi_master +An example using the demo server setup can be found at . -## Running - Running on a sub-path +## Running - running on a sub-path -By default the `pygeoapi` Docker Image will run from the `root` path `/`. -If you need to run from a sub-path and have all internal URLs correct -you need to set `SCRIPT_NAME` environment variable. +By default the `pygeoapi` Docker image will run from the root path of the web server (`/`). + +If you need to run from a sub-path and have all internal URLs correct, you need to set `SCRIPT_NAME` environment variable. For example to run with `my.config.yml` on http://localhost:5000/mypygeoapi: -``` - docker run -p 5000:80 -e SCRIPT_NAME='/mypygeoapi' -v $(pwd)/my.config.yml:/pygeoapi/local.config.yml -it geopython/pygeoapi - # browse to http://localhost:5000/mypygeoapi +```bash +docker run -p 5000:80 -e SCRIPT_NAME='/mypygeoapi' -v $(pwd)/my.config.yml:/pygeoapi/local.config.yml -it geopython/pygeoapi +# browse to http://localhost:5000/mypygeoapi ``` -Or within a `docker-compose.yml` full example: +You can also achieve the same using Docker Compose: -``` +```yaml version: "3" services: - pygeoapi: image: geopython/pygeoapi:latest - volumes: - ./my.config.yml:/pygeoapi/local.config.yml - ports: - "5000:80" - environment: - SCRIPT_NAME=/pygeoapi - - ``` -See [pygeoapi demo service](https://github.com/geopython/demo.pygeoapi.io/tree/master/services/pygeoapi) -for an full example. - +See the [pygeoapi demo service](https://github.com/geopython/demo.pygeoapi.io/tree/master/services/pygeoapi) for a full example. +## More examples +The [pygeoapi examples](https://github.com/geopython/pygeoapi-examples) repository contains a number of sample deployment configurations. See +the [docker](https://github.com/geopython/pygeoapi-examples/tree/main/docker) directory for Docker and Docker Compose specific examples. diff --git a/docker/examples/README.md b/docker/examples/README.md deleted file mode 100644 index 2ce4962..0000000 --- a/docker/examples/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# Running pygeoapi with Docker - Examples - -This folder contains the sub-folders: - -- simple -- elastic -- esri -- mongo -- mvt-elastic -- mvt-tippecanoe -- sensorthings -- skin -- socrata - -The [simple](simple) example will run pygeoapi with Docker with your local config. - -The [elastic](elastic) example demonstrates a docker compose configuration to run pygeoapi with local Elasticsearch backend. - -The [esri](esri) example demonstrates a docker compose configuration to run pygeoapi with ESRI Map and Feature Services backend. - -The [mongo](mongo) example demonstrates a docker compose configuration to run pygeoapi with local MongoDB backend. - -The [mvt-elastic](mvt-elastic) example demonstrates a docker compose configuration to run pygeoapi with local Elasticsearch MVT backend. - -The [mvt-tippecanoe](mvt-tippecanoe) example demonstrates a docker compose configuration to run pygeoapi with tiles on disk, pre-generated using the Tippecanoe backend. - -The [sensorthings](sensorthings) example demonstrates various pygeoapi implementations of SensorThings API endpoints. - -The [skin](skin) example contains a Docker build script necessary to setup a minimal -pygeoapi server that uses a customised dashboard skin. - -The [socrata](socrata) example contains configuration necessary to setup a -pygeoapi server using a remote Socrata Open Data API (SODA) endpoint. \ No newline at end of file diff --git a/docker/examples/elastic/ES/Dockerfile b/docker/examples/elastic/ES/Dockerfile deleted file mode 100644 index a4ff36b..0000000 --- a/docker/examples/elastic/ES/Dockerfile +++ /dev/null @@ -1,73 +0,0 @@ -# ================================================================= -# -# Authors: Just van den Broecke > -# Jorge Samuel Mendes de Jesus -# Tom Kralidis -# -# Copyright (c) 2019 Just van den Broecke -# Copyright (c) 2019 Jorge Samuel Mendes de Jesus -# Copyright (c) 2020 Tom Kralidis -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -FROM docker.elastic.co/elasticsearch/elasticsearch:8.4.0 - -LABEL maintainer="jorge.dejesus@geocat.net justb4@gmail.com" -ARG DATA_FOLDER=/usr/share/elasticsearch/data - -USER root - -COPY docker-entrypoint.sh /docker-entrypoint.sh -COPY add_data.sh /add_data.sh - -RUN apt update && apt install -y wget - -RUN wget https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh -O bin/wait-for-it.sh -RUN chmod +x bin/wait-for-it.sh -RUN wget https://raw.githubusercontent.com/geopython/pygeoapi/master/tests/data/ne_110m_populated_places_simple.geojson -O ${DATA_FOLDER}/ne_110m_populated_places_simple.geojson -RUN wget https://raw.githubusercontent.com/geopython/pygeoapi/master/tests/load_es_data.py -O /load_es_data.py - -RUN echo "xpack.security.enabled: false" >> config/elasticsearch.yml -RUN echo "http.host: 0.0.0.0" >> config/elasticsearch.yml -RUN echo "discovery.type: single-node" >> config/elasticsearch.yml - -RUN apt install -y python3 python3-pip python3-setuptools python-typing \ - && pip3 install --upgrade pip elasticsearch==8.4.0 elasticsearch-dsl \ - && apt clean packages - -USER elasticsearch - -CMD ["/usr/share/elasticsearch/bin/elasticsearch"] - -ENTRYPOINT ["/docker-entrypoint.sh"] - -# we need to run this on host -#sudo sysctl -w vm.max_map_count=262144 -#check indices -#http://localhost:9200/_cat/indices?v -#check spatial data -#http://localhost:9200/ne_110m_populated_places_simple/ -#This docker compose was inspired on: -#https://discuss.elastic.co/t/best-practice-for-creating-an-index-when-an-es-docker-container-starts/126651 -#docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" es:latest diff --git a/docker/examples/elastic/ES/add_data.sh b/docker/examples/elastic/ES/add_data.sh deleted file mode 100755 index 568dabb..0000000 --- a/docker/examples/elastic/ES/add_data.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/sh -# ================================================================= -# -# Authors: Just van den Broecke > -# Jorge Samuel Mendes de Jesus -# -# Copyright (c) 2019 Just van den Broecke -# Copyright (c) 2019 Jorge Samuel Mendes de Jesus -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - - -echo "Starting script to add geojson" -# move to the directory of this setup script -cd "$(dirname "$0")" - -# for some reason even when port 9200 is open Elasticsearch is unable to be accessed as authentication fails -# a few seconds later it works -# incresing to 50s for wait in a slow system /_cluster/health?wait_for_status=yellow&timeout=50s -until $(curl -sSf -XGET --insecure 'http://localhost:9200/_cluster/health?wait_for_status=yellow' > /dev/null); do - printf 'No status yellow from ES, trying again in 10 seconds \n' - sleep 10 -done -echo "Elasticsearch seems to be working - Adding ne_110m_populated_places_simple.geojson to ES" - -python3 /load_es_data.py /usr/share/elasticsearch/data/ne_110m_populated_places_simple.geojson geonameid - -echo "Seems that data was loaded" - -# create a new index with the settings in es_index_config.json -#curl -v --insecure --user elastic:changeme -XPUT '0.0.0.0:9200/test?pretty' -H 'Content-Type: application/json' -d @es_index_config.json diff --git a/docker/examples/elastic/ES/docker-entrypoint.sh b/docker/examples/elastic/ES/docker-entrypoint.sh deleted file mode 100755 index 8f586a6..0000000 --- a/docker/examples/elastic/ES/docker-entrypoint.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh -# ================================================================= -# -# Authors: Just van den Broecke > -# Jorge Samuel Mendes de Jesus -# -# Copyright (c) 2019 Just van den Broecke -# Copyright (c) 2019 Jorge Samuel Mendes de Jesus -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -# wait for Elasticsearch to start, then run the setup script to -# create and configure the index. -exec /usr/share/elasticsearch/bin/wait-for-it.sh localhost:9200 -- /add_data.sh & -exec $@ diff --git a/docker/examples/elastic/README.md b/docker/examples/elastic/README.md deleted file mode 100644 index 6602f4c..0000000 --- a/docker/examples/elastic/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# pygeoapi with Elasticsearch (ES) - -These folders contain a Docker Compose configuration necessary to setup a minimal -`pygeoapi` server that uses a local ES backend service. - -This config is only for local development and testing. - -## Elasticsearch - -- official Elasticsearch: **8.4.0** on **Ubuntu 20.04.4 LTS (Focal Fossa)** -- ports **9300** and **9200** - -ES requires the host system to have its virtual memory -parameter (**max_map_count**) [here](https://www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html) -set as follows: - -``` -sudo sysctl -w vm.max_map_count=262144 -``` - -If the docker composition fails with the following error: -``` -docker_elastic_search_1 exited with code 78 -``` - -it is very likely that you forgot to setup the `sysctl`. - -## Building and Running - -To build and run the [Docker compose file](docker-compose.yml) in localhost: - -``` -sudo sysctl -w vm.max_map_count=262144 -docker-compose build -docker-compose up -``` diff --git a/docker/examples/elastic/docker-compose.yml b/docker/examples/elastic/docker-compose.yml deleted file mode 100644 index d1c714a..0000000 --- a/docker/examples/elastic/docker-compose.yml +++ /dev/null @@ -1,73 +0,0 @@ -# ================================================================= -# -# Authors: Just van den Broecke > -# Jorge Samuel Mendes de Jesus -# -# Copyright (c) 2019 Just van den Broecke -# Copyright (c) 2019 Jorge Samuel Mendes de Jesus -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -version: '3.3' - -services: - pygeoapi: - image: geopython/pygeoapi:latest - - container_name: pygeoapi_es - - entrypoint: - - /es-entrypoint.sh - - ports: - - 5000:80 - - volumes: - - ./pygeoapi/docker.config.yml:/pygeoapi/local.config.yml - - ./pygeoapi/es-entrypoint.sh:/es-entrypoint.sh - - ./pygeoapi/wait-for-elasticsearch.sh:/wait-for-elasticsearch.sh - - links: - - elastic_search - - depends_on: - - elastic_search - - elastic_search: - build: ./ES - - container_name: elastic -# Elastic ports may be opened for debugging but should remain closed in -# production workloads. - # ports: - # - 9300:9300 - # - 9200:9200 - volumes: - - elastic_search_data:/usr/share/elasticsearch/data - -volumes: - elastic_search_data: {} - -#NOTE: Host requires changes in configuration to run ES -#sudo sysctl -w vm.max_map_count=262144 diff --git a/docker/examples/elastic/pygeoapi/docker.config.yml b/docker/examples/elastic/pygeoapi/docker.config.yml deleted file mode 100644 index 428c77e..0000000 --- a/docker/examples/elastic/pygeoapi/docker.config.yml +++ /dev/null @@ -1,210 +0,0 @@ -# ================================================================= -# -# Authors: Just van den Broecke > -# Jorge Samuel Mendes de Jesus -# Tom Kraldis -# -# Copyright (c) 2019 Just van den Broecke -# Copyright (c) 2019 Jorge Samuel Mendes de Jesus -# Copyright (c) 2020 Tom Kralidis -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -server: - bind: - host: 0.0.0.0 - port: 5000 - url: http://localhost:5000/ - mimetype: application/json; charset=UTF-8 - encoding: utf-8 - gzip: false - language: en-US - cors: true - pretty_print: true - limit: 10 - # templates: /path/to/templates - map: - url: https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png - attribution: 'Wikimedia maps | Map data © OpenStreetMap contributors' - -logging: - level: ERROR - #logfile: /tmp/pygeoapi.log - -metadata: - identification: - title: pygeoapi default instance - description: pygeoapi provides an API to geospatial data - keywords: - - geospatial - - data - - api - keywords_type: theme - terms_of_service: https://creativecommons.org/licenses/by/4.0/ - url: http://example.org - license: - name: CC-BY 4.0 license - url: https://creativecommons.org/licenses/by/4.0/ - provider: - name: Organization Name - url: https://pygeoapi.io - contact: - name: Lastname, Firstname - position: Position Title - address: Mailing Address - city: City - stateorprovince: Administrative Area - postalcode: Zip or Postal Code - country: Country - phone: +xx-xxx-xxx-xxxx - fax: +xx-xxx-xxx-xxxx - email: you@example.org - url: Contact URL - hours: Hours of Service - instructions: During hours of service. Off on weekends. - role: pointOfContact - -resources: - obs: - type: collection - title: Observations - description: My cool observations - keywords: - - observations - - monitoring - links: - - type: text/csv - rel: canonical - title: data - href: https://github.com/mapserver/mapserver/blob/branch-7-0/msautotest/wxs/data/obs.csv - hreflang: en-US - - type: text/csv - rel: alternate - title: data - href: https://raw.githubusercontent.com/mapserver/mapserver/branch-7-0/msautotest/wxs/data/obs.csv - hreflang: en-US - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: 2000-10-30T18:24:39Z - end: 2007-10-30T08:57:29Z - trs: http://www.opengis.net/def/uom/ISO-8601/0/Gregorian - providers: - - type: feature - name: CSV - data: tests/data/obs.csv - id_field: id - geometry: - x_field: long - y_field: long - - ne_110m_populated_places_simple: - type: collection - title: Populated Places - description: Point symbols with name attributes. Includes all admin-0 capitals and some other major cities. We favor regional significance over population census in determining our selection of places. Use the scale rankings to filter the number of towns that appear on your map. - keywords: - - populated places - - cities - - towns - links: - - type: text/html - rel: canonical - title: information - href: http://www.naturalearthdata.com/downloads/110m-cultural-vectors/110m-populated-places/ - hreflang: en-US - - type: application/gzip - rel: canonical - title: download - href: http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_populated_places_simple.zip - hreflang: en-US - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - providers: - - type: feature - name: Elasticsearch - #Note elastic_search is the docker container of ES the name is defined in the docker-compose.yml - data: http://elastic_search:9200/ne_110m_populated_places_simple - id_field: geonameid - - lakes: - type: collection - title: Large Lakes - description: lakes of the world, public domain - keywords: - - lakes - links: - - type: text/html - rel: canonical - title: information - href: http://www.naturalearthdata.com/ - hreflang: en-US - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: 2011-11-11 - end: null # or empty - trs: http://www.opengis.net/def/uom/ISO-8601/0/Gregorian - providers: - - type: feature - name: GeoJSON - data: tests/data/ne_110m_lakes.geojson - id_field: id - - countries: - type: collection - title: Countries in the world - description: Countries of the world - keywords: - - countries - - natural eart - links: - - type: text/html - rel: canonical - title: information - href: http://www.naturalearthdata.com/ - hreflang: en-US - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: - end: null # or empty - providers: - - type: feature - name: SQLiteGPKG - data: tests/data/ne_110m_admin_0_countries.sqlite - id_field: ogc_fid - table: ne_110m_admin_0_countries - - hello-world: - type: process - processor: - name: HelloWorld diff --git a/docker/examples/elastic/pygeoapi/es-entrypoint.sh b/docker/examples/elastic/pygeoapi/es-entrypoint.sh deleted file mode 100755 index 7e8bea1..0000000 --- a/docker/examples/elastic/pygeoapi/es-entrypoint.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh -# ================================================================= -# -# Authors: Just van den Broecke > -# Jorge Samuel Mendes de Jesus -# Tom Kralidis -# -# Copyright (c) 2019 Just van den Broecke -# Copyright (c) 2019 Jorge Samuel Mendes de Jesus -# Copyright (c) 2023 Tom Kralidis -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -set +e - -echo "Install Curl" - -apt-get update -y && -apt-get install curl -y && - -echo "Waiting for Elasticsearch container..." - -# First wait for ES to be up and then execute the original pygeoapi entrypoint. -/wait-for-elasticsearch.sh http://elastic_search:9200 /entrypoint.sh || echo "ES failed: $?, exit" && exit 1 diff --git a/docker/examples/elastic/pygeoapi/wait-for-elasticsearch.sh b/docker/examples/elastic/pygeoapi/wait-for-elasticsearch.sh deleted file mode 100755 index 06bfce8..0000000 --- a/docker/examples/elastic/pygeoapi/wait-for-elasticsearch.sh +++ /dev/null @@ -1,71 +0,0 @@ -#!/bin/sh -# ================================================================= -# -# Authors: Just van den Broecke > -# Jorge Samuel Mendes de Jesus -# -# Copyright (c) 2019 Just van den Broecke -# Copyright (c) 2019 Jorge Samuel Mendes de Jesus -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -set -e - -host="$1" -shift -cmd="$@" - - -until $(curl --output /dev/null --silent --head --fail "$host") ; do - echo 'Checking if Elasticsearch server is up' - sleep 5 - counter=$((counter+1)) -done - -# First wait for ES to start... -response=$(curl $host) - -until [ "$response" = "200" ] ; do - response=$(curl --write-out %{http_code} --silent --output /dev/null "$host") - >&2 echo "Elasticsearch is up but unavailable - No Reponse - sleeping" - sleep 10 - -done - - -# next wait for ES status to turn to green or yellow -health="$(curl -fsSL "$host/_cat/health?h=status")" -health="$(echo "$health" | sed -r 's/^[[:space:]]+|[[:space:]]+$//g')" # trim whitespace (otherwise we'll have "green ") - -until [ "$health" = 'yellow' ] || [ "$health" = 'green' ] ; do - health="$(curl -fsSL "$host/_cat/health?h=status")" - health="$(echo "$health" | sed -r 's/^[[:space:]]+|[[:space:]]+$//g')" - >&2 echo "Elasticsearch status is not green or yellow - sleeping" - sleep 10 -done - ->&2 echo "Elasticsearch is up" - - -exec $cmd diff --git a/docker/examples/esri/README.md b/docker/examples/esri/README.md deleted file mode 100644 index 6620f4c..0000000 --- a/docker/examples/esri/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# pygeoapi with ESRI Map and Feature Services - -This folder contains the docker-compose configuration necessary to setup an example -`pygeoapi` server using a remote ESRI Service endpoint. - -This config is only for example purposes. - -## Hosting features with ArcGIS - -Many ArcGIS layers are hosted as Feature Services. A collection of publically available -layers can be found in the [ArcGIS Living Atlas of the World](https://livingatlas.arcgis.com/en/browse/#d=2&q=Feature%20Service). - -The ESRI feature provider creates pygeoapi feature collections from hosted layers. In addition to -hosting data from distributed data providers in one place, pygeoapi creates landing pages for -individual features in the layer. - -## Building and Running - -To build and run the [Docker compose file](docker-compose.yml) in localhost: - -``` -docker compose up [--build] [-d] -``` - -Navigate to `localhost:5000`. diff --git a/docker/examples/esri/docker-compose.yml b/docker/examples/esri/docker-compose.yml deleted file mode 100644 index ea7ecf4..0000000 --- a/docker/examples/esri/docker-compose.yml +++ /dev/null @@ -1,42 +0,0 @@ -# ================================================================= -# -# Authors: Benjamin Webb -# -# Copyright (c) 2022 Benjamin Webb -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -services: - pygeoapi: - image: geopython/pygeoapi:latest - # build: - # context: ../../.. - - container_name: pygeoapi_esri - - ports: - - 5000:80 - - volumes: - - ./esri.config.yml:/pygeoapi/local.config.yml diff --git a/docker/examples/esri/esri.config.yml b/docker/examples/esri/esri.config.yml deleted file mode 100644 index b0ee1f9..0000000 --- a/docker/examples/esri/esri.config.yml +++ /dev/null @@ -1,160 +0,0 @@ -# ================================================================= -# -# Authors: Benjamin Webb -# -# Copyright (c) 2022 Benjamin Webb -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -server: - bind: - host: 0.0.0.0 - port: 80 - url: http://localhost:5000 - mimetype: application/json; charset=UTF-8 - encoding: utf-8 - gzip: false - language: en-US - cors: true - pretty_print: true - limit: 10 - # templates: /path/to/templates - map: - url: https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png - attribution: 'Wikimedia maps | Map data © OpenStreetMap contributors' - ogc_schemas_location: /schemas.opengis.net - -logging: - level: ERROR - #logfile: /tmp/pygeoapi.log - -metadata: - identification: - title: ESRI pygeoapi demo instance - description: pygeoapi for ESRI Feature and Map Services - keywords: - - geospatial - - esri - - api - keywords_type: theme - terms_of_service: https://creativecommons.org/licenses/by/4.0/ - url: https://github.com/geopython/pygeoapi - license: - name: CC-BY 4.0 license - url: https://creativecommons.org/licenses/by/4.0/ - provider: - name: Center for Geospatial Solutions - url: https://www.lincolninst.edu/center-geospatial-solutions - contact: - name: Webb, Benjamin - position: Softare Developer - address: Mailing Address - city: City - stateorprovince: Administrative Area - postalcode: Zip or Postal Code - country: Canada - phone: +xx-xxx-xxx-xxxx - fax: +xx-xxx-xxx-xxxx - email: you@example.org - url: Contact URL - hours: Hours of Service - instructions: During hours of service. Off on weekends. - role: pointOfContact - -resources: - counties: - type: collection - title: Counties - description: USA counties generalized boundaries - keywords: - - counties - - featureserver - links: - - type: text/html - rel: canonical - title: data source - href: https://www.arcgis.com/home/item.html?id=7566e0221e5646f99ea249a197116605 - hreflang: en-US - extents: - spatial: - bbox: [-159.8, 19.6, -67.6, 65.5] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - providers: - - type: feature - name: ESRI - data: https://services.arcgis.com/P3ePLMYs2RVChkJx/ArcGIS/rest/services/USA_Counties_Generalized/FeatureServer/0 - id_field: OBJECTID - title_field: NAME - - states: - type: collection - title: States - description: USA states generalized boundaries - keywords: - - states - - featureserver - links: - - type: text/html - rel: canonical - title: data source - href: https://esri.maps.arcgis.com/home/item.html?id=8c2d6d7df8fa4142b0a1211c8dd66903 - hreflang: en-US - extents: - spatial: - bbox: [-178.2, 18.9, -66.9, 71.4] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - providers: - - type: feature - name: ESRI - data: https://services.arcgis.com/P3ePLMYs2RVChkJx/ArcGIS/rest/services/USA_States_Generalized_Boundaries/FeatureServer/0 - id_field: OBJECTID - title_field: STATE_NAME - - covid: - type: collection - title: Covid - description: New York Times daily cumulative cases (per 100,000) by county - keywords: - - covid - - mapserver - links: - - type: text/html - rel: canonical - title: data source - href: https://www.arcgis.com/home/item.html?id=628578697fb24d8ea4c32fa0c5ae1843 - hreflang: en-US - extents: - spatial: - bbox: [-159.8, 19.6, -67.6, 65.5] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: 2020-03-20T00:00:00Z - end: null - providers: - - type: feature - name: ESRI - data: https://services1.arcgis.com/0MSEUqKaxRlEPj5g/arcgis/rest/services/ncov_cases_US/FeatureServer/0 - id_field: OBJECTID - time_field: Last_Update - title_field: Combined_Key diff --git a/docker/examples/geosparql/Dockerfile b/docker/examples/geosparql/Dockerfile deleted file mode 100644 index 00c3c85..0000000 --- a/docker/examples/geosparql/Dockerfile +++ /dev/null @@ -1,4 +0,0 @@ -FROM webbben/pygeoapi-geosparql:0.9 - -COPY ./data /data -COPY ./test.pygeoapi.config.yml /pygeoapi/local.config.yml \ No newline at end of file diff --git a/docker/examples/geosparql/data/items.geojson b/docker/examples/geosparql/data/items.geojson deleted file mode 100644 index de07f53..0000000 --- a/docker/examples/geosparql/data/items.geojson +++ /dev/null @@ -1,160 +0,0 @@ -{ - "type": "FeatureCollection", - "features": [ - { - "type": "Feature", - "geometry": { - "type": "LineString", - "coordinates": [ - [30.0, 10.0], [10.0, 30.0], [40.0, 40.0] - ] - }, - "properties": { - "fid": 1, - "uri": "http://localhost:5000/collections/objects/items/LineString", - "id": "LineString" - } - }, - { - "type": "Feature", - "geometry": { - "type": "MultiPoint", - "coordinates": [ - [10.0, 40.0], [40.0, 30.0], [20.0, 20.0], [30.0, 10.0] - ] - }, - "properties": { - "fid": 2, - "uri": "http://localhost:5000/collections/objects/items/MultiPoint", - "id": "MultiPoint" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -85.2491113, - 33.12234349999999 - ] - }, - "properties": { - "fid": 3, - "uri": "http://localhost:5000/collections/objects/items/Point", - "id": "Point" - } - }, - { - "type": "Feature", - "geometry": { - "type": "MultiLineString", - "coordinates": [ - [[10.0, 10.0], [20.0, 20.0], [10.0, 40.0]], - [[40.0, 40.0], [30.0, 30.0], [40.0, 20.0], [30.0, 10.0]] - ] - }, - "properties": { - "fid": 4, - "uri": "http://localhost:5000/collections/objects/items/MultiLineString", - "id": "MultiLineString" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Polygon", - "coordinates": [ - [[30.0, 10.0], [40.0, 40.0], [20.0, 40.0], [10.0, 20.0], [30.0, 10.0]] - ] - }, - "properties": { - "fid": 5, - "uri": "http://localhost:5000/collections/objects/items/Polygon", - "id": "Polygon" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Polygon", - "coordinates": [ - [[35.0, 10.0], [45.0, 45.0], [15.0, 40.0], [10.0, 20.0], [35.0, 10.0]], - [[20.0, 30.0], [35.0, 35.0], [30.0, 20.0], [20.0, 30.0]] - ] - }, - "properties": { - "fid": 6, - "uri": "http://localhost:5000/collections/objects/items/PolygonHole", - "id": "PolygonHole" - } - }, - { - "type": "Feature", - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [[30.0, 20.0], [45.0, 40.0], [10.0, 40.0], [30.0, 20.0]] - ], - [ - [[15.0, 5.0], [40.0, 10.0], [10.0, 20.0], [5.0, 10.0], [15.0, 5.0]] - ] - ] - }, - "properties": { - "fid": 7, - "uri": "http://localhost:5000/collections/objects/items/MultiPolygon", - "id": "MultiPolygon" - } - }, - { - "type": "Feature", - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [[40.0, 40.0], [20.0, 45.0], [45.0, 30.0], [40.0, 40.0]] - ], - [ - [[20.0, 35.0], [10.0, 30.0], [10.0, 10.0], [30.0, 5.0], [45.0, 20.0], [20.0, 35.0]], - [[30.0, 20.0], [20.0, 15.0], [20.0, 25.0], [30.0, 20.0]] - ] - ] - }, - "properties": { - "fid": 8, - "uri": "http://localhost:5000/collections/objects/items/MultiPolygonWithHole", - "id": "MultiPolygonWithHole" - } - }, - { - "type": "Feature", - "geometry": { - "type": "GeometryCollection", - "geometries": [ - { - "type": "Point", - "coordinates": [40.0, 10.0] - }, - { - "type": "LineString", - "coordinates": [ - [10.0, 10.0], [20.0, 20.0], [10.0, 40.0] - ] - }, - { - "type": "Polygon", - "coordinates": [ - [[40.0, 40.0], [20.0, 45.0], [45.0, 30.0], [40.0, 40.0]] - ] - } - ] - }, - "properties": { - "fid": 9, - "uri": "http://localhost:5000/collections/objects/items/GeometryCollection", - "id": "GeometryCollection" - } - } - ] -} \ No newline at end of file diff --git a/docker/examples/geosparql/test.pygeoapi.config.yml b/docker/examples/geosparql/test.pygeoapi.config.yml deleted file mode 100644 index ae807cd..0000000 --- a/docker/examples/geosparql/test.pygeoapi.config.yml +++ /dev/null @@ -1,106 +0,0 @@ -# ================================================================= -# -# Authors: Tom Kralidis -# -# Copyright (c) 2020 Tom Kralidis -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -server: - bind: - host: localhost #change to your hostname if running your own instance - port: 5000 - url: http://localhost:5000 #change to host URL if running your own instance - mimetype: application/json; charset=UTF-8 - encoding: utf-8 - gzip: false - language: en-US - cors: true - pretty_print: true - limit: 100 - map: - url: https://tile.openstreetmap.org/{z}/{x}/{y}.png - attribution: '© OpenStreetMap contributors' - # ogc_schemas_location: /opt/schemas.opengis.net - # templates: - # path: /skin-dashboard/templates - # static: /skin-dashboard/static - -logging: - level: ERROR - logfile: /tmp/pygeoapi.log - -metadata: - identification: - title: Geojson item types - description: Provides test features for geosparql. - keywords: - - geospatial - - data - - api - keywords_type: theme - terms_of_service: https://creativecommons.org/licenses/by/4.0/ - url: https://github.com/internetofwater/geoconnex.us - license: - name: CC-BY 4.0 license - url: https://creativecommons.org/licenses/by/4.0/ - provider: - name: Team geoconnex - url: https://github.com/internetofwater/geoconnex.us - contact: - address: 2111 Campus Dr - city: Durham - stateorprovince: North Carolina - postalcode: 27708 - country: USA - email: kyle.onda@duke.edu - url: https://internetofwater.org - role: pointOfContact - -resources: - objects: - type: collection - title: GeoJSON objects - description: GeoJSON geometry types for GeoSparql and Schema Geometry conversion. - keywords: - - shapes - links: - - type: text/html - rel: canonical - title: data source - href: https://en.wikipedia.org/wiki/GeoJSON - hreflang: en-US - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: null - end: null # or empty (either means open ended) - providers: - - type: feature - name: GeoJSON - data: /data/items.geojson - id_field: id - uri_field: uri diff --git a/docker/examples/mongo/README.md b/docker/examples/mongo/README.md deleted file mode 100644 index 46287b3..0000000 --- a/docker/examples/mongo/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# pygeoapi with MongoDB - -These folders contain a Docker Compose configuration necessary to setup a minimal -`pygeoapi` server that uses a local MongoDB backend service. Mongo Express is also provided, for convenience. - -This config is only for local development and testing. - -## MongoDB - -- official MongoDB: **7.0.2** on **Ubuntu Focal** -- ports **27017** - -## Building and Running - -These composition does not require building any images. Run the [Docker compose file](docker-compose.yml) in localhost: - -``` -docker-compose up -``` diff --git a/docker/examples/mongo/docker-compose.yml b/docker/examples/mongo/docker-compose.yml deleted file mode 100644 index da64457..0000000 --- a/docker/examples/mongo/docker-compose.yml +++ /dev/null @@ -1,83 +0,0 @@ -# ================================================================= -# -# Authors: Joana Simoes > -# -# Copyright (c) 2021 Joana Simoes -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -version: '3.3' - -services: - pygeoapi: - image: geopython/pygeoapi:latest - - container_name: pygeoapi_mongo - - entrypoint: - - /mongo-entrypoint.sh - - ports: - - 5000:80 - - volumes: - - ./pygeoapi/docker.config.yml:/pygeoapi/local.config.yml - - ./pygeoapi/mongo-entrypoint.sh:/mongo-entrypoint.sh - - ./pygeoapi/wait-for-mongo.sh:/wait-for-mongo.sh - - datavolume:/pygeoapi/tests/data - links: - - mongo - - depends_on: - - mongo - - mongo: - image: mongo:7.0.2 - container_name: mongo - ports: - - 27017:27017 - volumes: - - ./docker-entrypoint-initdb.d/add_data.sh:/docker-entrypoint-initdb.d/add_data.sh:ro - - datavolume:/pygeoapi/tests/data - environment: - MONGO_INITDB_DATABASE: pop_places - - mongo-express: - image: mongo-express:1.0.0 - restart: always - container_name: mongo_express - environment: - ME_CONFIG_BASICAUTH_USERNAME: admin #admin username - ME_CONFIG_BASICAUTH_PASSWORD: admin #admin password - links: - - mongo - depends_on: - - mongo - ports: - - 8081:8081 - - -volumes: - datavolume: {} - diff --git a/docker/examples/mongo/docker-entrypoint-initdb.d/add_data.sh b/docker/examples/mongo/docker-entrypoint-initdb.d/add_data.sh deleted file mode 100755 index 743643b..0000000 --- a/docker/examples/mongo/docker-entrypoint-initdb.d/add_data.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash -# ================================================================= -# -# Authors: Joana Simoes -# -# Copyright (c) 2021 Joana Simoes -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -jq --compact-output ".features" /pygeoapi/tests/data/ne_110m_populated_places_simple.geojson > /tmp/output.geojson; - -mongoimport --db pop_places -c places --file "/tmp/output.geojson" --jsonArray diff --git a/docker/examples/mongo/pygeoapi/docker.config.yml b/docker/examples/mongo/pygeoapi/docker.config.yml deleted file mode 100644 index aa817c2..0000000 --- a/docker/examples/mongo/pygeoapi/docker.config.yml +++ /dev/null @@ -1,118 +0,0 @@ -# ================================================================= -# -# Authors: Joana Simoes -# -# Copyright (c) 2021 Joana Simoes -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - - -# Default config for base Docker Image, override via DockerVolume -# mapping with your own config. -server: - bind: - host: 0.0.0.0 - port: 80 - url: http://localhost:5000 - mimetype: application/json; charset=UTF-8 - encoding: utf-8 - language: en-US - cors: true - pretty_print: true - limit: 10 - # templates: /path/to/templates - map: - url: https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png - attribution: 'Wikimedia maps | Map data © OpenStreetMap contributors' - ogc_schemas_location: /schemas.opengis.net - -logging: - level: ERROR - #logfile: /tmp/pygeoapi.log - -metadata: - identification: - title: pygeoapi Demo instance - running latest GitHub version - description: pygeoapi provides an API to geospatial data - keywords: - - geospatial - - data - - api - keywords_type: theme - terms_of_service: https://creativecommons.org/licenses/by/4.0/ - url: https://github.com/geopython/pygeoapi - license: - name: CC-BY 4.0 license - url: https://creativecommons.org/licenses/by/4.0/ - provider: - name: pygeoapi Development Team - url: https://pygeoapi.io - contact: - name: Kralidis, Tom - position: Lead Dev - address: Mailing Address - city: City - stateorprovince: Administrative Area - postalcode: Zip or Postal Code - country: Canada - phone: +xx-xxx-xxx-xxxx - fax: +xx-xxx-xxx-xxxx - email: you@example.org - url: Contact URL - hours: Hours of Service - instructions: During hours of service. Off on weekends. - role: pointOfContact - -resources: - ne_110m_populated_places_simple: - type: collection - title: ne_110m_populated_places_simple - description: Populated places of the world - keywords: - - Population, places - links: - - type: text/html - rel: canonical - title: information - href: http://www.naturalearthdata.com/ - hreflang: en-US - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: 2011-11-11 - end: null # or empty (either means open ended) - providers: - - type: feature - name: MongoDB - data: mongodb://mongo:27017/pop_places - collection: places - id_field: id - - - hello-world: - type: process - processor: - name: HelloWorld diff --git a/docker/examples/mongo/pygeoapi/mongo-entrypoint.sh b/docker/examples/mongo/pygeoapi/mongo-entrypoint.sh deleted file mode 100755 index 1bc9667..0000000 --- a/docker/examples/mongo/pygeoapi/mongo-entrypoint.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/sh -# ================================================================= -# -# Authors: Just van den Broecke > -# Jorge Samuel Mendes de Jesus -# -# Copyright (c) 2019 Just van den Broecke -# Copyright (c) 2019 Jorge Samuel Mendes de Jesus -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -set +e - -echo "Installing NC" - -apt-get update ; -apt-get install -y netcat; - -echo "Waiting for Mongo container..." - -# First wait for MDB to be up and then execute the original pygeoapi entrypoint. -/wait-for-mongo.sh /entrypoint.sh || echo "MDB failed: $?, exit" && exit 1 diff --git a/docker/examples/mongo/pygeoapi/wait-for-mongo.sh b/docker/examples/mongo/pygeoapi/wait-for-mongo.sh deleted file mode 100755 index 0c92962..0000000 --- a/docker/examples/mongo/pygeoapi/wait-for-mongo.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/sh -# ================================================================= -# -# Authors: Joana Simoes -# -# Copyright (c) 2021 Joana Simoes -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -set -e -cmd="$@" - -: ${MONGO_HOST:=mongo} -: ${MONGO_PORT:=27017} - -until nc -z $MONGO_HOST $MONGO_PORT -do - echo "Waiting for Mongo ($MONGO_HOST:$MONGO_PORT) to start..." - sleep 0.5 -done - -echo "Mongo has started!" - -exec $cmd - diff --git a/docker/examples/mvt-elastic/ES/Dockerfile b/docker/examples/mvt-elastic/ES/Dockerfile deleted file mode 100644 index a4ff36b..0000000 --- a/docker/examples/mvt-elastic/ES/Dockerfile +++ /dev/null @@ -1,73 +0,0 @@ -# ================================================================= -# -# Authors: Just van den Broecke > -# Jorge Samuel Mendes de Jesus -# Tom Kralidis -# -# Copyright (c) 2019 Just van den Broecke -# Copyright (c) 2019 Jorge Samuel Mendes de Jesus -# Copyright (c) 2020 Tom Kralidis -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -FROM docker.elastic.co/elasticsearch/elasticsearch:8.4.0 - -LABEL maintainer="jorge.dejesus@geocat.net justb4@gmail.com" -ARG DATA_FOLDER=/usr/share/elasticsearch/data - -USER root - -COPY docker-entrypoint.sh /docker-entrypoint.sh -COPY add_data.sh /add_data.sh - -RUN apt update && apt install -y wget - -RUN wget https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh -O bin/wait-for-it.sh -RUN chmod +x bin/wait-for-it.sh -RUN wget https://raw.githubusercontent.com/geopython/pygeoapi/master/tests/data/ne_110m_populated_places_simple.geojson -O ${DATA_FOLDER}/ne_110m_populated_places_simple.geojson -RUN wget https://raw.githubusercontent.com/geopython/pygeoapi/master/tests/load_es_data.py -O /load_es_data.py - -RUN echo "xpack.security.enabled: false" >> config/elasticsearch.yml -RUN echo "http.host: 0.0.0.0" >> config/elasticsearch.yml -RUN echo "discovery.type: single-node" >> config/elasticsearch.yml - -RUN apt install -y python3 python3-pip python3-setuptools python-typing \ - && pip3 install --upgrade pip elasticsearch==8.4.0 elasticsearch-dsl \ - && apt clean packages - -USER elasticsearch - -CMD ["/usr/share/elasticsearch/bin/elasticsearch"] - -ENTRYPOINT ["/docker-entrypoint.sh"] - -# we need to run this on host -#sudo sysctl -w vm.max_map_count=262144 -#check indices -#http://localhost:9200/_cat/indices?v -#check spatial data -#http://localhost:9200/ne_110m_populated_places_simple/ -#This docker compose was inspired on: -#https://discuss.elastic.co/t/best-practice-for-creating-an-index-when-an-es-docker-container-starts/126651 -#docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" es:latest diff --git a/docker/examples/mvt-elastic/ES/add_data.sh b/docker/examples/mvt-elastic/ES/add_data.sh deleted file mode 100755 index 568dabb..0000000 --- a/docker/examples/mvt-elastic/ES/add_data.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/sh -# ================================================================= -# -# Authors: Just van den Broecke > -# Jorge Samuel Mendes de Jesus -# -# Copyright (c) 2019 Just van den Broecke -# Copyright (c) 2019 Jorge Samuel Mendes de Jesus -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - - -echo "Starting script to add geojson" -# move to the directory of this setup script -cd "$(dirname "$0")" - -# for some reason even when port 9200 is open Elasticsearch is unable to be accessed as authentication fails -# a few seconds later it works -# incresing to 50s for wait in a slow system /_cluster/health?wait_for_status=yellow&timeout=50s -until $(curl -sSf -XGET --insecure 'http://localhost:9200/_cluster/health?wait_for_status=yellow' > /dev/null); do - printf 'No status yellow from ES, trying again in 10 seconds \n' - sleep 10 -done -echo "Elasticsearch seems to be working - Adding ne_110m_populated_places_simple.geojson to ES" - -python3 /load_es_data.py /usr/share/elasticsearch/data/ne_110m_populated_places_simple.geojson geonameid - -echo "Seems that data was loaded" - -# create a new index with the settings in es_index_config.json -#curl -v --insecure --user elastic:changeme -XPUT '0.0.0.0:9200/test?pretty' -H 'Content-Type: application/json' -d @es_index_config.json diff --git a/docker/examples/mvt-elastic/ES/docker-entrypoint.sh b/docker/examples/mvt-elastic/ES/docker-entrypoint.sh deleted file mode 100755 index 8f586a6..0000000 --- a/docker/examples/mvt-elastic/ES/docker-entrypoint.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh -# ================================================================= -# -# Authors: Just van den Broecke > -# Jorge Samuel Mendes de Jesus -# -# Copyright (c) 2019 Just van den Broecke -# Copyright (c) 2019 Jorge Samuel Mendes de Jesus -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -# wait for Elasticsearch to start, then run the setup script to -# create and configure the index. -exec /usr/share/elasticsearch/bin/wait-for-it.sh localhost:9200 -- /add_data.sh & -exec $@ diff --git a/docker/examples/mvt-elastic/README.md b/docker/examples/mvt-elastic/README.md deleted file mode 100644 index 829bbc2..0000000 --- a/docker/examples/mvt-elastic/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# pygeoapi with Elastic MVT (ES) - -These folders contain a Docker Compose configuration necessary to setup a minimal -`pygeoapi` server that uses a local ES backend service to publish vector data as both, OGC API - Features and OGC API - Tiles. - -More information about this provider, including the features it supports, can be found on the [pygeoapi documentation](https://docs.pygeoapi.io/en/latest/data-publishing/ogcapi-tiles.html#providers#mvt-elastic). - -This config is only for local development and testing. - -## Elasticsearch - -- official Elasticsearch: **8.4.0** on **Ubuntu 20.04.4 LTS (Focal Fossa)** -- ports **9300** and **9200** - -ES requires the host system to have its virtual memory -parameter (**max_map_count**) [here](https://www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html) -set as follows: - -``` -sudo sysctl -w vm.max_map_count=262144 -``` - -If the docker composition fails with the following error: -``` -docker_elastic_search_1 exited with code 78 -``` - -it is very likely that you forgot to setup the `sysctl`. - -## Building and Running - -To build and run the [Docker compose file](docker-compose.yml) in localhost: - -``` -sudo sysctl -w vm.max_map_count=262144 -docker-compose build -docker-compose up -``` \ No newline at end of file diff --git a/docker/examples/mvt-elastic/docker-compose.yml b/docker/examples/mvt-elastic/docker-compose.yml deleted file mode 100644 index d1c714a..0000000 --- a/docker/examples/mvt-elastic/docker-compose.yml +++ /dev/null @@ -1,73 +0,0 @@ -# ================================================================= -# -# Authors: Just van den Broecke > -# Jorge Samuel Mendes de Jesus -# -# Copyright (c) 2019 Just van den Broecke -# Copyright (c) 2019 Jorge Samuel Mendes de Jesus -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -version: '3.3' - -services: - pygeoapi: - image: geopython/pygeoapi:latest - - container_name: pygeoapi_es - - entrypoint: - - /es-entrypoint.sh - - ports: - - 5000:80 - - volumes: - - ./pygeoapi/docker.config.yml:/pygeoapi/local.config.yml - - ./pygeoapi/es-entrypoint.sh:/es-entrypoint.sh - - ./pygeoapi/wait-for-elasticsearch.sh:/wait-for-elasticsearch.sh - - links: - - elastic_search - - depends_on: - - elastic_search - - elastic_search: - build: ./ES - - container_name: elastic -# Elastic ports may be opened for debugging but should remain closed in -# production workloads. - # ports: - # - 9300:9300 - # - 9200:9200 - volumes: - - elastic_search_data:/usr/share/elasticsearch/data - -volumes: - elastic_search_data: {} - -#NOTE: Host requires changes in configuration to run ES -#sudo sysctl -w vm.max_map_count=262144 diff --git a/docker/examples/mvt-elastic/pygeoapi/docker.config.yml b/docker/examples/mvt-elastic/pygeoapi/docker.config.yml deleted file mode 100644 index 6ccabb3..0000000 --- a/docker/examples/mvt-elastic/pygeoapi/docker.config.yml +++ /dev/null @@ -1,128 +0,0 @@ -# ================================================================= -# -# Authors: Joana Simoes -# -# Copyright (c) 2023 Joana Simoes -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -server: - bind: - host: 0.0.0.0 - port: 5000 - url: http://localhost:5000/ - mimetype: application/json; charset=UTF-8 - encoding: utf-8 - gzip: false - language: en-US - cors: true - pretty_print: true - limit: 10 - # templates: /path/to/templates - map: - url: https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png - attribution: 'Wikimedia maps | Map data © OpenStreetMap contributors' - -logging: - level: ERROR - #logfile: /tmp/pygeoapi.log - -metadata: - identification: - title: pygeoapi default instance - description: pygeoapi provides an API to geospatial data - keywords: - - geospatial - - data - - api - keywords_type: theme - terms_of_service: https://creativecommons.org/licenses/by/4.0/ - url: http://example.org - license: - name: CC-BY 4.0 license - url: https://creativecommons.org/licenses/by/4.0/ - provider: - name: Organization Name - url: https://pygeoapi.io - contact: - name: Lastname, Firstname - position: Position Title - address: Mailing Address - city: City - stateorprovince: Administrative Area - postalcode: Zip or Postal Code - country: Country - phone: +xx-xxx-xxx-xxxx - fax: +xx-xxx-xxx-xxxx - email: you@example.org - url: Contact URL - hours: Hours of Service - instructions: During hours of service. Off on weekends. - role: pointOfContact - -resources: - - ne_110m_populated_places_simple: - type: collection - title: Populated Places - description: Point symbols with name attributes. Includes all admin-0 capitals and some other major cities. We favor regional significance over population census in determining our selection of places. Use the scale rankings to filter the number of towns that appear on your map. - keywords: - - populated places - - cities - - towns - links: - - type: text/html - rel: canonical - title: information - href: http://www.naturalearthdata.com/downloads/110m-cultural-vectors/110m-populated-places/ - hreflang: en-US - - type: application/gzip - rel: canonical - title: download - href: http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_populated_places_simple.zip - hreflang: en-US - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - providers: - - type: feature - name: Elasticsearch - #Note elastic_search is the docker container of ES the name is defined in the docker-compose.yml - data: http://elastic_search:9200/ne_110m_populated_places_simple - id_field: geonameid - - type: tile - name: MVT-elastic - data: http://elastic_search:9200/ne_110m_populated_places_simple/_mvt/geometry/{z}/{x}/{y}?grid_precision=0 - # index must have a geo_point - options: - metadata_format: default # default | tilejson - zoom: - min: 0 - max: 16 - schemes: - - WorldCRS84Quad - format: - name: pbf - mimetype: application/vnd.mapbox-vector-tile diff --git a/docker/examples/mvt-elastic/pygeoapi/es-entrypoint.sh b/docker/examples/mvt-elastic/pygeoapi/es-entrypoint.sh deleted file mode 100755 index 7e8bea1..0000000 --- a/docker/examples/mvt-elastic/pygeoapi/es-entrypoint.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh -# ================================================================= -# -# Authors: Just van den Broecke > -# Jorge Samuel Mendes de Jesus -# Tom Kralidis -# -# Copyright (c) 2019 Just van den Broecke -# Copyright (c) 2019 Jorge Samuel Mendes de Jesus -# Copyright (c) 2023 Tom Kralidis -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -set +e - -echo "Install Curl" - -apt-get update -y && -apt-get install curl -y && - -echo "Waiting for Elasticsearch container..." - -# First wait for ES to be up and then execute the original pygeoapi entrypoint. -/wait-for-elasticsearch.sh http://elastic_search:9200 /entrypoint.sh || echo "ES failed: $?, exit" && exit 1 diff --git a/docker/examples/mvt-elastic/pygeoapi/wait-for-elasticsearch.sh b/docker/examples/mvt-elastic/pygeoapi/wait-for-elasticsearch.sh deleted file mode 100755 index 06bfce8..0000000 --- a/docker/examples/mvt-elastic/pygeoapi/wait-for-elasticsearch.sh +++ /dev/null @@ -1,71 +0,0 @@ -#!/bin/sh -# ================================================================= -# -# Authors: Just van den Broecke > -# Jorge Samuel Mendes de Jesus -# -# Copyright (c) 2019 Just van den Broecke -# Copyright (c) 2019 Jorge Samuel Mendes de Jesus -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -set -e - -host="$1" -shift -cmd="$@" - - -until $(curl --output /dev/null --silent --head --fail "$host") ; do - echo 'Checking if Elasticsearch server is up' - sleep 5 - counter=$((counter+1)) -done - -# First wait for ES to start... -response=$(curl $host) - -until [ "$response" = "200" ] ; do - response=$(curl --write-out %{http_code} --silent --output /dev/null "$host") - >&2 echo "Elasticsearch is up but unavailable - No Reponse - sleeping" - sleep 10 - -done - - -# next wait for ES status to turn to green or yellow -health="$(curl -fsSL "$host/_cat/health?h=status")" -health="$(echo "$health" | sed -r 's/^[[:space:]]+|[[:space:]]+$//g')" # trim whitespace (otherwise we'll have "green ") - -until [ "$health" = 'yellow' ] || [ "$health" = 'green' ] ; do - health="$(curl -fsSL "$host/_cat/health?h=status")" - health="$(echo "$health" | sed -r 's/^[[:space:]]+|[[:space:]]+$//g')" - >&2 echo "Elasticsearch status is not green or yellow - sleeping" - sleep 10 -done - ->&2 echo "Elasticsearch is up" - - -exec $cmd diff --git a/docker/examples/mvt-tippecanoe/README.md b/docker/examples/mvt-tippecanoe/README.md deleted file mode 100644 index b2ac906..0000000 --- a/docker/examples/mvt-tippecanoe/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# pygeoapi with Tippecanoe MVT - -These folders contain a Docker Compose configuration necessary to setup a minimal -`pygeoapi` server that uses pre-rendered [Tippecanoe](https://github.com/mapbox/tippecanoe) Mapbox Vector Tiles to publish vector data as OGC API - Tiles. - -More information about this provider, including the features it supports, can be found on the [pygeoapi documentation](https://docs.pygeoapi.io/en/latest/data-publishing/ogcapi-tiles.html#providers#mvt-tippecanoe). - -This config is only for local development and testing. - -## Tippecanoe - -This example uses the test tiles, available on ```tests/data/tiles/ne_110m_lakes/```. You can generate your own tiles on disk with: - -``` bash -docker run -it --rm -v $(pwd)/data:/data emotionalcities/tippecanoe \ -tippecanoe --output-to-directory=/data/tiles/ --force --maximum-zoom=16 --drop-densest-as-needed --extend-zooms-if-still-dropping --no-tile-compression /data/ne_110m_populated_places_simple.geojson -``` - -## Building and Running - -To build and run the [Docker compose file](docker-compose.yml) in localhost: - -``` -docker-compose up -``` \ No newline at end of file diff --git a/docker/examples/mvt-tippecanoe/docker-compose.yml b/docker/examples/mvt-tippecanoe/docker-compose.yml deleted file mode 100644 index 0fbbdf9..0000000 --- a/docker/examples/mvt-tippecanoe/docker-compose.yml +++ /dev/null @@ -1,41 +0,0 @@ -# ================================================================= -# -# Authors: Just van den Broecke > -# Jorge Samuel Mendes de Jesus -# -# Copyright (c) 2019 Just van den Broecke -# Copyright (c) 2019 Jorge Samuel Mendes de Jesus -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -version: '3.3' - -services: - pygeoapi: - image: geopython/pygeoapi:latest - - container_name: pygeoapi - - ports: - - 5000:80 diff --git a/docker/examples/mvt-tippecanoe/pygeoapi/docker.config.yml b/docker/examples/mvt-tippecanoe/pygeoapi/docker.config.yml deleted file mode 100644 index 9c506ae..0000000 --- a/docker/examples/mvt-tippecanoe/pygeoapi/docker.config.yml +++ /dev/null @@ -1,124 +0,0 @@ -# ================================================================= -# -# Authors: Joana Simoes -# -# Copyright (c) 2023 Joana Simoes -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -server: - bind: - host: 0.0.0.0 - port: 5000 - url: http://localhost:5000/ - mimetype: application/json; charset=UTF-8 - encoding: utf-8 - gzip: false - language: en-US - cors: true - pretty_print: true - limit: 10 - # templates: /path/to/templates - map: - url: https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png - attribution: 'Wikimedia maps | Map data © OpenStreetMap contributors' - -logging: - level: ERROR - #logfile: /tmp/pygeoapi.log - -metadata: - identification: - title: pygeoapi default instance - description: pygeoapi provides an API to geospatial data - keywords: - - geospatial - - data - - api - keywords_type: theme - terms_of_service: https://creativecommons.org/licenses/by/4.0/ - url: http://example.org - license: - name: CC-BY 4.0 license - url: https://creativecommons.org/licenses/by/4.0/ - provider: - name: Organization Name - url: https://pygeoapi.io - contact: - name: Lastname, Firstname - position: Position Title - address: Mailing Address - city: City - stateorprovince: Administrative Area - postalcode: Zip or Postal Code - country: Country - phone: +xx-xxx-xxx-xxxx - fax: +xx-xxx-xxx-xxxx - email: you@example.org - url: Contact URL - hours: Hours of Service - instructions: During hours of service. Off on weekends. - role: pointOfContact - -resources: - ne_110m_populated_places_simple: - type: collection - title: Populated Places - description: Point symbols with name attributes. Includes all admin-0 capitals and some other major cities. We favor regional significance over population census in determining our selection of places. Use the scale rankings to filter the number of towns that appear on your map. - keywords: - - populated places - - cities - - towns - links: - - type: text/html - rel: canonical - title: information - href: http://www.naturalearthdata.com/downloads/110m-cultural-vectors/110m-populated-places/ - hreflang: en-US - - type: application/gzip - rel: canonical - title: download - href: http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_populated_places_simple.zip - hreflang: en-US - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - providers: - - type: tile - name: MVT-tippecanoe - data: tests/data/tiles/ne_110m_lakes/ # local directory tree - # data: http://localhost:9000/ne_110m_lakes/{z}/{x}/{y}.pbf # tiles stored on a MinIO bucket - options: - metadata_format: default # default | tilejson - zoom: - min: 0 - max: 16 - schemes: - - WorldCRS84Quad - format: - name: pbf - mimetype: application/vnd.mapbox-vector-tile - - diff --git a/docker/examples/sensorthings/README.md b/docker/examples/sensorthings/README.md deleted file mode 100644 index 8ec3dd7..0000000 --- a/docker/examples/sensorthings/README.md +++ /dev/null @@ -1,51 +0,0 @@ -# Setting up a pygeoapi server with SensorThings (STA) using Docker Compose - -This folder contains a Docker Compose configuration necessary to setup an example `pygeoapi` server using a STA endpoint. - -This config is only for local development and testing. - -## Introduction - -The `pygeoapi` server with SensorThings (STA) provides a platform for publishing SensorThings API data as features. [SensorThings](https://github.com/opengeospatial/sensorthings) is a standardized way to provide access to Internet of Things (IoT) data, making it easier to manage and interact with sensor data. - -## SensorThings Build options - -There are two example SensorThings API (STA) endpoints available. To switch between examples, you need to change the `pygeoapi.config.yml` file used in the [Docker Compose file](docker-compose.yml). - -1. [**brgm.config.yml**](brgm.config.yml): Configures a `pygeoapi` server to serve water quality data from BRGM (Bureau de Recherches Géologiques et Minières), the French Geological Survey. - -2. [**usgs.config.yml**](usgs.config.yml): Configures a `pygeoapi` server to serve data from the United States Geological Survey (USGS). - - -### Additional details -- [**docker-compose.yml**](docker-compose.yml): Defines the Docker Compose configuration for orchestrating the `pygeoapi` server examples. It specifies the Docker image to use, the ports to expose, and the volumes to mount. - -- The BRGM water quality endpoint provides access to water quality data from BRGM, the French Geological Survey. - -- The USGS data endpoint provides access to data from the United States Geological Survey (USGS). - -### Which build option should I choose? - -The best build option for you will depend on your specific needs. If you are interested in accessing water quality data from the BRGM, then you should choose the `brgm.config.yml` file. If you are interested in accessing data from the USGS, then you should choose the `usgs.config.yml` file. - -If you are not sure which build option to choose, you can start with the `brgm.config.yml` file. This is the simplest build option and it provides access to a _real-world dataset_. - -## SensorThings Usage - -After editing the [docker-compose.yml](docker-compose.yml) file appropriately, you can start the `pygeoapi` container using the following command: - -```bash -docker compose up [-d] -``` - -This command will create and start the pygeoapi container, republishing SensorThings data. You can then access the pygeoapi server at http://localhost:5000. - -## Stopping and Removing Containers - -To stop and remove the containers, use the following command: - -```bash -docker compose down -``` - -Please ensure you have the necessary requirements installed before following the setup instructions. \ No newline at end of file diff --git a/docker/examples/sensorthings/brgm.config.yml b/docker/examples/sensorthings/brgm.config.yml deleted file mode 100644 index 03f7a1a..0000000 --- a/docker/examples/sensorthings/brgm.config.yml +++ /dev/null @@ -1,217 +0,0 @@ -# ================================================================= -# -# Authors: Tom Kralidis -# -# Copyright (c) 2020 Tom Kralidis -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -server: - bind: - host: 0.0.0.0 #change to your hostname if running your own instance - port: 5000 - url: http://localhost:5000 #change to host URL if running your own instance - mimetype: application/json; charset=UTF-8 - encoding: utf-8 - gzip: false - languages: - # First language is the default language - - en-US - - fr-CA - # cors: true - pretty_print: true - limit: 10 - map: - url: https://tile.openstreetmap.org/{z}/{x}/{y}.png - attribution: '© OpenStreetMap contributors' - # templates: - # path: /path/to/Jinja2/templates - # static: /path/to/static/folder # css/js/img - # ogc_schemas_location: /opt/schemas.opengis.net - -logging: - level: DEBUG - logfile: /tmp/pygeoapi.log - -metadata: - identification: - title: - en: SensorThings API BRGM example endpoint. - fr: SensorThings API BRGM exemple enpoint. - description: Provides STA reference features. - keywords: - en: - - geospatial - - SensorThingsapi - - api - fr: - - géospatiale - - SensorThingsapi - - api - keywords_type: theme - terms_of_service: https://creativecommons.org/licenses/by/4.0/ - url: https://github.com/internetofwater/geoconnex.us - license: - name: CC-BY 4.0 license - url: https://creativecommons.org/licenses/by/4.0/ - provider: - name: Organization Name - url: https://pygeoapi.io - contact: - name: Lastname, Firstname - position: Position Title - address: Mailing Address - city: City - stateorprovince: Administrative Area - postalcode: Zip or Postal Code - country: Country - phone: +xx-xxx-xxx-xxxx - fax: +xx-xxx-xxx-xxxx - email: you@example.org - url: Contact URL - hours: Mo-Fr 08:00-17:00 - instructions: During hours of service. Off on weekends. - role: pointOfContact - -resources: - Things: - type: collection - title: BGRM Things - description: BGRM SensorThings API Things - keywords: - - Things - - SensorThings - - BRGM - linked-data: - context: - - sosa: "http://www.w3.org/ns/sosa/" - ssn: "http://www.w3.org/ns/ssn/" - Datastreams: sosa:ObservationCollection - name: schema:name - links: - - type: application/html - rel: canonical - title: data source - href: https://www.brgm.fr/en - hreflang: en-US - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: null - end: null - providers: - - type: feature - name: SensorThings - data: https://sensorthings-wq.brgm-rec.fr/FROST-Server/v1.0/ - id_field: '@iot.id' - entity: Things - intralink: true - properties: - - name - - Datastreams - - '@iot.selfLink' - Datastreams: - type: collection - title: BRGM Datastreams - description: BRGM SensorThings API Datastreams - keywords: - - Datastreams - - SensorThings - - BRGM - linked-data: - context: - - sosa: http://www.w3.org/ns/sosa/ - ssn: http://www.w3.org/ns/ssn/ - Observations: sosa:hasMember - Thing: sosa:hasFeatureOfInterest - name: schema:name - links: - - type: application/html - rel: canonical - title: data source - href: https://www.brgm.fr/en - hreflang: en-US - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: null - end: null - providers: - - type: feature - name: SensorThings - data: https://sensorthings-wq.brgm-rec.fr/FROST-Server/v1.0/ - entity: Datastreams - time_field: phenomenonTime - intralink: true - properties: - - name - - Thing - - Observations - - Sensor - - ObservedProperty - - '@iot.selfLink' - Observations: - type: collection - title: BRGM Observations - description: BRGM SensorThings API Observations - keywords: - - Observations - - SensorThings - - BRGM - linked-data: - context: - - sosa: http://www.w3.org/ns/sosa/ - ssn: http://www.w3.org/ns/ssn/ - Datastream: sosa:isMemberOf - name: schema:name - links: - - type: application/html - rel: canonical - title: data source - href: https://www.brgm.fr/en - hreflang: en-US - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: null - end: null - providers: - - type: feature - name: SensorThings - data: https://sensorthings-wq.brgm-rec.fr/FROST-Server/v1.0/ - entity: Observations - time_field: phenomenonTime - intralink: true - properties: - - phenomenonTime - - result - - Datastream - - FeatureOfInterest - - '@iot.selfLink' diff --git a/docker/examples/sensorthings/docker-compose.yml b/docker/examples/sensorthings/docker-compose.yml deleted file mode 100644 index c156189..0000000 --- a/docker/examples/sensorthings/docker-compose.yml +++ /dev/null @@ -1,40 +0,0 @@ -# ================================================================= -# -# Authors: Benjamin Webb -# -# Copyright (c) 2021 Benjamin Webb -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -version: "3" - -services: - - pygeoapi: - image: geopython/pygeoapi:latest - ports: - - "5000:80" - volumes: - - ./brgm.config.yml:/pygeoapi/local.config.yml - # - ./usgs.config.yml:/pygeoapi/local.config.yml diff --git a/docker/examples/sensorthings/usgs.config.yml b/docker/examples/sensorthings/usgs.config.yml deleted file mode 100644 index 6a389ee..0000000 --- a/docker/examples/sensorthings/usgs.config.yml +++ /dev/null @@ -1,217 +0,0 @@ -# ================================================================= -# -# Authors: Tom Kralidis -# -# Copyright (c) 2020 Tom Kralidis -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -server: - bind: - host: 0.0.0.0 #change to your hostname if running your own instance - port: 5000 - url: http://localhost:5000 #change to host URL if running your own instance - mimetype: application/json; charset=UTF-8 - encoding: utf-8 - gzip: false - languages: - # First language is the default language - - en-US - - fr-CA - # cors: true - pretty_print: true - limit: 10 - map: - url: https://tile.openstreetmap.org/{z}/{x}/{y}.png - attribution: '© OpenStreetMap contributors' - # templates: - # path: /path/to/Jinja2/templates - # static: /path/to/static/folder # css/js/img - # ogc_schemas_location: /opt/schemas.opengis.net - -logging: - level: ERROR - logfile: /tmp/pygeoapi.log - -metadata: - identification: - title: - en: SensorThings API USGS example endpoint. - fr: SensorThings API USGS exemple enpoint. - description: Provides STA reference features. - keywords: - en: - - geospatial - - SensorThingsapi - - api - fr: - - géospatiale - - SensorThingsapi - - api - keywords_type: theme - terms_of_service: https://creativecommons.org/licenses/by/4.0/ - url: https://github.com/internetofwater/geoconnex.us - license: - name: CC-BY 4.0 license - url: https://creativecommons.org/licenses/by/4.0/ - provider: - name: Organization Name - url: https://pygeoapi.io - contact: - name: Lastname, Firstname - position: Position Title - address: Mailing Address - city: City - stateorprovince: Administrative Area - postalcode: Zip or Postal Code - country: Country - phone: +xx-xxx-xxx-xxxx - fax: +xx-xxx-xxx-xxxx - email: you@example.org - url: Contact URL - hours: Mo-Fr 08:00-17:00 - instructions: During hours of service. Off on weekends. - role: pointOfContact - -resources: - Things: - type: collection - title: USGS Things - description: USGS SensorThings API Things - keywords: - - Things - - SensorThings - - USGS - linked-data: - context: - - sosa: "http://www.w3.org/ns/sosa/" - ssn: "http://www.w3.org/ns/ssn/" - Datastreams: sosa:ObservationCollection - name: schema:name - links: - - type: application/html - rel: canonical - title: data source - href: https://labs.waterdata.usgs.gov - hreflang: en-US - extents: - spatial: - bbox: [-180, -90, 180, 90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: null - end: null - providers: - - type: feature - name: SensorThings - data: https://labs.waterdata.usgs.gov/sta/v1.1/ - entity: Things - id_field: "@iot.id" - intralink: true - properties: - - name - - Datastreams - - "@iot.selfLink" - Datastreams: - type: collection - title: USGS Datastreams - description: USGS SensorThings API Datastreams - keywords: - - Datastreams - - SensorThings - - USGS - linked-data: - context: - - sosa: http://www.w3.org/ns/sosa/ - ssn: http://www.w3.org/ns/ssn/ - Observations: sosa:hasMember - Thing: sosa:hasFeatureOfInterest - name: schema:name - links: - - type: application/html - rel: canonical - title: data source - href: https://labs.waterdata.usgs.gov/ - hreflang: en-US - extents: - spatial: - bbox: [-180, -90, 180, 90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: null - end: null - providers: - - type: feature - name: SensorThings - data: https://labs.waterdata.usgs.gov/sta/v1.1/ - entity: Datastreams - time_field: phenomenonTime - intralink: true - properties: - - name - - Thing - - Observations - - Sensor - - ObservedProperty - - "@iot.selfLink" - Observations: - type: collection - title: USGS Observations - description: USGS SensorThings API Observations - keywords: - - Observations - - SensorThings - - USGS - linked-data: - context: - - sosa: http://www.w3.org/ns/sosa/ - ssn: http://www.w3.org/ns/ssn/ - Datastream: sosa:isMemberOf - name: schema:name - links: - - type: application/html - rel: canonical - title: data source - href: https://labs.waterdata.usgs.gov/ - hreflang: en-US - extents: - spatial: - bbox: [-180, -90, 180, 90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: null - end: null - providers: - - type: feature - name: SensorThings - data: https://labs.waterdata.usgs.gov/sta/v1.1/ - entity: Observations - time_field: phenomenonTime - intralink: true - properties: - - phenomenonTime - - result - - Datastream - - FeatureOfInterest - - "@iot.selfLink" diff --git a/docker/examples/simple/README.md b/docker/examples/simple/README.md deleted file mode 100644 index 9721001..0000000 --- a/docker/examples/simple/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Simple Example - -This is the simplest example to run `pygeoapi` with a [local config](my.config.yml) -using Docker. - -## Using Docker directly - -Execute [./run_pygeoapi.sh](run_pygeoapi.sh). This will pull the `pygeoapi` Image from -DockerHub and start the `pygeoapi` server. With your browser got to http://localhost:5000. - -## Using Docker Compose - -Run the [docker-compose.yml](docker-compose.yml) as follows: - -``` -docker-compose up [-d] - -``` diff --git a/docker/examples/simple/docker-compose.yml b/docker/examples/simple/docker-compose.yml deleted file mode 100644 index 0675ffc..0000000 --- a/docker/examples/simple/docker-compose.yml +++ /dev/null @@ -1,40 +0,0 @@ -# ================================================================= -# -# Authors: Just van den Broecke > -# Jorge Samuel Mendes de Jesus -# -# Copyright (c) 2019 Just van den Broecke -# Copyright (c) 2019 Jorge Samuel Mendes de Jesus -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -version: "3" - -services: - - pygeoapi: - image: geopython/pygeoapi:latest - - volumes: - - ./my.config.yml:/pygeoapi/local.config.yml diff --git a/docker/examples/simple/my.config.yml b/docker/examples/simple/my.config.yml deleted file mode 100644 index 348bb9f..0000000 --- a/docker/examples/simple/my.config.yml +++ /dev/null @@ -1,178 +0,0 @@ -# ================================================================= -# -# Authors: Just van den Broecke > -# Jorge Samuel Mendes de Jesus -# -# Copyright (c) 2019 Just van den Broecke -# Copyright (c) 2019 Jorge Samuel Mendes de Jesus -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -server: - bind: - host: 0.0.0.0 - port: 80 - url: http://localhost:5000 - mimetype: application/json; charset=UTF-8 - encoding: utf-8 - gzip: false - language: en-US - cors: true - pretty_print: true - limit: 10 - # templates: /path/to/templates - map: - url: https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png - attribution: 'Wikimedia maps | Map data © OpenStreetMap contributors' - -logging: - level: ERROR - #logfile: /tmp/pygeoapi.log - -metadata: - identification: - title: pygeoapi default instance - description: pygeoapi provides an API to geospatial data - keywords: - - geospatial - - data - - api - keywords_type: theme - terms_of_service: https://creativecommons.org/licenses/by/4.0/ - url: http://example.org - license: - name: CC-BY 4.0 license - url: https://creativecommons.org/licenses/by/4.0/ - provider: - name: Organization Name - url: https://pygeoapi.io - contact: - name: Lastname, Firstname - position: Position Title - address: Mailing Address - city: City - stateorprovince: Administrative Area - postalcode: Zip or Postal Code - country: Country - phone: +xx-xxx-xxx-xxxx - fax: +xx-xxx-xxx-xxxx - email: you@example.org - url: Contact URL - hours: Hours of Service - instructions: During hours of service. Off on weekends. - role: pointOfContact - -resources: - obs: - type: collection - title: Observations - description: My cool observations - keywords: - - observations - - monitoring - links: - - type: text/csv - rel: canonical - title: data - href: https://github.com/mapserver/mapserver/blob/branch-7-0/msautotest/wxs/data/obs.csv - hreflang: en-US - - type: text/csv - rel: alternate - title: data - href: https://raw.githubusercontent.com/mapserver/mapserver/branch-7-0/msautotest/wxs/data/obs.csv - hreflang: en-US - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: 2000-10-30T18:24:39Z - end: 2007-10-30T08:57:29Z - trs: http://www.opengis.net/def/uom/ISO-8601/0/Gregorian - providers: - - type: feature - name: CSV - data: tests/data/obs.csv - id_field: id - geometry: - x_field: long - y_field: long - - lakes: - type: collection - title: Large Lakes - description: lakes of the world, public domain - keywords: - - lakes - links: - - type: text/html - rel: canonical - title: information - href: http://www.naturalearthdata.com/ - hreflang: en-US - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: 2011-11-11 - end: null # or empty - trs: http://www.opengis.net/def/uom/ISO-8601/0/Gregorian - providers: - - type: feature - name: GeoJSON - data: tests/data/ne_110m_lakes.geojson - id_field: id - - countries: - type: collection - title: Countries in the world - description: Countries of the world - keywords: - - countries - - natural eart - links: - - type: text/html - rel: canonical - title: information - href: http://www.naturalearthdata.com/ - hreflang: en-US - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: - end: null # or empty - providers: - - type: feature - name: SQLiteGPKG - data: tests/data/ne_110m_admin_0_countries.sqlite - id_field: ogc_fid - table: ne_110m_admin_0_countries - - hello-world: - type: process - processor: - name: HelloWorld diff --git a/docker/examples/simple/run_pygeoapi.sh b/docker/examples/simple/run_pygeoapi.sh deleted file mode 100755 index 27ad0f9..0000000 --- a/docker/examples/simple/run_pygeoapi.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh -# ================================================================= -# -# Authors: Just van den Broecke > -# Jorge Samuel Mendes de Jesus -# -# Copyright (c) 2019 Just van den Broecke -# Copyright (c) 2019 Jorge Samuel Mendes de Jesus -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -echo "Running latest Docker version of pygeoapi with local config" -echo "Go with your browser to http://localhost:5000 to view" -docker run -p 5000:80 -v $(pwd)/my.config.yml:/pygeoapi/local.config.yml -it geopython/pygeoapi:latest - diff --git a/docker/examples/skin/Dockerfile b/docker/examples/skin/Dockerfile deleted file mode 100644 index af99e1c..0000000 --- a/docker/examples/skin/Dockerfile +++ /dev/null @@ -1,52 +0,0 @@ -# ================================================================= -# -# Authors: Tom Kralidis -# Just van den Broecke -# Francesco Bartoli -# Angelos Tzotsos -# Paul van Genuchten -# -# Copyright (c) 2020 Tom Kralidis -# Copyright (c) 2019 Just van den Broecke -# Copyright (c) 2020 Francesco Bartoli -# Copyright (c) 2021 Angelos Tzotsos -# Copyright (c) 2022 Paul van Genuchten -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -FROM geopython/pygeoapi:latest - -LABEL maintainer="Paul van Genuchten " - -RUN apt update && apt install -y --no-install-recommends wget unzip - -# a skin example -RUN wget "https://github.com/pvgenuchten/pygeoapi-skin-dashboard/archive/refs/heads/main.zip" -RUN unzip main.zip -d /pygeoapi -RUN rm main.zip - -COPY ./skin.config.yml /pygeoapi/local.config.yml - -WORKDIR /pygeoapi -ENTRYPOINT ["/entrypoint.sh"] diff --git a/docker/examples/skin/README.md b/docker/examples/skin/README.md deleted file mode 100644 index 6cdfe36..0000000 --- a/docker/examples/skin/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# pygeoapi with dashboard skin - -These directories contain a Docker build script necessary to setup a minimal -`pygeoapi` server that uses a customised dashboard skin. - -The skin is pulled in from https://github.com/pvgenuchten/pygeoapi-skin-dashboard - -Note that this exmaple is only for local development and testing. - -## Building and running - -```bash -# build image locally -docker build -t geopython/pygeoapi-skinned:local . -# run container in localhost -docker run -p 5000:80 geopython/pygeoapi-skinned:local -``` - -Browse to http://localhost:5000 diff --git a/docker/examples/skin/skin.config.yml b/docker/examples/skin/skin.config.yml deleted file mode 100644 index 8715fa5..0000000 --- a/docker/examples/skin/skin.config.yml +++ /dev/null @@ -1,276 +0,0 @@ -# ================================================================= -# -# Authors: Tom Kralidis -# -# Copyright (c) 2020 Tom Kralidis -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -server: - bind: - host: 0.0.0.0 - port: 5000 - url: http://localhost:5000 - mimetype: application/json; charset=UTF-8 - encoding: utf-8 - gzip: false - languages: - # First language is the default language - - en-US - - fr-CA - # cors: true - pretty_print: true - limit: 10 - templates: - path: /pygeoapi/pygeoapi-skin-dashboard-main/templates - static: /pygeoapi/pygeoapi-skin-dashboard-main/static # css/js/img - map: - url: https://tile.openstreetmap.org/{z}/{x}/{y}.png - attribution: '© OpenStreetMap contributors' -# manager: -# name: TinyDB -# connection: /tmp/pygeoapi-process-manager.db -# output_dir: /tmp/ - # ogc_schemas_location: /opt/schemas.opengis.net - -logging: - level: ERROR - #logfile: /tmp/pygeoapi.log - -metadata: - identification: - title: - en: pygeoapi default instance - fr: instance par défaut de pygeoapi - description: - en: pygeoapi provides an API to geospatial data - fr: pygeoapi fournit une API aux données géospatiales - keywords: - en: - - geospatial - - data - - api - fr: - - géospatiale - - données - - api - keywords_type: theme - terms_of_service: https://creativecommons.org/licenses/by/4.0/ - url: https://example.org - license: - name: CC-BY 4.0 license - url: https://creativecommons.org/licenses/by/4.0/ - provider: - name: Organization Name - url: https://pygeoapi.io - contact: - name: Lastname, Firstname - position: Position Title - address: Mailing Address - city: City - stateorprovince: Administrative Area - postalcode: Zip or Postal Code - country: Country - phone: +xx-xxx-xxx-xxxx - fax: +xx-xxx-xxx-xxxx - email: you@example.org - url: Contact URL - hours: Mo-Fr 08:00-17:00 - instructions: During hours of service. Off on weekends. - role: pointOfContact - -resources: - obs: - type: collection - title: Observations - description: My cool observations - keywords: - - observations - - monitoring - linked-data: - context: - - datetime: https://schema.org/DateTime - - vocab: https://example.com/vocab# - stn_id: "vocab:stn_id" - value: "vocab:value" - links: - - type: text/csv - rel: canonical - title: data - href: https://github.com/mapserver/mapserver/blob/branch-7-0/msautotest/wxs/data/obs.csv - hreflang: en-US - - type: text/csv - rel: alternate - title: data - href: https://raw.githubusercontent.com/mapserver/mapserver/branch-7-0/msautotest/wxs/data/obs.csv - hreflang: en-US - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: 2000-10-30T18:24:39Z - end: 2007-10-30T08:57:29Z - providers: - - type: feature - name: CSV - data: tests/data/obs.csv - id_field: id - geometry: - x_field: long - y_field: lat - - lakes: - type: collection - title: - en: Large Lakes - fr: Grands Lacs - description: - en: lakes of the world, public domain - fr: lacs du monde, domaine public - keywords: - en: - - lakes - - water bodies - fr: - - lacs - - plans d'eau - links: - - type: text/html - rel: canonical - title: information - href: http://www.naturalearthdata.com/ - hreflang: en-US - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: 2011-11-11T11:11:11Z - end: null # or empty (either means open ended) - providers: - - type: feature - name: GeoJSON - data: tests/data/ne_110m_lakes.geojson - id_field: id - title_field: name - - gdps-temperature: - type: collection - title: Global Deterministic Prediction System sample - description: Global Deterministic Prediction System sample - keywords: - - gdps - - global - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - links: - - type: text/html - rel: canonical - title: information - href: https://eccc-msc.github.io/open-data/msc-data/nwp_gdps/readme_gdps_en - hreflang: en-CA - providers: - - type: coverage - name: rasterio - data: tests/data/CMC_glb_TMP_TGL_2_latlon.15x.15_2020081000_P000.grib2 - options: - DATA_ENCODING: COMPLEX_PACKING - format: - name: GRIB - mimetype: application/x-grib2 - - test-data: - type: stac-collection - title: pygeoapi test data - description: pygeoapi test data - keywords: - - poi - - portugal - links: - - type: text/html - rel: canonical - title: information - href: https://github.com/geopython/pygeoapi/tree/master/tests/data - hreflang: en-US - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - providers: - - type: stac - name: FileSystem - data: tests/data - file_types: - - .gpkg - - .sqlite - - .csv - - .grib2 - - .tif - - .shp - - canada-metadata: - type: collection - title: - en: Open Canada sample data - fr: Exemple de donn\u00e9es Canada Ouvert - description: - en: Sample metadata records from open.canada.ca - fr: Exemples d'enregistrements de m\u00e9tadonn\u00e9es sur ouvert.canada.ca - keywords: - en: - - canada - - open data - fr: - - canada - - donn\u00e9es ouvertes - links: - - type: text/html - rel: canonical - title: information - href: https://open.canada.ca/en/open-data - hreflang: en-CA - - type: text/html - rel: alternate - title: informations - href: https://ouvert.canada.ca/fr/donnees-ouvertes - hreflang: fr-CA - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - providers: - - type: record - name: TinyDBCatalogue - data: tests/data/open.canada.ca/sample-records.tinydb - id_field: externalId - time_field: created - title_field: title - - hello-world: - type: process - processor: - name: HelloWorld diff --git a/docker/examples/socrata/README.md b/docker/examples/socrata/README.md deleted file mode 100644 index 03e76d3..0000000 --- a/docker/examples/socrata/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# pygeoapi with Socrata - -This folder contains the docker-compose configuration necessary to setup an example -`pygeoapi` server using a remote Socrata Open Data API (SODA) endpoint. - -This config is only for local development and testing. - -## Building and Running - -To build and run the [Docker compose file](docker-compose.yml) in localhost: - -``` -docker compose up [--build] [-d] -``` - -Navigate to `localhost:5000`. diff --git a/docker/examples/socrata/docker-compose.yml b/docker/examples/socrata/docker-compose.yml deleted file mode 100644 index 795131b..0000000 --- a/docker/examples/socrata/docker-compose.yml +++ /dev/null @@ -1,42 +0,0 @@ -# ================================================================= -# -# Authors: Benjamin Webb -# -# Copyright (c) 2022 Benjamin Webb -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -services: - pygeoapi: - image: geopython/pygeoapi:latest - # build: - # context: ../../.. - - container_name: pygeoapi_socrata - - ports: - - 5000:80 - - volumes: - - ./socrata.config.yml:/pygeoapi/local.config.yml diff --git a/docker/examples/socrata/socrata.config.yml b/docker/examples/socrata/socrata.config.yml deleted file mode 100644 index 5f97d84..0000000 --- a/docker/examples/socrata/socrata.config.yml +++ /dev/null @@ -1,110 +0,0 @@ -# ================================================================= -# -# Authors: Benjamin Webb -# -# Copyright (c) 2022 Benjamin Webb -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -server: - bind: - host: 0.0.0.0 - port: 80 - url: http://localhost:5000 - mimetype: application/json; charset=UTF-8 - encoding: utf-8 - gzip: false - language: en-US - cors: true - pretty_print: true - limit: 10 - # templates: /path/to/templates - map: - url: https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png - attribution: 'Wikimedia maps | Map data © OpenStreetMap contributors' - ogc_schemas_location: /schemas.opengis.net - -logging: - level: ERROR - #logfile: /tmp/pygeoapi.log - -metadata: - identification: - title: SODA pygeoapi demo instance - description: pygeoapi for Socrata Open Data API - keywords: - - soda - - socrata - - api - keywords_type: theme - terms_of_service: https://creativecommons.org/licenses/by/4.0/ - url: https://github.com/geopython/pygeoapi - license: - name: CC-BY 4.0 license - url: https://creativecommons.org/licenses/by/4.0/ - provider: - name: Center for Geospatial Solutions - url: https://www.lincolninst.edu/center-geospatial-solutions - contact: - name: Webb, Benjamin - position: Softare Developer - address: Mailing Address - city: City - stateorprovince: Administrative Area - postalcode: Zip or Postal Code - country: Canada - phone: +xx-xxx-xxx-xxxx - fax: +xx-xxx-xxx-xxxx - email: you@example.org - url: Contact URL - hours: Hours of Service - instructions: During hours of service. Off on weekends. - role: pointOfContact - -resources: - earthquakes: - type: collection - title: USGS Earthquakes Demo - description: USGS Earthquakes Demo - keywords: - - earthquakes - - usgs - links: - - type: text/html - rel: canonical - title: data source - href: https://soda.demo.socrata.com/dataset/USGS-Earthquakes-Demo/emdb-u46w/ - hreflang: en-US - extents: - spatial: - bbox: [-180, -90, 180, 90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - providers: - - type: feature - name: Socrata - data: https://soda.demo.socrata.com/ - resource_id: emdb-u46w - id_field: earthquake_id - time_field: datetime - geom_field: location diff --git a/examples/django/sample_project/README.md b/examples/django/sample_project/README.md deleted file mode 100644 index 40512ee..0000000 --- a/examples/django/sample_project/README.md +++ /dev/null @@ -1,91 +0,0 @@ -# pygeoapi Django integration - -## Overview - -Django is a Python web framework that encourages rapid development and clean, pragmatic design. - -The pygeoapi and Django integration can be visualized as follows: - -> HTTP request <--> Django (`pygeoapi/django_app.py`) <--> pygeoapi API (`pygeoapi/api.py`) - -This directory contains a [sample Django project](https://djangoproject.com) demonstrating how to -integrate pygeoapi into your Django application. - -In this document we create a sample Django project and use pygeoapi as a pluggable, embedded application. - -## Integration pygeoapi with a Django project - -To create your Django application from scratch follow these steps: - -```bash - -# create a project directory and create a fresh virtual environment -python3 -m venv env -cd env -source bin/activate - -# install dependencies -pip install Django pygeoapi - -# create a Django project -django-admin startproject sampleproject -cd sampleproject - -# set pygeoapi environment variables -export PYGEOAPI_CONFIG=`pwd`/pygeoapi-config.yml -export PYGEOAPI_OPENAPI=`pwd`/example-openapi.yml - -# Django: collect all static assets/files -python3 manage.py collectstatic - -# generate OpenAPI document -pygeoapi openapi generate $PYGEOAPI_CONFIG --output-file $PYGEOAPI_OPENAPI -``` - -Update `settings.py`: - -```python - -import os -from pygeoapi.django_app import config - -INSTALLED_APPS = [ - # other apps - .... - #pygeoapi app - 'pygeoapi' -] - -# Put following setting after STATIC_URL -STATIC_ROOT = os.path.join( BASE_DIR / 'assets') - -# Specific pygeoapi setting -PYGEOAPI_CONFIG = config() - ... -``` - -Update `urls.py` to run pygeoapi at e.g. `oapi` path - -```python - -from django.contrib import admin -from django.urls import path, include -from pygeoapi.django_pygeoapi import urls -urlpatterns = [ - path('admin/', admin.site.urls), - path('oapi/', include(urls)) # added here -] -``` - -Update `pygeoapi-config.yml` as follows: - -- set the `server.url` property according to your Django application URL (e.g. in this case the path set is `oapi`) -- set all data paths (e.g. `tests/data/ne_110m_lakes.geojson`) to match with the absolute path of the project directory - -Finally, run your Django project: - -```bash -python3 manage.py runserver`. Once server starts, head over to `localhost:8000/oapi` to see `pygeoapi` running. -``` - -At this point you can go your Django / pygeoapi project at `http://localhost:8000/oapi` diff --git a/examples/django/sample_project/manage.py b/examples/django/sample_project/manage.py deleted file mode 100755 index 6af9e26..0000000 --- a/examples/django/sample_project/manage.py +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env python -"""Django's command-line utility for administrative tasks.""" -import os -import sys - - -def main(): - """Run administrative tasks.""" - os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'sample_project.settings') - try: - from django.core.management import execute_from_command_line - except ImportError as exc: - raise ImportError( - "Couldn't import Django. Are you sure it's installed and " - "available on your PYTHONPATH environment variable? Did you " - "forget to activate a virtual environment?" - ) from exc - execute_from_command_line(sys.argv) - - -if __name__ == '__main__': - main() diff --git a/examples/django/sample_project/pygeoapi-config.yml b/examples/django/sample_project/pygeoapi-config.yml deleted file mode 100644 index bd4037c..0000000 --- a/examples/django/sample_project/pygeoapi-config.yml +++ /dev/null @@ -1,276 +0,0 @@ -# ================================================================= -# -# Authors: Tom Kralidis -# -# Copyright (c) 2020 Tom Kralidis -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -server: - bind: - host: 0.0.0.0 - port: 8000 - url: http://localhost:8000/sample-project - mimetype: application/json; charset=UTF-8 - encoding: utf-8 - gzip: false - languages: - # First language is the default language - - en-US - - fr-CA - # cors: true - pretty_print: true - limit: 10 - # templates: - # path: /path/to/Jinja2/templates - # static: /path/to/static/folder # css/js/img - map: - url: https://tile.openstreetmap.org/{z}/{x}/{y}.png - attribution: '© OpenStreetMap contributors' -# manager: -# name: TinyDB -# connection: /tmp/pygeoapi-process-manager.db -# output_dir: /tmp/ - # ogc_schemas_location: /opt/schemas.opengis.net - -logging: - level: ERROR - #logfile: /tmp/pygeoapi.log - -metadata: - identification: - title: - en: pygeoapi default instance - fr: instance par défaut de pygeoapi - description: - en: pygeoapi provides an API to geospatial data - fr: pygeoapi fournit une API aux données géospatiales - keywords: - en: - - geospatial - - data - - api - fr: - - géospatiale - - données - - api - keywords_type: theme - terms_of_service: https://creativecommons.org/licenses/by/4.0/ - url: https://example.org - license: - name: CC-BY 4.0 license - url: https://creativecommons.org/licenses/by/4.0/ - provider: - name: Organization Name - url: https://pygeoapi.io - contact: - name: Lastname, Firstname - position: Position Title - address: Mailing Address - city: City - stateorprovince: Administrative Area - postalcode: Zip or Postal Code - country: Country - phone: +xx-xxx-xxx-xxxx - fax: +xx-xxx-xxx-xxxx - email: you@example.org - url: Contact URL - hours: Mo-Fr 08:00-17:00 - instructions: During hours of service. Off on weekends. - role: pointOfContact - -resources: - obs: - type: collection - title: Observations - description: My cool observations - keywords: - - observations - - monitoring - linked-data: - context: - - datetime: https://schema.org/DateTime - - vocab: https://example.com/vocab# - stn_id: "vocab:stn_id" - value: "vocab:value" - links: - - type: text/csv - rel: canonical - title: data - href: https://github.com/mapserver/mapserver/blob/branch-7-0/msautotest/wxs/data/obs.csv - hreflang: en-US - - type: text/csv - rel: alternate - title: data - href: https://raw.githubusercontent.com/mapserver/mapserver/branch-7-0/msautotest/wxs/data/obs.csv - hreflang: en-US - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: 2000-10-30T18:24:39Z - end: 2007-10-30T08:57:29Z - providers: - - type: feature - name: CSV - data: tests/data/obs.csv - id_field: id - geometry: - x_field: long - y_field: lat - - lakes: - type: collection - title: - en: Large Lakes - fr: Grands Lacs - description: - en: lakes of the world, public domain - fr: lacs du monde, domaine public - keywords: - en: - - lakes - - water bodies - fr: - - lacs - - plans d'eau - links: - - type: text/html - rel: canonical - title: information - href: http://www.naturalearthdata.com/ - hreflang: en-US - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - temporal: - begin: 2011-11-11T11:11:11Z - end: null # or empty (either means open ended) - providers: - - type: feature - name: GeoJSON - data: tests/data/ne_110m_lakes.geojson - id_field: id - title_field: name - - gdps-temperature: - type: collection - title: Global Deterministic Prediction System sample - description: Global Deterministic Prediction System sample - keywords: - - gdps - - global - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - links: - - type: text/html - rel: canonical - title: information - href: https://eccc-msc.github.io/open-data/msc-data/nwp_gdps/readme_gdps_en - hreflang: en-CA - providers: - - type: coverage - name: rasterio - data: tests/data/CMC_glb_TMP_TGL_2_latlon.15x.15_2020081000_P000.grib2 - options: - DATA_ENCODING: COMPLEX_PACKING - format: - name: GRIB - mimetype: application/x-grib2 - - test-data: - type: stac-collection - title: pygeoapi test data - description: pygeoapi test data - keywords: - - poi - - portugal - links: - - type: text/html - rel: canonical - title: information - href: https://github.com/geopython/pygeoapi/tree/master/tests/data - hreflang: en-US - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - providers: - - type: stac - name: FileSystem - data: tests/data - file_types: - - .gpkg - - .sqlite - - .csv - - .grib2 - - .tif - - .shp - - canada-metadata: - type: collection - title: - en: Open Canada sample data - fr: Exemple de donn\u00e9es Canada Ouvert - description: - en: Sample metadata records from open.canada.ca - fr: Exemples d'enregistrements de m\u00e9tadonn\u00e9es sur ouvert.canada.ca - keywords: - en: - - canada - - open data - fr: - - canada - - donn\u00e9es ouvertes - links: - - type: text/html - rel: canonical - title: information - href: https://open.canada.ca/en/open-data - hreflang: en-CA - - type: text/html - rel: alternate - title: informations - href: https://ouvert.canada.ca/fr/donnees-ouvertes - hreflang: fr-CA - extents: - spatial: - bbox: [-180,-90,180,90] - crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - providers: - - type: record - name: TinyDBCatalogue - data: tests/data/open.canada.ca/sample-records.tinydb - id_field: externalId - time_field: created - title_field: title - - hello-world: - type: process - processor: - name: HelloWorld diff --git a/examples/django/sample_project/sample_project/__init__.py b/examples/django/sample_project/sample_project/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/examples/django/sample_project/sample_project/asgi.py b/examples/django/sample_project/sample_project/asgi.py deleted file mode 100644 index 8b03eb3..0000000 --- a/examples/django/sample_project/sample_project/asgi.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -ASGI config for sample_project project. - -It exposes the ASGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/3.2/howto/deployment/asgi/ -""" - -import os - -from django.core.asgi import get_asgi_application - -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'sample_project.settings') - -application = get_asgi_application() diff --git a/examples/django/sample_project/sample_project/settings.py b/examples/django/sample_project/sample_project/settings.py deleted file mode 100644 index f12c215..0000000 --- a/examples/django/sample_project/sample_project/settings.py +++ /dev/null @@ -1,129 +0,0 @@ -""" -Django settings for sample_project project. - -Generated by 'django-admin startproject' using Django 3.2.12. - -For more information on this file, see -https://docs.djangoproject.com/en/3.2/topics/settings/ - -For the full list of settings and their values, see -https://docs.djangoproject.com/en/3.2/ref/settings/ -""" - -from pathlib import Path -from pygeoapi.django_app import config - -# Build paths inside the project like this: BASE_DIR / 'subdir'. -BASE_DIR = Path(__file__).resolve().parent.parent - - -# Quick-start development settings - unsuitable for production -# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/ - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'django-insecure-um1sc7k4ovzdhp2r3kwz#%ta-l+kn$grk&9#7_(a0f)q$6u_ra' # noqa - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True - -ALLOWED_HOSTS = ["localhost", "127.0.0.1"] - - -# Application definition - -INSTALLED_APPS = [ - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.messages', - 'django.contrib.staticfiles', -] - -MIDDLEWARE = [ - 'django.middleware.security.SecurityMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', -] - -ROOT_URLCONF = 'sample_project.urls' - -TEMPLATES = [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [], - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.template.context_processors.debug', - 'django.template.context_processors.request', - 'django.contrib.auth.context_processors.auth', - 'django.contrib.messages.context_processors.messages', - ], - }, - }, -] - -WSGI_APPLICATION = 'sample_project.wsgi.application' - - -# Database -# https://docs.djangoproject.com/en/3.2/ref/settings/#databases - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': BASE_DIR / 'db.sqlite3', - } -} - - -# Password validation -# https://docs.djangoproject.com/en/3.2/ref/settings/#auth-password-validators - -AUTH_PASSWORD_VALIDATORS = [ - { - 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', # noqa - }, - { - 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', # noqa - }, - { - 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', # noqa - }, - { - 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', # noqa - }, -] - - -# Internationalization -# https://docs.djangoproject.com/en/3.2/topics/i18n/ - -LANGUAGE_CODE = 'en-us' - -TIME_ZONE = 'UTC' - -USE_I18N = True - -USE_L10N = True - -USE_TZ = True - - -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/3.2/howto/static-files/ - -STATIC_URL = '/static/' - -# Default primary key field type -# https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field - -DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' - -# pygeoapi -PYGEOAPI_CONFIG = config() diff --git a/examples/django/sample_project/sample_project/urls.py b/examples/django/sample_project/sample_project/urls.py deleted file mode 100644 index a890da5..0000000 --- a/examples/django/sample_project/sample_project/urls.py +++ /dev/null @@ -1,24 +0,0 @@ -"""sample_project URL Configuration - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/3.2/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: path('', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') -Including another URLconf - 1. Import the include() function: from django.urls import include, path - 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) -""" -from django.contrib import admin -from django.urls import path, include - -from pygeoapi.django_pygeoapi import urls as pygeoapi_urls - -urlpatterns = [ - path('admin/', admin.site.urls), - path('sample-project/', include(pygeoapi_urls)), -] diff --git a/examples/django/sample_project/sample_project/wsgi.py b/examples/django/sample_project/sample_project/wsgi.py deleted file mode 100644 index 97a1db8..0000000 --- a/examples/django/sample_project/sample_project/wsgi.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -WSGI config for sample_project project. - -It exposes the WSGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/3.2/howto/deployment/wsgi/ -""" - -import os - -from django.core.wsgi import get_wsgi_application - -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'sample_project.settings') - -application = get_wsgi_application()