Skip to main content

Block development toolkit for UP42

Project description

Block development toolkit for UP42.

Documentation   •   UP42.com   •   Support

Highlights

  • Python package with utilities to build blocks in UP42.
  • For UP42 partners and customers interested in creating blocks!
  • Base classes for data and processing blocks.
  • Facilities to easily create tests, ensuring production ready blocks.

Overview

The UP42 blockutils package provides several modules with specific concerns:

  • Blocks: Base classes for data and processing blocks.
  • Common: Directory and query/parameter input handling.
  • Logging: Standard logging facility.
  • Data Path: Input and output file handling.
  • E2E: Utility class to create end-to-end tests.
  • Exceptions: Shared exceptions between blocks.
  • Format: Exotic file handling (DIMAP and NETCDF).
  • Raster: Raster handling methods.
  • Geometry: Generic recurrent geometry operations.
  • Windows: Raster windowed read and write helper, useful for large file handling.
  • STAC: Handling STAC type queries.
  • WMTS: Helper for downloading, processing and merging tiles.

See the full code reference here.

Docker image

In order to make development of blocks easier, we have made available a public blockutils base image that you can use in your Dockerfile. Check out the DockerHub page for the up42/up42-blockutils-py37 image.

Template repositories

For your convenience, we have created two template repositories hosted on GitHub that include this package and generic make utilities for building and pushing blocks:

Install

The package requires Python > 3.6.

pip install up42-blockutils

Quickstart

The example below shows a minimal processing block that takes a raster file and returns the raster values to the power of 2. In this example we make use of the logging, blocks, exceptions, datapath and windows modules.

from pathlib import Path
import rasterio as rio
from geojson import FeatureCollection, Feature
import blockutils

logger = blockutils.logging.get_logger(__name__)


class AProcessingBlock(blockutils.blocks.ProcessingBlock):
    def process(self, input_fc: FeatureCollection) -> FeatureCollection:
        output_fc = FeatureCollection([])

        if not input_fc.features:
            raise blockutils.exceptions.UP42Error(
                blockutils.exceptions.SupportedErrors.NO_INPUT_ERROR
            )

        for feat in input_fc["features"]:
            logger.info(f"Processing {feat}...")
            input_path = Path("/tmp/input/") / Path(blockutils.datapath.get_data_path(feat))
            with rio.open(input_path) as src:
                src_win = blockutils.windows.WindowsUtil(src)
                (
                    output_name,
                    output_path,
                ) = blockutils.datapath.get_output_filename_and_path(
                    input_path.name, postfix="processed"
                )
                dst_meta = src.meta.copy()
                with rio.open(output_path, "w", **dst_meta) as dst:
                    for win in src_win.windows_regular():
                        exp = src.read(window=win) ** 2
                        dst.write(exp, window=win)

                out_feat = Feature(bbox=feat.bbox, geometry=feat.geometry)
                out_feat["properties"] = self.get_metadata(feat)
                out_feat = blockutils.datapath.set_data_path(out_feat, output_name)
                logger.info(f"Processed {out_feat}...")
                output_fc.features.append(out_feat)
            return output_fc


AProcessingBlock().run()

Support

For any issues or help please contact us via Email support@up42.com.

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

up42-blockutils-1.2.4.tar.gz (2.3 MB view details)

Uploaded Source

Built Distribution

up42_blockutils-1.2.4-py3-none-any.whl (33.1 kB view details)

Uploaded Python 3

File details

Details for the file up42-blockutils-1.2.4.tar.gz.

File metadata

  • Download URL: up42-blockutils-1.2.4.tar.gz
  • Upload date:
  • Size: 2.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.8.11

File hashes

Hashes for up42-blockutils-1.2.4.tar.gz
Algorithm Hash digest
SHA256 1c7f0cdde27486e05b09ea58cbc94b87967d7979b631aaebfc3f01dcfeb34c75
MD5 f826dd81343b8a48df303948289f8eb9
BLAKE2b-256 d9ad574c90354b0a784bc3c90478180fe368c1487dee90da04b013733532935a

See more details on using hashes here.

File details

Details for the file up42_blockutils-1.2.4-py3-none-any.whl.

File metadata

File hashes

Hashes for up42_blockutils-1.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 4f06baffd564a2e083f2788b3f6f425c27b595764c6f06ddcdaafe213137a311
MD5 392681ecd4d4dcdde3daa671a1f38c68
BLAKE2b-256 de5be9aba06f3e654759f9ae3ce357bc7f97c8c7a779380e625e7268d9e690c8

See more details on using hashes here.

Supported by

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