Skip to content

Aligning rioxarray GCPs with CF Conventions #865

@emmanuelmathot

Description

@emmanuelmathot

The Issue

rioxarray currently implements Ground Control Points (GCPs) using a custom GeoJSON approach, while CF conventions section 8.3 defines a standardized method for "coordinate subsampling" (tie points). This creates a potential alignment opportunity for better standards compliance and ecosystem interoperability.

Key Differences

rioxarray's approach: Stores discrete coordinate mappings as GeoJSON within CF-compliant grid mapping coordinates. Simple, lightweight, and pragmatic.

CF section 8.3: Defines interpolated coordinate fields using tie point variables with standardized algorithms. More complex but enables data compression and mathematical interpolation between points.

Why the Divergence?

rioxarray GCPs management was developed right before CF section 8.3 existed - it was only added in CF-1.9 after extensive community discussion. The GeoJSON solution was a reasonable choice given the standards gap at the time.

Alignment Benefits

  • Standards compliance: Full CF convention conformance
  • Ecosystem interoperability: Better integration with climate/geoscience tools
  • Future-proofing: Alignment with the emerging GeoZarr specification
  • Data compression: CF tie points can significantly reduce coordinate storage size

Implementation Challenges

  • Complexity: CF section 8.3 requires interpolation algorithms and extensive metadata
  • Performance: Coordinate interpolation adds computational overhead
  • Backwards compatibility: Must maintain existing GCP API during transition
  • Limited adoption: Few tools currently support CF coordinate subsampling

Questions

  • Is this alignment technically feasible?
  • Are there technical blockers not yet identified?
  • Could we prototype CF tie points support alongside existing methods?

Key Sources

cc @snowman2 @mraspaud

Metadata

Metadata

Assignees

No one assigned

    Labels

    proposalIdea for a new feature.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions