That's a bug in JTS, alright.  Thanks to Michael for finding it, and Sandro
for identifying the problem. I'll look at fixing this ASAP.


On Tue, Jan 14, 2014 at 1:36 AM, Sandro Santilli <[email protected]> wrote:

> On Mon, Jan 13, 2014 at 12:41:37PM -0800, Michael Watts wrote:
> > I'm not sure if this is a PostGIS issue, a JTS issue, or an issue at all
> --
> > but, below, JTS produces a WKB that is not parseable (via ST_GeomFromWKB)
> > by Postgis -- it is the JTS wkb-representation of an empty polygon.
> >
> > ===============================
> >
> > (1) Get WKB from PostGIS
> >
> > gis=> select ST_GEOMFromText('POLYGON EMPTY');
> >   st_geomfromtext
> > --------------------
> >  010300000000000000
> > (1 row)
> >
> > (2)  Write to JTS, and read back.
> >
> > WKBWriter writer = new WKBWriter();
> > WKBReader reader = new WKBReader();
> >
> > // 010300000000000000
> > byte[] fromPostgis = {1, 3, 0, 0, 0, 0, 0, 0}; // little-endian,
> polygon, 0
> > rings
> >
> > // 00000000030000000100000000
> > byte[] throughJTS = writer.write(reader.read(fromPostgis)); // big
> endian,
> > polygon, 1 ring, 0 points
> >
> > (3) Try to write back to PostGIS
> >
> > gis=> select ST_GeomFromWKB(E'\\x00000000030000000100000000');
> > ERROR:  Polygon must have at least four points in each ring
> >
> > ================================
> >
> > JTS-Version = 1.13
> > POSTGIS="2.1.0 r11822"
>
> PostGIS binary version for an empty polygon is different:
>
>  strk=# select ST_AsBinary('POLYGON EMPTY'::geometry, 'ndr');
>       st_asbinary
>  ----------------------
>   \x010300000000000000
>  (1 row)
>
>  strk=# select ST_AsBinary('POLYGON EMPTY'::geometry, 'xdr');
>       st_asbinary
>  ----------------------
>   \x000000000300000000
>  (1 row)
>
> That is, a polygon with NO rings, whereas it looks like JTS version
> is a polygon with 1 empty ring ?
>
> --strk;
>
>
> ------------------------------------------------------------------------------
> CenturyLink Cloud: The Leader in Enterprise Cloud Services.
> Learn Why More Businesses Are Choosing CenturyLink Cloud For
> Critical Workloads, Development Environments & Everything In Between.
> Get a Quote or Start a Free Trial Today.
>
> http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
> _______________________________________________
> Jts-topo-suite-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/jts-topo-suite-user
>
------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today. 
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
Jts-topo-suite-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jts-topo-suite-user

Reply via email to