Package org.geotools.filter.function

Source Code of org.geotools.filter.function.StaticGeometry

/*
*    GeoTools - The Open Source Java GIS Toolkit
*    http://geotools.org
*
*    (C) 2005-2008, Open Source Geospatial Foundation (OSGeo)
*
*    This library is free software; you can redistribute it and/or
*    modify it under the terms of the GNU Lesser General Public
*    License as published by the Free Software Foundation;
*    version 2.1 of the License.
*
*    This library is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
*    Lesser General Public License for more details.
*/
package org.geotools.filter.function;

import java.util.Collection;

import com.vividsolutions.jts.operation.polygonize.Polygonizer;

import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.GeometryCollection;

import com.vividsolutions.jts.geom.LineString;
import com.vividsolutions.jts.geom.LinearRing;
import com.vividsolutions.jts.geom.MultiLineString;
import com.vividsolutions.jts.geom.MultiPoint;
import com.vividsolutions.jts.geom.MultiPolygon;
import com.vividsolutions.jts.geom.Point;
import com.vividsolutions.jts.geom.Polygon;
import com.vividsolutions.jts.io.WKTReader;

public class StaticGeometry {

    // --------------------------------------------------------------------------
    // JTS SF SQL functions

    static public Geometry geomFromWKT(String wkt) {
        WKTReader wktreader = new WKTReader();

        try {
            return wktreader.read(wkt);
        } catch (Exception e) {
            throw new IllegalArgumentException("bad wkt");
        }
    }

    static public String toWKT(Geometry arg0) {
        Geometry _this = arg0;

        return _this.toString();
    }

    static public boolean contains(Geometry arg0, Geometry arg1) {
        Geometry _this = arg0;

        return _this.contains(arg1);
    }

    static public boolean isEmpty(Geometry arg0) {
        Geometry _this = arg0;

        return _this.isEmpty();
    }

    static public double geomLength(Geometry arg0) {
        Geometry _this = arg0;

        return _this.getLength();
    }

    static public boolean intersects(Geometry arg0, Geometry arg1) {
        Geometry _this = arg0;

        return _this.intersects(arg1);
    }

    static public boolean isValid(Geometry arg0) {
        Geometry _this = arg0;

        return _this.isValid();
    }

    static public String geometryType(Geometry arg0) {
        Geometry _this = arg0;

        return _this.getGeometryType();
    }

    static public int numPoints(Geometry arg0) {
        Geometry _this = arg0;

        return _this.getNumPoints();
    }

    static public boolean isSimple(Geometry arg0) {
        Geometry _this = arg0;

        return _this.isSimple();
    }

    static public double distance(Geometry arg0, Geometry arg1) {
        Geometry _this = arg0;

        return _this.distance(arg1);
    }

    static public boolean isWithinDistance(Geometry arg0, Geometry arg1,
            double arg2) {
        Geometry _this = arg0;

        return _this.isWithinDistance(arg1, arg2);
    }

    static public double area(Geometry arg0) {
        Geometry _this = arg0;

        return _this.getArea();
    }

    static public Geometry centroid(Geometry arg0) {
        Geometry _this = arg0;

        return _this.getCentroid();
    }

    static public Geometry interiorPoint(Geometry arg0) {
        Geometry _this = arg0;

        return _this.getInteriorPoint();
    }

    static public int dimension(Geometry arg0) {
        Geometry _this = arg0;

        return _this.getDimension();
    }

    static public Geometry boundary(Geometry arg0) {
        Geometry _this = arg0;

        return _this.getBoundary();
    }

    static public int boundaryDimension(Geometry arg0) {
        Geometry _this = arg0;

        return _this.getBoundaryDimension();
    }

    static public Geometry envelope(Geometry arg0) {
        Geometry _this = arg0;

        return _this.getEnvelope();
    }

    static public boolean disjoint(Geometry arg0, Geometry arg1) {
        Geometry _this = arg0;

        return _this.disjoint(arg1);
    }

