Esempio n. 1
0
        /// <summary>
        /// 加载tif到三维视图
        /// </summary>
        /// <param name="name">图层名称</param>
        /// <param name="Categorytype">出图类型</param>
        /// <param name="tifFilePath">tif文件路径</param>
        /// <param name="globe">三维球实例</param>
        /// <returns>返回生成的图层</returns>
        public static void LoadTifToMap(DomLayerInfo layerInfo, GlobeView globe)
        {
            LonLatDataLayer lyr = (LonLatDataLayer)globe.GlobeLayers.DataLayers.FindLayer(layerInfo.LyrName);

            if (lyr == null)
            {
                LonLatDataLayer.LonLatDataLayerDescriptor des =
                    new LonLatDataLayer.LonLatDataLayerDescriptor();

                des.Category                 = layerInfo.Category;
                des.DataName                 = layerInfo.LyrName;
                des.FileExtension            = "png";
                des.LayerName                = layerInfo.LyrName;
                des.LevelZeroTileSizeDegrees = 2.25;
                des.LocalPath                = layerInfo.TileDirPath;
                des.NumLevels                = layerInfo.LevelNum;
                des.Opacity = 200;
                des.Url     = "http://localhost";
                des.Visible = true;
                des.East    = layerInfo.East;
                des.West    = layerInfo.West;
                des.North   = layerInfo.North;
                des.South   = layerInfo.South;
                lyr         = LonLatDataLayer.LoadDataLayer(des);
                globe.GlobeLayers.DataLayers.Add(lyr);
            }
            lyr.ResetCache();
            lyr.Visible = false;
        }
Esempio n. 2
0
        /// <summary>
        /// 节点Check事件,用于查询图层内容
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void advTreeMain_AfterCheck(object sender, AdvTreeCellEventArgs e)
        {
            Node checkNode = e.Cell.Parent;

            AbstractLayer lyr = this.GetLayerByName(checkNode.Text);

            //影像图层加载
            if (lyr == null)
            {
                string path = Path.Combine(Path.GetDirectoryName(_projectPath), checkNode.Text + ".xml");
                if (File.Exists(path) == false)
                {
                    return;
                }
                DomLayerInfo lyrInfo = XmlHelper.Deserialize <DomLayerInfo>(path);
                if (lyrInfo == null)
                {
                    return;
                }
                lyr = LayerLoader.CreateDomLyr(lyrInfo, _globeView);
            }
            if (lyr != null)
            {
                lyr.Visible = e.Cell.Checked;
            }
            //飞行
            if (e.Cell.Checked)
            {
                this.LocLyrByName(checkNode.Text);
            }
        }
Esempio n. 3
0
        public static LonLatDataLayer CreateDomLyr(DomLayerInfo lyrInfo, GlobeView globe)
        {
            if (lyrInfo == null)
            {
                return(null);
            }

            if (!File.Exists(lyrInfo.SrcTifFilePath) &&
                !File.Exists(lyrInfo.TileDirPath) &&//mbt
                !Directory.Exists(lyrInfo.TileDirPath))   //切片目录
            {
                return(null);
            }

            DataLayer tmp = globe.GlobeLayers.DataLayers.FindLayer(lyrInfo.LyrName);

            if (tmp != null)
            {
                MsgBox.ShowError("同名图层已存在,请尝试点击刷新按钮或修改图层名!");
                return(null);
            }

            LonLatDataLayer.LonLatDataLayerDescriptor des = new LonLatDataLayer.LonLatDataLayerDescriptor();
            if (lyrInfo.Category.Trim() == string.Empty)
            {
                des.Category = "本地影像数据";
            }
            else
            {
                des.Category = "本地影像数据\\" + lyrInfo.Category;
            }
            des.DataName                 = lyrInfo.LyrName;
            des.FileExtension            = "png";
            des.LayerName                = lyrInfo.LyrName;
            des.LevelZeroTileSizeDegrees = lyrInfo.BeginLevelSize;
            des.LocalPath                = lyrInfo.TileDirPath;
            des.NumLevels                = lyrInfo.LevelNum;
            des.Opacity = 255;
            //des.Url = "http://localhost";
            des.Visible = true;
            des.East    = lyrInfo.East;
            des.West    = lyrInfo.West;
            des.North   = lyrInfo.North;
            des.South   = lyrInfo.South;

            LonLatDataLayer dataLyr = LonLatDataLayer.LoadDataLayer(des);

            globe.GlobeLayers.DataLayers.Add(dataLyr);
            //dataLyr.ResetCache();
            return(dataLyr);
        }
