• geotools中的空间关系(Geometry Relationships)和空间操作(Geometry Operations)


    概述:

    本文讲述geotools中的空间关系判断(Geometry Relationships)和空间操作(Geometry Operations)的编码实现。


    空间关系(Geometry Relationships):

    常见的空间关系(Geometry Relationships)包括:Disjoint、Intersects、Touches、Crosses、Within、Contains、Overlaps、Relates。


    空间操作(Geometry Operations):

    常见的空间操作(Geometry Operations)包括:Buffer、Intersection、ConvexHull、Intersection、Union、Difference、SymDifference。


    代码实现:

    1、测试数据

    			String wktPoint = "POINT(103.83489981581 33.462715497945)";
    			String wktLine = "LINESTRING(108.32803893589 41.306670233001,99.950999898452 25.84722546391)";
    			String wktPolygon = "POLYGON((100.02715479879 32.168082192159,102.76873121104 37.194305614622,107.0334056301 34.909658604412,105.96723702534 30.949603786713,100.02715479879 32.168082192159))";
    			String wktPolygon1 = "POLYGON((96.219409781775 32.777321394882,96.219409781775 40.240501628236,104.82491352023001 40.240501628236,104.82491352023001 32.777321394882,96.219409781775 32.777321394882))";

    测试数据地图展示如下:


    2、空间关系

    			
    			GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory( null );
    			WKTReader reader = new WKTReader( geometryFactory );
    			Point point = (Point) reader.read(wktPoint);
    			LineString line = (LineString) reader.read(wktLine);
    			Polygon polygon = (Polygon) reader.read(wktPolygon);
    			Polygon polygon1 = (Polygon) reader.read(wktPolygon1);
    			System.out.println("-------空间关系判断-------");
    			System.out.println(polygon.contains(point));
    			System.out.println(polygon.intersects(line));
    			System.out.println(polygon.overlaps(polygon1));

    控制台输出结果如下:


    3、空间操作

    			System.out.println("
    -------空间计算-------");
    			WKTWriter write = new WKTWriter();
    			Geometry intersection = polygon.union( polygon1 );
    			Geometry union = polygon.union( polygon1 );
    			Geometry difference = polygon.difference( polygon1 );
    			Geometry symdifference = polygon.symDifference( polygon1 );
    			System.out.println("	+++++++++++叠加分析+++++++++++");
    			System.out.println(write.write(intersection));
    			System.out.println("	+++++++++++合并分析+++++++++++");
    			System.out.println(write.write(union));
    			System.out.println("	+++++++++++差异分析+++++++++++");
    			System.out.println(write.write(difference));
    			System.out.println("	+++++++++++sym差异分析+++++++++++");
    			System.out.println(write.write(symdifference));
    控制台输出结果如下:


    空间操作的计算结果展示如下:

    intersect


    union


    Difference


    SymDifference



    ---------------------------------------------------------------------------------------------------------------

    技术博客

    http://blog.csdn.NET/gisshixisheng

    在线教程

    http://edu.csdn.Net/course/detail/799

    Github

    https://github.com/lzugis/

    联系方式

    q       q:1004740957

    e-mail:niujp08@qq.com

    公众号:lzugis15

    Q Q 群:452117357(webgis)

                 337469080(Android)


    ---------------------------------------------------------------------------------------------------------------

    技术博客

    http://blog.csdn.NET/gisshixisheng

    在线教程

    http://edu.csdn.Net/course/detail/799

    Github

    https://github.com/lzugis/

    联系方式

    q       q:1004740957

    e-mail:niujp08@qq.com

    公众号:lzugis15

    Q Q 群:452117357(webgis)

                 337469080(Android)

  • 相关阅读:
    通过ajax前端后台交互/登录页和注册页前端后台交互详解/前端后台交互基础应用/几个后台函数的基础应用/php文件函数基础应用/php字符传函数基础应用/php数组函数基础应用
    >>>---PHP中的OOP-->面对过程与面对对象基础概念与内容--(封装、继承、多态)
    基于HBuilder开发手机APP-主页/跳转页面/切换选项卡
    PHP基础学习
    JavaScript学习-js中的数组/Boolean类/字符串String类
    关于gulp中顺序执行任务
    AugularJS从入门到实践(三)
    AugularJS从入门到实践(二)
    用CSS实现响应式布局
    React+ANTD项目使用后的一些关于生命周期比较实用的心得
  • 原文地址:https://www.cnblogs.com/lzugis/p/6539749.html
Copyright © 2020-2023  润新知