UNPKG

@mapgis/webclient-common

Version:

An important part of the MapGIS Client for JavaScript product, which provides interfaces and functions unrelated to the map engine.

1,860 lines (1,130 loc) 189 kB
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"> <script src="scripts/prettify/prettify.js"></script> <script src="scripts/prettify/lang-css.js"></script> <title> MapGIS Client for JavaScript API </title> <script type="text/javascript"> </script> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <script src="scripts/jquery.min.js"></script> <script src="scripts/adminlte/app.min.js"></script> <link type="text/css" rel="stylesheet" href="styles/bootstrap.min.css"> <link type="text/css" rel="stylesheet" href="styles/adminlte/AdminLTE.min.css"> <link type="text/css" rel="stylesheet" href="styles/adminlte/skin-blue.min.css"> <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/common.css"> <link type="text/css" rel="stylesheet" href="styles/header.css"> <link type="text/css" rel="stylesheet" href="styles/examples.css"> <link type="text/css" rel="stylesheet" href="styles/style.customize.css"> <link type="text/css" rel="stylesheet" href="styles/font-awesome.css"> <link type="text/css" rel="stylesheet" href="styles/jaguar.css"> <script src="scripts/bootstrap.min.js"></script> </head> <body class='sidebar-mini'> <div id="wrap" class="clearfix"> <header class="header-wrapper main-header mapgis-header"> <nav class="navbar navbar-static-top lite"> <div class="nav-header"> <div class="navbar-header"> <div class="navbar-title" style="display: flex;align-items: center; "> <a href="index.html"> <img class="mapgis-webclient-logo" src="data:image/png;base64,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"> </a> <a class="navbar-brand"> <span class="mapgis-webclient-text"> MapGIS Client for JavaScript(Common) </span> </a> <div id="suffix-title">for MapboxGL</div> </div> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" > <i class="fa fa-bars"></i> </button> </div> </div> </nav> </header> <div class="navigationDiv"> </div> <div class="main content-wrapper examples-container"> <h1 class="page-title" data-filename="GeometryEngine.html">Class: GeometryEngine</h1> <section> <header> <h2></span>GeometryEngine </h2> </header> <article> <div class="container-overview"> <dt> <div class="nameContainer"> <h4 class="name" id="GeometryEngine"> new GeometryEngine<span class="signature">()</span> </h4> <div class="tag-source"> base/geometry/GeometryEngine.js, line 18 </div> </div> <p class="summary"><h5>支持如下方法:</h5> <a href='#contains'>[1、是否包含(contains)]</a><br/> <a href='#crosses'>[2、是否穿过]</a><br/> <a href='#cut'>[3、几何切割]</a><br/> <a href='#difference'>[4、几何求差]</a><br/> <a href='#disjoint'>[5、是否相离]</a><br/> <a href='#equals'>[6、是否相等]</a><br/> <a href='#intersects'>[7、是否相交]</a><br/> <a href='#intersect'>[8、返回两个几何对象的相交部分]</a><br/> <a href='#nearestCoordinate'>[9、距离最近的点]</a><br/> <a href='#overlaps'>[10、是否重叠]</a><br/> <a href='#planarArea'>[11、计算图面面积]</a><br/> <a href='#geodesicArea'>[12、计算实地面积]</a><br/> <a href='#planarLength'>[13、计算图面长度]</a><br/> <a href='#geodesicLength'>[14、计算实地长度]</a><br/> <a href='#rotate'>[15、旋转]</a><br/> <a href='#distance'>[16、计算距离]</a><br/> <a href='#touches'>[17、是否相邻]</a><br/> <a href='#union'>[18、求并]</a><br/> <a href='#within'>[19、是否被包含(within)]</a><br/> <a href='#buffer'>[20、缓冲区分析]</a><br/> <a href='#isSimple'>[21、拓扑检查]</a><br/> <a href='#getPositionsFromArc'>[22、通过三点弧段构造一组离散的点坐标]</a><br/> <a href='#getArcFromGeometry'>[23、通过几何中的三点弧段数据,构造离散后的几何对象]</a><br/> <a href='#getCenter'>[24、通过三个点求圆心]</a><br/> <a href='#getAngleFromPoints'>[25、计算三点之间的夹角]</a><br/> <a href='#simplify'>[26、拓扑矫正]</a><br/> <a href='#getCentroid'>[27、获取几何中心点]</a><br/> <a href='#getLabelPoint'>[27、获取几何label点]</a><br/></p> </dt> <dd> <div class="description"> <p>几何分析工具</p> </div> <dl class="details"> </dl> </dd> </div> <h3 class="subsection-title">Methods</h3> <dl> <dt> <div class="nameContainer"> <h4 class="name" id=".buffer"> GeometryEngine.buffer<span class="signature">(<span class="optional">geometry</span>, <span class="optional">distance</span>, <span class="optional">unit</span>, <span class="optional">unionResults</span>)</span><span class="glyphicon glyphicon-circle-arrow-right"></span><span class="type-signature returnType">{<a href="Geometry.html">Geometry</a>|Array.&lt;<a href="Geometry.html">Geometry</a>>}</span> </h4> <div class="tag-source"> base/geometry/GeometryEngine.js, line 555 </div> </div> </dt> <dd> <div class="description"> <p><a id='buffer'></a> 缓冲区分析;<br/> 支持点几何、多点几何、线几何、多线几何、区几何、多区几何、矩形几何、圆形几何或任意几何组成的几何数组;<br/> 忽略三维高度,当geometry为几何数组时,其子元素的坐标系必须相同;<br/> 如果distance是数字,则可以为正值或负值,是正值则向外扩张,是负值,则表示向内收缩;<br/> 如果distance是数字,且geometry为几何数组,则该数字会应用到所有geometry数组的子元素;<br/> 如果distance是数组且geometry是数组,当distance的长度小于geometry数组的长度时,会以distance的最后一个子元素扩充distance数组,使其长度和geometry数组的长度相同,之后将distance数组和geometry数组根据下标一一对应,执行缓冲区分析;<br/> 如果distance是数组,但geometry不是数组,则使distance数组的第一个子元素做为缓冲距离来执行缓冲区分析;<br/> 注意一个或多个几何执行缓冲区分析后,由于缓冲后几何扩大,可能导致一个或多个几何出现重合的情况;;<br/> 示例如下:<br/> <a href='#buffer1'>[1、区缓冲分析]</a><br/> <a href='#buffer2'>[2、多区缓冲分析]</a><br/> <a href='#buffer3'>[3、几何数组缓冲区分析]</a><br/> <a href='#buffer4'>[4、几何数组缓冲区分析 - 结果几何合并]</a><br/> <a href='#buffer5'>[5、区缓冲分析 - 自定义坐标系]</a><br/> <a href='#buffer6'>[6、点缓冲分析]</a><br/> <a href='#buffer7'>[7、线缓冲分析]</a><br/> <a href='#buffer8'>[8、矩形缓冲分析]</a><br/> <a href='#buffer9'>[9、圆形缓冲分析]</a><br/></p> </div> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Default</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>geometry</code></td> <td class="type"> <span class="param-type"><a href="Geometry.html">Geometry</a></span> | <span class="param-type">Array.&lt;<a href="Geometry.html">Geometry</a>></span> </td> <td class="default"> null </td> <td class="description last"> <span class="optional"> 可选</span> <p>要进行缓冲区分析的几何对象</p></td> </tr> <tr> <td class="name"><code>distance</code></td> <td class="type"> <span class="param-type">Number</span> | <span class="param-type">Array.&lt;Number></span> </td> <td class="default"> 1000 </td> <td class="description last"> <span class="optional"> 可选</span> <p>缓冲距离</p></td> </tr> <tr> <td class="name"><code>unit</code></td> <td class="type"> <span class="param-type"><a href="LengthUnit.html">LengthUnit</a></span> </td> <td class="default"> <a href="LengthUnit.html#.meters">LengthUnit.meters</a> </td> <td class="description last"> <span class="optional"> 可选</span> <p>单位,默认米</p></td> </tr> <tr> <td class="name"><code>unionResults</code></td> <td class="type"> <span class="param-type">Boolean</span> </td> <td class="default"> false </td> <td class="description last"> <span class="optional"> 可选</span> <p>是否将返回的多个几何对象合并为单几何对象,默认为false,即不合并几何</p></td> </tr> </tbody> </table> <dl class="details"> </dl> <h5>Returns:</h5> <table class="params"> <thead> <tr> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="type"> <a href="Geometry.html">Geometry</a> | Array.&lt;<a href="Geometry.html">Geometry</a>> </td> <td class="description last">缓冲区分析后的几何对象</td> </tr> </tbody> </table> <h5>Examples</h5> <p class="code-caption"><h5 id='buffer1'>区缓冲分析</h5></p> <pre class="prettyprint"><code>// ES5引入方式 const { Polygon, GeometryEngine } = zondy.geometry // ES6引入方式 import { Polygon, GeometryEngine } from "@mapgis/webclient-common" // 构造多边形 const polygon = new Polygon({ coordinates: [ [ [108.36341, 29.032578], [116.13094, 29.032578], [116.13094, 33.273224], [108.36341, 33.273224], [108.36341, 29.032578], ] ] }) // 执行缓冲区分析 const bufferedPolygon = GeometryEngine.buffer(polygon, 100000)</code></pre> <p class="code-caption"><h5 id='rotate2'>多区缓冲分析</h5></p> <pre class="prettyprint"><code>// ES5引入方式 const { MultiPolygon, GeometryEngine } = zondy.geometry // ES6引入方式 import { MultiPolygon, GeometryEngine } from "@mapgis/webclient-common" // 构造多边形 const polygon = new MultiPolygon({ coordinates: [ [ [ [108.36341, 29.032578], [112.13094, 29.032578], [112.13094, 33.273224], [108.36341, 33.273224], [108.36341, 29.032578], ] ], [ [ [113.36341, 29.032578], [116.13094, 29.032578], [116.13094, 33.273224], [113.36341, 33.273224], [113.36341, 29.032578], ] ] ] }) // 执行缓冲区分析 const bufferedPolygon = GeometryEngine.buffer(polygon, 30000)</code></pre> <p class="code-caption"><h5 id='buffer3'>几何对象数组的缓冲区分析</h5></p> <pre class="prettyprint"><code>// ES5引入方式 const { Polygon, MultiPolygon, GeometryEngine } = zondy.geometry // ES6引入方式 import { Polygon, MultiPolygon, GeometryEngine } from "@mapgis/webclient-common" // 构造多边形 const polygon1 = new MultiPolygon({ coordinates: [ [ [ [110.36341, 29.032578], [112.13094, 29.032578], [112.13094, 33.273224], [110.36341, 33.273224], [110.36341, 29.032578], ] ], [ [ [113.36341, 29.032578], [116.13094, 29.032578], [116.13094, 33.273224], [113.36341, 33.273224], [113.36341, 29.032578], ] ] ] }) // 构造多边形2 const polygon2 = new Polygon({ coordinates: [ [ [108.36341, 29.032578], [109.13094, 29.032578], [109.13094, 33.273224], [108.36341, 33.273224], [108.36341, 29.032578], ] ] }) // 执行缓冲区分析,distance可谓数字或数组 const bufferedPolygon = GeometryEngine.buffer([polygon1, polygon2], [30000, 30000])</code></pre> <p class="code-caption"><h5 id='buffer4'>几何数组缓冲区分析 - 分析结果几何求并</h5></p> <pre class="prettyprint"><code>// ES5引入方式 const { Polygon, MultiPolygon, LengthUnit, GeometryEngine } = zondy.geometry // ES6引入方式 import { Polygon, MultiPolygon, LengthUnit, GeometryEngine } from "@mapgis/webclient-common" // 构造多边形 const polygon1 = new MultiPolygon({ coordinates: [ [ [ [110.36341, 29.032578], [112.13094, 29.032578], [112.13094, 33.273224], [110.36341, 33.273224], [110.36341, 29.032578], ] ], [ [ [113.36341, 29.032578], [116.13094, 29.032578], [116.13094, 33.273224], [113.36341, 33.273224], [113.36341, 29.032578], ] ] ] }) // 构造多边形2 const polygon2 = new Polygon({ coordinates: [ [ [108.36341, 29.032578], [109.13094, 29.032578], [109.13094, 33.273224], [108.36341, 33.273224], [108.36341, 29.032578], ] ] }) // 执行缓冲区分析,设置unionResults参数为true const bufferedPolygon = GeometryEngine.buffer([polygon1, polygon2], [30000], LengthUnit.meters, true)</code></pre> <p class="code-caption"><h5 id='buffer5'>区缓冲分析 - 自定义坐标系</h5></p> <pre class="prettyprint"><code>// ES5引入方式 const { Polygon, SpatialReference, GeometryEngine } = zondy.geometry // ES6引入方式 import { Polygon, SpatialReference, GeometryEngine } from "@mapgis/webclient-common" // 构造多边形 const polygon = new Polygon({ coordinates: [ [ [-45257.10778559791, 3212885.1836444484], [705989.8953363781, 3212885.1836444484], [705989.8953363781, 3691623.86404564], [-45257.10778559791, 3691623.86404564], [-45257.10778559791, 3212885.1836444484], ] ], // 注意要指定坐标系 spatialReference: new SpatialReference({ wkid: 4547 }) }) // 执行缓冲区分析 const bufferedPolygon = GeometryEngine.buffer(polygon, 100000)</code></pre> <p class="code-caption"><h5 id='buffer6'>点缓冲分析</h5></p> <pre class="prettyprint"><code>// ES5引入方式 const { Point, GeometryEngine } = zondy.geometry // ES6引入方式 import { Point, GeometryEngine } from "@mapgis/webclient-common" // 构造点几何 const point = new Point({ coordinates: [108.36341, 29.032578] }) // 执行缓冲区分析 const bufferedPolygon = GeometryEngine.buffer(point, 100000)</code></pre> <p class="code-caption"><h5 id='buffer7'>线缓冲分析</h5></p> <pre class="prettyprint"><code>// ES5引入方式 const { LineString, GeometryEngine } = zondy.geometry // ES6引入方式 import { LineString, GeometryEngine } from "@mapgis/webclient-common" // 构造线 const lineString = new LineString({ coordinates: [ [108.36341, 29.032578], [109.36341, 29.032578] ] }) // 执行缓冲区分析 const bufferedPolygon = GeometryEngine.buffer(lineString, 10000)</code></pre> <p class="code-caption"><h5 id='buffer8'>矩形缓冲分析</h5></p> <pre class="prettyprint"><code>// ES5引入方式 const { LineString, GeometryEngine } = zondy.geometry // ES6引入方式 import { LineString, GeometryEngine } from "@mapgis/webclient-common" // 构造矩形 const extent = new Extent({ xmin: 112, xmax: 114, ymin: 30, ymax: 32 }) // 执行缓冲区分析 const bufferedPolygon = GeometryEngine.buffer(extent, 10000)</code></pre> <p class="code-caption"><h5 id='buffer9'>圆形缓冲分析</h5></p> <pre class="prettyprint"><code>// ES5引入方式 const { Circle, GeometryEngine } = zondy.geometry // ES6引入方式 import { Circle, GeometryEngine } from "@mapgis/webclient-common" // 构造圆形 const circle = new Circle({ center: [112, 30], radius: 3 }) // 执行缓冲区分析 const bufferedPolygon = GeometryEngine.buffer(circle, 10000)</code></pre> </dd> <dt> <div class="nameContainer"> <h4 class="name" id=".contains"> GeometryEngine.contains<span class="signature">(<span class="optional">containerGeometry</span>, <span class="optional">insideGeometry</span>)</span><span class="glyphicon glyphicon-circle-arrow-right"></span><span class="type-signature returnType">{Boolean}</span> </h4> <div class="tag-source"> base/geometry/GeometryEngine.js, line 4144 </div> </div> </dt> <dd> <div class="description"> <p><a id='contains'></a> 判断containerGeometry对象是否完全包含insideGeometry对象;<br/> 忽略三维高度;<br/> 支持自定义坐标系的几何对象,几何的坐标系必须相同;<br/> 包含标准如下: 点包含点的标准为:两个点几何坐标是否相等;<br/> 线包含线的标准为:一条线上的点都在另一条线上,或两条线的点坐标相同;<br/> 区包含线的标准为:线在区几何内,但线不全部在区几何边线上(包括内圈和外圈的边线);<br/> 区包含线的标准为:点在区几何内,不在边线上(包括内圈和外圈的边线);<br/> 区包含区的标准为:一个区在另一个区内(如果有带洞区域,则不能在带洞区域内,可以挨着边线),边线可以重合;<br/> 其他情况为上述标准的组合;<br/> 由于包含的情况太多,这里仅列举部分示例,示例如下:<br/> <a href='#intersects1'>[1、区包含点]</a><br/> <a href='#intersects2'>[2、多点包含点]</a><br/> <a href='#intersects3'>[3、区包含线]</a><br/> <a href='#intersects4'>[4、圆包含矩形]</a><br/> <a href='#intersects5'>[5、几何包含 - 自定义坐标系]</a><br/></p> </div> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th>Default</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>containerGeometry</code></td> <td class="type"> <span class="param-type"><a href="Geometry.html">Geometry</a></span> </td> <td class="default"> null </td> <td class="description last"> <span class="optional"> 可选</span> <p>包含几何对象</p></td> </tr> <tr> <td class="name"><code>insideGeometry</code></td> <td class="type"> <span class="param-type"><a href="Geometry.html">Geometry</a></span> </td> <td class="default"> null </td> <td class="description last"> <span class="optional"> 可选</span> <p>被包含的几何对象</p></td> </tr> </tbody> </table> <dl class="details"> </dl> <h5>Returns:</h5> <table class="params"> <thead> <tr> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="type"> Boolean </td> <td class="description last">是否包含</td> </tr> </tbody> </table> <h5>Examples</h5> <p class="code-caption"><h5 id='contains1'>区包含点</h5></p> <pre class="prettyprint"><code>// ES5引入方式 const { Polygon, Point, GeometryEngine } = zondy.geometry // ES6引入方式 import { GeometryEngine, Polygon, Point } from "@mapgis/webclient-common" // 初始点几何,可以是任意几何 const point = new Point({ coordinates: [1, 1] }) // 初始化区几何,可以是任意几何 const polygon = new Polygon({ coordinates: [ [ [1, 0], [10, 0], [10, 20], [1, 20], [1, 0] ] ] }) // 判断区几何是否包含点几何对象 const isContains = GeometryEngine.contains(polygon, point) console.log("区是否包含点:", isContains)</code></pre> <p class="code-caption"><h5 id='contains2'>多点包含点</h5></p> <pre class="prettyprint"><code>// ES5引入方式 const { MultiPoint, Point, GeometryEngine } = zondy.geometry // ES6引入方式 import { MultiPoint, Point, GeometryEngine } from "@mapgis/webclient-common" // 初始点几何 const point = new Point({ coordinates: [1, 1] }) // 初始化多点几何 const multiPoint = new MultiPoint({ coordinates: [ [1, 1], [1, 2] ] }) // 判断多点几何是否包含点几何对象 const isContains = GeometryEngine.contains(multiPoint, point) console.log("多点是否包含点:", isContains)</code></pre> <p class="code-caption"><h5 id='contains3'>区包含线</h5></p> <pre class="prettyprint"><code>// ES5引入方式 const { Polygon, LineString, GeometryEngine } = zondy.geometry // ES6引入方式 import { Polygon, LineString, GeometryEngine } from "@mapgis/webclient-common" // 初始化区几何 const polygon = new Polygon({ coordinates: [ [ [1, 0], [10, 0], [10, 20], [1, 20], [1, 0] ] ] }) // 初始化线几何 const lineString = new LineString({ coordinates: [ [1, 0], [1, 6] ] }) // 判断多点几何是否包含点几何对象 const isContains = GeometryEngine.contains(polygon, lineString) console.log("区是否包含线:", isContains)</code></pre> <p class="code-caption"><h5 id='contains4'>圆包含矩形</h5></p> <pre class="prettyprint"><code>// ES5引入方式 const { Circle, LineString, GeometryEngine } = zondy.geometry // ES6引入方式 import { Circle, LineString, GeometryEngine } from "@mapgis/webclient-common" // 初始化圆几何 const circle = new Circle({ center: [5, 5], radius: 2 }) // 初始化矩几何 const extent = new Extent({ xmin: 2, ymin: 2, xmax: 4, ymax: 4 }) // 判断多点几何是否包含点几何对象 const isContains = GeometryEngine.contains(circle, extent) console.log("圆是否包含矩形:", isContains)</code></pre> <p class="code-caption"><h5 id='contains5'>几何包含 - 自定义坐标系</h5></p> <pre class="prettyprint"><code>// ES5引入方式 const { Polygon, LineString, SpatialReference, GeometryEngine } = zondy.geometry // ES6引入方式 import { Polygon, LineString, SpatialReference, GeometryEngine } from "@mapgis/webclient-common" // 初始化线几何对象 const line = new LineString({ coordinates: [ [60000, 3426025], [598545, 3426025] ], // 要设置坐标系 spatialReference: new SpatialReference({ wkid: 4547 }) }) // 初始化区几何对象 const polygon = new Polygon({ coordinates: [ [ [0, 3226025], [698545, 3226025], [698545, 3685076], [0, 3685076], [0, 3226025] ], [ [100000, 3326025], [598545, 3326025], [598545, 3485076], [100000, 3485076], [100000, 3326025] ] ], // 要设置坐标系 spatialReference: new SpatialReference({ wkid: 4547 }) }) // 判断多点几何是否包含点几何对象 const isContains = GeometryEngine.contains(circle, extent) console.log("圆是否包含矩形:", isContains)</code></pre> </dd> <dt> <div class="nameContainer"> <h4 class="name" id=".crosses"> GeometryEngine.crosses<span class="signature">(geometry1, geometry2)</span><span class="glyphicon glyphicon-circle-arrow-right"></span><span class="type-signature returnType">{Boolean}</span> </h4> <div class="tag-source"> base/geometry/GeometryEngine.js, line 5565 </div> </div> </dt> <dd> <div class="description"> <p><a id='crosses'></a> 判断一个几何对象是否穿过另一个几何对象;<br/> 要穿过的几何类型为:线、多线,忽略三维高度;<br/> 被穿过的几何类型为:线、多线、矩形、圆、区以及多区,忽略三维高度,穿线和被穿过几何的坐标系必须相同;<br/> 要穿过的几何与被穿过的几何(geometry1和geometry2)可以调换输入,但其中一个geometry必须是LineString、MultiLineString中的一类;<br/> 当被穿过的几何类型为MultiLineString、MultiPolygon时,只要MultiLineString和MultiPolygon中有一个要素被穿过,就算穿过,返回true;<br/> 当要穿过的几何类型为MultiLineString时,只要MultiLineString中有一条线穿过geometry2(被穿过的几何体),就算穿过,返回true;<br/> 如果两条线出现重叠,此种情况不算穿过,返回false;&lt;br/ 如果两条线出现“入”型、“L”型,此种情况不算穿过,返回false;<br/> 线与圆相切的情况不算穿过,返回false;<br/> 线和多边形的一条边重叠,算穿过,返回true;<br/> 当polygon有内圈时,只要穿过外圈就算穿过,返回true;<br/> 示例如下:<br/> <a href='#cross1'>[1、线穿过线]</a><br/> <a href='#cross2'>[2、线穿过多线]</a><br/> <a href='#cross3'>[3、线穿过区]</a><br/> <a href='#cross4'>[4、多线穿过区]</a><br/> <a href='#cross5'>[5、多线穿过多区]</a><br/></p> </div> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>geometry1</code></td> <td class="type"> <span class="param-type"><a href="LineString.html">LineString</a></span> | <span class="param-type"><a href="MultiLineString.html">MultiLineString</a></span> </td> <td class="description last"> <p>第一个几何体,支持线、多线;</p></td> </tr> <tr> <td class="name"><code>geometry2</code></td> <td class="type"> <span class="param-type"><a href="LineString.html">LineString</a></span> | <span class="param-type"><a href="Polygon.html">Polygon</a></span> | <span class="param-type"><a href="MultiLineString.html">MultiLineString</a></span> | <span class="param-type"><a href="MultiPolygon.html">MultiPolygon</a></span> | <span class="param-type"><a href="Circle.html">Circle</a></span> | <span class="param-type"><a href="Extent.html">Extent</a></span> </td> <td class="description last"> <p>第二个几何体,支持线、多线、面、多面、圆、矩形,两个参数可以调换输入,但其中一个geometry必须是LineString、MultiLineString中的一类;</p></td> </tr> </tbody> </table> <dl class="details"> </dl> <h5>Returns:</h5> <table class="params"> <thead> <tr> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="type"> Boolean </td> <td class="description last">是否穿过</td> </tr> </tbody> </table> <h5>Examples</h5> <p class="code-caption"><h5 id='cross1'>线穿过线</h5></p> <pre class="prettyprint"><code>// ES5引入方式 const { LineString, GeometryEngine } = zondy.geometry // ES6引入方式 import { LineString, GeometryEngine } from "@mapgis/webclient-common" // 构造要穿过的线对象 const line1 = new LineString({ coordinates: [ [108.36341, 29.032578], [116.13094, 29.032578] ] }) // 构造被穿过的线对象 const line2 = new LineString({ coordinates: [ [110, 28], [110, 30], [111, 30], [111, 28] ] }) // 开始判断穿过 const cross = GeometryEngine.crosses(line1, line2) console.log("线是否穿过线:", cross)</code></pre> <p class="code-caption"><h5 id='cross2'>线穿过多线</h5></p> <pre class="prettyprint"><code>// ES5引入方式 const { LineString, MultiLineString, GeometryEngine } = zondy.geometry // ES6引入方式 import { LineString, MultiLineString, GeometryEngine } from "@mapgis/webclient-common" // 构造要穿过的线对象 const line1 = new LineString({ coordinates: [ [108.36341, 29.032578], [116.13094, 29.032578] ] }) // 构造被穿过的多线对象 const multiLineString = new MultiLineString({ coordinates: [ [ [108.36341, 29.032578], [116.13094, 29.032578] ], [ [108.36341, 29.332578], [116.13094, 29.332578] ] ] }) // 开始判断穿过 const cross = GeometryEngine.crosses(line1, multiLineString) console.log("线是否穿过多线:", cross)</code></pre> <p class="code-caption"><h5 id='cross3'>线穿过区</h5></p> <pre class="prettyprint"><code>// ES5引入方式 const { LineString, Polygon, GeometryEngine } = zondy.geometry // ES6引入方式 import { LineString, Polygon, GeometryEngine } from "@mapgis/webclient-common" // 构造要穿过的线对象 const line = new LineString({ coordinates: [ [110, 28], [110, 34], [111, 34], [112, 28] ] }) // 构造被穿过的区对象 const polygon = new Polygon({ coordinates: [ [ [108.36341, 29.032578], [116.13094, 29.032578], [116.13094, 33.273224], [108.36341, 33.273224], [108.36341, 29.032578], ], [ [109, 29.5], [112, 29.5], [112, 32], [109, 32], [109, 29.5], ] ] }) // 开始判断穿过 const cross = GeometryEngine.crosses(line,polygon) console.log("线是否穿过区:", cross)</code></pre> <p class="code-caption"><h5 id='cross4'>多线穿过区</h5></p> <pre class="prettyprint"><code>// ES5引入方式 const { MultiLineString, Polygon, GeometryEngine } = zondy.geometry // ES6引入方式 import { MultiLineString, Polygon, GeometryEngine } from "@mapgis/webclient-common" // 构造要穿过的多线对象 const multiLineString = new MultiLineString({ coordinates: [ [ [108.36341, 29.032578], [116.13094, 29.032578] ], [ [108.36341, 29.332578], [116.13094, 29.332578] ] ] }) // 构造被穿过的区对象 const polygon = new Polygon({ coordinates: [ [ [108.36341, 29.032578], [116.13094, 29.032578], [116.13094, 33.273224], [108.36341, 33.273224], [108.36341, 29.032578], ], [ [109, 29.5], [112, 29.5], [112, 32], [109, 32], [109, 29.5], ] ] }) // 开始判断穿过 const cross = GeometryEngine.crosses( multiLineString,polygon) console.log("多线是否穿过区:", cross)</code></pre> <p class="code-caption"><h5 id='cross5'>多线穿过多区</h5></p> <pre class="prettyprint"><code>// ES5引入方式 const { MultiLineString, MultiPolygon, SpatialReference, GeometryEngine } = zondy.geometry // ES6引入方式 import { MultiLineString, MultiPolygon, SpatialReference, GeometryEngine } from "@mapgis/webclient-common" // 构造要穿过的多线对象 const multiLineString = new MultiLineString({ coordinates: [ [ [-49522.6942635386, 3226025.20474049], [707596.826929215, 3214754.20105] ], [ [-47918.3624481045, 3259361.82328017], [707596.826929215, 3259361.82328017] ] ], // 必须指定坐标系 spatialReference: new SpatialReference({ wkid: 4547 }) }) // 构造被穿过的多区 const multiPolygon = new MultiPolygon({ coordinates: [ [ [ [-47918.3624481045, 3214754.20105], [707596.826929215, 3214754.20105], [707596.826929215, 3685076.66188228], [-47918.3624481045, 3685076.66188228], [-47918.3624481045, 3214754.20105] ], [ [14849.3479447439, 3275130.08942507], [310996.760637403, 3275130.08942507], [310996.760637403, 3543600.9315051], [14849.3479447439, 3543600.9315051], [14849.3479447439, 3275130.08942507], ] ], [ [ [813421.283605543, 3214754.20105], [1071620.19329204, 3214754.20105], [1071620.19329204, 3685076.66188228], [813421.283605543, 3685076.66188228], [813421.283605543, 3214754.20105] ] ] ], // 必须指定坐标系 spatialReference: new SpatialReference({ wkid: 4547 }) }) // 开始判断穿过 const cross = GeometryEngine.crosses(multiLineString, multiPolygon) console.log("多线是否穿过多区:", cross)</code></pre> </dd> <dt> <div class="nameContainer"> <h4 class="name" id=".cut"> GeometryEngine.cut<span class="signature">(geometry, cutter)</span><span class="glyphicon glyphicon-circle-arrow-right"></span><span class="type-signature returnType">{Array.&lt;<a href="Geometry.html">Geometry</a>>}</span> </h4> <div class="tag-source"> base/geometry/GeometryEngine.js, line 6727 </div> </div> </dt> <dd> <div class="description"> <p><a id='cut'></a> 使用一条线来切割几何,将其分割为多个几何对象;<br/> 被切割的几何类型为:线、多线、区以及多区,忽略三维高度,切线和被切割几何的坐标系必须相同;<br/> 此接口不会像arcgis的geometryEngine.cut方法那样,返回切割线左右两边的几何对象数组,而是把所有的被切割好的几何组成一个数组并返回;<br/> 如果切割线和被切割几何没有相交,则会返回一个空数组;<br/> 线切割线会返回被切割后的线几何数组;<br/> 线切割多线仅会返回被切割后的线几何数组,如果多线中的某一个线段不与切割线相交,则不会返回该线段几何;<br/> 线切割区会返回被切割后的区几何数组,如果切线仅仅是部分和区相交,但是没有穿过几何,会返回一个仅包含该区几何对像的数组;<br/> 线切割多区仅会返回被切割后的区几何数组,如果多区中的某一个区不与切割线相交,则不会返回该区几何;<br/> 示例如下:<br/> <a href='#cut1'>[1、线切割线]</a><br/> <a href='#cut2'>[2、线切割多线]</a><br/> <a href='#cut3'>[3、线切割区]</a><br/> <a href='#cut4'>[4、线切割多区]</a><br/> <a href='#cut5'>[5、几何切割 - 自定义坐标系]</a><br/></p> </div> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>geometry</code></td> <td class="type"> <span class="param-type"><a href="LineString.html">LineString</a></span> | <span class="param-type"><a href="MultiLineString.html">MultiLineString</a></span> | <span class="param-type"><a href="Polygon.html">Polygon</a></span> | <span class="param-type"><a href="MultiPolygon.html">MultiPolygon</a></span> </td> <td class="description last"> <p>被切割的区对象</p></td> </tr> <tr> <td class="name"><code>cutter</code></td> <td class="type"> <span class="param-type"><a href="LineString.html">LineString</a></span> </td> <td class="description last"> <p>切割线几何对象</p></td> </tr> </tbody> </table> <dl class="details"> </dl> <h5>Returns:</h5> <table class="params"> <thead> <tr> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="type"> Array.&lt;<a href="Geometry.html">Geometry</a>> </td> <td class="description last">切割后的几何数组</td> </tr> </tbody> </table> <h5>Examples</h5> <p class="code-caption"><h5 id='cut1'>线切割线</h5></p> <pre class="prettyprint"><code>// ES5引入方式 const { LineString, GeometryEngine } = zondy.geometry // ES6引入方式 import { LineString, GeometryEngine } from "@mapgis/webclient-common" // 构造被切割的线对象 const line = new LineString({ coordinates: [ [108.36341, 29.032578], [116.13094, 29.032578] ] }) // 构造切割线对象 const cutter = new LineString({ coordinates: [ [110, 28], [110, 30], [111, 30], [111, 28] ] }) // 开始切割线 const cut = GeometryEngine.cut(line, cutter) console.log("切割后的几何数组:", cut)</code></pre> <p class="code-caption"><h5 id='cut2'>线切割多线</h5></p> <pre class="prettyprint"><code>// ES5引入方式 const { LineString, MultiLineString, GeometryEngine } = zondy.geometry // ES6引入方式 import { LineString, MultiLineString, GeometryEngine } from "@mapgis/webclient-common" // 构造被切割的多线对象 const line = new MultiLineString({ coordinates: [ [ [108.36341, 29.032578], [116.13094, 29.032578] ], [ [108.36341, 29.332578], [116.13094, 29.332578] ] ] }) // 构造切割线对象 const cutter = new LineString({ coordinates: [ [110, 28], [110, 30], [111, 30], [112, 28] ] }) // 开始切割线 const cut = GeometryEngine.cut(line, cutter) console.log("切割后的几何数组:", cut)</code></pre> <p class="code-caption"><h5 id='cut3'>线切割区</h5></p> <pre class="prettyprint"><code>// ES5引入方式 const { LineString, Polygon, GeometryEngine } = zondy.geometry // ES6引入方式 import { LineString, Polygon, GeometryEngine } from "@mapgis/webclient-common" // 构造被切割的区对象 const polygon = new Polygon({ coordinates: [ [ [108.36341, 29.032578], [116.13094, 29.032578], [116.13094, 33.273224], [108.36341, 33.273224], [108.36341, 29.032578], ], [ [109, 29.5], [112, 29.5], [112, 32], [109, 32], [109, 29.5], ] ] }) // 构造切割线对象 const cutter = new LineString({ coordinates: [ [110, 28], [110, 34], [111, 34], [112, 28] ] }) // 开始切割区 const cut = GeometryEngine.cut(polygon, cutter) console.log("切割后的几何数组:", cut)</code></pre> <p class="code-caption"><h5 id='cut4'>线切割多区</h5></p> <pre class="prettyprint"><code>// ES5引入方式 const { LineString, MultiPolygon, GeometryEngine } = zondy.geometry // ES6引入方式 import { LineString, MultiPolygon, GeometryEngine } from "@mapgis/webclient-common" // 构造被切割的多区 const polygon = new MultiPolygon({ coordinates: [ [ [ [108.36341, 29.032578], [116.13094, 29.032578], [116.13094, 33.273224], [108.36341, 33.273224], [108.36341, 29.032578] ], [ [109, 29.5], [112, 29.5], [112, 32], [109,