geom~Collection(geometrys)

集合体。地理几何对象的一种形态,由多种简单的几何对象组合而成。

Summary

Methods:
addGeometry

向集合体添加一个几何对象。

applyTransform

给定一个函数,用来修改几何对象的坐标值。该方法可能改变原几何对象的坐标值,如果需要保留原几何对象,可以使用clone方法复制为副本

atApproximatePoint

检测一个坐标是否在几何对象的边界范围以内。 本计算基于边界盒与坐标的相交运算,不包含高程方向的运算,一般用于近似相交判断。注意:与边界盒相交的坐标不一定在几何对象内,可能会在几何对象的边缘以外附近。
边界盒:即几何对象的地理范围构成的多边形区域。

clone

复制一个集合体。复制后的集合体是独立于原集合体的实例。

destroy

销毁对象。

distanceTo

计算两个地理几何对象之间的距离(X-Y平面内)。

getArea

计算面积,非面状几何对象不会被统计。

getCentroid

获取集合体的质心。

getCount

获取几何对象数量。

getExtent

计算集合体的地理范围。该地理范围界定了X-Y平面的边界,不含高程信息。

getGeometryTypes

获取组成集合体的所有几何对象类型。

getGeoms

获取所有的几何对象。

getLength

计算长度,不会统计“非线几何对象”的长度。

getType

获取几何对象类型。

intersectsExtent

检测集合体与地理范围是否相交。

intersectsGeometry

检测与另一个几何对象是否相交。

isSelfIntersects

自相交判断。

moveByDelta

沿坐标轴正方向,将几何对象的所有坐标按给定的参数偏移。如果参数为负,则向坐标轴负向偏移。该方法可能改变原几何对象的位置,如果需要保留原几何对象,可以使用clone方法复制为副本。

removeGeom

从集合体中删除一个几何对象。

rotate

绕着指定直线(旋转轴)旋转,所指定的直线穿过给定点且平行于坐标轴。旋转后的坐标可能发生变化。绕轴旋转的本质如下: 绕平行于Z轴的直线旋转即是在XY平面内旋转;绕平行于X轴的直线旋转即是在YZ平面内旋转;绕平行于Y轴的直线旋转即是在XZ平面内旋转

scale

按各坐标轴的缩放比例和指定的缩放原点进行缩放。该方法可能改变原几何对象的坐标值,如果需要保留原几何对象,可以使用clone方法复制为副本。

simplify

简化几何对象。使用较少的坐标数量表示与原几何对象近似的几何对象,该方法可简化线以及由线构成的几何对象(即线、多线、面、多面和圆)。采用道格拉斯-普克算法,每条用于构成几何对象的线中应至少包含三个坐标,若坐标个数小于3,则不做任何处理。

transform

(暂未启用)将一个几何对象中点所对应的地理坐标从源坐标系转换到目标坐标系。该方法可能改变原几何对象的坐标值,如果需要保留原几何对象,需要事先使用clone方法复制为副本。

Constructor

new Collection(geometrys)

构造集合体。

Parameters:
Name Type Description
geometrys Array.<module:geom~Geometry>

几何对象数组。

Example
let coord1 = new hmap.basetype.Coordinate(120,30,0);
let coord2 = new hmap.basetype.Coordinate(120.1,30.1,0);
let point1 = new hmap.geom.Point(coord1);
let point2 = new hmap.geom.Point(coord2);
let line = new hmap.geom.Line([point1,point2]);
let collection = new hmap.geom.Collection([point1,point2,line]);

Methods

addGeometry(geometry, index) → {module:geom~Collection}

向集合体添加一个几何对象。

Parameters:
Name Type Description
geometry module:geom~Geometry

要添加的几何对象,该参数不合法时,返回原集合体。

index Number

几何对象索引,0或正整数。表示新加入的几何对象的索引位置。当索引小于0时,添加到几何对象数组的起始位置;当索引大于几何对象的数量或为空时,添加到几何对象数组的末尾。

Returns:
module:geom~Collection -

返回修改后的集合体对象

Example
let result = collection.addGeometry(point3,2);

applyTransform(callback)

