Arcgis For JavaScript——求两个几何要素的相交值

在最近的项目中,客户要求根据所选地图的斑块求取该斑块所跨省份的面积对比,通过具体分析要用到GIS中拓扑的相交来求出相交部分肯定面积web

首先咱们来看下Arcgis For Js Api中是怎么求两个几何要素的交集的api

方式一:`客户端的geometryEngine`

引用的模块"esri/geometry/geometryEngine"数组

具体使用该模块的intersect方法.服务器

咱们来具体看一下app

方法名:`intersect`

参数:

  • geometry (数据类型为单个geometry或者geometry数组,此参数为进行交集的几何元素)
  • intersector (数据类型为单个geometry,此元素为目标元素)

返回值

Geometry | Geometry[] (返回相交的几何要素/几何要素的数组)函数

由api咱们得知只须要一个geometry和一个geometry或者geometry数组就能够求交集了,那咱们能够用斑块的geometry和 全省份图的geometry来求交集了 spa

具体以下:rest

 //获得相交的值
            var interPloy = geometryEngine.intersect(geomboj.geom1, geomboj.geom2)

            for (let i = 0; i < interPloy.length; i++) {
                //由于它会根据参数二的与全部的子集都作交集计算,有的返回数据,没有的返回null
                //因此须要作判断
                if (!(interPloy[i] === null)) {
                    //此时的i即是相交项的index
                    //这里拿到的只是geometry,想要拿到属性或者设置样式,还须要把它变成graphic
                    //把它变成graphic
                    let graphic =new Graphic(interPloy[i])
                    //新建一个GraphicsLayer用来存放graphic
                    let GraphicsLayer = new GraphicsLayer()
                    //将graphic放在raphicsLayer
                    GraphicsLayer.add(graphic)
                    //将graphic放在map上
                    map.addLayer(GraphicsLayer)

                    //接下来,随心所欲吧,添加样式,绑定属性,均可以的
                }
复制代码

方式二:`服务器的GeometryService几何服务`

具体利用GeometryServiceintersect函数实现code

引用的模块为:"esri/tasks/GeometryService"regexp

咱们来具体看一下

方法名:`intersect`

参数:

  • geometries (数据类型为Geometry[],此参数为进行交集的几何元素)
  • geometry (数据类型为Geometry,此元素为目标元素)
  • callback(成功的回调函数)
  • error(失败的回调函数)

具体的使用方法和第一个客户端的intersect是差很少的,咱们来看下

          //新建一个几何服务类,传入几何服务的地址
            let geometryService = new GeometryService("https://utility.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer");
            geometryService.intersect(geomboj.geom1, geomboj.geom2,(res)=>{
                //res为相交的元素

            })
复制代码
相关文章
相关标签/搜索