兩個面之間的最短距離算法(記錄)

使用了 geotools3.5.2.jar 包,創建兩個幾何圖形,通過JAR方法,返回兩個面之間的最短距離。

import com.vividsolutions.jts.geom.*;
import com.vividsolutions.jts.io.ParseException;
import com.vividsolutions.jts.io.WKTReader;
import com.vividsolutions.jts.operation.distance.DistanceOp;
import org.geotools.geometry.jts.JTSFactoryFinder;

/**
 * Created by 18621 on 2016/8/31.
 */
public class GeoToolsTest {
    public static void main(String args []){
        String wktPoly = "POLYGON ((121.58078350879 30.804800706056, 121.6261021123 30.460104661134, 122.14108624316 30.469717698243, 121.88290753222 30.833639817384,121.88290753222  30.833639817384,121.58078350879 30.804800706056))"; //請自行搜素瞭解wkt格式
        String wktPoly1 = "POLYGON ((121.8719212041 31.117911057618, 121.94607891894 30.936636643556, 122.29764141894 30.840506272462,122.29489483691 31.237387375978 ,122.04632916308 31.106924729493,121.8719212041 31.117911057618))";
        WKTReader reader = new WKTReader();
        //GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
        try {
            Geometry poly = reader.read(wktPoly);
            Geometry poly1 = reader.read(wktPoly1);
            DistanceOp t = new DistanceOp(poly,poly1);
            Coordinate[] a = t.nearestPoints();
            System.out.println(a[0]+":"+a[1]+"distance:"+poly.distance(poly1));
            //geometryFactory.createPolygon(wktPoly);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        //geometry.intersects(geometry);
        //geometry.setUserData("");
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章