Wechat: yu389741| Email: gisdqy@163.com

# GeoTools应用-(JTS Geometry Operations)

GeoTools应用-(JTS Geometry Operations)

Geometry 空间分析方法几何图形操作包

``````package com.mapbar.geo.jts.operation;

import java.util.ArrayList;
import java.util.List;

import org.geotools.geometry.jts.JTSFactoryFinder;

import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.LineString;
/**

* Class Operation.java

* Description 几何对象操作

* Company mapbar

* author Chenll E-mail: Chenll@mapbar.com

* Version 1.0

* Date 2012-2-21 上午10:47:47

*/
public class Operation {

private GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory( null );

/**
* create a Point
* @param x
* @param y
* @return
*/
public Coordinate point(double x,double y){
return new Coordinate(x,y);
}

/**
* create a line
* @return
*/
public LineString createLine(List<Coordinate> points){
Coordinate[] coords  = (Coordinate[]) points.toArray(new Coordinate[points.size()]);
LineString line = geometryFactory.createLineString(coords);
return line;
}

/**
* 返回(A)与(B)中距离最近的两个点的距离
* @param a
* @param b
* @return
*/
public double distanceGeo(Geometry a,Geometry b){
return a.distance(b);
}

/**
* 两个几何对象的交集
* @param a
* @param b
* @return
*/
public Geometry intersectionGeo(Geometry a,Geometry b){
return a.intersection(b);
}

/**
* 几何对象合并
* @param a
* @param b
* @return
*/
public Geometry unionGeo(Geometry a,Geometry b){
return a.union(b);
}

/**
* 在A几何对象中有的，但是B几何对象中没有
* @param a
* @param b
* @return
*/
public Geometry differenceGeo(Geometry a,Geometry b){
return a.difference(b);
}

public static void main(String[] args){
Operation op = new Operation();
//创建一条线
List<Coordinate> points1 = new ArrayList<Coordinate>();
LineString line1 = op.createLine(points1);
//创建第二条线
List<Coordinate> points2 = new ArrayList<Coordinate>();