kiwi-postgis  Version 0.1.0.0
ContainsProperly Class Reference
Inheritance diagram for ContainsProperly:
Collaboration diagram for ContainsProperly:

Public Member Functions

String getURI ()
 
Boolean relation (Value v1, Value v2)
 
Boolean containsProperly (Geometry geom1, Geometry geom2)
 
Value evaluate (ValueFactory valueFactory, Value... args) throws ValueExprEvaluationException
 

Static Public Member Functions

static Boolean vectorOrRaster (Literal lit)
 
static Literal getLiteral (Function func, Value v) throws ValueExprEvaluationException
 

Static Public Attributes

static Set< String > rasterLiteralURIs =new TreeSet<String>()
 
static Set< String > vectorLiteralURIs =new TreeSet<String>()
 

Member Function Documentation

◆ containsProperly()

Boolean containsProperly ( Geometry  geom1,
Geometry  geom2 
)

Referenced by ContainsProperly.relation().

52  {
53  if(!geom1.contains(geom2)) {
54  return false;
55  }else {
56  Coordinate oldcoord=null;
57  for(Coordinate coord:geom1.getCoordinates()) {
58  if(oldcoord!=null) {
59  GeometryFactory fac=new GeometryFactory();
60  LineString ls=fac.createLineString(new Coordinate[] {oldcoord,coord});
61  if(ls.intersects(geom2)) {
62  return false;
63  }
64  }
65  oldcoord=coord;
66  }
67  return true;
68  }
69 }

◆ evaluate()

Value evaluate ( ValueFactory  valueFactory,
Value...  args 
) throws ValueExprEvaluationException
inherited

References RasterVectorRelationBinaryFunction.relation().

17  {
18  // TODO Auto-generated method stub
19  return null;
20  }

◆ getLiteral()

static Literal getLiteral ( Function  func,
Value  v 
) throws ValueExprEvaluationException
staticinherited

Referenced by Contains.relation(), Within.relation(), Touches.relation(), Crosses.relation(), Intersects.relation(), Equals.relation(), Disjoint.relation(), Overlaps.relation(), CoveredBy.relation(), and ContainsProperly.relation().

41  {
42  if (!(v instanceof Literal)) {
43  throw new ValueExprEvaluationException("Invalid argument for " + func.getURI() + ": " + v);
44  }
45  Literal lit = (Literal) v;
46  return lit;
47  }

◆ getURI()

String getURI ( )

References POSTGIS.ST_CONTAINSPROPERLY.

20  {
21  return POSTGIS.ST_CONTAINSPROPERLY.stringValue();
22  }

◆ relation()

Boolean relation ( Value  v1,
Value  v2 
)

References ContainsProperly.containsProperly(), RasterVectorRelationBinaryFunction.getLiteral(), LiteralRegistry.getLiteral(), VectorLiteral.read(), RasterLiteral.read(), LiteralUtils.toGeometry(), and RasterVectorRelationBinaryFunction.vectorOrRaster().

25  {
26  Literal lit1=getLiteral(this, v1);
27  Literal lit2=getLiteral(this, v2);
28  Boolean type=vectorOrRaster(getLiteral(this, v1));
29  Boolean type2=vectorOrRaster(getLiteral(this, v2));
30  if(type==null || type2==null) {
31  return null;
32  }else if(type && type2) {
33  VectorLiteral vec1=(VectorLiteral) LiteralRegistry.getLiteral(lit1.getDatatype().toString());
34  VectorLiteral vec2=(VectorLiteral) LiteralRegistry.getLiteral(lit2.getDatatype().toString());
35  return containsProperly(vec1.read(v1.stringValue()),vec2.read(v2.stringValue()));
36  }else if(type && !type2) {
37  VectorLiteral vec1=(VectorLiteral) LiteralRegistry.getLiteral(lit1.getDatatype().toString());
38  RasterLiteral vec2=(RasterLiteral) LiteralRegistry.getLiteral(lit2.getDatatype().toString());
39  return containsProperly(vec1.read(v1.stringValue()),LiteralUtils.toGeometry(vec2.read(v2.stringValue()).getGridGeometry().getEnvelope()));
40  }else if(!type && type2) {
41  RasterLiteral vec1=(RasterLiteral) LiteralRegistry.getLiteral(lit1.getDatatype().toString());
42  VectorLiteral vec2=(VectorLiteral) LiteralRegistry.getLiteral(lit2.getDatatype().toString());
43  return containsProperly(LiteralUtils.toGeometry(((GridCoverage)vec1.read(v1.stringValue())).getGridGeometry().getEnvelope()),vec2.read(v2.stringValue()));
44  }else {
45  RasterLiteral vec1=(RasterLiteral) LiteralRegistry.getLiteral(lit1.getDatatype().toString());
46  RasterLiteral vec2=(RasterLiteral) LiteralRegistry.getLiteral(lit2.getDatatype().toString());
47  return containsProperly(LiteralUtils.toGeometry(((GridCoverage)vec1.read(v1.stringValue())).getGridGeometry().getEnvelope()),LiteralUtils.toGeometry(vec2.read(v2.stringValue()).getGridGeometry().getEnvelope()));
48  }
49  }
Boolean containsProperly(Geometry geom1, Geometry geom2)
Definition: ContainsProperly.java:52
static Boolean vectorOrRaster(Literal lit)
Definition: RasterVectorRelationBinaryFunction.java:29
static Literal getLiteral(Function func, Value v)
Definition: RasterVectorRelationBinaryFunction.java:41

◆ vectorOrRaster()

static Boolean vectorOrRaster ( Literal  lit)
staticinherited

References LiteralRegistry.literals.

Referenced by Contains.relation(), Within.relation(), Touches.relation(), Crosses.relation(), Intersects.relation(), Equals.relation(), Disjoint.relation(), Overlaps.relation(), CoveredBy.relation(), and ContainsProperly.relation().

29  {
30  if(LiteralRegistry.literals.containsKey(lit.getDatatype().toString())) {
31  LiteralType lite=LiteralRegistry.literals.get(lit.getDatatype().toString());
32  if(lite instanceof VectorLiteral) {
33  return true;
34  }else if(lite instanceof RasterLiteral) {
35  return false;
36  }
37  }
38  return null;
39  }

Member Data Documentation

◆ rasterLiteralURIs

Set<String> rasterLiteralURIs =new TreeSet<String>()
staticinherited

◆ vectorLiteralURIs

Set<String> vectorLiteralURIs =new TreeSet<String>()
staticinherited