rdf4j-postgis  Version 0.1.0.0
Circularity Class Reference

Calculates a circularity score for a given polygon. More...

Inheritance diagram for Circularity:
Collaboration diagram for Circularity:

Public Member Functions

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

Detailed Description

Calculates a circularity score for a given polygon.

Member Function Documentation

◆ attribute()

double attribute ( Geometry  geom)

Reimplemented from GeometricDoubleAttributeFunction.

19  {
20  if (geom instanceof Polygon) {
21  double areasum=0.,perimetersum=0.;
22  for(int i=0;i<geom.getNumGeometries();i++) {
23  areasum+=geom.getArea();
24  perimetersum+=geom.getLength();
25  }
26  return (4*Math.PI*areasum)/(perimetersum*perimetersum);
27  }
28  return 0.;
29  }

◆ 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  double result = attribute(geom);
25  return valueFactory.createLiteral(result);
26  }
27  throw new ValueExprEvaluationException("Argument given is not a geometry literal");
28 
29  }

References GeometricDoubleAttributeFunction.attribute(), and LiteralRegistry.getLiteral().

Referenced by AreaTest.testArea(), CompactnessRatioTest.testCompactnessRatio(), CompactnessRatioTest.testCompactnessRatioNaN(), CircularityTest.testIsScaleneTriangleFalse(), CircularityTest.testIsScaleneTriangleTrue(), LengthTest.testLineString(), MTest.testM(), MinimumBoundingRadiusTest.testMinimumBoundingRadius(), MinimumClearanceTest.testMinimumClearance(), MinimumDiameterTest.testMinimumDiameter(), MaxMTest.testMMax(), MinMTest.testMMin(), PerimeterTest.testPerimeter(), XTest.testX(), MaxXTest.testXMax(), MinXTest.testXMin(), YTest.testY(), MaxYTest.testYMax(), MinYTest.testYMin(), ZTest.testZ(), MaxZTest.testZMax(), and MinZTest.testZMin().

◆ getURI()

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

References POSTGIS.st_circularity.