<div dir="ltr">Thanks Dewey!  That does indeed fix it. <div><br></div><div><br></div><div>ogr2ogr ~/fromgdal.arrows ogr/data/arrow/from_paleolimbot_geoarrow/polygon-default.ipc  ## using *.arrows triggers same as -lco FORMAT=STREAM <br></div><div><br></div><div>then in R</div><div><br></div><div>nanoarrow::read_nanoarrow("~/fromgdal.arrows")<br><nanoarrow_array_stream struct<row_num: int32, geometry: geoarrow.polygon{list<item: list<item: struct<x: double, y: double>>>}>><br></div><div><br></div><div>I had even toyed with the FORMAT=FILE/STREAM and the .arrows extension ... but was a bit lost about what to expect. </div><div><br></div><div>Thanks all, Mike</div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Oct 8, 2024 at 1:34 AM Dewey Dunnington <<a href="mailto:dewey@voltrondata.com">dewey@voltrondata.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Thank you Michael for the report and Even for the heads up!<br>
<br>
On nanoarrow's end, I believe that what's happening here is that<br>
Michael wrote an arrow "file" and then attempted to read with<br>
nanoarrow's IPC reader (which only reads streams). I believe that<br>
`ogr2ogr ~/fromgdal.arrow` -> `ogr2ogr ~/fromgdal.arrows` (note the s<br>
suffix) would write an IPC stream.<br>
<br>
(As a note, both Joris and I attempted to retain the more informative<br>
name "feather" for "Arrow files" to avoid this type of confusion).<br>
<br>
Let me know if that does not work!<br>
<br>
Cheers,<br>
<br>
-dewey<br>
<br>
On Mon, Oct 7, 2024 at 9:07 AM Joris Van den Bossche<br>
<<a href="mailto:jorisvandenbossche@gmail.com" target="_blank">jorisvandenbossche@gmail.com</a>> wrote:<br>
><br>
> The section about MultiPolygons at<br>
> <a href="https://geoarrow.org/format.html#memory-layouts" rel="noreferrer" target="_blank">https://geoarrow.org/format.html#memory-layouts</a> mentions:<br>
><br>
> > The child name of the outer list should be “polygons”; the child name of the middle list should be “rings”; the child name of the inner list should be “vertices”.<br>
><br>
> So this is currently phrased as a "should" and not "must" regarding<br>
> the list's field names, and so the data generated by GDAL is valid<br>
> under that description.<br>
><br>
> It might be good to verify with other consumers that those indeed can<br>
> handle such data (and add some test data with varying field names to<br>
> test against).<br>
><br>
> Joris<br>
><br>
> On Mon, 7 Oct 2024 at 15:39, Even Rouault via gdal-dev<br>
> <<a href="mailto:gdal-dev@lists.osgeo.org" target="_blank">gdal-dev@lists.osgeo.org</a>> wrote:<br>
> ><br>
> > Michael,<br>
> ><br>
> > my understanding of <a href="https://geoarrow.org/format.html#memory-layouts" rel="noreferrer" target="_blank">https://geoarrow.org/format.html#memory-layouts</a> is that what writes OGR is supposed to be fine since they mentionned types like 'List<List<FixedSizeList<double>[2]>>'. Perhaps I've missed something or nanoarrow has stricter expectations? CC'ing Dewey Dunnington<br>
> ><br>
> > Even<br>
> ><br>
> > Le 07/10/2024 à 15:23, Michael Sumner via gdal-dev a écrit :<br>
> ><br>
> > I realize I left out the INTERLEAVING, ie.<br>
> ><br>
> > ogr2ogr ~/fromgdal.arrow ogr/data/arrow/from_paleolimbot_geoarrow/polygon-default.ipc -lco GEOMETRY_ENCODING=GEOARROW_INTERLEAVED<br>
> ><br>
> > but still, I get these list<item elements rather than their rings/vertices/geoarrow.point type names:<br>
> ><br>
> > <nanoarrow_array_stream struct<row_num: int32, geometry: geoarrow.polygon{list<item: list<item: fixed_size_list(2)<xy: double>>>}>><br>
> ><br>
> ><br>
> ><br>
> > On Tue, Oct 8, 2024 at 12:19 AM Michael Sumner <<a href="mailto:mdsumner@gmail.com" target="_blank">mdsumner@gmail.com</a>> wrote:<br>
> >><br>
> >> When I investigate the schema in one of the test files<br>
> >><br>
> >> ogr/data/arrow/from_paleolimbot_geoarrow/polygon-default.ipc<br>
> >><br>
> >> I see expected  list<polygons and list<rings and xy etc. I'm printing this by using R nanoarrow::read_arrow, or from poLayer->GetArrowStream and I get the same output:<br>
> >><br>
> >> <nanoarrow_array_stream struct<row_num: int32, geometry: geoarrow.polygon{list<rings: list<vertices: geoarrow.point{fixed_size_list(2)<xy: double>}>>}>><br>
> >><br>
> >> If I write a new .arrow with GDAL<br>
> >><br>
> >> ogr2ogr ~/fromgdal.arrow ogr/data/arrow/from_paleolimbot_geoarrow/polygon-default.ipc<br>
> >><br>
> >> the stream schema looks like this:<br>
> >><br>
> >> <nanoarrow_array_stream struct<row_num: int32, geometry: geoarrow.polygon{list<item: list<item: struct<x: double, y: double>>>}>><br>
> >><br>
> >> and from nanoarrow I see<br>
> >><br>
> >> nanoarrow::read_nanoarrow("~/fromgdal.arrow")<br>
> >> Error in read_nanoarrow.character("~/fromgdal.arrow") :<br>
> >>   array_stream->get_schema(): [29] Expected >= 1330795077 bytes of remaining data but found 2266 bytes in buffer<br>
> >><br>
> >> Are we in-between moves regarding specifications, or something?  I'm having good results generally and this seems like a problem in the Arrow driver for write.<br>
> >><br>
> >> Cheers, Mike<br>
> >><br>
> >><br>
> >> --<br>
> >> Michael Sumner<br>
> >> Research Software Engineer<br>
> >> Australian Antarctic Division<br>
> >> Hobart, Australia<br>
> >> e-mail: <a href="mailto:mdsumner@gmail.com" target="_blank">mdsumner@gmail.com</a><br>
> ><br>
> ><br>
> ><br>
> > --<br>
> > Michael Sumner<br>
> > Research Software Engineer<br>
> > Australian Antarctic Division<br>
> > Hobart, Australia<br>
> > e-mail: <a href="mailto:mdsumner@gmail.com" target="_blank">mdsumner@gmail.com</a><br>
> ><br>
> > _______________________________________________<br>
> > gdal-dev mailing list<br>
> > <a href="mailto:gdal-dev@lists.osgeo.org" target="_blank">gdal-dev@lists.osgeo.org</a><br>
> > <a href="https://lists.osgeo.org/mailman/listinfo/gdal-dev" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/gdal-dev</a><br>
> ><br>
> > --<br>
> > <a href="http://www.spatialys.com" rel="noreferrer" target="_blank">http://www.spatialys.com</a><br>
> > My software is free, but my time generally not.<br>
> ><br>
> > _______________________________________________<br>
> > gdal-dev mailing list<br>
> > <a href="mailto:gdal-dev@lists.osgeo.org" target="_blank">gdal-dev@lists.osgeo.org</a><br>
> > <a href="https://lists.osgeo.org/mailman/listinfo/gdal-dev" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/gdal-dev</a><br>
</blockquote></div><br clear="all"><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr">Michael Sumner<br>Research Software Engineer<br>Australian Antarctic Division<br>Hobart, Australia<br>e-mail: <a href="mailto:mdsumner@gmail.com" target="_blank">mdsumner@gmail.com</a></div></div>