Skip to content

Edits on 0.2 release post #7

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

Open
wants to merge 2 commits into
base: news-0-2
Choose a base branch
from
Open

Conversation

kylebarron
Copy link
Member

No description provided.

Comment on lines +3 to +9
author:
- name: Dewey Dunnington
url: https://dewey.dunnington.ca/
- name: Kyle Barron
url: https://kylebarron.dev/
- name: Joris Van den Bossche
url: https://jorisvandenbossche.github.io/
Copy link
Member Author

Choose a reason for hiding this comment

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

I think it makes sense to put our names on the post. Happy to switch to email instead of URL but I think useful to be able to hyperlink something

[arrow-cpp]: https://arrow.apache.org/docs/cpp/index.html
[arrow-rs]: https://docs.rs/arrow/latest/arrow/

- A set of [memory layouts](../format.html) to represent geometry
Copy link
Member Author

Choose a reason for hiding this comment

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

I think the memory layouts are the first thing someone thinks about when someone thinks about GeoArrow and so it makes sense to order this bullet point first

Comment on lines +40 to +45
## Notable changes

In addition to some minor updates to improve clarity, GeoArrow 0.2 includes a few
notable changes.

First, the language defining the content of the `"crs"` key in the extension metadata
### New array types
Copy link
Member Author

Choose a reason for hiding this comment

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

I'm a big fan of using headers to easily grep the highlights rather than relying on paragraphs starting with first, second, third, etc.


The GeoArrow 0.2 specification formalizes three new array types:

- The ["box" memory layout](../format.html#box) represents an array of axis-aligned bounding boxes, represented as an Arrow struct.
Copy link
Member Author

Choose a reason for hiding this comment

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

Added hyperlinks to the relevant sections of the format page


- The ["box" memory layout](../format.html#box) represents an array of axis-aligned bounding boxes, represented as an Arrow struct.
- The ["geometry" memory layout](../format.html#geometry) allows arbitrary geometries to be
represented within a single array, even when the geometry type differs across rows. It's implemented as an [Arrow union][arrow-union-layout] of the other native encodings.
Copy link
Member Author

Choose a reason for hiding this comment

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

For some reason the hard wrapping of my editor wasn't working well with the quarto extension enabled. Feel free to edit my hard wrapping to your liking

Comment on lines -39 to -41
```json
{"crs": "EPSG:32620"}
```
Copy link
Member Author

Choose a reason for hiding this comment

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

Took this out to have a full list of crs examples after the next paragraph

the optional `"crs_type"` field was added and can take on the value `"authority_code"`,
`"srid"`, `"projjson"`, or `"wkt2:2019"`. Among other use cases, this enabled the
[C++ implementation of the Parquet GEOMETRY type](https://github.com/apache/arrow/pull/45459)
to losslessly pass on all the information stored in a Parquet logical type annotation
for GEOMETRY or GEOGRAPHY in a dependency-sensitive environment.

- PROJJSON example
Copy link
Member Author

Choose a reason for hiding this comment

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

Examples ordered from preferred to least preferred


```json
{
"crs": 'PROJCS["WGS 84 / UTM zone 20N",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-63],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","32620"]]',
Copy link
Member Author

Choose a reason for hiding this comment

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

Using ' quotes means that the internal " don't need to be escaped \". I think it's fine for this code section to be "json like" instead of literally json text

Copy link
Contributor

Choose a reason for hiding this comment

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

Or maybe use an "opaque" example that doesn't involve embedded quotes (like auth:code?). I don't really mind either way (having the escaped quotes nicely highlights how ugly this is, which is why we don't love it!)

Copy link
Member Author

Choose a reason for hiding this comment

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

I didn't want to use Auth:code because in that case they should be applying the relevant crs_type (except in the case when they don't know it's an auth:code, but I didn't want to get into all those details right here)

and `geoarrow.geometrycollection` extension names allow arbitrary geometries to be
represented within a single feature and within a single array using a union of the other
native encodings.
## Implementations
Copy link
Member Author

Choose a reason for hiding this comment

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

I'm kinda meh about having the implementation section here. Or at least I want to have it exist in a way that doesn't get quickly out of date.

I.e. hopefully we won't have another spec release for a while, but I don't want people a year or two from now to refer to this implementations section frozen in time.

Perhaps even we should have two separate blog posts? One to announce the new 0.2 spec release and another to promote implementations?

Copy link
Contributor

Choose a reason for hiding this comment

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

I'm happy to move this to a post on my personal blog and share but thought it would be nice to have that traffic land on geoarrow.org instead. I'd rather only share + promote one link and the spec additions, while cool for low-level developers, are also very dry and have a very small audience.

Copy link
Member Author

Choose a reason for hiding this comment

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

I'd rather only share + promote one link and the spec additions, while cool for low-level developers, are also very dry and have a very small audience

That's fair. Maybe we should just have a sentence when we get to the implementations section "this content is valid as of May 2025" and implementations may have progressed since then.

Copy link
Contributor

Choose a reason for hiding this comment

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

Sure!

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.

2 participants