You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iceberg.apache.org by et...@apache.org on 2026/05/18 12:14:01 UTC
(iceberg) branch main updated: Spec: Clarify non-default CRS conventions (#15834)
This is an automated email from the ASF dual-hosted git repository.
nastra pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iceberg.git
The following commit(s) were added to refs/heads/main by this push:
new e617d34dfe Spec: Clarify non-default CRS conventions (#15834)
e617d34dfe is described below
commit e617d34dfe948d05998414563f04c49a05e56c24
Author: Milan Stefanovic <15...@users.noreply.github.com>
AuthorDate: Mon May 18 14:13:54 2026 +0200
Spec: Clarify non-default CRS conventions (#15834)
---
format/spec.md | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/format/spec.md b/format/spec.md
index 94651da0fa..053977662a 100644
--- a/format/spec.md
+++ b/format/spec.md
@@ -242,10 +242,12 @@ For `geometry` type, the CRS does not affect geometric calculations, which are a
The default CRS value `OGC:CRS84` means that the objects must be stored in longitude, latitude based on the WGS84 datum.
-Custom CRS values can be specified by a string of the format `type:identifier`, where `type` is one of the following values:
+Non-default CRS values are specified by any string that uniquely identifies a coordinate reference system associated with this type.
+To maximize interoperability, suggested formats for CRS include, but are not limited to:
+* `<context>:<identifier>`: Identifies a CRS by name or other identifier in some well-documented context. Examples: `OGC:CRS84`, `EPSG:4326`, `IGNF:ATI` and `SRID:0`
+* `projjson:<property-name>` - where <property-name> refers to a table property where CRS definition in [PROJJSON](https://proj.org/en/stable/specifications/projjson.html) format is stored.
-* `srid`: [Spatial reference identifier](https://en.wikipedia.org/wiki/Spatial_reference_system#Identifier), `identifier` is the SRID itself.
-* `projjson`: [PROJJSON](https://proj.org/en/stable/specifications/projjson.html), `identifier` is the name of a table property where the projjson string is stored.
+CRS value must not contain inlined PROJJSON definitions and implementations must not parse the contents of the CRS as PROJJSON. PROJJSON definitions are very verbose, hence inlining them as part of schema would cause significant performance degradation. If the intention is for a PROJJSON definition to be part of the table metadata, then it must be stored in a table property and referenced from the CRS field using the `projjson:<property-name>` form described above.
For `geography` types, the custom CRS must be geographic, with longitudes bound by [-180, 180] and latitudes bound by [-90, 90].