    static public boolean touches(Geometry arg0, Geometry arg1) {
        Geometry _this = arg0;

        return _this.touches(arg1);
    }

    static public boolean crosses(Geometry arg0, Geometry arg1) {
        Geometry _this = arg0;

        return _this.crosses(arg1);
    }

    static public boolean within(Geometry arg0, Geometry arg1) {
        Geometry _this = arg0;

        return _this.within(arg1);
    }

    static public boolean overlaps(Geometry arg0, Geometry arg1) {
        Geometry _this = arg0;

        return _this.overlaps(arg1);
    }

    static public boolean relatePattern(Geometry arg0, Geometry arg1,
            String arg2) {
        Geometry _this = arg0;

        return _this.relate(arg1, arg2);
    }

    static public String relate(Geometry arg0, Geometry arg1) {
        Geometry _this = arg0;

        return _this.relate(arg1).toString();
    }

    static public Geometry bufferWithSegments(Geometry arg0, double arg1,
            int arg2) {
        Geometry _this = arg0;

        return _this.buffer(arg1, arg2);
    }

    static public Geometry buffer(Geometry arg0, double arg1) {
        Geometry _this = arg0;

        return _this.buffer(arg1);
    }

    static public Geometry convexHull(Geometry arg0) {
        Geometry _this = arg0;

        return _this.convexHull();
    }

    static public Geometry intersection(Geometry arg0, Geometry arg1) {
        Geometry _this = arg0;

        return _this.intersection(arg1);
    }

    static public Geometry union(Geometry arg0, Geometry arg1) {
        Geometry _this = arg0;

        return _this.union(arg1);
    }

    static public Geometry difference(Geometry arg0, Geometry arg1) {
        Geometry _this = arg0;

        return _this.difference(arg1);
    }

    static public Geometry symDifference(Geometry arg0, Geometry arg1) {
        Geometry _this = arg0;

        return _this.symDifference(arg1);
    }

    static public boolean equalsExactTolerance(Geometry arg0, Geometry arg1,
            double arg2) {
        Geometry _this = arg0;

        return _this.equalsExact(arg1, arg2);
    }

    static public boolean equalsExact(Geometry arg0, Geometry arg1) {
        Geometry _this = arg0;

        return _this.equalsExact(arg1);
    }

    static public int numGeometries(Geometry arg0) {
        GeometryCollection _this = (GeometryCollection) arg0;

        return _this.getNumGeometries();
    }

    static public Geometry getGeometryN(Geometry arg0, int arg1) {
        GeometryCollection _this = (GeometryCollection) arg0;

        return _this.getGeometryN(arg1);
    }

    static public double getX(Geometry arg0) {
        Point _this = (Point) arg0;

        return _this.getX();
    }

    static public double getY(Geometry arg0) {
        Point _this = (Point) arg0;

        return _this.getY();
    }

    static public boolean isClosed(Geometry arg0) {
        LineString _this = (LineString) arg0;

        return _this.isClosed();
    }

    static public Geometry pointN(Geometry arg0, int arg1) {
        LineString _this = (LineString) arg0;

        return _this.getPointN(arg1);
    }

    static public Geometry startPoint(Geometry arg0) {
        LineString _this = (LineString) arg0;

        return _this.getStartPoint();
    }

    static public Geometry endPoint(Geometry arg0) {
        LineString _this = (LineString) arg0;

        return _this.getEndPoint();
    }

    static public boolean isRing(Geometry arg0) {
        LineString _this = (LineString) arg0;

        return _this.isRing();
    }

    static public Geometry exteriorRing(Geometry arg0) {
        Polygon _this = (Polygon) arg0;

        return _this.getExteriorRing();
    }

    static public int numInteriorRing(Geometry arg0) {
        Polygon _this = (Polygon) arg0;

        return _this.getNumInteriorRing();
    }

    static public Geometry interiorRingN(Geometry arg0, int arg1) {
        Polygon _this = (Polygon) arg0;

        return _this.getInteriorRingN(arg1);
    }

    // --------------------------------------------------------------------------
    // JAVA String functions

