@Override protected Object visitBinarySpatialOperator( BinarySpatialOperator filter, PropertyName property, Literal geometry, boolean swapped, Object extraData) { return visitBinarySpatialOperator( filter, (Expression) property, (Expression) geometry, swapped, extraData); }
protected Object visitBinarySpatialOperator( BinarySpatialOperator filter, Expression e1, Expression e2, boolean swapped, Object extraData) { double distance = 0; try { if (filter instanceof DistanceBufferOperator) { out.write("ST_Distance("); e1.accept(this, extraData); out.write(", "); e2.accept(this, extraData); out.write(")"); if (filter instanceof DWithin) { out.write("<"); } else if (filter instanceof Beyond) { out.write(">"); } else { throw new RuntimeException("Unknown distance operator"); } distance = getDistanceInNativeUnits((DistanceBufferOperator) filter); out.write(Double.toString(distance)); } else if (filter instanceof BBOX) { // TODO: make a loose bounding box parameter out.write("ST_Intersects("); e1.accept(this, extraData); out.write(",");
@Override protected Object visitBinarySpatialOperator(BinarySpatialOperator filter, PropertyName property, Literal geometry, boolean swapped, Object extraData) { return visitBinarySpatialOperator(filter, (Expression) property, (Expression) geometry, swapped, extraData); }
protected Object visitBinarySpatialOperator(BinarySpatialOperator filter, Expression e1, Expression e2, boolean swapped, Object extraData) { try { if (filter instanceof DistanceBufferOperator) { out.write("ST_Distance("); e1.accept(this, extraData); out.write(", "); e2.accept(this, extraData); out.write(")"); if (filter instanceof DWithin) { out.write("<"); } else if (filter instanceof Beyond) { out.write(">"); } else { throw new RuntimeException("Unknown distance operator"); } out.write(Double.toString(((DistanceBufferOperator)filter).getDistance())); } else if (filter instanceof BBOX) { //TODO: make a loose bounding box parameter out.write("ST_Intersects("); e1.accept(this, extraData); out.write(","); e2.accept(this, extraData); out.write(")"); }