kiwi-postgis  Version 0.1.0.0
LineFromEncodedPolyline Class Reference
Inheritance diagram for LineFromEncodedPolyline:
Collaboration diagram for LineFromEncodedPolyline:

Public Member Functions

Geometry construct (String input)
 
String getURI ()
 
Value evaluate (ValueFactory valueFactory, Value... args) throws ValueExprEvaluationException
 

Static Public Member Functions

static List< CoordinatedecodePolyline (String polyline, int precision)
 

Member Function Documentation

◆ construct()

Geometry construct ( String  input)

References LineFromEncodedPolyline.decodePolyline().

17  {
18  GeometryFactory fac=new GeometryFactory();
19  LineString ls=fac.createLineString(decodePolyline(input, 1).toArray(new Coordinate[0]));
20  return ls;
21  }
static List< Coordinate > decodePolyline(String polyline, int precision)
Definition: openrdf/query/algebra/evaluation/function/postgis/linestring/constructor/LineFromEncodedPolyline.java:23

◆ decodePolyline()

static List<Coordinate> decodePolyline ( String  polyline,
int  precision 
)
static

Referenced by LineFromEncodedPolyline.construct().

24  {
25  List<Coordinate> coordinates = new ArrayList<Coordinate>();
26  int index = 0, shift, result;
27  int byte_;
28  int lat = 0, lng = 0, latitude_change, longitude_change,
29  factor = (int) Math.pow(10, precision);
30 
31  while (index < polyline.length()) {
32  byte_ = 0;
33  shift = 0;
34  result = 0;
35 
36  do {
37  byte_ = polyline.charAt(index++) - 63;
38  result |= (byte_ & 0x1f) << shift;
39  shift += 5;
40  } while (byte_ >= 0x20);
41 
42  latitude_change = ((result % 2 == 1) ? ~(result >> 1) : (result >> 1));
43 
44  shift = result = 0;
45 
46  do {
47  byte_ = polyline.charAt(index++) - 63;
48  result |= (byte_ & 0x1f) << shift;
49  shift += 5;
50  } while (byte_ >= 0x20);
51 
52  longitude_change = ((result % 2 == 1) ? ~(result >> 1) : (result >> 1));
53 
54  lat += latitude_change;
55  lng += longitude_change;
56 
57  coordinates.add(new Coordinate((double)lat / factor,(double)lng / factor));
58  }
59 
60  return coordinates;
61  }

◆ evaluate()

Value evaluate ( ValueFactory  valueFactory,
Value...  args 
) throws ValueExprEvaluationException
inherited

References GeometricConstructor.construct(), and LiteralRegistry.getLiteral().

16  {
17  if (args.length != 1) {
18  throw new ValueExprEvaluationException(getURI() + " requires exactly 1 arguments, got " + args.length);
19  }
20  LiteralType l=LiteralRegistry.getLiteral(((Literal)args[0]).getDatatype().toString());
21  String geomString = args[0].stringValue();
22  Geometry result = construct(geomString);
23  return valueFactory.createLiteral(((VectorLiteral) l).unparse(result),((Literal)args[0]).getDatatype());
24  }

◆ getURI()

String getURI ( )

References POSTGIS.st_lineFromEncodedPolyline.

64  {
65  return POSTGIS.st_lineFromEncodedPolyline.stringValue();
66  }