protected Object operationSameCRS()

in endorsed/src/org.apache.sis.feature/main/org/apache/sis/geometry/wrapper/esri/Wrapper.java [251:292]


    protected Object operationSameCRS(final SQLMM operation, final GeometryWrapper other, final Object argument) {
        final Geometry result;
        switch (operation) {
            case ST_Dimension:        return geometry.getDimension();
            case ST_CoordDim:         return geometry.hasZ() ? Geometries.TRIDIMENSIONAL : Geometries.BIDIMENSIONAL;
            case ST_GeometryType:     return geometry.getType().name();
            case ST_IsEmpty:          return geometry.isEmpty();
            case ST_Is3D:             return geometry.hasZ();
            case ST_IsMeasured:       return geometry.hasM();
            case ST_X:                return ((Point) geometry).getX();
            case ST_Y:                return ((Point) geometry).getY();
            case ST_Z:                return ((Point) geometry).getZ();
            case ST_Envelope:         return getEnvelope();
            case ST_Boundary:         result = geometry.getBoundary(); break;
            case ST_Simplify:         result = GeometryEngine.simplify             (geometry, srs()); break;
            case ST_ConvexHull:       result = GeometryEngine.convexHull           (geometry); break;
            case ST_Buffer:           result = GeometryEngine.buffer               (geometry, srs(), ((Number) argument).doubleValue()); break;
            case ST_Intersection:     result = GeometryEngine.intersect            (geometry, ((Wrapper) other).geometry,  srs()); break;
            case ST_Union:            result = GeometryEngine.union(new Geometry[] {geometry, ((Wrapper) other).geometry}, srs()); break;
            case ST_Difference:       result = GeometryEngine.difference           (geometry, ((Wrapper) other).geometry,  srs()); break;
            case ST_SymDifference:    result = GeometryEngine.symmetricDifference  (geometry, ((Wrapper) other).geometry,  srs()); break;
            case ST_Distance:         return   GeometryEngine.distance             (geometry, ((Wrapper) other).geometry,  srs());
            case ST_Equals:           return   GeometryEngine.equals               (geometry, ((Wrapper) other).geometry,  srs());
            case ST_Disjoint:         return   GeometryEngine.disjoint             (geometry, ((Wrapper) other).geometry,  srs());
            case ST_Touches:          return   GeometryEngine.touches              (geometry, ((Wrapper) other).geometry,  srs());
            case ST_Crosses:          return   GeometryEngine.crosses              (geometry, ((Wrapper) other).geometry,  srs());
            case ST_Within:           return   GeometryEngine.within               (geometry, ((Wrapper) other).geometry,  srs());
            case ST_Contains:         return   GeometryEngine.contains             (geometry, ((Wrapper) other).geometry,  srs());
            case ST_Overlaps:         return   GeometryEngine.overlaps             (geometry, ((Wrapper) other).geometry,  srs());
            case ST_AsText:           return   GeometryEngine.geometryToWkt        (geometry, WktExportFlags.wktExportDefaults);
            case ST_GeomFromText:     return   GeometryEngine.geometryFromWkt((String) argument, WktImportFlags.wktImportDefaults, Geometry.Type.Unknown);
            case ST_PointFromText:    return   GeometryEngine.geometryFromWkt((String) argument, WktImportFlags.wktImportDefaults, Geometry.Type.Point);
            case ST_MPointFromText:   return   GeometryEngine.geometryFromWkt((String) argument, WktImportFlags.wktImportDefaults, Geometry.Type.MultiPoint);
            case ST_LineFromText:     return   GeometryEngine.geometryFromWkt((String) argument, WktImportFlags.wktImportDefaults, Geometry.Type.Line);
            case ST_PolyFromText:     return   GeometryEngine.geometryFromWkt((String) argument, WktImportFlags.wktImportDefaults, Geometry.Type.Polygon);
            case ST_Intersects:       return OperatorIntersects.local().execute(geometry, ((Wrapper) other).geometry, srs(), null);
            case ST_Centroid:         result = new Point(OperatorCentroid2D.local().execute(geometry, null)); break;
            default:                  return super.operationSameCRS(operation, other, argument);
        }
        // Current version does not have metadata to copy, but it may be added in the future.
        return result;
    }