给定一个函数,用来修改几何对象的坐标值。该方法可能改变原几何对象的坐标值,如果需要保留原几何对象,可以使用clone方法复制为副本

Parameters:
Name Type Description
callback function

用于处理坐标值的回调函数,回调函数的参数为坐标对象,该回调函数会作用在几何对象的每个坐标上

atApproximatePoint(coord) → {Boolean}

检测一个坐标是否在几何对象的边界范围以内。 本计算基于边界盒与坐标的相交运算,不包含高程方向的运算,一般用于近似相交判断。注意:与边界盒相交的坐标不一定在几何对象内,可能会在几何对象的边缘以外附近。
边界盒:即几何对象的地理范围构成的多边形区域。

Parameters:
Name Type Description
coord module:basetype~Coordinate

地理坐标

Returns:
Boolean -

返回true表示在几何对象的边界盒范围以内;返回false表示不在几何对象的边界盒范围以内

clone() → {module:geom~Geometry}

复制一个集合体。复制后的集合体是独立于原集合体的实例。

Returns:
module:geom~Geometry -

新的集合体。

destroy()

销毁对象。

Example
collection.destroy();

distanceTo(geometry, options) → {Number|Object}

计算两个地理几何对象之间的距离(X-Y平面内)。

Parameters:
Name Type Description
geometry module:geom~Geometry

地理几何对象,继承module:geom~Geometry的任意几何对象

options Object

距离计算时的可选配置项

Name Type Description
details Boolean

指定返回结果的格式,默认为false
若为true,则返回一个对象:{"distance":xxx,"x0":xxx,"y0":xxx,"x1":xxx,"y1":xxx}。其中 distance 表示几何对象到目标几何对象的距离;x0 和 y0 属性表示当前几何对象上最靠近目标几何对象的坐标;x1 和 y1 表示目标几何上最靠近当前几何对象的坐标。
若为false,则返回几何对象到目标几何对象的距离值,距离的单位跟当前地图的坐标系使用的长度单位保持一致。

edge Boolean

是否计算一个几何图形到目标几何图形边缘的最近距离,默认为true。 如果为true, 一个几何图形完全包含在目标几何图形中时,计算距离为负数;如果为false,两个几何图形相交情况下 计算距离为0。。

Returns:
Number | Object -

两个几何之间的距离。details为true 返回Object 否则返回 Number

getArea() → {Number}

计算面积,非面状几何对象不会被统计。

Returns:
Number -

面积

Example
let result = collection.getArea();

getCentroid() → {module:basetype~Coordinate}

获取集合体的质心。

Returns:
module:basetype~Coordinate -

质心地理坐标,返回-1表示没有质心

Example
let result = collection.getCentroid();

getCount() → {Number}

获取几何对象数量。

Returns:
Number -

几何对象数量

getExtent() → {module:basetype~Extent}

计算集合体的地理范围。该地理范围界定了X-Y平面的边界,不含高程信息。

Returns:
module:basetype~Extent -

集合体的地理范围。

getGeometryTypes() → {Array.<String>}

获取组成集合体的所有几何对象类型。

Returns:
Array.<String> -

所有几何对象类型的数组,该数组的每个元素表示在hmap.geom.Collection#getGeoms返回的几何对象数组中同一位置的几何对象类型

getGeoms() → {Array.<module:geom~Geometry>}

获取所有的几何对象。

Returns:
Array.<module:geom~Geometry> -

几何对象数组

getLength(srid) → {Number}

计算长度,不会统计“非线几何对象”的长度。

Parameters:
Name Type Default Description
srid String 4326

坐标系,默认是"4326"

Returns:
Number -

长度值,单位是米

Example
let result = collection.getLength(4326);

getType() → {String}

获取几何对象类型。

Returns:
String -

几何对象类型

intersectsExtent(extent) → {Boolean}

检测集合体与地理范围是否相交。

Parameters:
Name Type Description
extent module:basetype~Extent

地理范围

Returns:
Boolean -

为true时表示相交,为false时表示不相交

intersectsGeometry(geom) → {Boolean}

检测与另一个几何对象是否相交。

