Initialization

In order to set up an instance of the View Server (VS), the separate pvs_starter utility is recommended.

Running the Initialization

The pvs_starter utility is distributed as a Python package and easily installed via pip.

pip3 install pvs_starter git+git@gitlab.eox.at:esa/prism/pvs_starter.git

Now a new VS instance can be set up like this:

python3 -m pvs_starter.cli config.yaml out/ -f

This takes the initialization configuration config.yaml to generate the required structure of a new VS instance in the out/ directory.

Configuration of the Initialization

The important part of the initialization is the configuration. The file is structured in YAML as detailed below. It contains the following sections:

database

Here, access details and credentials of the database are stored. It defines the internal database name, user, and password that will be created when the stack is deployed. Note that there is no host setting, as this will be handled automatically within the Docker Swarm.

database:
  name: vs_db
  user: vs_user
  password: Go-J_eOUvj2k

django_admin

This section deals with the setup of a Django admin account. This is used to later access the admin panel to inspect the registered data.

django_admin:
  user: admin
  mail: office@eox.at
  password: jvLwv_20x-69

preprocessor

Here, the preprocessing can be configured in detail.

products

This section defines product_type related information. The two most important settings here are the type_extractor and level_extractor structures which specify how the product type and product level should be extracted from the metadata. For this, an XPath (or multiple) can be specified to retrieve that information.

The types section defines the available product_types and which browse and mask types are to be generated.

products:
  type_extractor:
    xpath:
    namespace_map:
  level_extractor:
    xpath:
    namespace_map:
  types:
    PL00:
      default_browse: TRUE_COLOR
      browses:
        TRUE_COLOR:
          red:
            expression: red
            range: [1000, 15000]
            nodata: 0
          green:
            expression: green
            range: [1000, 15000]
            nodata: 0
          blue:
            expression: blue
            range: [1000, 15000]
            nodata: 0
        FALSE_COLOR:
          red:
            expression: nir
            range: [1000, 15000]
            nodata: 0
          green:
            expression: red
            range: [1000, 15000]
            nodata: 0
          blue:
            expression: green
            range: [1000, 15000]
            nodata: 0
        NDVI:
          grey:
            expression: (nir-red)/(nir+red)
            range: [-1, 1]
      masks:
        validity:
          validity: true

collections

In the collections section, the collections are set up and it is defined which products based on product_type and product_level will be inserted into them. The product_types must list types defined in the products section.

collections:
  COLLECTION:
    product_types:
      - PL00
    product_levels:
      - Level_1
      - Level_3

storages

Here, the three relevant storages can be configured: the source, preprocessed, and cache storages.

The source storage defines the location from which the original files will be downloaded to be preprocessed. Preprocessed images and metadata will then be uploaded to the preprocessed storage. The cache service will cache images on the cache storage.

Each storage definition uses the same structure and can target various types of storages, such as OpenStack swift.

These storage definitions will be used in the appropriate sections.

storages:
  source:
    auth_type: keystone
    auth_url:
    version: 3
    username:
    password:
    tenant_name:
    tenant_id:
    region_name:
    container:
  preprocessed:
    auth_type: keystone
    auth_url:
    version: 3
    username:
    password:
    tenant_name:
    tenant_id:
    region_name:
    container:
  cache:
    type: swift
    auth_type: keystone
    auth_url: https://auth.cloud.ovh.net/v3/
    auth_url_short: https://auth.cloud.ovh.net/
    version: 3
    username:
    password:
    tenant_name:
    tenant_id:
    region_name:
    container:

cache

This section defines the exposed services, and how the layers shall be cached internally.

cache:
  metadata:
    title: PRISM Data Access Service (PASS) developed by EOX
    abstract: PRISM Data Access Service (PASS) developed by EOX
    url: https://vhr18.pvs.prism.eox.at/cache/ows
    keyword: view service
    accessconstraints: UNKNOWN
    fees: UNKNOWN
    contactname: Stephan Meissl
    contactphone: Please contact via mail.
    contactfacsimile: None
    contactorganization: EOX IT Services GmbH
    contactcity: Vienna
    contactstateorprovince: Vienna
    contactpostcode: 1090
    contactcountry: Austria
    contactelectronicmailaddress: office@eox.at
    contactposition: CTO
    providername: EOX
    providerurl: https://eox.at
    inspire_profile: true
    inspire_metadataurl: TBD
    defaultlanguage: eng
    language: eng
  services:
    wms:
      enabled: true
    wmts:
      enabled: true
  connection_timeout: 10
  timeout: 120
  expires: 3600
  key: /{tileset}/{grid}/{dim}/{z}/{x}/{y}.{ext}
  tilesets:
    VHR_IMAGE_2018__TRUE_COLOR:
      title: VHR Image 2018 True Color
      abstract: VHR Image 2018 True Color
    VHR_IMAGE_2018__FALSE_COLOR:
      title: VHR Image 2018 False Color
      abstract: VHR Image 2018 False Color
    VHR_IMAGE_2018__NDVI:
      title: VHR Image 2018 NDVI
      abstract: VHR Image 2018 NDVI
      style: earth
    VHR_IMAGE_2018_Level_1__TRUE_COLOR:
      title: VHR Image 2018 Level 1 True Color
      abstract: VHR Image 2018 Level 1 True Color
    VHR_IMAGE_2018_Level_1__FALSE_COLOR:
      title: VHR Image 2018 Level 1 False Color
      abstract: VHR Image 2018 Level 1 False Color
    VHR_IMAGE_2018_Level_1__NDVI:
      title: VHR Image 2018 Level 1 NDVI
      abstract: VHR Image 2018 Level 1 NDVI
      style: earth
    VHR_IMAGE_2018_Level_1__TRUE_COLOR:
      title: VHR Image 2018 Level 3 True Color
      abstract: VHR Image 2018 Level 3 True Color
    VHR_IMAGE_2018_Level_1__FALSE_COLOR:
      title: VHR Image 2018 Level 3 False Color
      abstract: VHR Image 2018 Level 3 False Color
    VHR_IMAGE_2018_Level_1__NDVI:
      title: VHR Image 2018 Level 3 NDVI
      abstract: VHR Image 2018 Level 3 NDVI
      style: earth

Once the initialization is finished the next step is to deploy the Docker Swarm stack as described in the section Setup.