]> granicus.if.org Git - postgis/commitdiff
more fixes to make geography friendly
authorRegina Obe <lr@pcorp.us>
Wed, 30 Sep 2009 15:50:21 +0000 (15:50 +0000)
committerRegina Obe <lr@pcorp.us>
Wed, 30 Sep 2009 15:50:21 +0000 (15:50 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@4557 b70326c6-7e19-0410-871a-916f4a2858ee

doc/xsl/postgis_gardentest.sql.xsl

index 85fda0ee3cebe389dd7109ecfa8c16fc1aeffe40..dbb29e100cd6407153f7ab579f77763760b2c858 100644 (file)
@@ -94,7 +94,7 @@
                        CROSS JOIN generate_series(40,70, 15) As j\r
                        WHERE NOT(i = j)) As s)</pgis:gset>\r
 \r
-               <pgis:gset ID='MultiPolySet' GeometryType='POLYGON'>(SELECT ST_Multi(ST_Union(ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j*0.05)))  As the_geom\r
+               <pgis:gset ID='MultiPolySet' GeometryType='MULTIPOLYGON'>(SELECT ST_Multi(ST_Union(ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j*0.05)))  As the_geom\r
                FROM generate_series(-10,50,10) As i\r
                        CROSS JOIN generate_series(40,70, 25) As j)</pgis:gset>\r
 \r
@@ -203,18 +203,24 @@ SELECT 'create,insert,drop Test: End Testing Geography <xsl:value-of select="@Ge
                <xsl:sort select="@id"/>\r
                <xsl:for-each select="refsynopsisdiv/funcsynopsis/funcprototype">\r
                        <xsl:variable name='fnname'><xsl:value-of select="funcdef/function"/></xsl:variable>\r
+                       <xsl:variable name='fndef'><xsl:value-of select="funcdef"/></xsl:variable>\r
                        <xsl:for-each select="document('')//pgis:gardens/pgis:gset">\r
                        <!--Store first garden sql geometry from -->\r
                                        <xsl:variable name="from1"><xsl:value-of select="." /></xsl:variable>\r
                                        <xsl:variable name='geom1type'><xsl:value-of select="@ID"/></xsl:variable>\r
                SELECT '<xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" /> : Start Testing <xsl:value-of select="$geom1type" /> against other types';\r
                                                <xsl:for-each select="document('')//pgis:gardens/pgis:gset">\r
-                       SELECT '<xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />: Start Testing <xsl:value-of select="$geom1type" />, <xsl:value-of select="@GeometryType" />';\r
+                       <xsl:choose>\r
+                         <xsl:when test="contains($fndef, 'geography ')">\r
+                       SELECT 'Geography <xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />: Start Testing <xsl:value-of select="$geom1type" />, <xsl:value-of select="@GeometryType" />';\r
                        BEGIN;\r
-                       SELECT foo1.the_geom <xsl:value-of select="$fnname" /> foo2.the_geom\r
+                       SELECT geography(foo1.the_geom) <xsl:value-of select="$fnname" /> geography(foo2.the_geom)\r
                                        FROM (<xsl:value-of select="$from1" />) As foo1 CROSS JOIN (<xsl:value-of select="." />) As foo2\r
                                        ;\r
                        COMMIT;\r
+                       </xsl:when>\r
+                       <xsl:otherwise>\r
+                       </xsl:otherwise>\r
                                        </xsl:for-each>\r
                SELECT '<xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />: End Testing <xsl:value-of select="@GeometryType" /> against other types';\r
                                </xsl:for-each>\r
@@ -232,7 +238,7 @@ SELECT 'create,insert,drop Test: End Testing Geography <xsl:value-of select="@Ge
                                <xsl:variable name='fnname'><xsl:value-of select="funcdef/function"/></xsl:variable>\r
                                <xsl:variable name='fndef'><xsl:value-of select="funcdef"/></xsl:variable>\r
                                <xsl:variable name='numparams'><xsl:value-of select="count(paramdef/parameter)" /></xsl:variable>\r
-                               <xsl:variable name='numparamgeoms'><xsl:value-of select="count(paramdef/type[contains(text(),'geometry') or contains(text(),'box') or contains(text(), 'bytea')]) + count(paramdef/parameter[contains(text(),'WKT')])" /></xsl:variable>\r
+                               <xsl:variable name='numparamgeoms'><xsl:value-of select="count(paramdef/type[contains(text(),'geometry') or contains(text(),'geography') or contains(text(),'box') or contains(text(), 'bytea')]) + count(paramdef/parameter[contains(text(),'WKT')])" /></xsl:variable>\r
                                <!-- For each function prototype generate a test sql statement -->\r
                                <xsl:choose>\r
 <!--Test functions that take no arguments or take no geometries -->\r
@@ -245,13 +251,20 @@ SELECT  'Ending <xsl:value-of select="funcdef/function" />(<xsl:value-of select=
 <!-- put functions that take only one geometry no need to cross with another geom collection, these are unary geom, aggregates, and so forth -->\r
        <xsl:when test="$numparamgeoms = '1' and not(contains($fnexclude,funcdef/function))" >\r
                <xsl:for-each select="document('')//pgis:gardens/pgis:gset">\r