Esempio n. 4
0
        private void bgwTile_DoWork(object sender, DoWorkEventArgs e)
        {
            try
            {
                object[]     objs    = e.Argument as object[];
                DomLayerInfo lyrInfo = objs[0] as DomLayerInfo;
                if (lyrInfo == null)
                {
                    e.Result = null;
                    return;
                }
                if (_domLoader.ClipAndPackgeTile(lyrInfo, false, true, ref e))
                {
                    e.Result = objs;
                    if (File.Exists(lyrInfo.TempTifFilePath))
                    {
                        File.Delete(lyrInfo.TempTifFilePath);
                    }

                    if (File.Exists(lyrInfo.TempTifFilePath + ".nodata"))
                    {
                        File.Delete(lyrInfo.TempTifFilePath + ".nodata");
                    }
                }
                else
                {
                    if (e.Cancel)
                    {
                        string temp = lyrInfo.TileDirPath + "_png";
                        if (Directory.Exists(temp))
                        {
                            Directory.Delete(temp, true);
                        }
                    }
                    e.Result = null;
                }
            }
            catch /*(Exception ex)*/
            {
                e.Result = null;
            }
        }
Esempio n. 5
0
        private void bgwTile_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            object[]     objs    = e.Result as object[];
            DomLayerInfo lyrInfo = objs[0] as DomLayerInfo;
            //保存切片信息
            string path = Path.Combine(Path.GetDirectoryName(_projectPath), lyrInfo.LyrName + ".xml");

            XmlHelper.Serialize <DomLayerInfo>(lyrInfo, path);
            //显示CheckBox
            Node node = objs[1] as Node;

            node.CheckBoxVisible = true;
            node.ImageIndex      = 1;
            //更新模型
            NodeModel model = node.Tag as NodeModel;

            model.ImageIndex = 1;
            model.ShowCheck  = true;
            SaveModel(model, 2);
        }
Esempio n. 6
0
        /// <summary>
        /// 导入Dom
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void ctxImportDom_Click(object sender, EventArgs e)
        {
            //第一个为图层节点
            Node pnode = advTreeMain.Nodes[0];
            //开始导入Dom文件
            frmDomLyr frm = new frmDomLyr(new List <DomLayerInfo>(), null, false);

            if (frm.ShowDialog() == DialogResult.OK)
            {
                DomLayerInfo lyrInfo = frm.DomLyrInfo;

                string name = lyrInfo.LyrName;
                string path = lyrInfo.SrcTifFilePath;
                //图层去重
                NodeModel checkModel = _projectModel.Nodes.Where(t => t.PNode == Guids.TCGL && t.NodeName == name).FirstOrDefault();
                if (checkModel != null)
                {
                    MsgBox.ShowInfo("当前名称的图层已经存在,请重命名或者导入其他数据");
                    return;
                }

                //创建节点
                NodeModel model = new NodeModel();
                model.PNode      = pnode.Name;
                model.NodeName   = name;
                model.ShowCheck  = false;
                model.ImageIndex = 5;
                model.NodeId     = Guid.NewGuid().ToString();
                model.CanRemove  = true;
                model.Path       = path;
                Node node = CreateNode(model);
                pnode.Nodes.Add(node);

                //开始切片
                bgwTile.RunWorkerAsync(new object[] { lyrInfo, node });
            }
        }