    static public String strConcat(String s1, String s2) {
        return s1 + s2;
    }

    static public boolean strEndsWith(String s1, String s2) {
        return s1.endsWith(s2);
    }

    static public boolean strStartsWith(String s1, String s2) {
        return s1.startsWith(s2);
    }

    static public boolean strEqualsIgnoreCase(String s1, String s2) {
        return s1.equalsIgnoreCase(s2);
    }

    static public int strIndexOf(String s1, String s2) {
        return s1.indexOf(s2);
    }

    static public int strLastIndexOf(String s1, String s2) {
        return s1.lastIndexOf(s2);
    }

    static public int strLength(String s1) {
        return s1.length();
    }

    static public boolean strMatches(String s1, String s2) {
        return s1.matches(s2);
    }

    static public String strSubstring(String s1, int beg, int end) {
        return s1.substring(beg, end);
    }

    static public String strSubstringStart(String s1, int beg) {
        return s1.substring(beg);
    }

    static public String strTrim(String s1) {
        return s1.trim();
    }

    // --------------------------------------------------------------------------
    // data type xform

    static public double parseDouble(String s) {
        return Double.parseDouble(s);
    }

    static public int parseInt(String s) {
        try {
            return Integer.parseInt(s);
        } catch (NumberFormatException e) // be nice for silly people!
        {
            return (int) Math.round(Double.parseDouble(s));
        }
    }

    static public boolean parseBoolean(String s) {
        if (s.equalsIgnoreCase("") || s.equalsIgnoreCase("f")
                || s.equalsIgnoreCase("false") || s.equalsIgnoreCase("0")
                || s.equalsIgnoreCase("0.0"))
            return false;
        return true;
    }

    static public int roundDouble(double d) {
        return (int) Math.round(d);
    }

    static public double int2ddouble(int i) {
        return (double) i;
    }

    static public boolean int2bbool(int i) {
        return i == 0;
    }

    static public boolean double2bool(double d) {
        return d == 0;
    }

    static public Object if_then_else(boolean p, Object a, Object b) {
        if (p)
            return a;
        else
            return b;
    }

    // --------------------------------------------------------------------------
    // OGC Filter comparisionOP functions

    static public boolean equalTo(Object o1, Object o2) {
        if (o1.getClass() == o2.getClass())
            return o1.equals(o2);
        if ((o1 instanceof Number) && (o2 instanceof Number)) {
            return ((Number) o1).doubleValue() == ((Number) o2).doubleValue();
        }
        return (o1).toString().equals((o2).toString());
    }

    static public boolean notEqualTo(Object o1, Object o2) {
        return !(equalTo(o1, o2));
    }

    static public boolean lessThan(Object o1, Object o2) {
        if ((o1 instanceof Integer) && (o2 instanceof Integer)) {
            return ((Integer) o1).intValue() < ((Integer) o2).intValue();
        }
        if ((o1 instanceof Number) && (o2 instanceof Number)) {
            return ((Number) o1).doubleValue() < ((Number) o2).doubleValue();
        }
        return (o1).toString().compareTo((o2).toString()) == 0;
    }

    static public boolean greaterThan(Object o1, Object o2) {
        if ((o1 instanceof Integer) && (o2 instanceof Integer)) {
            return ((Integer) o1).intValue() > ((Integer) o2).intValue();
        }
        if ((o1 instanceof Number) && (o2 instanceof Number)) {
            return ((Number) o1).doubleValue() > ((Number) o2).doubleValue();
        }
        return (o1).toString().compareTo((o2).toString()) == 2;
    }

    static public boolean greaterEqualThan(Object o1, Object o2) {
        if ((o1 instanceof Integer) && (o2 instanceof Integer)) {
            return ((Integer) o1).intValue() >= ((Integer) o2).intValue();
        }
        if ((o1 instanceof Number) && (o2 instanceof Number)) {
            return ((Number) o1).doubleValue() >= ((Number) o2).doubleValue();
        }
        return (((o1).toString().compareTo((o2).toString()) == 2) || ((o1)
                .toString().compareTo((o2).toString()) == 1));
    }

