Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Require PROJJSON instead of WKT2:2019 #97

Closed

Conversation

brendan-ward
Copy link
Contributor

Resolves #95 based on associated discussions in #90 and #52.

Supersedes #94 by incorporating a modification of that text here.

Supersedes #96 by requiring crs instead of allowing it to be optional, with associated text changes to express this. PROJJSON for OGC:CRS84 and rules for inferring it are equivalent to #96.

This includes a minor formatting change of the table including crs but only the crs row changed content and position within the table.

@brendan-ward brendan-ward marked this pull request as ready for review May 12, 2022 16:13
[OGC Topic 2: Referencing by coordinates abstract specification / ISO-19111:2019](http://docs.opengeospatial.org/as/18-005r4/18-005r4.html).
Apart from the difference of encodings, the semantics is intended to be exactly
the same as WKT2:2019, and PROJJSON can be morphed losslessly from/into
WKT2:2019.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like PROJJSON mentions a few deviations from WKT2:2019. Maybe "exactly" and "losslessly" are too strong here.

How about "Apart from the difference of encodings, the semantics of PROJJSON are intended to match WKT2:2019, and a CRS in one encoding can generally be represented in the other"?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Regarding this, it could be wise, for greater interoperability, to discourage the use of BoundCRS objects, softly for top-level (as this maps to standard WKT2), and strongly for BoundCRS embedded in CompoundCRS (as this is a PROJ extension), for the PROJJSON CRS of GeoParquet.
BoundCRS objects are mostly the port of PROJ.4 +nadgrids/+towgs84/+geoidgrids constructs that are less necessary nowadays since PROJ can use its database to infer transformations between datums.
So the list of top-level objects suggested for use in PROJJSON would be:

  • GeographicCRS 2D (or 3D if 3D data),
  • ProjectedCRS 2D (note: ProjectedCRS 3D with ellipsoidal height is supported by PROJ, but still a bit of esoteric)
  • CompoundCRS with horizontal part being a GeographicCRS 2D or a ProjectedCRS 2D and vertical part being a VerticalCRS
  • and perhaps, GeodeticCRS with cartesian geocentric coordinate system (X,Y,Z) (probably of marginal use)

BBOX[-90,-180,90,180]],
ID["OGC","CRS84"]]
```
The CRS is likely equivalent to OGC:CRS84 for a GeoParquet file if the `id`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for putting this together. I have some thoughts on it, but seemed to be a bigger scope than just a line in a PR, getting into if we might be able to tweak projjson. See #98

brendan-ward added a commit to brendan-ward/geoparquet that referenced this pull request May 16, 2022
@cholmes cholmes added this to the 0.5 milestone May 17, 2022
@cholmes cholmes modified the milestones: 1.0.0-beta.1, 1.0.0-beta.2 Nov 21, 2022
@rouault
Copy link
Contributor

rouault commented Nov 23, 2022

Still seing this open/ I'm confused: I thought that PROJJSON was already part of GeoParquet v0.4 ! And existing GDAL versions (latest 3.5.x and 3.6.0) that write GeoParquet v0.4 do write PROJJSON !
I believe this should be prioriterized to the next release. Or I'll have to downgrade the OGR GeoParquet driver to write WKT2.

@brendan-ward
Copy link
Contributor Author

@rouault sorry, my mistake for not closing this. It was superseded by #96, which did indeed bring in PROJJSON support. The distinction here was about whether or not crs is required and set explicitly to null when CRS is not known. I think this came out of an earlier meeting where folks wanted to see both options.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Use projjson instead of wkt2
4 participants