Skip to main content

The flight-pipeline mechanism allows for uploading new flights to the STAC index using the ElasticSearch client. The flight-pipeline scripts push new records that are not currently in the index and can remove or archive pushed records on the local system.

Project description

flight-pipeline

Repository for python code to concatenate data sources and construct new flight records for CEDA flight-finder

Objectives:

  • Mechanism for uploading new flights to stac index
  • Use ES Client to determine array of ids that currently exists in the index
  • Push new records that are not currently in the index
  • Remove or archive pushed records on local system

Installation:

You can either install the PyPi package through pip or clone the GitHub repository. The two options can be found below.

1. Install using pip

  • Run pip install ceda-flight-pipeline
  • Install requirements into a local virtual environment using Poetry:
    • poetry install
  • Configure dirconfig with relative paths

OR

2. Install by cloning GitHub repository

  • Clone the repository from github by running git clone https://github.com/cedadev/flight-pipeline.git
  • Install requirements into a local virtual environment using Poetry:
    • poetry install
  • Configure dirconfig with relative paths

Setting up environment variables

In order to run the flight-pipeline project, you will need the following variables in your environment.

CONFIG_FILE=/path/to/your/dir/config/dirconfig
STAC_TEMPLATE=/path/to/your/dir/config/stac_template.json
SETTINGS_FILE=/path/to/your/dir/config/settings.json

In bash you can run: export CONFIG_FILE=/path/to/your/dir/config/dirconfig

Running the program

1. Use stac_template to write new records

Follow the STAC template json file to create new flight records (more details further down)

2. Configure dirconfig file

Add on lines 2 and 4 the directory paths to where your new flights to push are stored, and where the pushed flights should go once they have been uploaded to the index (store them or write DELETE to remove them from the local system). Update line 6 with a directory path to a logfile.

3. Push New Flights

Run with command flight-pipeline flight-update with a filled in dirconfig file to push new records to the index.

Or run with command flight-pipeline flight-update --archive_path ../../ --flights_dir ../../ --add_mode y --update_mode n --update_id n

Update Existing Flights

Note: In case of repair or adjustment to existing records, the individual records can be updated in place.

Run with command python flight_update.py update <pyfile>, where pyfile is a python file containing an update function that can be applied to each record in elasticsearch.

STAC Template

From the template, the following should be filled in:

  • id (fnum/pcode * date)
  • es_id (random string of ASCII characters to generate one of 9 colours in flight finder)
  • description_path
  • collection
  • geometry.display.coordinates
  • geometry.display.type (if coordinates are not MultiLineString)
  • properties:
    • data_format
    • start_datetime
    • end_datetime
    • flight_num (if applicable)
    • pcode (if applicable)
    • aircraft
    • variables
    • location
    • platform
    • instruments
    • pi

Geometries Development

Correct Version of mapping that exists in the arsf index

"spatial" : {
  "properties" : {
    "geometries" : {
      "properties" : {
        "display" : {
          "properties" : {
            "coordinates" : {
              "type" : "double",
              "index" : false
            },
            "type" : {
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "type" : "keyword",
                  "ignore_above" : 256
                }
              }
            }
          }
        },
        "full_search" : {
          "type" : "geo_shape"
        },
        "search" : {
          "type" : "geo_shape"
        }
      }
    }
  }

Incorrect version currently in stac-flightfinder-items

"geometry" : {
  "properties" : {
    "display" : {
      "properties" : {
        "coordinates" : {
          "type" : "float"
        },
        "type" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        }
      }
    },
    "geometries" : {
      "properties" : {
        "display" : {
          "properties" : {
            "coordinates" : {
              "type" : "float"
            },
            "type" : {
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "type" : "keyword",
                  "ignore_above" : 256
                }
              }
            }
          }
        },
        "search" : {
          "properties" : {
            "coordinates" : {
              "type" : "float"
            },
            "type" : {
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "type" : "keyword",
                  "ignore_above" : 256
                }
              }
            }
          }
        }
      }
    },
    "search" : {
      "properties" : {
        "coordinates" : {
          "type" : "float"
        },
        "type" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        }
      }
    }
  }
}

Ammendments:

  • Remove geometries subfield.
  • Remove all subfields of search and just add "type":"geo_shape".
  • Add full_search sub_field with "type":"geo_shape".

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ceda_flight_pipeline-1.1.3.tar.gz (29.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ceda_flight_pipeline-1.1.3-py3-none-any.whl (31.0 kB view details)

Uploaded Python 3

File details

Details for the file ceda_flight_pipeline-1.1.3.tar.gz.

File metadata

  • Download URL: ceda_flight_pipeline-1.1.3.tar.gz
  • Upload date:
  • Size: 29.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.9.21 Linux/5.14.0-503.21.1.el9_5.x86_64

File hashes

Hashes for ceda_flight_pipeline-1.1.3.tar.gz
Algorithm Hash digest
SHA256 9fb3c4bf513fee0a171f7e3ee925cef8d8a8b62990fa03126efc7a404556a43b
MD5 3bba30bb587439be24c941cdb5688ae3
BLAKE2b-256 000df9930cf5ba8244a896c0bb5c5d972b107cb62ed726a2efbfa6f743e3c098

See more details on using hashes here.

File details

Details for the file ceda_flight_pipeline-1.1.3-py3-none-any.whl.

File metadata

  • Download URL: ceda_flight_pipeline-1.1.3-py3-none-any.whl
  • Upload date:
  • Size: 31.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.9.21 Linux/5.14.0-503.21.1.el9_5.x86_64

File hashes

Hashes for ceda_flight_pipeline-1.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 381ab9be023c4a80659bc2404198e65dceb6ea8f871bc31adeb4c603d8a192ba
MD5 2ee577faef9962eaaddeb52f1a19d56f
BLAKE2b-256 c0de4ca2acdb9ffcb6b473f56d8f39c847e1eda9b109bea4cd2492d83e32d6d7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page