From 6e285b15a13ddf3498dfcdebe643c17a5b0dfbe6 Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Mon, 16 Jan 2012 10:11:44 +0000 Subject: [PATCH] Implement lwgeom_same for circularstring (#1475) git-svn-id: http://svn.osgeo.org/postgis/trunk@8828 b70326c6-7e19-0410-871a-916f4a2858ee --- liblwgeom/liblwgeom.h.in | 1 + liblwgeom/lwgeom.c | 3 +++ regress/wkb.sql | 22 ++++++++++++++++++++++ regress/wkb_expected | 4 ++++ 4 files changed, 30 insertions(+) diff --git a/liblwgeom/liblwgeom.h.in b/liblwgeom/liblwgeom.h.in index bdcdf3aca..c5282f446 100644 --- a/liblwgeom/liblwgeom.h.in +++ b/liblwgeom/liblwgeom.h.in @@ -1121,6 +1121,7 @@ char lwline_same(const LWLINE *p1, const LWLINE *p2); char lwpoly_same(const LWPOLY *p1, const LWPOLY *p2); char lwtriangle_same(const LWTRIANGLE *p1, const LWTRIANGLE *p2); char lwcollection_same(const LWCOLLECTION *p1, const LWCOLLECTION *p2); +char lwcircstring_same(const LWCIRCSTRING *p1, const LWCIRCSTRING *p2); /** diff --git a/liblwgeom/lwgeom.c b/liblwgeom/lwgeom.c index 7ae3ed67f..b5d0a6e4f 100644 --- a/liblwgeom/lwgeom.c +++ b/liblwgeom/lwgeom.c @@ -510,6 +510,9 @@ lwgeom_same(const LWGEOM *lwgeom1, const LWGEOM *lwgeom2) case TRIANGLETYPE: return lwtriangle_same((LWTRIANGLE *)lwgeom1, (LWTRIANGLE *)lwgeom2); + case CIRCSTRINGTYPE: + return lwcircstring_same((LWCIRCSTRING *)lwgeom1, + (LWCIRCSTRING *)lwgeom2); case MULTIPOINTTYPE: case MULTILINETYPE: case MULTIPOLYGONTYPE: diff --git a/regress/wkb.sql b/regress/wkb.sql index 325795b2a..1057f26b3 100644 --- a/regress/wkb.sql +++ b/regress/wkb.sql @@ -281,3 +281,25 @@ select g, encode(st_asbinary(g::geometry, 'ndr'), 'hex'), encode(st_asbinary(g::geometry, 'xdr'), 'hex') FROM ( SELECT 'GEOMETRYCOLLECTION ZM EMPTY' ::text as g ) as foo; + +-- CIRCULARSTRING +select g, encode(st_asbinary(g::geometry, 'ndr'), 'hex'), + st_orderingequals(g::geometry, ST_GeomFromWKB(ST_AsBinary(g::geometry))), + encode(st_asbinary(g::geometry, 'xdr'), 'hex') FROM ( SELECT + 'CIRCULARSTRING EMPTY' +::text as g ) as foo; +select g, encode(st_asbinary(g::geometry, 'ndr'), 'hex'), + st_orderingequals(g::geometry, ST_GeomFromWKB(ST_AsBinary(g::geometry))), + encode(st_asbinary(g::geometry, 'xdr'), 'hex') FROM ( SELECT + 'CIRCULARSTRING Z EMPTY' +::text as g ) as foo; +select g, encode(st_asbinary(g::geometry, 'ndr'), 'hex'), + st_orderingequals(g::geometry, ST_GeomFromWKB(ST_AsBinary(g::geometry))), + encode(st_asbinary(g::geometry, 'xdr'), 'hex') FROM ( SELECT + 'CIRCULARSTRING M EMPTY' +::text as g ) as foo; +select g, encode(st_asbinary(g::geometry, 'ndr'), 'hex'), + st_orderingequals(g::geometry, ST_GeomFromWKB(ST_AsBinary(g::geometry))), + encode(st_asbinary(g::geometry, 'xdr'), 'hex') FROM ( SELECT + 'CIRCULARSTRING ZM EMPTY' +::text as g ) as foo; diff --git a/regress/wkb_expected b/regress/wkb_expected index 2943b4947..9da5ab8a5 100644 --- a/regress/wkb_expected +++ b/regress/wkb_expected @@ -52,3 +52,7 @@ GEOMETRYCOLLECTION EMPTY|010700000000000000|t|000000000700000000 GEOMETRYCOLLECTION Z EMPTY|01ef03000000000000|t|00000003ef00000000 GEOMETRYCOLLECTION M EMPTY|01d707000000000000|t|00000007d700000000 GEOMETRYCOLLECTION ZM EMPTY|01bf0b000000000000|t|0000000bbf00000000 +CIRCULARSTRING EMPTY|010800000000000000|t|000000000800000000 +CIRCULARSTRING Z EMPTY|01f003000000000000|t|00000003f000000000 +CIRCULARSTRING M EMPTY|01d807000000000000|t|00000007d800000000 +CIRCULARSTRING ZM EMPTY|01c00b000000000000|t|0000000bc000000000 -- 2.40.0