rdf4j-postgis  Version 0.1.0.0
IsConvex Class Reference

Returns true if the given geometry is convex. More...

Inheritance diagram for IsConvex:
Collaboration diagram for IsConvex:

Public Member Functions

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

Static Public Member Functions

static boolean isConvex (Polygon p)
 

Detailed Description

Returns true if the given geometry is convex.

Member Function Documentation

◆ attribute()

boolean attribute ( Geometry  geom)

Reimplemented from GeometricBinaryAttributeFunction.

18  {
19  if (geom instanceof LinearRing || geom instanceof Polygon) {
20  boolean isConvex = isConvex((Polygon)geom);
21  return isConvex;
22  }
23  return false;
24  }

References IsConvex.isConvex().

◆ evaluate()

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

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

Referenced by IsCollectionTest.testGeometryCollectionIsCollection(), HasConnectedInteriorTest.testHasConnectedInteriorFalse(), HasConnectedInteriorTest.testHasConnectedInteriorTrue(), HasDuplicateRingsTest.testHasDuplicateRingsFalse(), HasDuplicateRingsTest.testHasDuplicateRingsTrue(), HasHorizontalCRSTest.testHasHorizontalCRSFalse(), HasHorizontalCRSTest.testHasHorizontalCRSTrue(), HasRepeatedPointsTest.testHasRepeatedPoints(), HasRepeatedPointsTest.testHasRepeatedPoints2(), HasSelfIntersectionsTest.testHasSelfIntersectionsFalse(), HasSelfIntersectionsTest.testHasSelfIntersectionsTrue(), Is3DTest.testIs3DFalse(), IsAcuteTest.testIsAcuteFalse(), IsAcuteTest.testIsAcuteTrue(), IsConvexTest.testIsConvexFalse(), IsConvexTest.testIsConvexTrue(), IsEmptyTest.testIsEmptyFalse(), IsEmptyTest.testIsEmptyTrue(), IsEquilateralTriangleTest.testIsEquilateralTriangleFalse(), IsEquilateralTriangleTest.testIsEquilateralTriangleTrue(), IsIsocelesTriangleTest.testIsIsocelesTriangleFalse(), IsIsocelesTriangleTest.testIsIsocelesTriangleTrue(), IsMeasuredTest.testIsMeasuredFalse(), IsMeasuredTest.testIsMeasuredTrue(), IsNodingValidTest.testIsNodingValuedTrue(), IsObliqueTriangleTest.testIsObliqueTriangleFalse(), IsObtuseTriangleTest.testIsObliqueTriangleFalse(), IsObliqueTriangleTest.testIsObliqueTriangleTrue(), IsObtuseTriangleTest.testIsObliqueTriangleTrue(), IsPlanarTest.testIsPlanarTrue(), IsPolygonCCWTest.testIsPolygonCCWFalse(), IsPolygonCCWTest.testIsPolygonCCWTrue(), IsPolygonCWTest.testIsPolygonCWFalse(), IsPolygonCWTest.testIsPolygonCWTrue(), IsRectangleTest.testIsRectangleFalse(), IsRectangleTest.testIsRectangleTrue(), IsRightTriangleTest.testIsRightTriangleFalse(), IsRightTriangleTest.testIsRightTriangleTrue(), IsSolidTest.testIsSolidFalse(), IsSquareTest.testIsSquareFalse(), IsSquareTest.testIsSquareTrue(), IsTriangleTest.testIsTriangleFalse(), IsTriangleTest.testIsTriangleTrue(), IsValidTest.testIsValidFalse(), IsValidTest.testIsValidTrue(), IsClosedTest.testLineStringClosed(), IsCollectionTest.testLineStringIsCollection(), IsRingTest.testLineStringIsNotRing(), IsRingTest.testLineStringIsRing(), IsClosedTest.testLineStringNotClosed(), IsCollectionTest.testMultiLineStringIsCollection(), IsClosedTest.testMultiLineStringNotClosed(), IsClosedTest.testmultiPointClosed(), IsCollectionTest.testMultiPointIsCollection(), IsCollectionTest.testMultiPolygonIsCollection(), IsClosedTest.testpointClosed(), IsCollectionTest.testPointIsCollection(), IsCollectionTest.testPolygonIsCollection(), SridHasFlippedAxisTest.testSridHasFlippedAxis(), SridIsGeographicTest.testSridIsGeographicFalse(), SridIsGeographicTest.testSridIsGeographicTrue(), SridIsProjectedTest.testSridIsProjectedTrue(), and SridIsVerticalTest.testSridIsVerticalTrue().

◆ getURI()

String getURI ( )
50  {
51  return POSTGIS.st_isConvex.stringValue();
52  }

References POSTGIS.st_isConvex.

◆ isConvex()

static boolean isConvex ( Polygon  p)
static
27  {
28  LinearRing r = (LinearRing) p.getExteriorRing();
29  int sign = 0;
30  for(int i = 1; i < r.getNumPoints(); ++i) {
31  Coordinate c0 = r.getCoordinateN(i == 0 ? r.getNumPoints() - 1 : i - 1);
32  Coordinate c1 = r.getCoordinateN(i);
33  Coordinate c2 = r.getCoordinateN(i == r.getNumPoints() - 1 ? 0 : i + 1);
34  double dx1 = c1.x - c0.x;
35  double dy1 = c1.y - c0.y;
36  double dx2 = c2.x - c1.x;
37  double dy2 = c2.y - c2.y;
38  double z = dx1 * dy2 - dy1 * dx2;
39  int s = z >= 0.0 ? 1 : -1;
40  if(sign == 0) {
41  sign = s;
42  } else if(sign != s) {
43  return false;
44  }
45  }
46  return true;
47  }

Referenced by IsConvex.attribute().