Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.expressionevaluator / org.gvsig.expressionevaluator.geometry / org.gvsig.expressionevaluator.geometry.lib / org.gvsig.expressionevaluator.geometry.lib.impl / src / main / java / org / gvsig / expressionevaluator / impl / function / spatial / STSetSRIDFunction.java @ 44644

History | View | Annotate | Download (1.15 KB)

1 43512 jjdelcerro
package org.gvsig.expressionevaluator.impl.function.spatial;
2
3
import org.apache.commons.lang3.Range;
4 44253 jjdelcerro
import org.cresques.cts.IProjection;
5
import org.gvsig.expressionevaluator.ExpressionRuntimeException;
6 44644 jjdelcerro
import static org.gvsig.expressionevaluator.GeometryExpressionBuilderHelper.FUNCTION_ST_SETSRID;
7 43521 jjdelcerro
import org.gvsig.expressionevaluator.Interpreter;
8 44644 jjdelcerro
import org.gvsig.expressionevaluator.spi.AbstractGeometryFunction;
9 44253 jjdelcerro
import org.gvsig.fmap.crs.CRSFactory;
10 43518 jjdelcerro
import org.gvsig.fmap.geom.Geometry;
11 43512 jjdelcerro
12 44644 jjdelcerro
public class STSetSRIDFunction extends AbstractGeometryFunction {
13 43512 jjdelcerro
14 44253 jjdelcerro
    public STSetSRIDFunction() {
15
        super("OGC", FUNCTION_ST_SETSRID, Range.is(2));
16 43512 jjdelcerro
    }
17
18
    @Override
19 44009 jjdelcerro
    public boolean allowConstantFolding() {
20
        return true;
21
    }
22
23
    @Override
24 43521 jjdelcerro
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
25 44253 jjdelcerro
        Geometry geom = this.getGeom(args, 0);
26
        int srid = this.getInt(args, 1);
27
        IProjection proj = CRSFactory.getCRS("EPSG:"+srid);
28
        if( proj==null ) {
29
            throw new ExpressionRuntimeException("Invalid SRID '"+srid+"'.");
30 43518 jjdelcerro
        }
31 44253 jjdelcerro
        geom.setProjection(proj);
32
        return geom;
33 43512 jjdelcerro
    }
34
35
}