OGC TestBed-19

Last updated: February 2th, 2024

The OGC TestBed-19 proposes extensions to existing geospatial standards for handling data in space. At the most fundamental level, a few changes were proposed for the ISO 19111 standard. Those changes are then propagated to the OGC GeoAPI interfaces, the Apache SIS implementation, and the GeoTIFF tags. Since the TestBed is experimental, those changes were applied in branches. Links are given below, and their content may change at any time if future TestBeds continue this work or if some proposals are integrated in standards.

For testing, unzip the "apache-sis-2.0-SNAPSHOT.zip" file in any directory. The instructions on the Apache SIS web site can be applied, with only the ZIP filename changed. Then copy the TestBed-19 experiment data nearby. Those data are an image of Didymos asteroid and its Dimorphos moonlet seen by the DART before the impact, together with auxiliary files for referencing and metadata.

Coordinate Reference System in GeoTIFF

The encoding experiment can be done by running the following commands in a Java shell (jshell). Texts in green and blue are commands to enter in command-line and JShell respectively, and texts in black are outputs. The paths to the Apache SIS directory and to the DART data directory may need to be adapted.

./apache-sis-2.0-SNAPSHOT/bin/sis_shell
|  Welcome to JShell -- Version 21
|  For an introduction type: /help intro

SIS.TRANSLATE.metadata("*.xml").output("data/DART_camera.tiff").run("data/DART_camera.png")
command> sis translate --metadata "*.xml" --output "data/DART_camera.tiff" "data/DART_camera.png"

SIS.CRS.run("data/DART_camera.tiff")
command> sis crs "data/DART_camera.tiff"
EngineeringCRS["DART spacecraft spherical CRS",
  EngineeringDatum["DART center of mass"],
  CS[spherical, 2],
    Axis["Relative bearing (V)", CLOCKWISE],
    Axis["Altitude (α)", up],
    Unit["arc-second", 4.84813681109536E-6]]

Coordinate transformations using GML descriptions

The Coordinate Reference System (CRS) encoded in GeoTIFF does not specify how this CRS is related to the Earth or other bodies. This relationship is specified in separated files, using Geographic Markup Language (GML) in the Testbed 19 experiment. The rest of this page shows how such a chain of operations can be concatenated with information encoded in the GeoTIFF file. The result is a chain of operations from a CRS in space to pixel coordinates in the GeoTIFF image. This demonstration transforms the points listed in a CSV file. Coordinates are expressed in above DART Engineering CRS extended to a four-dimensional space. That four-dimensional CRS is described in a GML file and can be seen with the following command in the JShell environment:

SIS.CRS.run("file:data/coordinate-transformations/OperationChain.xml#DART")
command> sis crs "file:data/coordinate-transformations/OperationChain.xml#DART"
CompoundCRS["DART CRS + time",
  EngineeringCRS["DART spacecraft spherical CRS",
    EngineeringDatum["DART center of mass"],
    CS[spherical, 3],
      Axis["Relative bearing (V)", CLOCKWISE, Unit["arc-second", 4.84813681109536E-6]],
      Axis["Altitude (α)", up, Unit["arc-second", 4.84813681109536E-6]],
      Axis["Distance (D)", AWAY_FROM, Unit["kilometre", 1000]],
    Id["JPL", -135, Citation["JPL:HORIZONS"]]],
  TimeCRS["Truncated Julian days",
    TimeDatum["Truncated Julian epoch", TimeOrigin[1968-05-24]],
    CS[temporal, 1],
      Axis["Time (t)", future],
      TimeUnit["day", 86400],
    Id["TB19-D001", "TimeCRS"]],
  Scope["Testbed 19 demonstration."],
  Id["TB19-D001", "DART"]]

/exit

Points in the CSV file can be transformed with the following command in the JShell environment. See the Testbed 19 engineering report for more explanation about the content of the GML files that are read by this demo.

SIS.TRANSFORM.inverse().operation("data/coordinate-transformations/OperationChain.xml").run("data/PointOfInterests.csv")
command> sis transform --inverse --operation "data/coordinate-transformations/OperationChain.xml" "data/PointOfInterests.csv"
# Source :     DART CRS + time (TB19-D001:DART)
# Target :     Dimorphos CRS + time (TB19-D001:DimorphosCRS)
# Operations : Dimorphos to DART (TB19-D001:DimorphosToDART)
# Domain  :    Unknown

         X (km),         Y (km),         Z (km),       Time (d)
   32368.631542, -111486.252095,  -52616.071373,   19851.666667
 -316291.614923,  332683.160016,  125381.007799,   19848.000000

/exit

The execution of a chain of operations up to pixel coordinates in above GeoTIFF image is performed by the org.opengis.testbed.T19D001.Demo Java file in the GitHub repository As of January 2024, this demo requires a local build of Apache SIS from the above-cited sources. This is because the features experimented in Testbed 19 are not yet integrated in OGC standards.