Esempio n. 1
0
        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;
                    //}
                }
            }
        }
Esempio n. 2
0
        /// <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);
                    }
                }
            }
        }
Esempio n. 3
0
        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;
                    }
                }
            }
        }
Esempio n. 4
0
        /// <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);
         }
     }
 }
Esempio n. 6
0
 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);
 }
Esempio n. 7
0
 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);
             }
         }
     }
 }
Esempio n. 8
0
        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;
                     //}

                 }
             }
        }
Esempio n. 9
0
        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;
                    }
                }
            }
        }