    static public boolean lessEqualThan(Object o1, Object o2) {
        if ((o1 instanceof Integer) && (o2 instanceof Integer)) {
            return ((Integer) o1).intValue() <= ((Integer) o2).intValue();
        }
        if ((o1 instanceof Number) && (o2 instanceof Number)) {
            return ((Number) o1).doubleValue() <= ((Number) o2).doubleValue();
        }
        return (((o1).toString().compareTo((o2).toString()) == 0) || ((o1)
                .toString().compareTo((o2).toString()) == 1));
    }

    static public boolean isLike(String s1, String s2) {
        return s1.matches(s2); // this sucks, but hay...
    }

    static public boolean isNull(Object o) {
        return o == null;
    }

    static public boolean between(Object o, Object o_low, Object o_high) {

        return StaticGeometry.greaterEqualThan(o, o_low)
                && StaticGeometry.lessEqualThan(o, o_high);
    }

    static public boolean not(boolean b) {
        return !b;
    }

    // --------------------------------------------------------------------------
    // SQL "var in (list)"

    static public boolean in2(Object s, Object s1, Object s2) {
        return (equalTo(s, s1) || equalTo(s, s2));
    }

    static public boolean in3(Object s, Object s1, Object s2, Object s3) {
        return (equalTo(s, s1) || equalTo(s, s2) || equalTo(s, s3));
    }

    static public boolean in4(Object s, Object s1, Object s2, Object s3,
            Object s4) {
        return (equalTo(s, s1) || equalTo(s, s2) || equalTo(s, s3) || equalTo(
                s, s4));
    }

    static public boolean in5(Object s, Object s1, Object s2, Object s3,
            Object s4, Object s5) {
        return (equalTo(s, s1) || equalTo(s, s2) || equalTo(s, s3)
                || equalTo(s, s4) || equalTo(s, s5));
    }

    static public boolean in6(Object s, Object s1, Object s2, Object s3,
            Object s4, Object s5, Object s6) {
        return (equalTo(s, s1) || equalTo(s, s2) || equalTo(s, s3)
                || equalTo(s, s4) || equalTo(s, s5) || equalTo(s, s6));
    }

    static public boolean in7(Object s, Object s1, Object s2, Object s3,
            Object s4, Object s5, Object s6, Object s7) {
        return (equalTo(s, s1) || equalTo(s, s2) || equalTo(s, s3)
                || equalTo(s, s4) || equalTo(s, s5) || equalTo(s, s6) || equalTo(
                s, s7));
    }

    static public boolean in8(Object s, Object s1, Object s2, Object s3,
            Object s4, Object s5, Object s6, Object s7, Object s8) {
        return (equalTo(s, s1) || equalTo(s, s2) || equalTo(s, s3)
                || equalTo(s, s4) || equalTo(s, s5) || equalTo(s, s6)
                || equalTo(s, s7) || equalTo(s, s8));
    }

    static public boolean in9(Object s, Object s1, Object s2, Object s3,
            Object s4, Object s5, Object s6, Object s7, Object s8, Object s9) {
        return (equalTo(s, s1) || equalTo(s, s2) || equalTo(s, s3)
                || equalTo(s, s4) || equalTo(s, s5) || equalTo(s, s6)
                || equalTo(s, s7) || equalTo(s, s8) || equalTo(s, s9));
    }

    static public boolean in10(Object s, Object s1, Object s2, Object s3,
            Object s4, Object s5, Object s6, Object s7, Object s8, Object s9,
            Object s10) {
        return (equalTo(s, s1) || equalTo(s, s2) || equalTo(s, s3)
                || equalTo(s, s4) || equalTo(s, s5) || equalTo(s, s6)
                || equalTo(s, s7) || equalTo(s, s8) || equalTo(s, s9) || equalTo(
                s, s10));
    }

}
TOP

Related Classes of org.geotools.filter.function.StaticGeometry

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.