/// <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; }
/// <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); } }
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); }
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; } }
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); }
/// <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 }); } }