Parameters:
Name Type Description
geom module:geom~Geometry

另一个几何对象

Returns:
Boolean -

返回true表示相交;返回false表示不相交

isSelfIntersects() → {Boolean}

自相交判断。

Returns:
Boolean -

true表示相交,false表示不相交

moveByDelta(deltaX, deltaY, deltaZ) → {module:geom~Collection}

沿坐标轴正方向,将几何对象的所有坐标按给定的参数偏移。如果参数为负,则向坐标轴负向偏移。该方法可能改变原几何对象的位置,如果需要保留原几何对象,可以使用clone方法复制为副本。

Parameters:
Name Type Description
deltaX Number

X坐标轴方向的平移量

deltaY Number

Y坐标轴方向的平移量

deltaZ Number

Z坐标轴方向的平移量

Returns:
module:geom~Collection -

移动后的几何对象

removeGeom(geom) → {Number}

从集合体中删除一个几何对象。

Parameters:
Name Type Description
geom module:geom~Geometry

要删除的几何对象

Returns:
Number -

删除几何对象个数

Example
let result = collection.removeGeom(point1);//result=1

rotate(axis, angle, center)

绕着指定直线(旋转轴)旋转,所指定的直线穿过给定点且平行于坐标轴。旋转后的坐标可能发生变化。绕轴旋转的本质如下: 绕平行于Z轴的直线旋转即是在XY平面内旋转;绕平行于X轴的直线旋转即是在YZ平面内旋转;绕平行于Y轴的直线旋转即是在XZ平面内旋转

Parameters:
Name Type Description
axis String

坐标轴,旋转轴平行于该坐标轴并与坐标轴同向。可选值为"X","Y","Z"

angle Number

旋转的角度,超过360度时,取angle/360的余数。逆时针旋转为正,顺时针旋转为负

center module:basetype~Coordinate

旋转轴所穿过的点,可选项。该参数为空时,绕坐标轴旋转

Throws:
TypeError -

当axis不是'X'、’Y‘、’Z‘三者之一,或者参数类型不对时,抛出异常

scale(xFactor, yFactor, zFactor, origin) → {module:geom~Collection}

按各坐标轴的缩放比例和指定的缩放原点进行缩放。该方法可能改变原几何对象的坐标值,如果需要保留原几何对象,可以使用clone方法复制为副本。

Parameters:
Name Type Description
xFactor Number

X坐标值缩放比例,必须大于0。

yFactor Number

Y坐标值缩放比例,必须大于0。

zFactor Number

Z坐标值缩放比例,必须大于0。

origin module:basetype~Coordinate

缩放原点,以该点为参考点进行缩放。默认以几何对象地理范围的中心点进行缩放。

Throws:
  • RangeError -

    当xFactor, yFactor, zFactor的值不为正时。

  • TypeError -

    origin类型错误时。

Returns:
module:geom~Collection -

返回缩放后的几何对象。

simplify(tolerance) → {module:geom~Collection}

简化几何对象。使用较少的坐标数量表示与原几何对象近似的几何对象,该方法可简化线以及由线构成的几何对象(即线、多线、面、多面和圆)。采用道格拉斯-普克算法,每条用于构成几何对象的线中应至少包含三个坐标,若坐标个数小于3,则不做任何处理。

Parameters:
Name Type Description
tolerance Number

简化所用容差值,大于等于0。(不表示两个坐标点之间的距离)。

Returns:
module:geom~Collection -

返回简化后的几何对象。

transform(source, destination, transformer) → {module:geom~Geometry}

(暂未启用)将一个几何对象中点所对应的地理坐标从源坐标系转换到目标坐标系。该方法可能改变原几何对象的坐标值,如果需要保留原几何对象,需要事先使用clone方法复制为副本。

Parameters:
Name Type Description
source String

源坐标系,考虑到实际转换时,数据量可能较大,故传入CRS的SRID,而非CRS实例,以减少CRS实例数量,进而降低内存成本

destination String

目标坐标系

transformer function

自定义的坐标系转换方法。 如果提供,则默认使用此方法进行坐标转换

Returns:
module:geom~Geometry -

坐标转换后的几何对象