rdf4j-postgis  Version 0.1.0.0
CentroidDistance Class Reference

Calculates the euclidean distance between the centroids of two given geometries. More...

Inheritance diagram for CentroidDistance:
Collaboration diagram for CentroidDistance:

Public Member Functions

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

Protected Member Functions

double relation (Geometry g1, Geometry g2)
 

Detailed Description

Calculates the euclidean distance between the centroids of two given geometries.

Member Function Documentation

◆ evaluate()

Value evaluate ( ValueFactory  valueFactory,
Value...  args 
) throws ValueExprEvaluationException
inherited
17  {
18  if (args.length != 2) {
19  throw new ValueExprEvaluationException(getURI() + " requires exactly 2 arguments, got " + args.length);
20  }
21 
22  LiteralType l=LiteralRegistry.getLiteral(((Literal)args[0]).getDatatype().toString());
23  LiteralType l2=LiteralRegistry.getLiteral(((Literal)args[1]).getDatatype().toString());
24  if(l instanceof VectorLiteral && l2 instanceof VectorLiteral) {
25  Geometry geom=((VectorLiteral)l).read(args[0].stringValue());
26  Geometry geom2=((VectorLiteral)l2).read(args[1].stringValue());
27  Geometry transformed=LiteralUtils.transform(geom2, geom);
28  double result = relation(geom,transformed);
29  return valueFactory.createLiteral(result);
30  }
31  throw new ValueExprEvaluationException("Arguments given are not a geometry literal");
32 
33  }

References LiteralRegistry.getLiteral(), GeometricRelationDoubleFunction.relation(), and LiteralUtils.transform().

Referenced by AreaSimilarityTest.testAreaSimilarity(), AreaSimilarityTest.testAreaSimilarity2(), BBOXDistanceTest.testBBOXDistance(), CentroidDistanceTest.testCentroidDistance(), CentroidDistanceTest.testCentroidDistance2(), DistanceSphereTest.testDistanceSphere(), DistanceSphereTest.testDistanceSphere2(), HausdorffDistanceTest.testHausdorffDistance(), IntersectionPercentageTest.testIntersectionPercentage(), IntersectionPercentageTest.testIntersectionPercentage2(), ManhattanDistanceTest.testManhattanDistance(), MaxDistanceTest.testMaxDistance(), and MaxDistance3DTest.testMaxDistance3D().

◆ getURI()

String getURI ( )
14  {
15  return POSTGIS.ST_CENTROIDDISTANCE.stringValue();
16  }

References POSTGIS.ST_CENTROIDDISTANCE.

◆ relation()

double relation ( Geometry  g1,
Geometry  g2 
)
protected

Reimplemented from GeometricRelationDoubleFunction.

19  {
20  return g1.getCentroid().distance(g2.getCentroid());
21  }