PostGIS 3.7.0dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches
lwgeom_in_encoded_polyline.c
Go to the documentation of this file.
1/**********************************************************************
2 *
3 * PostGIS - Spatial Types for PostgreSQL
4 * http://postgis.net
5 *
6 * PostGIS is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * PostGIS is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with PostGIS. If not, see <http://www.gnu.org/licenses/>.
18 *
19 **********************************************************************
20 *
21* Copyright 2014 Kashif Rasul <kashif.rasul@gmail.com> and
22 *
23 **********************************************************************/
24
25
26#include <assert.h>
27
28#include "postgres.h"
29#include "utils/builtins.h"
30
31#include "../postgis_config.h"
32#include "lwgeom_pg.h"
33#include "liblwgeom.h"
34
35Datum line_from_encoded_polyline(PG_FUNCTION_ARGS);
36
38Datum line_from_encoded_polyline(PG_FUNCTION_ARGS)
39{
40 GSERIALIZED *geom;
41 LWGEOM *lwgeom;
42 text *encodedpolyline_input;
43 char *encodedpolyline;
44 int precision = 5;
45
46 if (PG_ARGISNULL(0)) PG_RETURN_NULL();
47
48 encodedpolyline_input = PG_GETARG_TEXT_P(0);
49 encodedpolyline = text_to_cstring(encodedpolyline_input);
50
51 if (PG_NARGS() > 1 && !PG_ARGISNULL(1))
52 {
53 precision = PG_GETARG_INT32(1);
54 if ( precision < 0 ) precision = 5;
55 }
56
57 lwgeom = lwgeom_from_encoded_polyline(encodedpolyline, precision);
58 if ( ! lwgeom ) {
59 /* Shouldn't get here */
60 elog(ERROR, "lwgeom_from_encoded_polyline returned NULL");
61 PG_RETURN_NULL();
62 }
63 lwgeom_set_srid(lwgeom, 4326);
64
65 geom = geometry_serialize(lwgeom);
66 lwgeom_free(lwgeom);
67 PG_RETURN_POINTER(geom);
68}
static uint8_t precision
Definition cu_in_twkb.c:25
void lwgeom_set_srid(LWGEOM *geom, int32_t srid)
Set the SRID on an LWGEOM For collections, only the parent gets an SRID, all the children get SRID_UN...
Definition lwgeom.c:1638
void lwgeom_free(LWGEOM *geom)
Definition lwgeom.c:1246
LWGEOM * lwgeom_from_encoded_polyline(const char *encodedpolyline, int precision)
Create an LWGEOM object from an Encoded Polyline representation.
This library is the generic geometry handling section of PostGIS.
PG_FUNCTION_INFO_V1(line_from_encoded_polyline)
Datum line_from_encoded_polyline(PG_FUNCTION_ARGS)