rdf4j-postgis  Version 0.1.0.0
AsEncodedPolyline Class Reference

Encodes a LineString as into the Polyline String dataformat. More...

Inheritance diagram for AsEncodedPolyline:
Collaboration diagram for AsEncodedPolyline:

Public Member Functions

String operation (Geometry geom)
 
String getURI ()
 
Value evaluate (ValueFactory valueFactory, Value... args) throws ValueExprEvaluationException
 

Static Public Member Functions

static String encodePolyline (final LineString linestring)
 

Static Private Member Functions

static void encode (long v, StringBuffer result)
 

Detailed Description

Encodes a LineString as into the Polyline String dataformat.

Member Function Documentation

◆ encode()

static void encode ( long  v,
StringBuffer  result 
)
staticprivate
47  {
48  v = v < 0 ? ~(v << 1) : v << 1;
49  while (v >= 0x20) {
50  result.append(Character.toChars((int) ((0x20 | (v & 0x1f)) + 63)));
51  v >>= 5;
52  }
53  result.append(Character.toChars((int) (v + 63)));
54  }

Referenced by AsEncodedPolyline.encodePolyline().

◆ encodePolyline()

static String encodePolyline ( final LineString  linestring)
static
25  {
26  long lastLat = 0;
27  long lastLng = 0;
28 
29  final StringBuffer result = new StringBuffer();
30 
31  for (final Coordinate point : linestring.getCoordinates()) {
32  long lat = Math.round(point.x * 1e5);
33  long lng = Math.round(point.y * 1e5);
34 
35  long dLat = lat - lastLat;
36  long dLng = lng - lastLng;
37 
38  encode(dLat, result);
39  encode(dLng, result);
40 
41  lastLat = lat;
42  lastLng = lng;
43  }
44  return result.toString();
45  }
static void encode(long v, StringBuffer result)
Definition: AsEncodedPolyline.java:47

References AsEncodedPolyline.encode().

Referenced by AsEncodedPolyline.operation().

◆ evaluate()

Value evaluate ( ValueFactory  valueFactory,
Value...  args 
) throws ValueExprEvaluationException
inherited
16  {
17  if (args.length != 1) {
18  throw new ValueExprEvaluationException(getURI() + " requires exactly 1 arguments, got " + args.length);
19  }
20 
21  LiteralType l=LiteralRegistry.getLiteral(((Literal)args[0]).getDatatype().toString());
22  if(l instanceof VectorLiteral) {
23  Geometry geom=((VectorLiteral)l).read(args[0].stringValue());
24  String result = operation(geom);
25  return valueFactory.createLiteral(result);
26  }
27  throw new ValueExprEvaluationException("Argument given is not a geometry literal");
28 
29  }

References LiteralRegistry.getLiteral(), and GeometricStringExportFunction.operation().

Referenced by AsBinaryTest.testAsBinary(), AsEncodedPolylineTest.testAsEncodedPolyline(), AsGARSTest.testAsGARS(), AsGeoJSONTest.testAsGeoJSON(), AsGeoRSSTest.testAsGeoRSS(), AsGeoURITest.testAsGeoURI(), AsLatLonTextTest.testAsLatLonText(), AsOSMLinkTest.testAsOSMLink(), AsPolyshapeTest.testAsPolyShape(), AsTextTest.testAsText(), AsTextRawTest.testAsTextRaw(), AsTextTest.testAsTextZ(), DumpTest.testDump(), GeomCRSToWKTTest.testGeomCRSToWKT(), GeometryTypeTest.testLineString(), SridGetAxis1OrientationTest.testSridAxis1Orientation(), SridGetAxis2OrientationTest.testSridAxis2Orientation(), SridGetAxis1NameTest.testSridGetAxis1Name(), SridGetAxis2NameTest.testSridGetAxis2Name(), and SridGetDatumTest.testSridGetDatum().

◆ getURI()

String getURI ( )
57  {
58  return POSTGIS.ST_ASENCODEDPOLYLINE.stringValue();
59  }

References POSTGIS.ST_ASENCODEDPOLYLINE.

◆ operation()

String operation ( Geometry  geom)

Reimplemented from GeometricStringExportFunction.

17  {
18  if (geom instanceof LineString) {
19  String result=encodePolyline((LineString)geom);
20  return result;
21  }
22  return null;
23  }
static String encodePolyline(final LineString linestring)
Definition: AsEncodedPolyline.java:25

References AsEncodedPolyline.encodePolyline().