Documentation menu

Cyclomedia import

Imports Cyclomedia panorama deliveries, driven by Cyclomedia's own DataPackage.xml rather than by a CSV.

Two things are unusual about it: it is configured explicitly rather than by folder scanning, and it reprojects coordinates from the SRID declared in the package.

Configuration#

The folders are not discovered — they are named explicitly when the run is started:

VariableMeaningExample
CYCLOMEDIA_XML_PATHSComma-separated XML pathsNL-BVLD-230901.DataPackage.xml,NL-BVLD-230906.DataPackage.xml
CYCLOMEDIA_JPG_DIRECTORIESComma-separated image folders, paired positionally with the XML listnl-bvld-230901,nl-bvld-230906

The two lists must be the same length and are matched by position — the first XML goes with the first directory. A mismatch stops the run immediately.

If you are delivering data rather than running the import, what this means for you is simply: give your Georizon contact the XML filenames and the matching image folder names.

Folder layout#

<dataset bucket>/
├── NL-BVLD-230901.DataPackage.xml     named by CYCLOMEDIA_XML_PATHS
└── nl-bvld-230901/                    named by CYCLOMEDIA_JPG_DIRECTORIES
    ├── 001234/                        first 6 characters of the ImageId
    │   └── 001234ab.jpg
    └── 005678/
        └── 005678cd.jpg

Exactly one level of subfolder is expected under the image directory, and its name is the first six characters of the ImageId — Cyclomedia's own bucketing scheme. Each such subfolder becomes one set.

Images are .jpg.

The DataPackage XML#

Namespace http://www.cyclomedia.com/. One <Recording> per photo:

ElementRequiredMeaning
ImageIdyesPhoto name; the file is <ImageId>.jpg
RecordedAt/DateTimeyesCapture time
SRIDyesCoordinate system of this recording — see below
LongitudeyesX when the SRID is projected
LatitudeyesY when the SRID is projected
HeightnoDefaults to 2 when absent or xsi:nil
OrientationnoHeading; defaults to 0 when absent or xsi:nil

xsi:nil="true" is handled explicitly for Height and Orientation, so an empty element is a default rather than an error.

Tilt and roll are always recorded as zero — the format carries no values for them.

Coordinate reference system#

This template reprojects. Four source SRIDs are supported; anything else stops the run.

Source SRIDHandling
28992 (RD New)Used as-is
7415 (RD New + NAP)Used as-is
31370 (Belgian Lambert 72)Transformed to the dataset's CRS
4258 (ETRS89)Promoted to 4937 (3D) so height converts correctly, then transformed

One transformer is built per package, so a single delivery is assumed to use a single source SRID throughout.

Ingest parameters#

KeyRequiredDefault
height_above_groundno2.06

Photos are recorded as already anonymised, and are not queued for blurring.

Tolerance#

A <Recording> whose JPG is not present is skipped with a warning and the run continues. That is more forgiving than most templates here — but it also means a wholesale path mismatch produces a run that "succeeds" with almost nothing indexed. Check the indexed count against the recording count.

Common failures#

SymptomCause
"Number of XML paths and JPG directories must be the same"The two configured lists have different lengths
"SRID … not supported, quitting"The package uses a source CRS outside the four supported ones
Run succeeds but almost nothing indexedThe image folder name or the six-character subfolder layout doesn't match what the XML implies
Everything at height 2 mThe XML has no Height values, so the default was used throughout