Skip to content

GTIFF file_metadata: support values of other types in addition to strings #1142

@bossie

Description

@bossie

The non-string arguments in the file_metadata format option in this save_result node makes the process graph fail:

{
      "arguments": {
        "data": {
          "from_node": "resamplespatial1"
        },
        "format": "GTiff",
        "options": {
          "attach_gdalinfo_assets": true,
          "file_metadata": {
            "date_processed": "2025-04-11",
            "epsg": 32755,
            "grid_zone": "55G",
            "resolution": "600m",
            "source": "LCFM_LSF-ANNUAL-S1_v100",
            "year": 2020
          },
          "filename_prefix": "S1_annual_obs_55G_2020_600m",
          "separate_asset_per_band": true,
          "tile_size": 256
        }
      },
      "process_id": "save_result",
      "result": true
    }
Traceback (most recent call last):
  File "/opt/openeo/lib/python3.8/site-packages/openeogeotrellis/deploy/batch_job.py", line 793, in start_main
    main(sys.argv)
  File "/opt/openeo/lib/python3.8/site-packages/openeogeotrellis/deploy/batch_job.py", line 246, in main
    run_driver()
  File "/opt/openeo/lib/python3.8/site-packages/openeogeotrellis/deploy/batch_job.py", line 207, in run_driver
    run_job(
  File "/opt/openeo/lib/python3.8/site-packages/openeogeotrellis/utils.py", line 64, in memory_logging_wrapper
    return function(*args, **kwargs)
  File "/opt/openeo/lib/python3.8/site-packages/openeogeotrellis/deploy/batch_job.py", line 395, in run_job
    assets_metadata = list(map(result_write_assets, results))
  File "/opt/openeo/lib/python3.8/site-packages/openeogeotrellis/deploy/batch_job.py", line 391, in result_write_assets
    return result_arg.write_assets(str(output_file))
  File "/opt/openeo/lib/python3.8/site-packages/openeo_driver/save_result.py", line 170, in write_assets
    return self.cube.write_assets(filename=directory, format=self.format, format_options=self.options)
  File "/opt/openeo/lib/python3.8/site-packages/openeogeotrellis/geopysparkdatacube.py", line 1967, in write_assets
    gtiff_options.addHeadTag(file_metadata_key, file_metadata_value)
  File "/usr/local/spark/python/lib/py4j-0.10.9.7-src.zip/py4j/java_gateway.py", line 1322, in __call__
    return_value = get_return_value(
  File "/usr/local/spark/python/lib/py4j-0.10.9.7-src.zip/py4j/protocol.py", line 330, in get_return_value
    raise Py4JError(
py4j.protocol.Py4JError: An error occurred while calling o2858.addHeadTag. Trace:
py4j.Py4JException: Method addHeadTag([class java.lang.String, class java.lang.Integer]) does not exist
	at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:321)
	at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:329)
	at py4j.Gateway.invoke(Gateway.java:274)
	at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
	at py4j.commands.CallCommand.execute(CallCommand.java:79)
	at py4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)
	at py4j.ClientServerConnection.run(ClientServerConnection.java:106)
	at java.base/java.lang.Thread.run(Thread.java:829)

This in contrast with bands_metadata.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions