Shape Document

Purpose

Basic shapes (points, lines, polygons) used for annotations, measurements, or simple overlays distinct from full Vector datasets.

GeoJSON (DB metadata)

{
  "type": "Feature",
  "geometry": {"type": "LineString", "coordinates": [[30.1, 59.9], [30.2, 59.95]]},
  "properties": {
    "type": "Shape",
    "title": "Measurement Line",
    "created_at": "2025-01-10T08:00:00Z",
    "updated_at": "2025-01-10T08:00:00Z",
    "source": {
      "url": "/s3/$FILE_PATH",
      "type": "GeoJSON"
    },
    "style": {"stroke": "#00ccff", "stroke_width": 3}
  }
}

Required properties

  • properties.type = Shape

  • Geometry is a simple shape (Point/LineString/Polygon)

  • Style suitable for annotation overlay

Publishing workflow

  1. Create the shape geometry and optional style.

  2. If stored externally, upload GeoJSON and link via properties.source.url.

  3. Publish Feature with type Shape.

Validation checklist

  • Geometry is valid and renders clearly at target zoom levels.

  • Style contrasts the background.

See Common properties for shared fields like legend, metadata, and classification.

TimeSeries variant (properties.kind = “TimeSeries”)

Some Shape documents carry time series data, indicated by properties.kind = "TimeSeries" and a bands block that provides per-band descriptors and links to the data JSON.

Example:

{
  "type": "Feature",
  "geometry": {"type": "Polygon", "coordinates": [[[4.885619, 52.362736], [4.873003, 52.370607], [4.882328, 52.382996], [4.921341, 52.426765], [4.885619, 52.362736]]]},
  "properties": {
    "type": "Shape",
    "kind": "TimeSeries",
    "roles": ["public_read"],
    "Bucket": "staging",
    "source": {
      "url": "/s3/<bucket>/<ResultKey>/<filename>", 
      "type": "GeoJSON"
    },
    "version": 2,
    "Endpoint": "http://rook-ceph-rgw-geo.rook-ceph.svc:80",
    "ResultKey": "test/orvi/test_orvi_timeseries_v3/time-series",
    "friendly_name": "test/ts",
    "bands": {
      "band_ids": ["amsterdam_centar", "amsterdam_field"],
      "band_meta": [
        {
          "band": 1,
          "bbox": [4.873003, 52.362736, 4.907834, 52.382996],
          "data": {
            "url": "/s3/<bucket>/<ResultKey>/<filename>",
            "bounds": [4.873003, 52.362736, 4.907834, 52.382996],
            "data_kind": "rvi",
            "data_type": "gauge",
            "url_params": {"band": "amsterdam_centar"}
          },
          "name": "amsterdam_centar",
          "color": "#7dff7a"
        }
      ]
    },
    "classification": {"ocli": [7, 8], "metadata_preset": [17]}
  }
}

See Common properties for shared fields like legend, metadata, and classification. See also: GeoJSON Strategy and Upload Strategy.