public class Feature3Ds
extends com.supermap.data.InternalHandleDisposable
该类对象是三维要素对象的集合。三维要素集合类比较特殊,它不单纯是三维要素对象的集合,它是树状结构,也就是说三维要素集合对象还可以包含子对象,子对象也是三维要素集合类的对象。因此,一个三维要素集合对象可以包括零个或多个子对象和零个或多个三维要素对象。 下图是一个简单的例子,可以帮助进一步理解树状三维要素集合:图中的 Feature3Ds object 是三维要素集合对象,Feature3D object 是三维要素对象,每个三维要素集合对象可以包含零个或多个三维要素对象或者包含零个或多个三维要素对象,或者什么也没有,即一个空的集合。
构造器和说明 |
---|
Feature3Ds()
构造一个新的 Feature3Ds 对象。
|
限定符和类型 | 方法和说明 |
---|---|
Feature3D |
add(Feature3D feature)
向该三维要素集合中添加三维要素对象。
|
Feature3Ds |
add(Feature3Ds features)
向该三维要素集合中添加三维要素集合对象。
|
Feature3D |
add(Geometry3D geometry3D)
向三维要素集合中添加三维几何对象,使其成为集合中的三维要素对象,返回三维要素对象。
|
Feature3Ds |
add(String kmlFile)
通过 KML 文件,向该三维要素集合中添加树状三维要素对象集合对象。
|
void |
clear()
清空三维要素集合中的所有子集合对象和所有三维要素对象。
|
void |
dispose()
释放该对象所占用的资源。
|
void |
exchange(int index1,
int index2)
交换指定索引处的对象。
|
Feature3D |
findFeature(int id,
Feature3DSearchOption option)
根据给定的三维要素对象ID以及指定的查询选项,查找并返回三维要素对象。
|
Feature3D[] |
findFeature(String name,
Feature3DSearchOption option)
根据给定的三维要素对象的名称以及指定的查询选项,查找并返回名称为指定名称的所有三维要素对象。
|
Feature3Ds[] |
findFeatures(String name,
Feature3DSearchOption option)
根据给定的三维要素集合对象的名称以及指定的查询选项,查找并返回名称为指定名称的所有三维要素集合对象。
|
boolean |
fromKML(String kml)
从 KML 字符串中导入三维要素集合对象。
|
boolean |
fromKMLFile(String kmlFile)
从 KML 文件导入三维要素集合对象。
|
Object |
get(int index)
返回指定索引处的项。
|
Camera |
getCamera()
返回相机对象。
|
int |
getCount()
返回该对象所包含项的个数。
|
String |
getDescription()
返回三维要素对象集合的描述信息。
|
Feature3D[] |
getFeatureArray(Feature3DSearchOption option)
返回该三维要素集合对象中的三维要素对象数组,查询选项用于设置是只返回顶层叶子结点(三维要素对象)数组还是返回所有的叶子结点(三维要素对象)数组。
|
Feature3Ds[] |
getFeaturesArray(Feature3DSearchOption option)
返回该三维要素集合对象中子对象的数组,子对象也是三维要素集合对象。
|
String |
getName()
返回三维要素对象集合的名称。
|
Feature3Ds |
getParent()
返回三维要素集合的父对象(也是三维要素对象集合对象)。
|
Feature3D |
insert(int index,
Feature3D feature)
在指定的索引处插入三维要素对象。
|
Feature3Ds |
insert(int index,
Feature3Ds features)
在指定的索引处插入三维要素集合对象。
|
boolean |
isVisible()
返回三维要素集合是否可见,即三维要素集合中的所有三维要素对象是否可见。
|
void |
remove(Feature3D feature)
删除三维要素集合对象中的三维要素对象。
|
void |
remove(Feature3Ds features)
删除三维要素集合对象中的三维要素集合子对象。
|
void |
remove(int id)
根据三维要素对象的 ID 删除三维要素集合对象中的三维要素对象。
|
void |
removeAt(int index)
删除指定索引处的项。
|
void |
setCamera(Camera value)
设置相机对象。
|
void |
setDescription(String value)
设置三维要素对象集合的描述信息。
|
static void |
setIsDisposable(com.supermap.data.InternalHandleDisposable obj,
boolean disposable) |
void |
setName(String value)
设置三维要素对象集合的名称。
|
void |
setVisible(boolean value)
设置三维要素集合是否可见,即三维要素集合中的所有三维要素对象是否可见。
|
String |
toKML()
返回三维要素集合对象的描述信息的 KML 字符串。
|
void |
toKMLFile(String kmlFile)
将三维要素集合对象输出成 KML 文件。
|
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); }
public Feature3Ds[] getFeaturesArray(Feature3DSearchOption option)
Feature3DSearchOption
枚举类。option
- 查询选项。有关查询选项的详细信息,请参见 Feature3DSearchOption
枚举类。getFeatureArray()
方法示例。public String getName()
public void setName(String value)
value
- 三维要素对象集合的名称。public String getDescription()
public void setDescription(String value)
value
- 三维要素对象集合的描述信息。public Feature3Ds getParent()
三维要素集合类是树状结构的,如下图,假设一个三维要素集合对象的树状结构如下图,如果被操作的三维要素集合对象是红色框里的对象,那么通过本方法返回的其父对象就是蓝色框里的对象。
public boolean isVisible()
public void setVisible(boolean value)
value
- 一个布尔值指定三维要素集合是否可见。public Camera getCamera()
public void setCamera(Camera value)
value
- 相机对象。public Feature3D findFeature(int id, Feature3DSearchOption option)
id
- 三维要素对象的ID。option
- 查询选项。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; }
public Feature3D[] findFeature(String name, Feature3DSearchOption option)
name
- 三维要素对象的名称。option
- 查询选项。public Feature3Ds[] findFeatures(String name, Feature3DSearchOption option)
name
- 三维要素集合对象的名称。option
- 查询选项。getFeatureArray()
方法示例。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; }
public Feature3Ds add(Feature3Ds features)
features
- 待添加的三维要素对象集合。getFeatureArray()
方法示例。public int getCount()
public Feature3Ds insert(int index, Feature3Ds features)
index
- 指定的目标索引值。features
- 指定的待插入的三维要素集合对象。public Feature3D insert(int index, Feature3D feature)
index
- 指定的目标索引值。feature
- 指定的待插入的三维要素对象。public void removeAt(int index)
index
- 指定的待删除项所处的索引值。public Feature3D add(Geometry3D geometry3D)
geometry3D
- 待添加的三维几何对象。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); }
public void exchange(int index1, int index2)
index1
- 需要进行交换操作项的索引。index2
- 需要进行交换操作项的索引。public Object get(int index)
index
- 指定的索引值。public void remove(int id)
id
- 待删除的三维要素对象的 ID。public void remove(Feature3D feature)
feature
- 待删除的三维要素对象。public void remove(Feature3Ds features)
features
- 待删除的三维要素集合子对象。public void clear()
public String toKML()
public Feature3Ds add(String kmlFile)
KML支持的图层类型为:几何对象(点、线、面)、图片、模型。
kmlFile
- 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); }
public boolean fromKML(String kml)
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(); }
public boolean fromKMLFile(String kmlFile)
kmlFile
- 指定的 KML 文件相对路径。public void toKMLFile(String kmlFile)
kmlFile
- 指定的 KML 文件相对路径。Feature3Ds.fromKML()
方法的示例。public void dispose()
public static void setIsDisposable(com.supermap.data.InternalHandleDisposable obj, boolean disposable)
Copyright © 2021–2024 SuperMap. All rights reserved.