com.supermap.realspace
类 Feature3Ds
- java.lang.Object
-
- com.supermap.data.InternalHandle
-
- com.supermap.data.InternalHandleDisposable
-
- com.supermap.realspace.Feature3Ds
-
- 所有已实现的接口:
- IDisposable
public class Feature3Ds extends com.supermap.data.InternalHandleDisposable三维要素集合类。该类对象是三维要素对象的集合。三维要素集合类比较特殊,它不单纯是三维要素对象的集合,它是树状结构,也就是说三维要素集合对象还可以包含子对象,子对象也是三维要素集合类的对象。因此,一个三维要素集合对象可以包括零个或多个子对象和零个或多个三维要素对象。 下图是一个简单的例子,可以帮助进一步理解树状三维要素集合:图中的 Feature3Ds object 是三维要素集合对象,Feature3D object 是三维要素对象,每个三维要素集合对象可以包含零个或多个三维要素对象或者包含零个或多个三维要素对象,或者什么也没有,即一个空的集合。

-
-
构造器概要
构造器 构造器和说明 Feature3Ds()构造一个新的 Feature3Ds 对象。
-
方法概要
所有方法 静态方法 实例方法 具体方法 限定符和类型 方法和说明 Feature3Dadd(Feature3D feature)向该三维要素集合中添加三维要素对象。Feature3Dsadd(Feature3Ds features)向该三维要素集合中添加三维要素集合对象。Feature3Dadd(Geometry3D geometry3D)向三维要素集合中添加三维几何对象,使其成为集合中的三维要素对象,返回三维要素对象。Feature3Dsadd(String kmlFile)通过 KML 文件,向该三维要素集合中添加树状三维要素对象集合对象。voidclear()清空三维要素集合中的所有子集合对象和所有三维要素对象。voiddispose()释放该对象所占用的资源。voidexchange(int index1, int index2)交换指定索引处的对象。Feature3DfindFeature(int id, Feature3DSearchOption option)根据给定的三维要素对象ID以及指定的查询选项,查找并返回三维要素对象。Feature3D[]findFeature(String name, Feature3DSearchOption option)根据给定的三维要素对象的名称以及指定的查询选项,查找并返回名称为指定名称的所有三维要素对象。Feature3Ds[]findFeatures(String name, Feature3DSearchOption option)根据给定的三维要素集合对象的名称以及指定的查询选项,查找并返回名称为指定名称的所有三维要素集合对象。booleanfromKML(String kml)从 KML 字符串中导入三维要素集合对象。booleanfromKMLFile(String kmlFile)从 KML 文件导入三维要素集合对象。Objectget(int index)返回指定索引处的项。CameragetCamera()返回相机对象。intgetCount()返回该对象所包含项的个数。StringgetDescription()返回三维要素对象集合的描述信息。Feature3D[]getFeatureArray(Feature3DSearchOption option)返回该三维要素集合对象中的三维要素对象数组,查询选项用于设置是只返回顶层叶子结点(三维要素对象)数组还是返回所有的叶子结点(三维要素对象)数组。Feature3Ds[]getFeaturesArray(Feature3DSearchOption option)返回该三维要素集合对象中子对象的数组,子对象也是三维要素集合对象。StringgetName()返回三维要素对象集合的名称。Feature3DsgetParent()返回三维要素集合的父对象(也是三维要素对象集合对象)。Feature3Dinsert(int index, Feature3D feature)在指定的索引处插入三维要素对象。Feature3Dsinsert(int index, Feature3Ds features)在指定的索引处插入三维要素集合对象。booleanisVisible()返回三维要素集合是否可见,即三维要素集合中的所有三维要素对象是否可见。voidremove(Feature3D feature)删除三维要素集合对象中的三维要素对象。voidremove(Feature3Ds features)删除三维要素集合对象中的三维要素集合子对象。voidremove(int id)根据三维要素对象的 ID 删除三维要素集合对象中的三维要素对象。voidremoveAt(int index)删除指定索引处的项。voidsetCamera(Camera value)设置相机对象。voidsetDescription(String value)设置三维要素对象集合的描述信息。static voidsetIsDisposable(com.supermap.data.InternalHandleDisposable obj, boolean disposable)voidsetName(String value)设置三维要素对象集合的名称。voidsetVisible(boolean value)设置三维要素集合是否可见,即三维要素集合中的所有三维要素对象是否可见。StringtoKML()返回三维要素集合对象的描述信息的 KML 字符串。voidtoKMLFile(String kmlFile)将三维要素集合对象输出成KML文件。
-
-
-
方法详细资料
-
getFeatureArray
public Feature3D[] getFeatureArray(Feature3DSearchOption option)
返回该三维要素集合对象中的三维要素对象数组,查询选项用于设置是只返回顶层叶子结点(三维要素对象)数组还是返回所有的叶子结点(三维要素对象)数组。- 参数:
option- 查询选项。有关查询选项的详细信息,请参见Feature3DSearchOption枚举类。- 返回:
- 三维要素对象数组。
- 示范代码:
- 以下代码示例了向三维要素集合中添加要素,三维几何对象和要素集合对象,并通过
getFeatureArray()方法返回该三维要素集合对象中的三维要素对象数组,再通过findFeatures()方法返回三维要素集合对象。public void GetFeatureAndFeaturesArray() { //构造任意几个三维几何对象geo1、geo2、geo3、geo4、geo5 GeoPoint3D geo1 = new GeoPoint3D(10.0, 20.0, 30.0); GeoPoint3D geo2 = new GeoPoint3D(10.0, 200.0, 30.0); GeoPoint3D geo3 = new GeoPoint3D(10.0, 20.0, 300.0); GeoPoint3D geo4 = new GeoPoint3D(100.0, 20.0, 30.0); GeoPoint3D geo5 = new GeoPoint3D(115.0, 38.0, 30.0); //构造三个三维要素集合features1、features2、features3 Feature3Ds feature3Ds1 = new Feature3Ds(); feature3Ds1.setName("Feature3Ds1"); Feature3Ds feature3Ds2 = new Feature3Ds(); feature3Ds2.setName("Feature3Ds2"); Feature3Ds feature3Ds3 = new Feature3Ds(); feature3Ds3.setName("Feature3Ds3"); //构造三维要素集合的树状结构 //1 在features2中添加geo1、geo2 Feature3D feature3D1 = feature3Ds2.add(geo1); Feature3D feature3D2 = feature3Ds2.add(geo2); //2 在features2的子节点下面再添加一个features3 feature3Ds2.add(feature3Ds3); //3 在features3中添加geo3、geo4 Feature3D feature3D3 = feature3Ds3.add(geo3); Feature3D feature3D4 = feature3Ds3.add(geo4); //4 在features1子对象中添加features2和geo5 feature3Ds1.add(feature3Ds2); feature3Ds1.add(geo5); //通过GetFeatureArray接口查找features1树形的顶层三维要素集合得到featureArray1 Feature3D[] featureArray1 = feature3Ds1.getFeatureArray (Feature3DSearchOption.TOPFEATURESONLY); //通过GetFeaturesArray接口查找整个features1树形要素集合得到featuresArray1 Feature3Ds[] featuresArray1 = feature3Ds1.getFeaturesArray (Feature3DSearchOption.ALLFEATURES); //通过Find接口在顶层查找ID为0的三维要素 Feature3D result = feature3Ds1.findFeature(0, Feature3DSearchOption.ALLFEATURES); //通过Find接口在顶层查找三维要素集合 Feature3Ds[] results = feature3Ds1.findFeatures("feature3Ds2", Feature3DSearchOption.TOPFEATURESONLY); }
-
getFeaturesArray
public Feature3Ds[] getFeaturesArray(Feature3DSearchOption option)
返回该三维要素集合对象中子对象的数组,子对象也是三维要素集合对象。查询选项用于设置是只返回顶层的子对象还是返回所有层的子对象。有关查询选项的详细信息,请参见Feature3DSearchOption枚举类。- 参数:
option- 查询选项。有关查询选项的详细信息,请参见Feature3DSearchOption枚举类。- 返回:
- 三维要素集合对象的数组。
- 示范代码:
- 请参见
getFeatureArray()方法示例。
-
getName
public String getName()
返回三维要素对象集合的名称。- 返回:
- 三维要素对象集合的名称。
- 默认值:
- 默认值为 "UntitledFeature3Ds"。
-
setName
public void setName(String value)
设置三维要素对象集合的名称。- 参数:
value- 三维要素对象集合的名称。
-
getDescription
public String getDescription()
返回三维要素对象集合的描述信息。- 返回:
- 三维要素对象集合的描述信息。
- 默认值:
- 默认值为一个空的字符串。
-
setDescription
public void setDescription(String value)
设置三维要素对象集合的描述信息。- 参数:
value- 三维要素对象集合的描述信息。
-
getParent
public Feature3Ds getParent()
返回三维要素集合的父对象(也是三维要素对象集合对象)。三维要素集合类是树状结构的,如下图,假设一个三维要素集合对象的树状结构如下图,如果被操作的三维要素集合对象是红色框里的对象,那么通过本方法返回的其父对象就是蓝色框里的对象。

- 返回:
- 三维要素集合的父对象。
- 默认值:
- 默认值为空。
-
isVisible
public boolean isVisible()
返回三维要素集合是否可见,即三维要素集合中的所有三维要素对象是否可见。- 返回:
- 如果三维要素集合可见,返回 true;否则返回 false。
- 默认值:
- 默认值为 true。
-
setVisible
public void setVisible(boolean value)
设置三维要素集合是否可见,即三维要素集合中的所有三维要素对象是否可见。- 参数:
value- 一个布尔值指定三维要素集合是否可见。
-
getCamera
public Camera getCamera()
返回相机对象。- 返回:
- 相机对象。
- 默认值:
- 默认值为{Altitude=-1.79769313486232E+308,Heading=-1.79769313486232E+308,Latitude=-1.79769313486232E+308,Longitude=-1.79769313486232E+308,Tilt=-1.79769313486232E+308,AltitudeMode=CLAMP_TO_GROUND}
-
setCamera
public void setCamera(Camera value)
设置相机对象。- 参数:
value- 相机对象。
-
findFeature
public Feature3D findFeature(int id, Feature3DSearchOption option)
根据给定的三维要素对象ID以及指定的查询选项,查找并返回三维要素对象。- 参数:
id- 三维要素对象的ID。option- 查询选项。- 返回:
- 三维要素对象。
- 示范代码:
- 以下代码示例了如何在三维要素集合查找给定ID的三维要素.
public boolean Feature3DsFindFeature() { //假设已存在名字为kml.kml的KML字符串 String fileName = "D:\\SampleData\\kml.kml"; int id = 2; //用给定的KML字符串来填充该三维要素集合对象 Feature3Ds features = new Feature3Ds(); features.fromKMLFile(fileName); //按照给定的ID和查找模式查找三维要素 Feature3D feature = features.findFeature(id, Feature3DSearchOption.TOPFEATURESONLY); //判断给定id与查找得到的三维要素的ID是否相等,从而判断查找的正确性 if (id == feature.getID()) { return true; } else return false; }
-
findFeature
public Feature3D[] findFeature(String name, Feature3DSearchOption option)
根据给定的三维要素对象的名称以及指定的查询选项,查找并返回名称为指定名称的所有三维要素对象。- 参数:
name- 三维要素对象的名称。option- 查询选项。- 返回:
- 三维要素对象数组。
-
findFeatures
public Feature3Ds[] findFeatures(String name, Feature3DSearchOption option)
根据给定的三维要素集合对象的名称以及指定的查询选项,查找并返回名称为指定名称的所有三维要素集合对象。- 参数:
name- 三维要素集合对象的名称。option- 查询选项。- 返回:
- 三维要素集合对象的数组。
- 示范代码:
- 请参见
getFeatureArray()方法示例。
-
add
public Feature3D add(Feature3D feature)
向该三维要素集合中添加三维要素对象。- 参数:
feature- 待添加的三维要素对象。- 返回:
- 三维要素对象。
- 示范代码:
- 以下代码示例了如何向该三维要素集合中添加三维要素对象
public boolean AddFeature3D() { //构造一个三维几何点对象 GeoPoint3D point = new GeoPoint3D(45, 90, 50); //构造一个三维要素对象 Feature3D feature = new Feature3D(); //设置三维要素对象所对应的几何对象 feature.setGeometry(point); //构造一个三维要素集合 Feature3Ds features = new Feature3Ds(); //将得到的三维要素添加到三维要素集合中 Feature3D resultFeature = features.add(feature); //判断新添加的三维要素父对象的名称与该三维要素集合对象的名称是否相等,以此来判断添加是否成功 if (features.getName() == resultFeature.getParent().getName()) { return true; } else return false; }
-
add
public Feature3Ds add(Feature3Ds features)
向该三维要素集合中添加三维要素集合对象。- 参数:
features- 待添加的三维要素对象集合。- 返回:
- 三维要素对象集合。
- 示范代码:
- 请参见
getFeatureArray()方法示例。
-
getCount
public int getCount()
返回该对象所包含项的个数。- 返回:
- 该对象所包含项的个数。
-
insert
public Feature3Ds insert(int index, Feature3Ds features)
在指定的索引处插入三维要素集合对象。- 参数:
index- 指定的目标索引值。features- 指定的待插入的三维要素集合对象。- 返回:
- 新插入的三维要素集合对象。
-
insert
public Feature3D insert(int index, Feature3D feature)
在指定的索引处插入三维要素对象。- 参数:
index- 指定的目标索引值。feature- 指定的待插入的三维要素对象。- 返回:
- 新插入三维要素对象。
-
removeAt
public void removeAt(int index)
删除指定索引处的项。- 参数:
index- 指定的待删除项所处的索引值。
-
add
public Feature3D add(Geometry3D geometry3D)
向三维要素集合中添加三维几何对象,使其成为集合中的三维要素对象,返回三维要素对象。- 参数:
geometry3D- 待添加的三维几何对象。- 返回:
- 三维要素对象。
- 示范代码:
- 以下代码示范了如何向三维场景中添加三维模型对象,并且通过Camera转到给定位置查看
public void Feature3DsAddGeometry3D() { //构造一个默认的三维场景 SceneControl sceneControl = new SceneControl(); Scene scene = sceneControl.getScene(); //向三维图层中添加给定的kml文件,得到三维图层layer Layer3D layer3D = scene.getLayers().add("D:\\SampleData\\kml.kml", true); //构造一个圆锥体几何对象 Point3D point3D = new Point3D(102, 31, 0); GeoCone geoCone = new GeoCone(point3D, 800, 800); // 实例化一个三维模型几何对象,将其输出为 sgm 格式的文件 //geoCone.getGeoModel接口引用其父类GeoMetry3D的getGeoModel,不影响使用。 GeoModel geoModel = geoCone.getGeoModel(80, 80); geoModel.toSGM("D:\\SampleData\\Model.sgm"); //向三维图层中给定的位置处添加给定的模型 Point3D position = new Point3D(116, 39, 10000); geoModel.fromFile("D:\\SampleData\\Model.sgm", position); GeoPlacemark geoPlaceMark = new GeoPlacemark(); geoPlaceMark.setGeometry(geoModel); Feature3D feature3D = layer3D.getFeatures().add(geoPlaceMark); feature3D.setVisible(true); //用相机转到给定的位置 Camera camera = scene.getCamera(); camera.setLongitude(position.getX()); camera.setLatitude(position.getY()); camera.setAltitude(5000); camera.setTilt(60); scene.setCamera(camera); }
-
exchange
public void exchange(int index1, int index2)交换指定索引处的对象。- 参数:
index1- 需要进行交换操作项的索引。index2- 需要进行交换操作项的索引。
-
get
public Object get(int index)
返回指定索引处的项。- 参数:
index- 指定的索引值。- 返回:
- 指定索引处的项。
-
remove
public void remove(int id)
根据三维要素对象的 ID 删除三维要素集合对象中的三维要素对象。- 参数:
id- 待删除的三维要素对象的 ID。
-
remove
public void remove(Feature3D feature)
删除三维要素集合对象中的三维要素对象。- 参数:
feature- 待删除的三维要素对象。
-
remove
public void remove(Feature3Ds features)
删除三维要素集合对象中的三维要素集合子对象。- 参数:
features- 待删除的三维要素集合子对象。
-
clear
public void clear()
清空三维要素集合中的所有子集合对象和所有三维要素对象。
-
toKML
public String toKML()
返回三维要素集合对象的描述信息的 KML 字符串。- 返回:
- 三维要素集合对象的描述信息的 KML 字符串。
-
add
public Feature3Ds add(String kmlFile)
通过 KML 文件,向该三维要素集合中添加树状三维要素对象集合对象。KML支持的图层类型为:几何对象(点、线、面)、图片、模型。
- 参数:
kmlFile- KML 文件全路径。- 返回:
- 三维要素对象集合。
- 示范代码:
- 以下代码示范了如何向三维要素集合添加 KML 为子对象
public void Feature3DsAddKML() { //构造三维点对象,再构造三维地标几何对象 GeoPoint3D geometry = new GeoPoint3D(116, 39, 300); GeoPlacemark geoPlacemark = new GeoPlacemark("三维点", geometry); //GeoPlacemark geoPlacemark = new GeoPlacemark("GeoPoint3D", geometry); //构造一个三维要素对象并输出kml字符串 Feature3D feature3D = new Feature3D(); feature3D.setGeometry(geoPlacemark); String kml = feature3D.toKML(); //向三维要素集合对象添加kml Feature3Ds feature3Ds = new Feature3Ds(); feature3Ds.add(kml); }
-
fromKML
public boolean fromKML(String kml)
从 KML 字符串中导入三维要素集合对象。- 参数:
kml- KML字符串。- 返回:
- 导入成功返回 true;否则返回 false。
- 示范代码:
- 以下代码示例了如何导出三维要素集合对象到KML字符串,再从KML字符串中导入三维要素集合对象
public void FromToKML() { //构造一个三维要素集合对象,并添加kml文件 //Create an instance of Feature3D and add the kml file to the feature3D object. Feature3Ds feature3Ds = new Feature3Ds(); feature3Ds.add("D:\\SampleData\\kml.kml"); //将三维要素集合导出为KML字符串 //Export the feature3Ds to a kml string. String kml = feature3Ds.toKML(); //通过导入 KML 字符串创建三维要素集合对象 //Import the Feature3D object from a kml string. feature3Ds.fromKML(kml); //释放资源 //Release the resources. feature3Ds.dispose(); }
-
fromKMLFile
public boolean fromKMLFile(String kmlFile)
从 KML 文件导入三维要素集合对象。- 参数:
kmlFile- KML文件路径。- 返回:
- 导入成功返回 true;否则返回 false。
-
toKMLFile
public void toKMLFile(String kmlFile)
将三维要素集合对象输出成KML文件。 不支持将复合对象保存到kml文件。- 参数:
kmlFile- KML文件存储路径。- 示范代码:
- 请参见
Feature3Ds.fromKML()方法的示例。
-
dispose
public void dispose()
释放该对象所占用的资源。当调用该方法之后,此对象不再可用。
-
setIsDisposable
public static void setIsDisposable(com.supermap.data.InternalHandleDisposable obj, boolean disposable)
-
-
Copyright © 2021–2025 SuperMap. All rights reserved.