------- 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();
}
}
/**
* 1、将基站经纬度建立成点要素
*
* @return
* @time : 2019年1月8日下午3:42:11
* @author :
* @return :Point
*/
static Point createPoint1() {
Point pt = new Point(-106.4453583, 39.11775);
return pt;
}
/**
* 2、将区县的边界建立成面要素
*
* @return
* @throws JsonParseException
* @throws IOException
* @time : 2019年1月8日下午3:42:18
* @author :
* @return :Polygon
*/
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;
}
/**
* 3、判断基站点是否属于该区县
*
* @param geometryA
* @param geometryB
* @param sr
* @return
* @time : 2019年1月8日下午3:42:29
* @author :
* @return :boolean
*/
static boolean geometryContains(Geometry geometryA, Geometry geometryB,
SpatialReference sr) {
boolean contains = OperatorContains.local().execute(geometryA,
geometryB, sr, null);
return contains;
}
}