From: Paul Ramsey Date: Fri, 17 Aug 2012 19:15:57 +0000 (+0000) Subject: Error in ST_Intersects: lwgeom_covers_lwgeom_sphere: only POLYGON and POINT types... X-Git-Tag: 2.1.0beta2~692 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=27714e38d235e760fb81af7bc55166789824fd94;p=postgis Error in ST_Intersects: lwgeom_covers_lwgeom_sphere: only POLYGON and POINT types are currently supported (#1949) git-svn-id: http://svn.osgeo.org/postgis/trunk@10190 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/postgis/geography_measurement_trees.c b/postgis/geography_measurement_trees.c index 9138a9382..ed163ea9c 100644 --- a/postgis/geography_measurement_trees.c +++ b/postgis/geography_measurement_trees.c @@ -139,9 +139,20 @@ CircTreePIP(const CIRC_NODE* tree1, const GSERIALIZED* g1, const LWGEOM* lwgeom2 { int result; LWGEOM* lwgeom1 = lwgeom_from_gserialized(g1); + LWGEOM* lwpoint; + POINT4D p4d; POSTGIS_DEBUG(3, "tree1 not polygonal, but lwgeom2 is, calculating using lwgeom_covers_lwgeom_sphere"); - result = lwgeom_covers_lwgeom_sphere(lwgeom2, lwgeom1); - lwfree(lwgeom1); + + if ( LW_FAILURE == lwgeom_startpoint(lwgeom1, &p4d) ) + { + lwgeom_free(lwgeom1); + lwerror("CircTreePIP unable to get lwgeom_startpoint"); + return LW_FALSE; + } + lwpoint = lwpoint_as_lwgeom(lwpoint_make(lwgeom_get_srid(lwgeom1), lwgeom_has_z(lwgeom1), lwgeom_has_m(lwgeom1), &p4d)); + result = lwgeom_covers_lwgeom_sphere(lwgeom2, lwpoint); + lwgeom_free(lwgeom1); + lwgeom_free(lwpoint); return result; } else