Commit d427c87f authored by Raúl Marín's avatar Raúl Marín

ST_AsX3D: Stop calculating the srs

It was never used and amounted to 90% of the time
parent b38079d4
......@@ -17,10 +17,10 @@
#include "liblwgeom_internal.h"
#include "cu_tester.h"
static void do_x3d3_test(char * in, char * out, char * srs, int precision, int option)
static void do_x3d3_test(char * in, char * out, int precision, int option)
{
LWGEOM *g = lwgeom_from_wkt(in, LW_PARSER_CHECK_NONE);
lwvarlena_t *v = lwgeom_to_x3d3(g, srs, precision, option, "");
lwvarlena_t *v = lwgeom_to_x3d3(g, precision, option, "");
ASSERT_VARLENA_EQUAL(v, out);
......@@ -32,7 +32,7 @@ static void do_x3d3_test(char * in, char * out, char * srs, int precision, int o
static void do_x3d3_unsupported(char * in, char * out)
{
LWGEOM *g = lwgeom_from_wkt(in, LW_PARSER_CHECK_NONE);
lwvarlena_t *v = lwgeom_to_x3d3(g, NULL, 0, 0, "");
lwvarlena_t *v = lwgeom_to_x3d3(g, 0, 0, "");
ASSERT_STRING_EQUAL(out, cu_error_msg);
cu_error_msg_reset();
......@@ -48,23 +48,23 @@ static void out_x3d3_test_precision(void)
do_x3d3_test(
"POINT(1.1111111111111 1.1111111111111 2.11111111111111)",
"1 1 2",
NULL, 0, 0);
0, 0);
/* 3 digits precision */
do_x3d3_test(
"POINT(1.1111111111111 1.1111111111111 2.11111111111111)",
"1.111 1.111 2.111",
NULL, 3, 0);
3, 0);
/* 9 digits precision */
do_x3d3_test(
"POINT(1.2345678901234 1.2345678901234 4.123456789001)",
"1.23456789 1.23456789 4.123456789",
NULL, 9, 0);
9, 0);
/* huge data */
do_x3d3_test(
"POINT(1E300 -105E-153 4E300)", "1e+300 0 4e+300", NULL, 0, 0);
"POINT(1E300 -105E-153 4E300)", "1e+300 0 4e+300", 0, 0);
}
......@@ -74,13 +74,13 @@ static void out_x3d3_test_geoms(void)
do_x3d3_test(
"LINESTRING(0 1 5,2 3 6,4 5 7)",
"<LineSet vertexCount='3'><Coordinate point='0 1 5 2 3 6 4 5 7' /></LineSet>",
NULL, 0, 0);
0, 0);
/* Polygon **/
do_x3d3_test(
"POLYGON((15 10 3,13.536 6.464 3,10 5 3,6.464 6.464 3,5 10 3,6.464 13.536 3,10 15 3,13.536 13.536 3,15 10 3))",
"<IndexedFaceSet convex='false' coordIndex='0 1 2 3 4 5 6 7'><Coordinate point='15 10 3 13.536 6.464 3 10 5 3 6.464 6.464 3 5 10 3 6.464 13.536 3 10 15 3 13.536 13.536 3 ' /></IndexedFaceSet>",
NULL, 3, 0);
3, 0);
/* TODO: Polygon - with internal ring - the answer is clearly wrong */
/** do_x3d3_test(
......@@ -92,30 +92,30 @@ static void out_x3d3_test_geoms(void)
do_x3d3_test(
"MULTIPOINT(0 1,2 3,4 5)",
"<Polypoint2D point='0 1 2 3 4 5 ' />",
NULL, 0, 0);
0, 0);
/* 3D MultiPoint */
do_x3d3_test(
"MULTIPOINT Z(0 1 1,2 3 4,4 5 5)",
"<PointSet ><Coordinate point='0 1 1 2 3 4 4 5 5 ' /></PointSet>",
NULL, 0, 0);
0, 0);
/* 3D Multiline */
do_x3d3_test(
"MULTILINESTRING Z((0 1 1,2 3 4,4 5 5),(6 7 5,8 9 8,10 11 5))",
"<IndexedLineSet coordIndex='0 1 2 -1 3 4 5'><Coordinate point='0 1 1 2 3 4 4 5 5 6 7 5 8 9 8 10 11 5 ' /></IndexedLineSet>",
NULL, 0, 0);
0, 0);
/* MultiPolygon */
do_x3d3_test(
"MULTIPOLYGON(((0 1 1,2 3 1,4 5 1,0 1 1)),((6 7 1,8 9 1,10 11 1,6 7 1)))",
"<IndexedFaceSet convex='false' coordIndex='0 1 2 -1 3 4 5'><Coordinate point='0 1 1 2 3 1 4 5 1 6 7 1 8 9 1 10 11 1 ' /></IndexedFaceSet>",
NULL, 0, 0);
0, 0);
/* PolyhedralSurface */
do_x3d3_test(
"POLYHEDRALSURFACE( ((0 0 0, 0 0 1, 0 1 1, 0 1 0, 0 0 0)), ((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)), ((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0)), ((1 1 0, 1 1 1, 1 0 1, 1 0 0, 1 1 0)), ((0 1 0, 0 1 1, 1 1 1, 1 1 0, 0 1 0)), ((0 0 1, 1 0 1, 1 1 1, 0 1 1, 0 0 1)) )",
"<IndexedFaceSet convex='false' coordIndex='0 1 2 3 -1 4 5 6 7 -1 8 9 10 11 -1 12 13 14 15 -1 16 17 18 19 -1 20 21 22 23'><Coordinate point='0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 1 1 1 0 1 1 1 1 0 1 1 0 0 0 1 0 0 1 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 0 1 1' /></IndexedFaceSet>",
NULL, 0, 0);
0, 0);
/* TODO: returns garbage at moment correctly implement GeometryCollection -- */
/** do_x3d3_test(
......@@ -147,19 +147,19 @@ static void out_x3d3_test_option(void)
do_x3d3_test(
"POINT(3.1111111111111 1.1111111111111 2.11111111111111)",
"1 3 2",
NULL, 0, 1);
0, 1);
/* geocoordinate long,lat*/
do_x3d3_test(
"SRID=4326;POLYGON((15 10 3,13.536 6.464 3,10 5 3,6.464 6.464 3,5 10 3,6.464 13.536 3,10 15 3,13.536 13.536 3,15 10 3))",
"<IndexedFaceSet convex='false' coordIndex='0 1 2 3 4 5 6 7'><GeoCoordinate geoSystem='\"GD\" \"WE\" \"longitude_first\"' point='15 10 3 13.536 6.464 3 10 5 3 6.464 6.464 3 5 10 3 6.464 13.536 3 10 15 3 13.536 13.536 3 ' /></IndexedFaceSet>",
NULL, 3, 2);
3, 2);
/* geocoordinate lat long*/
do_x3d3_test(
"SRID=4326;POLYGON((15 10 3,13.536 6.464 3,10 5 3,6.464 6.464 3,5 10 3,6.464 13.536 3,10 15 3,13.536 13.536 3,15 10 3))",
"<IndexedFaceSet convex='false' coordIndex='0 1 2 3 4 5 6 7'><GeoCoordinate geoSystem='\"GD\" \"WE\" \"latitude_first\"' point='10 15 3 6.464 13.536 3 5 10 3 6.464 6.464 3 10 5 3 13.536 6.464 3 15 10 3 13.536 13.536 3 ' /></IndexedFaceSet>",
NULL, 3, 3);
3, 3);
}
......
......@@ -1700,7 +1700,7 @@ extern lwvarlena_t* lwgeom_extent_to_gml3(const LWGEOM *geom, const char *srs, i
extern lwvarlena_t* lwgeom_to_gml3(const LWGEOM *geom, const char *srs, int precision, int opts, const char *prefix, const char *id);
extern lwvarlena_t* lwgeom_to_kml2(const LWGEOM *geom, int precision, const char *prefix);
extern lwvarlena_t* lwgeom_to_geojson(const LWGEOM *geo, const char *srs, int precision, int has_bbox);
extern lwvarlena_t* lwgeom_to_x3d3(const LWGEOM *geom, const char *srs, int precision, int opts, const char *defid);
extern lwvarlena_t* lwgeom_to_x3d3(const LWGEOM *geom, int precision, int opts, const char *defid);
extern lwvarlena_t* lwgeom_to_svg(const LWGEOM *geom, int precision, int relative);
extern lwvarlena_t* lwgeom_to_encoded_polyline(const LWGEOM *geom, int precision);
......
......@@ -34,7 +34,7 @@
*/
/* takes a GEOMETRY and returns a X3D representation */
lwvarlena_t *
lwgeom_to_x3d3(const LWGEOM *geom, const char *srs, int precision, int opts, const char *defid)
lwgeom_to_x3d3(const LWGEOM *geom, int precision, int opts, const char *defid)
{
stringbuffer_t *sb;
int rv;
......@@ -48,7 +48,7 @@ lwgeom_to_x3d3(const LWGEOM *geom, const char *srs, int precision, int opts, con
}
sb = stringbuffer_create();
rv = lwgeom_to_x3d3_sb(geom, srs, precision, opts, defid, sb);
rv = lwgeom_to_x3d3_sb(geom, precision, opts, defid, sb);
if ( rv == LW_FAILURE )
{
......@@ -63,17 +63,17 @@ lwgeom_to_x3d3(const LWGEOM *geom, const char *srs, int precision, int opts, con
}
/* takes a GEOMETRY and appends to string buffer the x3d output */
static int
lwgeom_to_x3d3_sb(const LWGEOM *geom, const char *srs, int precision, int opts, const char *defid, stringbuffer_t *sb)
lwgeom_to_x3d3_sb(const LWGEOM *geom, int precision, int opts, const char *defid, stringbuffer_t *sb)
{
int type = geom->type;
switch (type)
{
case POINTTYPE:
return asx3d3_point_sb((LWPOINT*)geom, srs, precision, opts, defid, sb);
return asx3d3_point_sb((LWPOINT *)geom, precision, opts, defid, sb);
case LINETYPE:
return asx3d3_line_sb((LWLINE*)geom, srs, precision, opts, defid, sb);
return asx3d3_line_sb((LWLINE *)geom, precision, opts, defid, sb);
case POLYGONTYPE:
{
......@@ -81,27 +81,27 @@ lwgeom_to_x3d3_sb(const LWGEOM *geom, const char *srs, int precision, int opts,
* seems like the simplest way to go so treat just like a mulitpolygon
*/
LWCOLLECTION *tmp = (LWCOLLECTION*)lwgeom_as_multi(geom);
asx3d3_multi_sb(tmp, srs, precision, opts, defid, sb);
asx3d3_multi_sb(tmp, precision, opts, defid, sb);
lwcollection_free(tmp);
return LW_SUCCESS;
}
case TRIANGLETYPE:
return asx3d3_triangle_sb((LWTRIANGLE*)geom, srs, precision, opts, defid, sb);
return asx3d3_triangle_sb((LWTRIANGLE *)geom, precision, opts, defid, sb);
case MULTIPOINTTYPE:
case MULTILINETYPE:
case MULTIPOLYGONTYPE:
return asx3d3_multi_sb((LWCOLLECTION*)geom, srs, precision, opts, defid, sb);
return asx3d3_multi_sb((LWCOLLECTION *)geom, precision, opts, defid, sb);
case POLYHEDRALSURFACETYPE:
return asx3d3_psurface_sb((LWPSURFACE*)geom, srs, precision, opts, defid, sb);
return asx3d3_psurface_sb((LWPSURFACE *)geom, precision, opts, defid, sb);
case TINTYPE:
return asx3d3_tin_sb((LWTIN*)geom, srs, precision, opts, defid, sb);
return asx3d3_tin_sb((LWTIN *)geom, precision, opts, defid, sb);
case COLLECTIONTYPE:
return asx3d3_collection_sb((LWCOLLECTION*)geom, srs, precision, opts, defid, sb);
return asx3d3_collection_sb((LWCOLLECTION *)geom, precision, opts, defid, sb);
default:
lwerror("lwgeom_to_x3d3: '%s' geometry type not supported", lwtype_name(type));
......@@ -110,8 +110,11 @@ lwgeom_to_x3d3_sb(const LWGEOM *geom, const char *srs, int precision, int opts,
}
static int
asx3d3_point_sb(const LWPOINT *point, __attribute__((__unused__)) const char *srs, int precision,
int opts, __attribute__((__unused__)) const char *defid, stringbuffer_t *sb)
asx3d3_point_sb(const LWPOINT *point,
int precision,
int opts,
__attribute__((__unused__)) const char *defid,
stringbuffer_t *sb)
{
/** for point we just output the coordinates **/
return ptarray_to_x3d3_sb(point->point, precision, opts, 0, sb);
......@@ -215,8 +218,11 @@ asx3d3_mpoly_coordindex_sb(const LWMPOLY *psur, stringbuffer_t *sb)
/** Return the linestring as an X3D LineSet */
static int
asx3d3_line_sb(const LWLINE *line, __attribute__((__unused__)) const char *srs, int precision,
int opts, __attribute__((__unused__)) const char *defid, stringbuffer_t *sb)
asx3d3_line_sb(const LWLINE *line,
int precision,
int opts,
__attribute__((__unused__)) const char *defid,
stringbuffer_t *sb)
{
/* int dimension=2; */
......@@ -242,8 +248,12 @@ asx3d3_line_sb(const LWLINE *line, __attribute__((__unused__)) const char *srs,
/** Compute the X3D coordinates of the polygon and add to string buffer **/
static int
asx3d3_poly_sb(const LWPOLY *poly, __attribute__((__unused__)) const char *srs, int precision,
int opts, __attribute__((__unused__)) int is_patch, __attribute__((__unused__)) const char *defid, stringbuffer_t *sb)
asx3d3_poly_sb(const LWPOLY *poly,
int precision,
int opts,
__attribute__((__unused__)) int is_patch,
__attribute__((__unused__)) const char *defid,
stringbuffer_t *sb)
{
uint32_t i;
for (i=0; i<poly->nrings; i++)
......@@ -255,8 +265,11 @@ asx3d3_poly_sb(const LWPOLY *poly, __attribute__((__unused__)) const char *srs,
}
static int
asx3d3_triangle_sb(const LWTRIANGLE *triangle, __attribute__((__unused__)) const char *srs, int precision,
int opts, __attribute__((__unused__)) const char *defid, stringbuffer_t *sb)
asx3d3_triangle_sb(const LWTRIANGLE *triangle,
int precision,
int opts,
__attribute__((__unused__)) const char *defid,
stringbuffer_t *sb)
{
return ptarray_to_x3d3_sb(triangle->points, precision, opts, 1, sb);
}
......@@ -266,7 +279,7 @@ asx3d3_triangle_sb(const LWTRIANGLE *triangle, __attribute__((__unused__)) cons
* Don't call this with single-geoms inspected!
*/
static int
asx3d3_multi_sb(const LWCOLLECTION *col, __attribute__((__unused__)) const char *srs, int precision, int opts, const char *defid, stringbuffer_t *sb)
asx3d3_multi_sb(const LWCOLLECTION *col, int precision, int opts, const char *defid, stringbuffer_t *sb)
{
char *x3dtype;
uint32_t i;
......@@ -317,7 +330,7 @@ asx3d3_multi_sb(const LWCOLLECTION *col, __attribute__((__unused__)) const char
subgeom = col->geoms[i];
if (subgeom->type == POINTTYPE)
{
asx3d3_point_sb((LWPOINT*)subgeom, 0, precision, opts, defid, sb);
asx3d3_point_sb((LWPOINT *)subgeom, precision, opts, defid, sb);
stringbuffer_aprintf(sb, " ");
}
else if (subgeom->type == LINETYPE)
......@@ -327,7 +340,7 @@ asx3d3_multi_sb(const LWCOLLECTION *col, __attribute__((__unused__)) const char
}
else if (subgeom->type == POLYGONTYPE)
{
asx3d3_poly_sb((LWPOLY*)subgeom, 0, precision, opts, 0, defid, sb);
asx3d3_poly_sb((LWPOLY *)subgeom, precision, opts, 0, defid, sb);
stringbuffer_aprintf(sb, " ");
}
}
......@@ -345,7 +358,7 @@ asx3d3_multi_sb(const LWCOLLECTION *col, __attribute__((__unused__)) const char
* Don't call this with single-geoms inspected!
*/
static int
asx3d3_psurface_sb(const LWPSURFACE *psur, const char *srs, int precision, int opts, const char *defid, stringbuffer_t *sb)
asx3d3_psurface_sb(const LWPSURFACE *psur, int precision, int opts, const char *defid, stringbuffer_t *sb)
{
uint32_t i;
uint32_t j;
......@@ -383,7 +396,7 @@ asx3d3_psurface_sb(const LWPSURFACE *psur, const char *srs, int precision, int o
for (i=0; i<psur->ngeoms; i++)
{
asx3d3_poly_sb(psur->geoms[i], srs, precision, opts, 1, defid, sb);
asx3d3_poly_sb(psur->geoms[i], precision, opts, 1, defid, sb);
if (i < (psur->ngeoms - 1) )
{
stringbuffer_aprintf(sb, " "); /* only add a trailing space if its not the last polygon in the set */
......@@ -398,7 +411,7 @@ asx3d3_psurface_sb(const LWPSURFACE *psur, const char *srs, int precision, int o
* Computes X3D representation of TIN (as IndexedTriangleSet and adds to string buffer)
*/
static int
asx3d3_tin_sb(const LWTIN *tin, __attribute__((__unused__)) const char *srs, int precision, int opts, const char *defid, stringbuffer_t *sb)
asx3d3_tin_sb(const LWTIN *tin, int precision, int opts, const char *defid, stringbuffer_t *sb)
{
uint32_t i;
uint32_t k;
......@@ -422,8 +435,7 @@ asx3d3_tin_sb(const LWTIN *tin, __attribute__((__unused__)) const char *srs, in
for (i=0; i<tin->ngeoms; i++)
{
asx3d3_triangle_sb(tin->geoms[i], 0, precision,
opts, defid, sb);
asx3d3_triangle_sb(tin->geoms[i], precision, opts, defid, sb);
if (i < (tin->ngeoms - 1) )
{
stringbuffer_aprintf(sb, " ");
......@@ -436,7 +448,7 @@ asx3d3_tin_sb(const LWTIN *tin, __attribute__((__unused__)) const char *srs, in
}
static int
asx3d3_collection_sb(const LWCOLLECTION *col, const char *srs, int precision, int opts, const char *defid, stringbuffer_t *sb)
asx3d3_collection_sb(const LWCOLLECTION *col, int precision, int opts, const char *defid, stringbuffer_t *sb)
{
uint32_t i;
LWGEOM *subgeom;
......@@ -454,32 +466,30 @@ asx3d3_collection_sb(const LWCOLLECTION *col, const char *srs, int precision, in
stringbuffer_aprintf(sb, "<Shape%s>", defid);
if ( subgeom->type == POINTTYPE )
{
asx3d3_point_sb((LWPOINT*)subgeom, 0, precision, opts, defid, sb);
asx3d3_point_sb((LWPOINT *)subgeom, precision, opts, defid, sb);
}
else if ( subgeom->type == LINETYPE )
{
asx3d3_line_sb((LWLINE*)subgeom, 0, precision, opts, defid, sb);
asx3d3_line_sb((LWLINE *)subgeom, precision, opts, defid, sb);
}
else if ( subgeom->type == POLYGONTYPE )
{
asx3d3_poly_sb((LWPOLY*)subgeom, 0, precision, opts, 0, defid, sb);
asx3d3_poly_sb((LWPOLY *)subgeom, precision, opts, 0, defid, sb);
}
else if ( subgeom->type == TINTYPE )
{
asx3d3_tin_sb((LWTIN*)subgeom, srs, precision, opts, defid, sb);
asx3d3_tin_sb((LWTIN *)subgeom, precision, opts, defid, sb);
}
else if ( subgeom->type == POLYHEDRALSURFACETYPE )
{
asx3d3_psurface_sb((LWPSURFACE*)subgeom, srs, precision, opts, defid, sb);
asx3d3_psurface_sb((LWPSURFACE *)subgeom, precision, opts, defid, sb);
}
else if ( lwgeom_is_collection(subgeom) )
{
if ( subgeom->type == COLLECTIONTYPE )
asx3d3_collection_sb((LWCOLLECTION*)subgeom, 0, precision, opts, defid, sb);
asx3d3_collection_sb((LWCOLLECTION *)subgeom, precision, opts, defid, sb);
else
asx3d3_multi_sb((LWCOLLECTION*)subgeom, 0, precision, opts, defid, sb);
asx3d3_multi_sb((LWCOLLECTION *)subgeom, precision, opts, defid, sb);
}
else
lwerror("asx3d3_collection_buf: unknown geometry type");
......
......@@ -31,16 +31,18 @@
#include "stringbuffer.h"
/** defid is the id of the coordinate can be used to hold other elements DEF='abc' transform='' etc. **/
static int lwgeom_to_x3d3_sb(const LWGEOM *geom, const char *srs, int precision, int opts, const char *defid, stringbuffer_t *sb);
static int lwgeom_to_x3d3_sb(const LWGEOM *geom, int precision, int opts, const char *defid, stringbuffer_t *sb);
static int asx3d3_point_sb(const LWPOINT *point, const char *srs, int precision, int opts, const char *defid, stringbuffer_t *sb);
static int asx3d3_line_sb(const LWLINE *line, const char *srs, int precision, int opts, const char *defid, stringbuffer_t *sb);
static int asx3d3_point_sb(const LWPOINT *point, int precision, int opts, const char *defid, stringbuffer_t *sb);
static int asx3d3_line_sb(const LWLINE *line, int precision, int opts, const char *defid, stringbuffer_t *sb);
static int asx3d3_triangle_sb(const LWTRIANGLE *triangle, const char *srs, int precision, int opts, const char *defid, stringbuffer_t *sb);
static int
asx3d3_triangle_sb(const LWTRIANGLE *triangle, int precision, int opts, const char *defid, stringbuffer_t *sb);
static int asx3d3_multi_sb(const LWCOLLECTION *col, const char *srs, int precision, int opts, const char *defid, stringbuffer_t *sb);
static int asx3d3_psurface_sb(const LWPSURFACE *psur, const char *srs, int precision, int opts, const char *defid, stringbuffer_t *sb);
static int asx3d3_tin_sb(const LWTIN *tin, const char *srs, int precision, int opts, const char *defid, stringbuffer_t *sb);
static int asx3d3_multi_sb(const LWCOLLECTION *col, int precision, int opts, const char *defid, stringbuffer_t *sb);
static int asx3d3_psurface_sb(const LWPSURFACE *psur, int precision, int opts, const char *defid, stringbuffer_t *sb);
static int asx3d3_tin_sb(const LWTIN *tin, int precision, int opts, const char *defid, stringbuffer_t *sb);
static int asx3d3_collection_sb(const LWCOLLECTION *col, const char *srs, int precision, int opts, const char *defid, stringbuffer_t *sb);
static int
asx3d3_collection_sb(const LWCOLLECTION *col, int precision, int opts, const char *defid, stringbuffer_t *sb);
static int ptarray_to_x3d3_sb(POINTARRAY *pa, int precision, int opts, int is_closed, stringbuffer_t *sb );
......@@ -388,8 +388,6 @@ Datum LWGEOM_asX3D(PG_FUNCTION_ARGS)
GSERIALIZED *geom;
LWGEOM *lwgeom;
int version;
const char *srs;
int32_t srid;
int option = 0;
int precision = DBL_DIG;
static const char* default_defid = "x3d:"; /* default defid */
......@@ -424,7 +422,6 @@ Datum LWGEOM_asX3D(PG_FUNCTION_ARGS)
option = PG_GETARG_INT32(3);
/* retrieve defid */
if (PG_NARGS() >4 && !PG_ARGISNULL(4))
{
......@@ -447,15 +444,10 @@ Datum LWGEOM_asX3D(PG_FUNCTION_ARGS)
}
lwgeom = lwgeom_from_gserialized(geom);
srid = gserialized_get_srid(geom);
if (srid == SRID_UNKNOWN) srs = NULL;
else if (option & 1)
srs = GetSRSCacheBySRID(fcinfo, srid, false);
else
srs = GetSRSCacheBySRID(fcinfo, srid, true);
if (option & LW_X3D_USE_GEOCOORDS) {
if (srid != 4326) {
if (lwgeom->srid != 4326)
{
PG_FREE_IF_COPY(geom, 0);
/** TODO: we need to support UTM and other coordinate systems supported by X3D eventually
http://www.web3d.org/documents/specifications/19775-1/V3.2/Part01/components/geodata.html#t-earthgeoids **/
......@@ -464,7 +456,7 @@ Datum LWGEOM_asX3D(PG_FUNCTION_ARGS)
}
}
PG_RETURN_TEXT_P(lwgeom_to_x3d3(lwgeom, srs, precision, option, defid));
PG_RETURN_TEXT_P(lwgeom_to_x3d3(lwgeom, precision, option, defid));
}
/**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment