天天看点

esri 判断Point是否在几何图形Geometry上

------- mavn依赖 ------

<dependency>

            <groupId>com.esri.geometry</groupId>

            <artifactId>esri-geometry-api</artifactId>

            <version>2.2.2</version>

  </dependency>

因为业务需要,所以我用了这个包;可能有人也需要,我这里就写了一个很简单的例子。

### 例如计算一个经纬度是否在某一个县内 ???

=============================================================================

package test;

import java.io.IOException;

import org.apache.log4j.Logger;

import com.esri.core.geometry.Geometry;

import com.esri.core.geometry.OperatorContains;

import com.esri.core.geometry.OperatorImportFromWkt;

import com.esri.core.geometry.Point;

import com.esri.core.geometry.SpatialReference;

import com.esri.core.geometry.WktImportFlags;

import com.fasterxml.jackson.core.JsonParseException;

public class Test {

    Logger logger = Logger.getLogger("WQJ.spark.Test");;

    public static void main(String[] args) {

        Geometry p = (Geometry) createPoint1();

        try {

            Geometry pg = createPolygonFromWKT();

            Boolean  b = geometryContains(pg,p,SpatialReference.create(4326));

            System.err.println(b);

        } catch (JsonParseException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

    static Point createPoint1() {

        Point pt = new Point(-106.4453583, 39.11775);

        return pt;

    }

    static Geometry createPolygonFromWKT() throws JsonParseException,

            IOException {

        //请自行搜素了解wkt格式  

        String wktString = "MULTIPOLYGON (((0.1 0.7, 0.1 0.4, 0.3 0.4, 0.3 0.7, 0.1 0.7)),"

                + "((0 0, 0.5 0, 1 0.5, 0.5 1, 0 1, -0.5 0.5, 0 0),"

                + "(0.5 0.2, 0.2 0.3, 0.1 0.2, -0.2 0.5, 0.2 0.9, 0.6 0.5, 0.5 0.2)))";

        Geometry geom = OperatorImportFromWkt.local().execute(

                WktImportFlags.wktImportDefaults, Geometry.Type.Polygon,

                wktString, null);

        return geom;// (Polygon)geom;

    }

    static boolean geometryContains(Geometry geometryA, Geometry geometryB,

            SpatialReference sr) {

        boolean contains = OperatorContains.local().execute(geometryA,

                geometryB, sr, null);

        return contains;

    }

}