private void MoveEachFeature(GSOFeatureFolder folder, double daltX, double daltY) { GSOFeatures features = folder.Features; for (int i = 0; i < features.Length; i++) { GSOFeature feature = features[i]; if (feature is GSOFeatureFolder) { MoveEachFeature(feature as GSOFeatureFolder, daltX, daltY); } else { GSOGeometry g = feature.Geometry; if (g != null) { g.MoveXY(daltX, daltY); } //GSOGeoModel model = feature.Geometry as GSOGeoModel; //if (model!=null) //{ // GSOPoint3d pt = model.Position; // pt.X += daltX; // pt.Y += daltY; // model.Position = pt; //} } } }
/// <summary> /// 递归升高/降低给定高度值 /// </summary> /// <param name="folder">要素集</param> /// <param name="height">高度/米</param> private void MoveEachFeature(GSOFeatureFolder folder, double height) { GSOFeatures features = folder.Features; for (int i = 0; i < features.Length; i++) { GSOFeature feature = features[i]; if (feature is GSOFeatureFolder) { MoveEachFeature(feature as GSOFeatureFolder, height); } else { GSOGeometry geometry = feature.Geometry; if (geometry != null) { //为了显示升降效果,需要将ClampToGround模式修改为RelativeToGround模式 if (geometry.AltitudeMode == EnumAltitudeMode.ClampToGround) { geometry.AltitudeMode = EnumAltitudeMode.RelativeToGround; } //将z轴移动height米 geometry.MoveZ(height); } } } }
private void MoveEachFeature(GSOFeatureFolder folder, double height) { GSOFeatures features = folder.Features; for (int i = 0; i < features.Length; i++) { GSOFeature feature = features[i]; if (feature is GSOFeatureFolder) { MoveEachFeature(feature as GSOFeatureFolder, height); } else { GSOGeoModel model = feature.Geometry as GSOGeoModel; if (model != null) { GSOPoint3d pt = model.Position; if (model.AltitudeMode == EnumAltitudeMode.ClampToGround) { model.AltitudeMode = EnumAltitudeMode.RelativeToGround; } pt.Z += height; model.Position = pt; } } } }
/// <summary> /// 获取图层中的所有feature对象,包括featureFolder下面的feature对象 /// </summary> /// <param name="layer"></param> /// <returns></returns> public static GSOFeatures getRealFeaturesByLayer(GSOLayer layer) { GSOFeatures realFeatures = new GSOFeatures(); if (layer != null) { for (int i = 0; i < layer.GetAllFeatures().Length; i++) { GSOFeature feature = layer.GetAt(i); if (feature != null) { if (feature.Type == EnumFeatureType.FeatureFolder) { GSOFeatureFolder featureFolder = feature as GSOFeatureFolder; getRealFeatureByFeatures(featureFolder.Features, ref realFeatures); } else { realFeatures.Add(feature); } } } } return(realFeatures); }
void GetRealFeature(GSOFeature feature, GSOFeatures realfeatures) { if (feature == null || realfeatures == null) { return; } if (feature.Type == EnumFeatureType.Feature) { realfeatures.Add(feature); } else if (feature.Type == EnumFeatureType.FeatureFolder) { GSOFeatureFolder featureFolder = (GSOFeatureFolder)feature; for (int i = 0; i < featureFolder.Features.Length; i++) { GetRealFeature(featureFolder.Features[i], realfeatures); } } }
GSOLayer AddFeatureAndFeatureFolder(GSOFeature feature, GSOLayer newlayer) { if (feature != null && newlayer != null) { if (feature.Type == EnumFeatureType.Feature) { newlayer.AddFeature(feature); } else { GSOFeatureFolder folder = (GSOFeatureFolder)feature; for (int i = 0; i < folder.Features.Length; i++) { newlayer = AddFeatureAndFeatureFolder(folder.Features[i], newlayer); } } } return(newlayer); }
private static void getRealFeatureByFeatures(GSOFeatures features, ref GSOFeatures realFeatures) { if (features == null) { return; } for (int i = 0; i < features.Length; i++) { GSOFeature feature = features[i]; if (feature != null) { if (feature.Type == EnumFeatureType.FeatureFolder) { GSOFeatureFolder featureFolder = feature as GSOFeatureFolder; getRealFeatureByFeatures(featureFolder.Features, ref realFeatures); } else { realFeatures.Add(feature); } } } }
private void MoveEachFeature(GSOFeatureFolder folder,double daltX, double daltY) { GSOFeatures features = folder.Features; for (int i = 0; i < features.Length; i++) { GSOFeature feature = features[i]; if (feature is GSOFeatureFolder) { MoveEachFeature(feature as GSOFeatureFolder, daltX, daltY); } else { GSOGeometry g = feature.Geometry; if (g != null) { g.MoveXY(daltX, daltY); } //GSOGeoModel model = feature.Geometry as GSOGeoModel; //if (model!=null) //{ // GSOPoint3d pt = model.Position; // pt.X += daltX; // pt.Y += daltY; // model.Position = pt; //} } } }
private void MoveEachFeature(GSOFeatureFolder folder, double height) { GSOFeatures features = folder.Features; for (int i = 0; i < features.Length; i++) { GSOFeature feature = features[i]; if (feature is GSOFeatureFolder) { MoveEachFeature(feature as GSOFeatureFolder, height); } else { GSOGeoModel model = feature.Geometry as GSOGeoModel; if (model != null) { GSOPoint3d pt = model.Position; if (model.AltitudeMode == EnumAltitudeMode.ClampToGround) { model.AltitudeMode = EnumAltitudeMode.RelativeToGround; } pt.Z += height; model.Position = pt; } } } }