You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sedona.apache.org by Martin Andersson <u....@gmail.com> on 2022/11/18 16:26:14 UTC

Add raster type to Sedona

Hi all,

I have a use case which involves raster geometries. Naturally I would like
to use Sedona for that.

The current raster functions operate on arrays of doubles. That means that
all the spatial metadata is missing. That makes it impossible to implement
anything like what Postgis has: https://postgis.net/docs/RT_reference.html

Rasters have a position, srid, scale and other attributes that are needed
for a lot of functions.

If Sedona had a raster type we would have a foundation to build on. Then
the community could add their favorite raster functions, just like with
vector functions.

The Sedona raster type could be serialized to "raster WKB" format. It's a
format invented by Postgis and not an official standard. It just borrows
the popular name of the proper WKB which is only for vector geometries.
https://git.osgeo.org/gitea/postgis/postgis/src/branch/master/raster/doc/RFC2-WellKnownBinaryFormat

There are several independent implementations of raster WKB in C, Rust,
Python etc. But I haven't found a JVM implementation. We could implement a
WKBGridCoverageReader and WKBGridCoverageWriter (implementing
GridCoverageReader and GridCoverageWriter in geotools) and use GridCoverage
in our functions. I haven't used raster geometries that much. There might
be some better options.

What are your thoughts?

//Martin

Re: Add raster type to Sedona

Posted by Martin Andersson <u....@gmail.com>.
Thanks for the link. I like how they implemented it using a custom metadata
class and java.awk.image.Raster. That way the implementation isn't tied to
a specific library like geotools.

Some more notes in rasters:
* Geotools is the most used library for rasters. Geotools license isn't
compatible with Apache. I came across https://sis.apache.org/. It's an
apache library for vector and raster geometries. I haven't tried it but
hopefully we could use it for raster geometries. Maybe we can even drop
Geotools entirely and use Apache SiS for ST_Transform, shapefiles and other
stuff where Geotools is used in Sedona today.
* Postgis overloads functions for both vector and raster geometries. Like
ST_AsBinary(geometry: g1) and ST_AsBinary(raster: r1). Spark doesn't
support overloading of functions. I think the current solution with a RS
prefix for raster functions in Sedona is fine. That way we could have
ST_AsBinary for vector geometries and RS_AsBinary for raster geometries.
* There doesn't seem to be a widely accepted standard for raster processing
in SQL. I think we would have to look at Postgis and other implementations
for guidance.

/Martin

Den mån 21 nov. 2022 kl 09:34 skrev Jia Yu <ji...@apache.org>:

> Hi Martin,
>
> I think the idea is good. I also didn't find an official Java based WKB
> raster implementation. But this thread might be helpful:
>
> https://gis.stackexchange.com/questions/184094/how-to-insert-raster-in-postgis-from-java-jdbc
>
> This guy implemented some prototypes...
>
> Thanks,
> Jia
>
> On Fri, Nov 18, 2022 at 8:26 AM Martin Andersson <
> u.martin.andersson@gmail.com> wrote:
>
> > Hi all,
> >
> > I have a use case which involves raster geometries. Naturally I would
> like
> > to use Sedona for that.
> >
> > The current raster functions operate on arrays of doubles. That means
> that
> > all the spatial metadata is missing. That makes it impossible to
> implement
> > anything like what Postgis has:
> https://postgis.net/docs/RT_reference.html
> >
> > Rasters have a position, srid, scale and other attributes that are needed
> > for a lot of functions.
> >
> > If Sedona had a raster type we would have a foundation to build on. Then
> > the community could add their favorite raster functions, just like with
> > vector functions.
> >
> > The Sedona raster type could be serialized to "raster WKB" format. It's a
> > format invented by Postgis and not an official standard. It just borrows
> > the popular name of the proper WKB which is only for vector geometries.
> >
> >
> https://git.osgeo.org/gitea/postgis/postgis/src/branch/master/raster/doc/RFC2-WellKnownBinaryFormat
> >
> > There are several independent implementations of raster WKB in C, Rust,
> > Python etc. But I haven't found a JVM implementation. We could implement
> a
> > WKBGridCoverageReader and WKBGridCoverageWriter (implementing
> > GridCoverageReader and GridCoverageWriter in geotools) and use
> GridCoverage
> > in our functions. I haven't used raster geometries that much. There might
> > be some better options.
> >
> > What are your thoughts?
> >
> > //Martin
> >
>


-- 
Hälsningar,
Martin

Re: Add raster type to Sedona

Posted by Jia Yu <ji...@apache.org>.
Hi Martin,

I think the idea is good. I also didn't find an official Java based WKB
raster implementation. But this thread might be helpful:
https://gis.stackexchange.com/questions/184094/how-to-insert-raster-in-postgis-from-java-jdbc

This guy implemented some prototypes...

Thanks,
Jia

On Fri, Nov 18, 2022 at 8:26 AM Martin Andersson <
u.martin.andersson@gmail.com> wrote:

> Hi all,
>
> I have a use case which involves raster geometries. Naturally I would like
> to use Sedona for that.
>
> The current raster functions operate on arrays of doubles. That means that
> all the spatial metadata is missing. That makes it impossible to implement
> anything like what Postgis has: https://postgis.net/docs/RT_reference.html
>
> Rasters have a position, srid, scale and other attributes that are needed
> for a lot of functions.
>
> If Sedona had a raster type we would have a foundation to build on. Then
> the community could add their favorite raster functions, just like with
> vector functions.
>
> The Sedona raster type could be serialized to "raster WKB" format. It's a
> format invented by Postgis and not an official standard. It just borrows
> the popular name of the proper WKB which is only for vector geometries.
>
> https://git.osgeo.org/gitea/postgis/postgis/src/branch/master/raster/doc/RFC2-WellKnownBinaryFormat
>
> There are several independent implementations of raster WKB in C, Rust,
> Python etc. But I haven't found a JVM implementation. We could implement a
> WKBGridCoverageReader and WKBGridCoverageWriter (implementing
> GridCoverageReader and GridCoverageWriter in geotools) and use GridCoverage
> in our functions. I haven't used raster geometries that much. There might
> be some better options.
>
> What are your thoughts?
>
> //Martin
>