rdf4j-postgis  Version 0.1.0.0
CollectionHomogenize Class Reference
Inheritance diagram for CollectionHomogenize:
Collaboration diagram for CollectionHomogenize:

Public Member Functions

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

Protected Member Functions

Geometry operation (Geometry collection)
 

Member Function Documentation

◆ evaluate()

Value evaluate ( ValueFactory  valueFactory,
Value...  args 
) throws ValueExprEvaluationException
inherited
16  {
17  if (args.length != 1) {
18  throw new ValueExprEvaluationException(getURI() + " requires exactly 1 argument, 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  Geometry result = operation(geom);
25  return valueFactory.createLiteral(((VectorLiteral) l).unparse(result),((Literal)args[0]).getDatatype());
26  }
27  throw new ValueExprEvaluationException("Argument given is not a geometry literal");
28  }

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

Referenced by BoundaryTest.testBoundary(), BoundingDiagonalTest.testBoundingDiagonal(), CentroidTest.testCentroid(), StartPointTest.testCircularString(), CircumcentreTest.testCircumcentre1(), CollectionHomogenizeTest.testCollectionHomogenize(), FlipCoordinatesTest.testFlipCoordinates(), Force2DTest.testForce2D(), Force3DTest.testForce3D(), Force3DMTest.testForce3DM(), Force3DMTest.testForce3DM2(), Force4DTest.testForce4D(), ForceCollectionTest.testForceCollection(), ForceCollectionTest.testForceCollectionZ(), ForcePolygonCCWTest.testForcePolygonCCW(), ForcePolygonCWTest.testForcePolygonCW(), EndPointTest.testLineString2D(), StartPointTest.testLineString2D(), EndPointTest.testLineString3D(), StartPointTest.testLineString3D(), MinimumBoundingCircleCenterTest.testMinimumBoundingCircle(), MinimumBoundingCircleTest.testMinimumBoundingCircle(), MinimumClearanceLineTest.testMinimumClearanceLine(), MinimumDiameterLineTest.testMinimumDiameterLine(), MinimumRectangleTest.testMinimumRectangle(), MultiTest.testMulti2D(), MultiTest.testMulti3D(), SelfIntersectionsTest.testNoSelfIntersections(), EndPointTest.testPoint(), StartPointTest.testPoint(), PointsTest.testPoints(), PointsTest.testPoints3D(), ReverseTest.testReverse(), SelfIntersectionsTest.testSelfIntersections(), ShiftLongitudeTest.testShiftLongitude(), SimplifyPreserveTopologyTest.testSimplifyVW(), and TransScaleTest.testTransScale().

◆ getURI()

String getURI ( )
18  {
19  return POSTGIS.ST_COLLECTIONHOMOGENIZE.stringValue();
20  }

References POSTGIS.ST_COLLECTIONHOMOGENIZE.

◆ operation()

Geometry operation ( Geometry  collection)
protected

Reimplemented from GeometricUnaryFunction.

22  {
23  GeometryFactory fac=new GeometryFactory();
24  if(collection.getNumGeometries()==1) {
25  Geometry singlegeom=collection.getGeometryN(0);
26  return singlegeom;
27  }else if(collection.getNumGeometries()==0) {
28  return collection;
29  }else {
30  switch(collection.getGeometryN(0).getGeometryType()) {
31  case "Point":
32  List<Coordinate> coords=new ArrayList<Coordinate>();
33  for(int i=0;i<collection.getNumGeometries();i++) {
34  for(Coordinate coord2:collection.getGeometryN(i).getCoordinates()) {
35  coords.add(coord2);
36  }
37  }
38  return fac.createMultiPointFromCoords(coords.toArray(new Coordinate[0]));
39  case "LineString":
40  List<LineString> lines=new ArrayList<LineString>();
41  for(int i=0;i<collection.getNumGeometries();i++) {
42  lines.add((LineString)collection.getGeometryN(i));
43  }
44  return fac.createMultiLineString(lines.toArray(new LineString[0]));
45  case "Polygon":
46  List<Polygon> polys=new ArrayList<Polygon>();
47  for(int i=0;i<collection.getNumGeometries();i++) {
48  polys.add((Polygon)collection.getGeometryN(i));
49  }
50  return fac.createMultiPolygon(polys.toArray(new Polygon[0]));
51  }
52  }
53  return null;
54  }