rdf4j-postgis  Version 0.1.0.0
PointN Class Reference

Returns the nth point of the given geometry if it exists. More...

Inheritance diagram for PointN:
Collaboration diagram for PointN:

Public Member Functions

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

Protected Member Functions

Geometry relation (Geometry geom, Integer value)
 

Detailed Description

Returns the nth point of the given geometry if it exists.

Member Function Documentation

◆ evaluate()

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

References LiteralRegistry.getLiteral(), and GeometricModifierIntegerFunction.relation().

Referenced by CollectionExtractTest.testCollectionExtract(), GeneratePointsTest.testGeneratePoints(), PointNTest.testLineString(), PrecisionReducerTest.testPrecisionReducer(), RemovePointTest.testRemovePoint(), RemovePointTest.testRemovePointZ(), RemoveRingTest.testRemoveRing(), and ReverseRingTest.testReverseRing().

◆ getURI()

String getURI ( )
17  {
18  return POSTGIS.st_pointN.stringValue();
19  }

References POSTGIS.st_pointN.

◆ relation()

Geometry relation ( Geometry  geom,
Integer  value 
)
protected

Reimplemented from GeometricModifierIntegerFunction.

22  {
23  Coordinate[] coords = geom.getCoordinates();
24  CoordinateXY coord = new CoordinateXY(coords[value].x, coords[value].y);
25  GeometryFactory fac=new GeometryFactory();
26  return fac.createPoint(coord);
27  }