-       SELECT '<xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />: Start Testing <xsl:value-of select="@GeometryType" />';\r
-       BEGIN; <!-- If output is geometry show ewkt rep -->\r
                        <xsl:choose>\r
                          <xsl:when test="contains($fndef, 'geometry ')">\r
+       SELECT 'Geometry <xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />: Start Testing <xsl:value-of select="@GeometryType" />';\r
+       BEGIN; <!-- If output is geometry show ewkt rep -->\r
        SELECT ST_AsEWKT(<xsl:value-of select="$fnname" />(<xsl:value-of select="$fnfakeparams" />))\r
+                         </xsl:when>\r
+                         <xsl:when test="contains($fndef, 'geography ')">\r
+       SELECT 'Geography <xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />: Start Testing <xsl:value-of select="@GeometryType" />';\r
+       BEGIN; <!-- If output is geometry show astext rep -->\r
+       SELECT ST_AsText(<xsl:value-of select="$fnname" />(<xsl:value-of select="$fnfakeparams" />))\r
                          </xsl:when>\r
                          <xsl:otherwise>\r
+       SELECT 'Other <xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />: Start Testing <xsl:value-of select="@GeometryType" />';\r
+       BEGIN; <!-- If output is geometry show ewkt rep -->\r
        SELECT <xsl:value-of select="$fnname" />(<xsl:value-of select="$fnfakeparams" />)\r
                          </xsl:otherwise>\r
                        </xsl:choose>\r
@@ -273,13 +286,20 @@ SELECT  'Ending <xsl:value-of select="funcdef/function" />(<xsl:value-of select=
                        <xsl:variable name='geom1type'><xsl:value-of select="@ID"/></xsl:variable>\r
 SELECT '<xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />(<xsl:value-of select="$fnargs" />): Start Testing <xsl:value-of select="$geom1type" /> against other types';\r
                                <xsl:for-each select="document('')//pgis:gardens/pgis:gset">\r
-       SELECT '<xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />(<xsl:value-of select="$fnargs" />): Start Testing <xsl:value-of select="$geom1type" />, <xsl:value-of select="@GeometryType" />';\r
-       BEGIN; <!-- If output is geometry show ewkt rep -->\r
                        <xsl:choose>\r
                          <xsl:when test="contains($fndef, 'geometry ')">\r
+                               SELECT 'Geometry <xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />(<xsl:value-of select="$fnargs" />): Start Testing <xsl:value-of select="$geom1type" />, <xsl:value-of select="@GeometryType" />';\r
+       BEGIN; <!-- If output is geometry show ewkt rep -->\r
        SELECT ST_AsEWKT(<xsl:value-of select="$fnname" />(<xsl:value-of select="$fnfakeparams" />)), ST_AsEWKT(foo1.the_geom) As ref1_geom, ST_AsEWKT(foo2.the_geom) As ref2_geom\r
+                         </xsl:when>\r
+                         <xsl:when test="contains($fndef, 'geography ')">\r
+                               SELECT 'Geography <xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />(<xsl:value-of select="$fnargs" />): Start Testing <xsl:value-of select="$geom1type" />, <xsl:value-of select="@GeometryType" />';\r
+       BEGIN; <!-- If output is geography show wkt rep -->\r
+       SELECT ST_AsText(<xsl:value-of select="$fnname" />(<xsl:value-of select="$fnfakeparams" />)), ST_AsText(foo1.the_geom) As ref1_geom, ST_AsText(foo2.the_geom) As ref2_geom\r
                          </xsl:when>\r
                          <xsl:otherwise>\r
+                               SELECT 'Other <xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />(<xsl:value-of select="$fnargs" />): Start Testing <xsl:value-of select="$geom1type" />, <xsl:value-of select="@GeometryType" />';\r
+       BEGIN; <!-- If output is geography show wkt rep -->\r
        SELECT <xsl:value-of select="$fnname" />(<xsl:value-of select="$fnfakeparams" />)\r
                          </xsl:otherwise>\r
                        </xsl:choose>\r
@@ -327,7 +347,7 @@ SELECT '<xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of sel
                                        <xsl:when test="(contains(type,'box') or type = 'geometry' or type = 'geometry ' or contains(type,'geometry set')) and (position() = 1 or count($func/paramdef/type[contains(text(),'geometry') or contains(text(),'box') or contains(text(), 'WKT') or contains(text(), 'bytea')]) = '1')">\r
                                                <xsl:text>foo1.the_geom</xsl:text>\r
                                        </xsl:when>\r
-                                       <xsl:when test="(type = 'geography' or type = 'geography ' or contains(type,'geography set')) and (position() = 1 )">\r
+                                       <xsl:when test="(type = 'geography' or type = 'geography ' or contains(type,'geography set')) and (position() = 1 or count($func/paramdef/type[contains(text(),'geography')]) )">\r
                                                <xsl:text>geography(foo1.the_geom)</xsl:text>\r
                                        </xsl:when>\r
                                        <xsl:when test="contains(type,'box') or type = 'geometry' or type = 'geometry '">\r