public class Geometrist3D extends Object
限定符和类型 | 方法和说明 |
---|---|
static Geometry3D |
createBuffer(Geometry3D geometry,
BufferAnalyst3DParameter bufferAnalyst3DParameter,
PrjCoordSys prjCoordSys)
对三维点、线几何对象做缓冲区。
|
static Geometry3D |
erase(Geometry3D geometry3D,
Geometry3D eraseGeometry3D)
三维体对象擦除运算,即在被操作对象上擦除掉与操作对象相重合的部分。
|
static boolean |
hasIntersection(Geometry3D geometry3D,
Geometry3D intersectGeometry3D)
判断两个三维几何对象是否相交。
|
static Geometry3D |
intersect(Geometry3D geometry3D,
Geometry3D intersectGeometry3D)
三维体对象求交运算,即求算并返回两个三维体对象的交集。
|
static GeoLine3D |
parallelLine(GeoLine3D geoLine3D,
boolean bLonlat,
Double dDistance)
三维线平移;平移distance < 0,平行线在线段方向的右侧;平移distance > 0,平行线在线段方向的左侧,线段方向是构成点的点序方向。
|
static Geometry3D |
resample(Geometry3D geometry,
double tolerance,
PrjCoordSys prjCoordsys)
对三维几何对象进行重采样。
|
static Point3Ds |
smooth(Point3Ds points,
int smoothness,
PrjCoordSys prjCoordsys)
对三维点串进行光滑处理。
|
static GeoLine3D |
subDivisionLine(GeoLine3D srcGeoLine3D,
boolean isLonLat,
double distance)
三维线根据给定长度进行插值加密。
|
static Geometry3D |
union(Geometry3D geometry3D,
Geometry3D unionGeometry3D)
三维体对象合并运算,即将两个具有重叠体积的三维体对象合并为一个三维体对象并返回。
|
static Geometry3D |
xOR(Geometry3D geometry3D,
Geometry3D xorGeometry3D)
三维体对象对称差(异或)运算,即对两个三维体对象进行交集取反操作,返回两对象去除交集后合并的结果。
|
public static Geometry3D union(Geometry3D geometry3D, Geometry3D unionGeometry3D)
该操作将两个具有公共体积的三维体合并为一个三维体,并返回为一个 GeoModel 类型的 Geometry3D
对象。
在进行三维体合并运算时,注意以下要点:
仅支持三维体对象,包括 GeoBox
(长方体)、GeoCone
(圆锥体)、GeoSphere
(球体)、GeoHemiSphere
(半球体)、GeoCylinder
(圆台)、GeoEllipsoid
(椭球体)、GeoPieCylinder
(饼台)、GeoPyramid
(四棱锥)等三维规则几何体,以及 GeoModel
(三维模型)。
参与该运算的三维体必须是闭合的。如果不闭合,将抛出异常。
建议在对三维体,尤其是三维模型(GeoModel
),进行有效性检查后再进行擦除运算。
hasIntersection
方法判断两个三维体是否相交。geometry3D
- 指定的参与合并的第一个三维体对象。unionGeometry3D
- 指定的参与合并的第二个三维体对象。NullPointerException
- 如果 geometry3D 或 intersectGeometry3D 不闭合public static Geometry3D intersect(Geometry3D geometry3D, Geometry3D intersectGeometry3D)
该操作计算两个三维体的公共体积部分,并返回为一个 GeoModel 类型的 Geometry3D
对象。
在进行三维体相交运算时,注意以下要点:
仅支持三维体对象,包括 GeoBox
(长方体)、GeoCone
(圆锥体)、GeoSphere
(球体)、GeoHemiSphere
(半球体)、GeoCylinder
(圆台)、GeoEllipsoid
(椭球体)、GeoPieCylinder
(饼台)、GeoPyramid
(四棱锥)等三维规则几何体,以及 GeoModel
(三维模型)。
参与该运算的三维体必须是闭合的。如果不闭合,将抛出异常。
建议在对三维体,尤其是三维模型(GeoModel
),进行有效性检查后再进行擦除运算。
hasIntersection
方法判断两个三维体是否相交。geometry3D
- 指定的参与求交的第一个三维体对象。intersectGeometry3D
- 指定的参与求交的第二个三维体对象。NullPointerException
- 如果 geometry3D 或 intersectGeometry3D 不闭合public static Geometry3D erase(Geometry3D geometry3D, Geometry3D eraseGeometry3D)
该操作在一个三维体上剔除其与另一个三维体的公共体积部分,并返回为一个 GeoModel 类型的 Geometry3D
对象。
在进行三维体擦除运算时,注意以下要点:
仅支持三维体对象,包括 GeoBox
(长方体)、GeoCone
(圆锥体)、GeoSphere
(球体)、GeoHemiSphere
(半球体)、GeoCylinder
(圆台)、GeoEllipsoid
(椭球体)、GeoPieCylinder
(饼台)、GeoPyramid
(四棱锥)等三维规则几何体,以及 GeoModel
(三维模型)。
参与该运算的三维体必须是闭合的。如果不闭合,将抛出异常。
建议在对三维体,尤其是三维模型(GeoModel
),进行有效性检查后再进行擦除运算。
geometry3D
- 指定的被操作对象。eraseGeometry3D
- 指定的操作对象。NullPointerException
- 如果 geometry3D 或 eraseGeometry3D 不闭合public static Geometry3D xOR(Geometry3D geometry3D, Geometry3D xorGeometry3D)
该操作从两个三维体的并集中将二者的交集剔除,并返回为一个 GeoModel 类型的 Geometry3D
对象。
在进行三维体对称差运算时,注意以下要点:
仅支持三维体对象,包括 GeoBox
(长方体)、GeoCone
(圆锥体)、GeoSphere
(球体)、GeoHemiSphere
(半球体)、GeoCylinder
(圆台)、GeoEllipsoid
(椭球体)、GeoPieCylinder
(饼台)、GeoPyramid
(四棱锥)等三维规则几何体,以及 GeoModel
(三维模型)。
参与该运算的三维体必须是闭合的。如果不闭合,将抛出异常。
建议在对三维体,尤其是三维模型(GeoModel
),进行有效性检查后再进行擦除运算。
hasIntersection
方法判断两个三维体是否相交。geometry3D
- 指定的参与对称差的第一个三维体对象。xorGeometry3D
- 指定的参与对称差的第二个三维体对象。NullPointerException
- 如果 geometry3D 或 intersectGeometry3D 不闭合public static boolean hasIntersection(Geometry3D geometry3D, Geometry3D intersectGeometry3D)
该方法用于判断两个三维体是否相交,或三维线与三维体是否相交。
两个三维体相交的判断依据是二者具有公共的体积。二者仅共用一个顶点或一条边或一个面都不构成相交。
三维线必须穿过三维体才构成相交。
在判断两个三维几何对象是否相交时,注意以下要点:
支持三维体对象和三维线对象。三维几何体包括 GeoBox
(长方体)、GeoCone
(圆锥体)、GeoSphere
(球体)、GeoHemiSphere
(半球体)、GeoCylinder
(圆台)、GeoEllipsoid
(椭球体)、GeoPieCylinder
(饼台)、GeoPyramid
(四棱锥)等三维规则几何体,以及 GeoModel
(三维模型)。
可以检查两个三维体是否有交叠,或检查一个三维线对象与一个三维体对象是否相交。
检查两个三维体是否相交时,要求三维体必须是闭合的。如果不闭合,将抛出异常。
建议在对三维体,尤其是三维模型(GeoModel
),进行有效性检查后再进行相交判断。
geometry3D
- 指定的第一个三维几何对象。intersectGeometry3D
- 指定的第二个三维几何对象。NullPointerException
- 当判断两个三维体是否相交时象,如果 geometry3D 或 intersectGeometry3D 不闭合public static Geometry3D resample(Geometry3D geometry, double tolerance, PrjCoordSys prjCoordsys)
该方法用于对三维几何对象(目前仅支持三维线对象)进行重采样。采用的重采样方法为“光栏法”,具体介绍请参见 ResampleType.RTBend
的介绍。
有关重采样的介绍,还可参阅 Generalization3D
类的 resample
方法。
geometry
- 指定的三维几何对象,目前支持三维线对象。tolerance
- 指定的重采样容限。单位为米。重采样距离可设置为大于 0 的浮点型数值,设置的重采样距离越大,采样结果数据越简化。prjCoordsys
- 指定的源投影坐标系。当源投影为地理坐标系时,需要进行投影转换之后进行重采样处理。public static Point3Ds smooth(Point3Ds points, int smoothness, PrjCoordSys prjCoordsys)
该方法用于对三维点串进行光滑处理,可以将三维线对象的节点表示成三维点串,从而对线对象进行光滑。光滑方法为 B 样条法。更多介绍,请参阅 Generalization3D
类的 smooth
方法。
points
- 指定的三维点串。smoothness
- 指定的光滑系数。有效范围为大于等于 2,设置为小于 2 的值会抛出异常。光滑系数越大,点串越光滑。建议取值范围为[2,10]。prjCoordsys
- 指定的源投影坐标系。当源投影为地理坐标系时,需要进行投影转换之后进行光滑处理。public static Geometry3D createBuffer(Geometry3D geometry, BufferAnalyst3DParameter bufferAnalyst3DParameter, PrjCoordSys prjCoordSys)
geometry
- 指定的三维点线几何对象bufferAnalyst3DParameter
- 指定的缓冲参数类。prjCoordSys
- 指定的源投影坐标系。该方法用于对三维点、线几何对象在空间做缓冲区域,支持平面和球面场景。
三维点的缓冲区是以点对象为圆心,以给定的缓冲距离为半径生成的空间球状区域。
三维线的缓冲区是沿空间线对象的法线方向,向线对象的周围平移一定的距离而得到空间柱状区域,并与在线端点处形成的半球(也可以形成圆形)接合形成的封闭区域。
调用该方法时,需要通过 bufferAnalyst3DParameter 指定缓冲参数BufferAnalyst3DParameter
对象,该对象用于指定几何对象缓冲所需的参数,如缓冲端点类型、缓冲半径、缓冲质量等。
public void CreatBufferForLine3D(Geometry3D geometry,PrjCoordSys prjCoordSys) { //设置缓冲参数 BufferAnalyst3DParameter bufferAnalyst3DParameter = new BufferAnalyst3DParameter(); bufferAnalyst3DParameter.setEndType (BufferEndType.ROUND); bufferAnalyst3DParameter.setBufferDistance(50) ; bufferAnalyst3DParameter.setBufferQuality(20) ; //调用创建缓冲区方法 Geometry3D geoModel = Geometrist3D.createBuffer(geometry,bufferAnalyst3DParameter,prjCoordSys); }
public static GeoLine3D subDivisionLine(GeoLine3D srcGeoLine3D, boolean isLonLat, double distance)
Copyright © 2021–2024 SuperMap. All rights reserved.