/// <summary> /// 从文件夹获取Tin图层 /// </summary> /// <param name="strPath"></param> /// <returns></returns> public static ILayer GetTinLayer(string strPath) { if (string.IsNullOrEmpty(strPath) || !Directory.Exists(strPath)) return null; //DirectoryInfo dirInfo = new DirectoryInfo(strPath); //string strParent=dirInfo.Parent.FullName; //string strName=dirInfo.Name; string strParent = Path.GetDirectoryName(strPath); string strName = Path.GetFileName(strPath); IWorkspaceFactory wsfTin = new TinWorkspaceFactoryClass(); if (!wsfTin.IsWorkspace(strParent)) return null; try { IWorkspace wsTin = wsfTin.OpenFromFile(strParent, 0); ITin tinTarget = (wsTin as ITinWorkspace).OpenTin(strName); ITinLayer lyrTin = new TinLayerClass(); lyrTin.Dataset = tinTarget; return lyrTin; } catch { return null; } }
/// <summary> /// Occurs when this command is clicked /// </summary> public override void OnClick() { // TODO: Add CmdAddTinLayer.OnClick implementation FolderBrowserDialog fdlg = new FolderBrowserDialog(); //fdlg.SelectedPath = @"C:\Users\Administrator\Desktop\sampleAnalysis\TIN\"; try { if (fdlg.ShowDialog() != DialogResult.OK) { return; } //FrmFolderDialog dlg = new FrmFolderDialog(); //dlg.DisplayDialog(); if (fdlg.SelectedPath != "") { // DirectoryInfo dir = Directory.CreateDirectory(dlg.Path); DirectoryInfo dir = Directory.CreateDirectory(fdlg.SelectedPath); IWorkspaceFactory pWSFact = new TinWorkspaceFactoryClass(); IWorkspace pWS = pWSFact.OpenFromFile(dir.Parent.FullName + @"\", 0); ITinWorkspace pTinWS = pWS as ITinWorkspace; ITin pTin = pTinWS.OpenTin(dir.Name); //½«TIN±äΪTINͼ²ã ITinLayer pTinLayer = new TinLayerClass(); pTinLayer.Dataset = pTin; pTinLayer.Name = dir.Name; IMapControl2 pMapCtr = (((IToolbarControl)m_hookHelper.Hook).Buddy) as IMapControl2; pMapCtr.Map.AddLayer((ILayer)pTinLayer); } } catch (SystemException ee) { MessageBox.Show(ee.Message); } }
/// <summary> /// 从文件夹获取Tin图层 /// </summary> /// <param name="strPath"></param> /// <returns></returns> public static ILayer GetTinLayer(string strPath) { if (string.IsNullOrEmpty(strPath) || !Directory.Exists(strPath)) { return(null); } //DirectoryInfo dirInfo = new DirectoryInfo(strPath); //string strParent=dirInfo.Parent.FullName; //string strName=dirInfo.Name; string strParent = Path.GetDirectoryName(strPath); string strName = Path.GetFileName(strPath); IWorkspaceFactory wsfTin = new TinWorkspaceFactoryClass(); if (!wsfTin.IsWorkspace(strParent)) { return(null); } try { IWorkspace wsTin = wsfTin.OpenFromFile(strParent, 0); ITin tinTarget = (wsTin as ITinWorkspace).OpenTin(strName); ITinLayer lyrTin = new TinLayerClass(); lyrTin.Dataset = tinTarget; return(lyrTin); } catch { return(null); } }
private void 建立TINToolStripMenuItem_Click(object sender, EventArgs e) { ILayer player = axMapControl1.get_Layer(0); IFeatureLayer pFlayer = player as IFeatureLayer; IFeatureClass pFClass = pFlayer.FeatureClass; IField pField = pFClass.Fields.get_Field(pFClass.FindField("Z")); ITin shp2TIN = Create_TIN(pFClass, pField); ITinLayer pTinLayer = new TinLayerClass(); pTinLayer.Name = player.Name; pTinLayer.Dataset = shp2TIN; axSceneControl1.Scene.AddLayer(pTinLayer as ILayer, true); axSceneControl1.Refresh(); }
/// <summary> /// 加载栅格图层 /// </summary> private void AddTinFile() { this.Cursor = Cursors.WaitCursor; IWorkspaceFactory pWorkspaceFactory = new TinWorkspaceFactoryClass(); IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(m_Path, 0); ITinWorkspace pTinWorkspace = pWorkspace as ITinWorkspace; //声明一个pTin变量, 存储所打开的"tin" ITin pTin = pTinWorkspace.OpenTin("tin"); //将TIN变为TIN图层 ITinLayer pTinLayer = new TinLayerClass(); pTinLayer.Dataset = pTin; pTinLayer.Name = "TIN"; //也可以用三维空间AxSceneControl加载 axSceneControl1.Scene.AddLayer(pTinLayer, true); //this.axMapControl1.AddLayer(pTinLayer); this.Cursor = Cursors.Default; }
public void LoadData(IList ilist_0) { IEnumDataset subsets; IDataset j; string str; IFeatureClass dataset; IFeatureLayer cadFeatureLayerClass; ITopologyLayer topologyLayerClass; IEnumFeatureClass classes; IFeatureClass m; IFeatureClass n; IFeatureLayer featureLayerClass; List <object> objs = new List <object>(); foreach (object ilist0 in ilist_0) { if (ilist0 is IGxDataset) { if ((ilist0 as IGxDataset).Type != esriDatasetType.esriDTFeatureDataset) { objs.Add(ilist0); } else { IEnumGxObject children = (ilist0 as IGxObjectContainer).Children; children.Reset(); for (IGxObject i = children.Next(); i != null; i = children.Next()) { objs.Add(i); } } } else if (!(ilist0 is IDataset)) { objs.Add(ilist0); } else { if ((ilist0 as IDataset).Type != esriDatasetType.esriDTFeatureDataset) { continue; } subsets = (ilist0 as IDataset).Subsets; subsets.Reset(); for (j = subsets.Next(); j != null; j = subsets.Next()) { objs.Add(j); } } } ProcessAssist processAssist = new ProcessAssist(); processAssist.InitProgress(); processAssist.SetMaxValue(objs.Count); processAssist.SetMessage("正在加载数据,请稍候..."); processAssist.Start(); try { ILayer layer = null; IMap map = this.GetMap(); this.list_0 = new List <ILayer>(); List <string> strs = new List <string>(); IEnvelope envelope = null; IDataset item = null; IGxDataset gxDataset = null; for (int k = 0; k < objs.Count; k++) { string name = ""; if (objs[k] is IGxObject) { name = (objs[k] as IGxObject).Name; } else if (objs[k] is IDataset) { name = (objs[k] as IDataset).Name; } bool flag = true; str = string.Format("加载图层[{0}],第{1}/{2}个", name, k + 1, objs.Count); processAssist.Increment(1); processAssist.SetMessage(str); if (objs[k] is IGxLayer) { layer = (objs[k] as IGxLayer).Layer; if (layer is IGeoDataset && !SpatialReferenctOperator.ValideFeatureClass(layer as IGeoDataset)) { strs.Add(layer.Name); flag = false; } this.AddLayer(map, layer, ref envelope, flag); } else if (!(objs[k] is IGxAGSObject)) { if (objs[k] is IGxDataset) { gxDataset = objs[k] as IGxDataset; item = gxDataset.Dataset; } else if (ilist_0[k] is IDataset) { item = objs[k] as IDataset; } if (item != null) { if (item is IGeoDataset) { flag = SpatialReferenctOperator.ValideFeatureClass(item as IGeoDataset); } if (item.Type == esriDatasetType.esriDTFeatureClass) { dataset = (IFeatureClass)item; if ((gxDataset as IGxObject).Category.IndexOf("CAD") != -1) { if (dataset.FeatureType != esriFeatureType.esriFTCoverageAnnotation) { cadFeatureLayerClass = new CadFeatureLayerClass(); } else { cadFeatureLayerClass = new CadAnnotationLayerClass(); } cadFeatureLayerClass.FeatureClass = dataset; cadFeatureLayerClass.Name = dataset.AliasName; } else if (dataset.FeatureType == esriFeatureType.esriFTAnnotation) { cadFeatureLayerClass = new FDOGraphicsLayerClass() { FeatureClass = dataset, Name = dataset.AliasName }; } else if (dataset.FeatureType != esriFeatureType.esriFTDimension) { cadFeatureLayerClass = new FeatureLayerClass() { FeatureClass = dataset, Name = dataset.AliasName }; } else { cadFeatureLayerClass = new DimensionLayerClass() { FeatureClass = dataset, Name = dataset.AliasName }; } if (!flag) { strs.Add(cadFeatureLayerClass.Name); } this.AddLayer(map, cadFeatureLayerClass, ref envelope, flag); } else if (item.Type == esriDatasetType.esriDTCadDrawing) { if ((gxDataset as IGxObject).Category != "CAD绘图") { IEnumGxObject enumGxObject = (gxDataset as IGxObjectContainer).Children; enumGxObject.Reset(); for (IGxDataset l = enumGxObject.Next() as IGxDataset; l != null; l = enumGxObject.Next() as IGxDataset) { dataset = l.Dataset as IFeatureClass; if (dataset != null) { if (dataset.FeatureType != esriFeatureType.esriFTAnnotation) { cadFeatureLayerClass = new CadFeatureLayerClass() { FeatureClass = dataset, Name = dataset.AliasName }; } else { cadFeatureLayerClass = new FDOGraphicsLayerClass() { FeatureClass = dataset, Name = dataset.AliasName }; } flag = true; if (cadFeatureLayerClass is IGeoDataset) { bool flag1 = SpatialReferenctOperator.ValideFeatureClass(cadFeatureLayerClass as IGeoDataset); flag = flag1; if (!flag1) { strs.Add(cadFeatureLayerClass.Name); } } this.AddLayer(map, cadFeatureLayerClass, ref envelope, flag); } } } else { ICadLayer cadLayerClass = new CadLayerClass() { CadDrawingDataset = gxDataset.Dataset as ICadDrawingDataset, Name = gxDataset.Dataset.Name }; if (!flag) { strs.Add(cadLayerClass.Name); } this.AddLayer(map, cadLayerClass, ref envelope, flag); } } else if (item.Type == esriDatasetType.esriDTFeatureDataset) { subsets = item.Subsets; subsets.Reset(); for (j = subsets.Next(); j != null; j = subsets.Next()) { if (j.Type == esriDatasetType.esriDTFeatureClass) { dataset = j as IFeatureClass; if (dataset.FeatureType != esriFeatureType.esriFTAnnotation) { cadFeatureLayerClass = new FeatureLayerClass() { FeatureClass = dataset, Name = dataset.AliasName }; flag = true; if (cadFeatureLayerClass is IGeoDataset) { bool flag2 = SpatialReferenctOperator.ValideFeatureClass(cadFeatureLayerClass as IGeoDataset); flag = flag2; if (!flag2) { strs.Add(cadFeatureLayerClass.Name); } } this.AddLayer(map, cadFeatureLayerClass, ref envelope, flag); } else { cadFeatureLayerClass = new FDOGraphicsLayerClass() { FeatureClass = dataset, Name = dataset.AliasName }; flag = true; if (cadFeatureLayerClass is IGeoDataset) { bool flag3 = SpatialReferenctOperator.ValideFeatureClass(cadFeatureLayerClass as IGeoDataset); flag = flag3; if (!flag3) { strs.Add(cadFeatureLayerClass.Name); } } this.AddLayer(map, cadFeatureLayerClass, ref envelope, flag); } } else if (j.Type == esriDatasetType.esriDTTopology) { topologyLayerClass = new TopologyLayerClass() { Topology = j as ITopology }; (topologyLayerClass as ILayer).Name = j.Name; this.AddLayer(map, topologyLayerClass as ILayer, ref envelope, true); } } } else if (item.Type == esriDatasetType.esriDTTopology) { if (MessageBox.Show(string.Concat("是否将参加拓扑-", item.Name, "-的所有要素添加到地图中"), "添加拓扑层", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk) == DialogResult.Yes) { classes = (item as IFeatureClassContainer).Classes; classes.Reset(); for (m = classes.Next(); m != null; m = classes.Next()) { cadFeatureLayerClass = new FeatureLayerClass() { FeatureClass = m, Name = m.AliasName }; flag = true; if (cadFeatureLayerClass is IGeoDataset) { bool flag4 = SpatialReferenctOperator.ValideFeatureClass(cadFeatureLayerClass as IGeoDataset); flag = flag4; if (!flag4) { strs.Add(cadFeatureLayerClass.Name); } } this.AddLayer(map, cadFeatureLayerClass, ref envelope, flag); } } topologyLayerClass = new TopologyLayerClass() { Topology = item as ITopology }; (topologyLayerClass as ILayer).Name = item.Name; this.AddLayer(map, topologyLayerClass as ILayer, ref envelope, true); } else if (item.Type == esriDatasetType.esriDTTin) { ITinLayer tinLayerClass = new TinLayerClass() { Dataset = (ITin)item, Name = item.Name }; flag = true; if (tinLayerClass is IGeoDataset) { bool flag5 = SpatialReferenctOperator.ValideFeatureClass(tinLayerClass as IGeoDataset); flag = flag5; if (!flag5) { strs.Add(tinLayerClass.Name); } } this.AddLayer(map, tinLayerClass, ref envelope, flag); } else if (item.Type == esriDatasetType.esriDTRasterCatalog) { IGdbRasterCatalogLayer gdbRasterCatalogLayerClass = null; gdbRasterCatalogLayerClass = new GdbRasterCatalogLayerClass(); if (gdbRasterCatalogLayerClass.Setup((ITable)(item as IRasterCatalog))) { bool flag6 = SpatialReferenctOperator.ValideFeatureClass(gdbRasterCatalogLayerClass as IGeoDataset); flag = flag6; if (!flag6) { strs.Add((gdbRasterCatalogLayerClass as ILayer).Name); } this.AddLayer(map, gdbRasterCatalogLayerClass as ILayer, ref envelope, flag); } } else if (!(item.Type == esriDatasetType.esriDTRasterDataset ? false : item.Type != esriDatasetType.esriDTRasterBand)) { bool flag7 = true; if (!((IRasterPyramid)item).Present) { if (this.m_pApp.PyramidPromptType == PyramidPromptType.AlwaysBuildNoPrompt) { ((IRasterPyramid)item).Create(); } else if (this.m_pApp.PyramidPromptType == PyramidPromptType.AlwaysPrompt) { DialogResult dialogResult = BuildPyramidSet.Show(); if (dialogResult == DialogResult.Yes) { ((IRasterPyramid)item).Create(); } else if (dialogResult == DialogResult.Cancel) { flag7 = false; } } } if (flag7) { IRasterLayer rasterLayerClass = new RasterLayerClass() { Cached = true }; rasterLayerClass.CreateFromDataset((IRasterDataset)item); rasterLayerClass.Name = item.Name; bool flag8 = SpatialReferenctOperator.ValideFeatureClass(rasterLayerClass as IGeoDataset); flag = flag8; if (!flag8) { strs.Add(rasterLayerClass.Name); } this.AddLayer(map, rasterLayerClass, ref envelope, flag); } } else if (item.Type == esriDatasetType.esriDTTable) { try { IStandaloneTableCollection standaloneTableCollection = this.GetMap() as IStandaloneTableCollection; IPropertySet connectionProperties = item.Workspace.ConnectionProperties; bool flag9 = false; int num = 0; while (true) { if (num < standaloneTableCollection.StandaloneTableCount) { ITable table = standaloneTableCollection.StandaloneTable[num].Table; if (!connectionProperties.IsEqual((table as IDataset).Workspace.ConnectionProperties) || !((table as IDataset).Name == item.Name)) { num++; } else { flag9 = true; break; } } else { break; } } if (!flag9) { standaloneTableCollection.AddStandaloneTable(new StandaloneTableClass() { Table = item as ITable }); } } catch (Exception exception) { CErrorLog.writeErrorLog(this, exception, ""); } } else if (item.Type == esriDatasetType.esriDTGeometricNetwork) { IGeometricNetwork geometricNetwork = item as IGeometricNetwork; if (geometricNetwork != null) { IEnumFeatureClass classesByType = geometricNetwork.ClassesByType[esriFeatureType.esriFTSimpleJunction]; classesByType.Reset(); for (n = classesByType.Next(); n != null; n = classesByType.Next()) { featureLayerClass = new FeatureLayerClass() { FeatureClass = n, Name = (n as IDataset).Name }; this.AddLayer(map, featureLayerClass, ref envelope, true); } classesByType = geometricNetwork.ClassesByType[esriFeatureType.esriFTComplexJunction]; classesByType.Reset(); for (n = classesByType.Next(); n != null; n = classesByType.Next()) { featureLayerClass = new FeatureLayerClass() { FeatureClass = n, Name = (n as IDataset).Name }; this.AddLayer(map, featureLayerClass, ref envelope, true); } classesByType = geometricNetwork.ClassesByType[esriFeatureType.esriFTSimpleEdge]; classesByType.Reset(); for (n = classesByType.Next(); n != null; n = classesByType.Next()) { featureLayerClass = new FeatureLayerClass() { FeatureClass = n, Name = (n as IDataset).Name }; this.AddLayer(map, featureLayerClass, ref envelope, true); } classesByType = geometricNetwork.ClassesByType[esriFeatureType.esriFTComplexEdge]; classesByType.Reset(); for (n = classesByType.Next(); n != null; n = classesByType.Next()) { featureLayerClass = new FeatureLayerClass() { FeatureClass = n, Name = (n as IDataset).Name }; this.AddLayer(map, featureLayerClass, ref envelope, true); } } } else if (item.Type == esriDatasetType.esriDTNetworkDataset) { INetworkLayer networkLayerClass = new NetworkLayerClass() { NetworkDataset = item as INetworkDataset }; this.AddLayer(map, networkLayerClass as ILayer, ref envelope, true); if (MessageBox.Show(string.Concat("是否将参加网络要素集-", item.Name, "-的所有要素添加到地图中"), "添加拓扑层", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk) == DialogResult.Yes) { classes = (item as IFeatureClassContainer).Classes; classes.Reset(); for (m = classes.Next(); m != null; m = classes.Next()) { cadFeatureLayerClass = new FeatureLayerClass() { FeatureClass = m, Name = m.AliasName }; this.AddLayer(map, cadFeatureLayerClass, ref envelope, true); } } } } } else { IMapServerLayer mapServerLayerClass = new MapServerLayerClass(); mapServerLayerClass.ServerConnect((objs[k] as IGxAGSObject).AGSServerObjectName, (objs[k] as IGxAGSObject).DefaultMapName); this.AddLayer(map, mapServerLayerClass as ILayer, ref envelope, false); } } processAssist.End(); bool layerCount = this.GetMap().LayerCount > 0; if (strs.Count > 0) { MessageBox.Show("警告:数据范围不一致。\r\n 一个或多个添加的图层范围与关联的空间坐标系范围不一致。请检查数据问题。存在问题图层信息请查看错误日志!", "管理平台", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); StringBuilder stringBuilder = new StringBuilder(); foreach (string str1 in strs) { if (stringBuilder.Length > 0) { stringBuilder.Append(","); } stringBuilder.Append(str1); } CErrorLog.writeErrorLog(stringBuilder, null, "图层范围不一致!"); } foreach (ILayer list0 in this.list_0) { list0.Visible = true; } if (layerCount && envelope != null) { IMap map1 = this.GetMap(); ISpatialReference spatialReference = map1.SpatialReference; if ((spatialReference is IUnknownCoordinateSystem || envelope.SpatialReference is IUnknownCoordinateSystem || envelope.SpatialReference == null ? false : spatialReference != null)) { envelope.Project(spatialReference); } (map1 as IActiveView).Extent = envelope; (map1 as IActiveView).Refresh(); } if (this.m_pApp != null) { this.m_pApp.MapDocumentChanged(); } else if (ApplicationRef.Application != null) { ApplicationRef.Application.MapDocumentChanged(); } } catch (Exception exception1) { str = exception1.ToString(); } if (this.onLoadCompleteHand_0 != null) { this.onLoadCompleteHand_0(); } }
public static ILayer CreateLayer(ICatalogItem catalogItem) { if (catalogItem == null || catalogItem.Dataset==null) return null; ILayer lyrNew = null; enumCatalogType catalogType = catalogItem.Type; switch(catalogType) { case enumCatalogType.Workpace: case enumCatalogType.FeatureDataset: case enumCatalogType.Table: return null; case enumCatalogType.FeatureClassPoint: case enumCatalogType.FeatureClassLine: case enumCatalogType.FeatureClassArea: case enumCatalogType.FeatureClassAnnotation: case enumCatalogType.FeatureClassEmpty: case enumCatalogType.FeatureClass3D: case enumCatalogType.RasterCatalog: IFeatureLayer lyrFeature= new FeatureLayerClass(); lyrFeature.FeatureClass = catalogItem.Dataset as IFeatureClass; lyrNew = lyrFeature; break; case enumCatalogType.RasterMosaic: case enumCatalogType.RasterSet: IRasterLayer lyrRaster = new RasterLayerClass(); lyrRaster.CreateFromDataset(catalogItem.Dataset as IRasterDataset); lyrNew = lyrRaster; break; case enumCatalogType.RasterBand: IRasterLayer lyrRasterBand = new RasterLayerClass(); IRasterBand rasterBand = catalogItem.Dataset as IRasterBand; IRasterBandCollection colRasterBand = new RasterClass(); colRasterBand.Add(rasterBand, 0); lyrRasterBand.CreateFromRaster(colRasterBand as IRaster); lyrNew = lyrRasterBand; break; case enumCatalogType.Tin: ITinLayer lyrTin = new TinLayerClass(); lyrTin.Dataset = catalogItem.Dataset as ITin; lyrNew = lyrTin; break; case enumCatalogType.Terrain: ITerrainLayer lyrTerrain = new TerrainLayerClass(); lyrTerrain.Terrain = catalogItem.Dataset as ITerrain; lyrNew = lyrTerrain; break; case enumCatalogType.Topology: ITopologyLayer lyrTopology = new TopologyLayerClass(); lyrTopology.Topology = catalogItem.Dataset as ITopology; lyrNew = lyrTopology as ILayer; break; } return lyrNew; }
private void method_3(object object_0) { frmOpenFile file = new frmOpenFile { Text = "添加数据", AllowMultiSelect = true }; file.AddFilter(new MyGxFilterDatasets(), true); if (file.DoModalOpen() == DialogResult.OK) { IFeatureClass featureClass; IFeatureLayer layer; System.Windows.Forms.Cursor.Current = Cursors.WaitCursor; IArray array = new ArrayClass(); IArray items = file.Items; int index = 0; while (true) { if (index >= items.Count) { break; } IGxDataset dataset = items.get_Element(index) as IGxDataset; if (dataset != null) { IDataset dataset2 = dataset.Dataset; if (dataset2 != null) { if (dataset2.Type == esriDatasetType.esriDTFeatureClass) { featureClass = (IFeatureClass)dataset2; if (featureClass.FeatureType == esriFeatureType.esriFTAnnotation) { layer = new FDOGraphicsLayerClass { FeatureClass = featureClass, Name = featureClass.AliasName }; } else { layer = new FeatureLayerClass { FeatureClass = featureClass, Name = featureClass.AliasName }; } array.Add(layer); } else { IFDOGraphicsLayerFactory factory; if (dataset2.Type == esriDatasetType.esriDTCadDrawing) { IEnumGxObject children = (dataset as IGxObjectContainer).Children; children.Reset(); for (IGxDataset dataset3 = children.Next() as IGxDataset; dataset3 != null; dataset3 = children.Next() as IGxDataset) { featureClass = dataset3.Dataset as IFeatureClass; if (featureClass.FeatureType == esriFeatureType.esriFTAnnotation) { factory = new FDOGraphicsLayerFactoryClass(); layer = (IFeatureLayer) factory.OpenGraphicsLayer( (IFeatureWorkspace)featureClass.FeatureDataset.Workspace, featureClass.FeatureDataset, featureClass.AliasName); } else { layer = new FeatureLayerClass { FeatureClass = featureClass, Name = featureClass.AliasName }; } array.Add(layer); } } else if (dataset2.Type == esriDatasetType.esriDTFeatureDataset) { IFeatureClassContainer container = (IFeatureClassContainer)dataset2; index = 0; while (index < (container.ClassCount - 1)) { featureClass = container.get_Class(index); if (featureClass.FeatureType == esriFeatureType.esriFTAnnotation) { factory = new FDOGraphicsLayerFactoryClass(); layer = (IFeatureLayer) factory.OpenGraphicsLayer( (IFeatureWorkspace)featureClass.FeatureDataset.Workspace, featureClass.FeatureDataset, featureClass.AliasName); } else { layer = new FeatureLayerClass { FeatureClass = featureClass, Name = featureClass.AliasName }; } array.Add(layer); index++; } } else if (dataset2.Type == esriDatasetType.esriDTTin) { ITinLayer unk = new TinLayerClass { Dataset = (ITin)dataset2, Name = dataset2.Name }; array.Add(unk); } else if ((dataset2.Type == esriDatasetType.esriDTRasterDataset) || (dataset2.Type == esriDatasetType.esriDTRasterBand)) { bool flag = true; if (!((IRasterPyramid)dataset2).Present) { if (ApplicationRef.PyramidPromptType == PyramidPromptType.AlwaysBuildNoPrompt) { ((IRasterPyramid)dataset2).Create(); } else if (ApplicationRef.PyramidPromptType == PyramidPromptType.AlwaysPrompt) { switch (BuildPyramidSet.Show()) { case DialogResult.Yes: ((IRasterPyramid)dataset2).Create(); break; case DialogResult.Cancel: flag = false; break; } } } if (flag) { RasterLayerClass class3 = new RasterLayerClass { Cached = true }; IRasterLayer layer3 = class3; layer3.CreateFromDataset((IRasterDataset)dataset2); layer3.Name = dataset2.Name; array.Add(layer3); } } else if (dataset2.Type == esriDatasetType.esriDTTable) { try { IRasterCatalogTable pCatalog = new RasterCatalogTableClass { Table = (ITable)dataset2 }; pCatalog.Update(); IRasterCatalogLayer layer4 = new RasterCatalogLayerClass(); layer4.Create(pCatalog); layer4.Name = dataset2.BrowseName; array.Add(layer4); } catch { } } } } } index++; } int count = array.Count; ILayer layer5 = null; for (index = count - 1; index >= 0; index--) { layer5 = array.get_Element(index) as ILayer; if (layer5 is IRasterCatalogLayer) { if (object_0 is IMap) { (object_0 as IMap).AddLayer(layer5); } else if (object_0 is IGroupLayer) { (object_0 as IGroupLayer).Add(layer5); } array.Remove(index); count--; } } for (index = count - 1; index >= 0; index--) { layer5 = array.get_Element(index) as ILayer; if (layer5 is IRasterLayer) { if (object_0 is IMap) { (object_0 as IMap).AddLayer(layer5); } else if (object_0 is IGroupLayer) { (object_0 as IGroupLayer).Add(layer5); } array.Remove(index); count--; } } for (index = count - 1; index >= 0; index--) { layer5 = array.get_Element(index) as ILayer; if (layer5 is ITinLayer) { if (object_0 is IMap) { (object_0 as IMap).AddLayer(layer5); } else if (object_0 is IGroupLayer) { (object_0 as IGroupLayer).Add(layer5); } array.Remove(index); count--; } } for (index = count - 1; index >= 0; index--) { layer5 = array.get_Element(index) as ILayer; if (layer5 is IFeatureLayer) { layer = layer5 as IFeatureLayer; featureClass = layer.FeatureClass; if ((featureClass.ShapeType == esriGeometryType.esriGeometryPolygon) || (featureClass.ShapeType == esriGeometryType.esriGeometryEnvelope)) { if (object_0 is IMap) { (object_0 as IMap).AddLayer(layer5); } else if (object_0 is IGroupLayer) { (object_0 as IGroupLayer).Add(layer5); } array.Remove(index); count--; } } } for (index = count - 1; index >= 0; index--) { layer5 = array.get_Element(index) as ILayer; if (layer5 is IFeatureLayer) { layer = layer5 as IFeatureLayer; featureClass = layer.FeatureClass; if (((((featureClass.ShapeType == esriGeometryType.esriGeometryLine) || (featureClass.ShapeType == esriGeometryType.esriGeometryBezier3Curve)) || ((featureClass.ShapeType == esriGeometryType.esriGeometryCircularArc) || (featureClass.ShapeType == esriGeometryType.esriGeometryEllipticArc))) || (featureClass.ShapeType == esriGeometryType.esriGeometryPath)) || (featureClass.ShapeType == esriGeometryType.esriGeometryPolyline)) { if (object_0 is IMap) { (object_0 as IMap).AddLayer(layer5); } else if (object_0 is IGroupLayer) { (object_0 as IGroupLayer).Add(layer5); } array.Remove(index); count--; } } } for (index = count - 1; index >= 0; index--) { layer5 = array.get_Element(index) as ILayer; if (layer5 is IFeatureLayer) { layer = layer5 as IFeatureLayer; featureClass = layer.FeatureClass; if ((featureClass.ShapeType == esriGeometryType.esriGeometryMultipoint) || (featureClass.ShapeType == esriGeometryType.esriGeometryPoint)) { if (object_0 is IMap) { (object_0 as IMap).AddLayer(layer5); } else if (object_0 is IGroupLayer) { (object_0 as IGroupLayer).Add(layer5); } array.Remove(index); count--; } } } for (index = count - 1; index >= 0; index--) { layer5 = array.get_Element(index) as ILayer; if (object_0 is IMap) { (object_0 as IMap).AddLayer(layer5); } else if (object_0 is IGroupLayer) { (object_0 as IGroupLayer).Add(layer5); } array.Remove(index); } System.Windows.Forms.Cursor.Current = Cursors.Default; } }
public void StandardToolLibrary(string toolName) { switch (toolName) { case "AddData": m_command = new ControlsAddDataCommandClass(); break; case "New": m_command = new CreateNewDocument(); break; case "Open": m_command = new ControlsOpenDocCommandClass(); break; case "Save": break; case "SaveAs": m_command = new ControlsSaveAsDocCommandClass(); break; case "CADToVec": m_command = new AddCADToFeatures(); break; case "CADToRas": m_command = new AddCADToRaster(); break; } if (m_command != null) { m_command.OnCreate(m_mapControl.Object); m_command.OnClick(); m_command = null; } if (toolName == "Open") { m_frmMian.ControlsSynchronizer.ReplaceMap(m_mapControl.Map); } if (toolName == "AddTin") { FolderBrowserDialog fdlg = new FolderBrowserDialog(); fdlg.Description = "打开TIN"; if (fdlg.ShowDialog() == DialogResult.OK) { IWorkspaceFactory wsFac = new TinWorkspaceFactoryClass(); if (wsFac.IsWorkspace(System.IO.Path.GetDirectoryName(fdlg.SelectedPath))) { ITinWorkspace tinWS = wsFac.OpenFromFile(System.IO.Path.GetDirectoryName(fdlg.SelectedPath), 0) as ITinWorkspace; ITinLayer tinLyr = new TinLayerClass(); try { tinLyr.Dataset = tinWS.OpenTin(System.IO.Path.GetFileName(fdlg.SelectedPath)); tinLyr.Name = System.IO.Path.GetFileName(fdlg.SelectedPath); this.m_mapControl.Map.AddLayer((ILayer)tinLyr); } catch { MessageBox.Show("请选择有效的TIN文件!"); } } else { MessageBox.Show("请选择有效的TIN文件!"); return; } } } if (toolName == "AddDEM") { FolderBrowserDialog fdlg = new FolderBrowserDialog(); fdlg.Description = "打开DEM"; if (fdlg.ShowDialog() == DialogResult.OK) { IWorkspaceFactory wsFac = new RasterWorkspaceFactoryClass(); if (wsFac.IsWorkspace(System.IO.Path.GetDirectoryName(fdlg.SelectedPath))) { IRasterWorkspace tinWS = wsFac.OpenFromFile(System.IO.Path.GetDirectoryName(fdlg.SelectedPath), 0) as IRasterWorkspace; IRasterLayer rasLyr = new RasterLayerClass(); try { rasLyr.CreateFromDataset(tinWS.OpenRasterDataset(System.IO.Path.GetFileName(fdlg.SelectedPath))); this.m_mapControl.Map.AddLayer((ILayer)rasLyr); } catch { MessageBox.Show("请选择有效的DEM文件!"); } } else { MessageBox.Show("请选择有效的DEM文件!"); return; } } } }
private void 打开TinToolStripMenuItem_Click(object sender, EventArgs e) { // ITinLayer pTinLayer = GetTINLayer(@".\data\IDW数据\dvtin"); ITinAdvanced2 pTin = new TinClass(); pTin.Init(@".\data\IDW数据\dvtin"); ITinLayer pTinLayer = new TinLayerClass(); pTinLayer.Dataset = pTin; axMapControl1.Map.AddLayer(pTinLayer as ILayer); }
// // // public static ILayer openTinLayer(string fullPath) { ITinWorkspace pTinWorkspace; IWorkspace pWS; IWorkspaceFactory pWSFact = new TinWorkspaceFactoryClass(); ITinLayer pTinLayer = new TinLayerClass(); string pathToWorkspace = System.IO.Path.GetDirectoryName(fullPath); string tinName = System.IO.Path.GetFileName(fullPath); ITin pTin; pWS = pWSFact.OpenFromFile(pathToWorkspace, 0); pTinWorkspace = pWS as ITinWorkspace; if (pTinWorkspace.get_IsTin(tinName)) { pTin = pTinWorkspace.OpenTin(tinName); pTinLayer.Dataset = pTin; pTinLayer.ClearRenderers(); return pTinLayer as ILayer; } else { MessageBox.Show("��Ŀ¼������Tin�ļ�"); return null; } }
public void ThreeDToolLibrary(string toolName) { switch (toolName) { case"3DOpen": m_command = new ControlsSceneOpenDocCommandClass(); break; case "Navigation": m_command = new ControlsSceneNavigateToolClass(); break; case"3DZoomIn": m_command = new ControlsSceneZoomInToolClass(); break; case "3DZoomOut": m_command = new ControlsSceneZoomOutToolClass(); break; case "3DPan": m_command = new ControlsScenePanToolClass(); break; case"3DExtent": m_command = new ControlsSceneFullExtentCommandClass(); break; case"3DSel": m_command = new ControlsSceneSelectGraphicsToolClass(); break; } if (m_command is ITool) { m_command.OnCreate(m_sceneControl.Object); m_sceneControl.CurrentTool = (ITool)m_command; } if (m_command is ICommand) { m_command.OnCreate(m_sceneControl.Object); m_command.OnClick(); } m_command = null; if (toolName == "3DAddTIN") { FolderBrowserDialog fdlg = new FolderBrowserDialog(); fdlg.Description = "打开TIN"; if (fdlg.ShowDialog() == DialogResult.OK) { IWorkspaceFactory wsFac = new TinWorkspaceFactoryClass(); if (wsFac.IsWorkspace(System.IO.Path.GetDirectoryName(fdlg.SelectedPath))) { ITinWorkspace tinWS = wsFac.OpenFromFile(System.IO.Path.GetDirectoryName(fdlg.SelectedPath), 0) as ITinWorkspace; ITinLayer tinLyr = new TinLayerClass(); try { tinLyr.Dataset = tinWS.OpenTin(System.IO.Path.GetFileName(fdlg.SelectedPath)); this.m_sceneControl.Scene.AddLayer((ILayer)tinLyr,false); SetTinAsBase(tinLyr); } catch { MessageBox.Show("请选择有效的TIN文件!"); } } else { MessageBox.Show("请选择有效的TIN文件!"); return; } } } if (toolName == "3DAddDEM") { FolderBrowserDialog fdlg = new FolderBrowserDialog(); fdlg.Description = "打开DEM"; if (fdlg.ShowDialog() == DialogResult.OK) { IWorkspaceFactory wsFac = new RasterWorkspaceFactoryClass(); if (wsFac.IsWorkspace(System.IO.Path.GetDirectoryName(fdlg.SelectedPath))) { IRasterWorkspace tinWS = wsFac.OpenFromFile(System.IO.Path.GetDirectoryName(fdlg.SelectedPath), 0) as IRasterWorkspace; IRasterLayer rasLyr = new RasterLayerClass(); try { rasLyr.CreateFromDataset(tinWS.OpenRasterDataset(System.IO.Path.GetFileName(fdlg.SelectedPath))); this.m_sceneControl.Scene.AddLayer((ILayer)rasLyr, false); SetlayerSurface(rasLyr, 1); //this.axSceneControl1.Refresh(); } catch { MessageBox.Show("请选择有效的DEM文件!"); } } else { MessageBox.Show("请选择有效的DEM文件!"); return; } } } }
public void StandardToolLibrary(string toolName) { switch (toolName) { case "AddData": m_command = new ControlsAddDataCommandClass(); break; case"New": m_command = new CreateNewDocument(); break; case"Open": m_command = new ControlsOpenDocCommandClass(); break; case"Save": break; case"SaveAs": m_command = new ControlsSaveAsDocCommandClass(); break; case "CADToVec": m_command = new AddCADToFeatures(); break; case "CADToRas": m_command = new AddCADToRaster(); break; } if(m_command!=null) { m_command.OnCreate(m_mapControl.Object); m_command.OnClick(); m_command = null; } if (toolName == "Open") { m_frmMian.ControlsSynchronizer.ReplaceMap(m_mapControl.Map); } if (toolName == "AddTin") { FolderBrowserDialog fdlg = new FolderBrowserDialog(); fdlg.Description = "打开TIN"; if (fdlg.ShowDialog() == DialogResult.OK) { IWorkspaceFactory wsFac = new TinWorkspaceFactoryClass(); if (wsFac.IsWorkspace(System.IO.Path.GetDirectoryName(fdlg.SelectedPath))) { ITinWorkspace tinWS = wsFac.OpenFromFile(System.IO.Path.GetDirectoryName(fdlg.SelectedPath), 0) as ITinWorkspace; ITinLayer tinLyr = new TinLayerClass(); try { tinLyr.Dataset = tinWS.OpenTin(System.IO.Path.GetFileName(fdlg.SelectedPath)); tinLyr.Name = System.IO.Path.GetFileName(fdlg.SelectedPath); this.m_mapControl.Map.AddLayer((ILayer)tinLyr); } catch { MessageBox.Show("请选择有效的TIN文件!"); } } else { MessageBox.Show("请选择有效的TIN文件!"); return; } } } if (toolName == "AddDEM") { FolderBrowserDialog fdlg = new FolderBrowserDialog(); fdlg.Description = "打开DEM"; if (fdlg.ShowDialog() == DialogResult.OK) { IWorkspaceFactory wsFac = new RasterWorkspaceFactoryClass(); if (wsFac.IsWorkspace(System.IO.Path.GetDirectoryName(fdlg.SelectedPath))) { IRasterWorkspace tinWS = wsFac.OpenFromFile(System.IO.Path.GetDirectoryName(fdlg.SelectedPath), 0) as IRasterWorkspace; IRasterLayer rasLyr = new RasterLayerClass(); try { rasLyr.CreateFromDataset(tinWS.OpenRasterDataset(System.IO.Path.GetFileName(fdlg.SelectedPath))); this.m_mapControl.Map.AddLayer((ILayer)rasLyr); } catch { MessageBox.Show("请选择有效的DEM文件!"); } } else { MessageBox.Show("请选择有效的DEM文件!"); return; } } } }
private void button1_Click(object sender, EventArgs e) { if (mLayerCombox.Text == "" || mFeildCombox.Text == "")//判断输入合法性 { MessageBox.Show("没有相应的图层"); return; } ITinEdit pTin = new TinClass(); //寻找Featurelayer IFeatureLayer pFeatureLayer = mSceneControl.Scene.get_Layer(mLayerCombox.SelectedIndex) as IFeatureLayer; if (pFeatureLayer != null) { IEnvelope pEnvelope = new EnvelopeClass(); IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; IQueryFilter pQueryFilter = new QueryFilterClass(); IField pField = null; //找字段 pField = pFeatureClass.Fields.get_Field(pFeatureClass.Fields.FindField(mFeildCombox.Text)); if (pField.Type == esriFieldType.esriFieldTypeInteger || pField.Type == esriFieldType.esriFieldTypeDouble || pField.Type == esriFieldType.esriFieldTypeSingle) //判断类型 { IGeoDataset pGeoDataset = pFeatureLayer as IGeoDataset; pEnvelope = pGeoDataset.Extent; //设置空间参考系 ISpatialReference pSpatialReference; pSpatialReference = pGeoDataset.SpatialReference; //选择生成TIN的输入类型 esriTinSurfaceType pSurfaceTypeCount = esriTinSurfaceType.esriTinMassPoint; switch (mTINType.Text) { case "点": pSurfaceTypeCount = esriTinSurfaceType.esriTinMassPoint; break; case "直线": pSurfaceTypeCount = esriTinSurfaceType.esriTinSoftLine; break; case "光滑线": pSurfaceTypeCount = esriTinSurfaceType.esriTinHardLine; break; } //创建TIN pTin.InitNew(pEnvelope); object missing = Type.Missing; //生成TIN pTin.AddFromFeatureClass(pFeatureClass, pQueryFilter, pField, pField, pSurfaceTypeCount, ref missing); pTin.SetSpatialReference(pGeoDataset.SpatialReference); //创建Tin图层并将Tin图层加入到场景中去 ITinLayer pTinLayer = new TinLayerClass(); pTinLayer.Dataset = pTin as ITin; mSceneControl.Scene.AddLayer(pTinLayer, true); } else { MessageBox.Show("该字段的类型不符合构建TIN的条件"); } } }
public static ILayer CreateLayer(ICatalogItem catalogItem) { if (catalogItem == null || catalogItem.Dataset == null) { return(null); } ILayer lyrNew = null; enumCatalogType catalogType = catalogItem.Type; switch (catalogType) { case enumCatalogType.Workpace: case enumCatalogType.FeatureDataset: case enumCatalogType.Table: return(null); case enumCatalogType.FeatureClassPoint: case enumCatalogType.FeatureClassLine: case enumCatalogType.FeatureClassArea: case enumCatalogType.FeatureClassAnnotation: case enumCatalogType.FeatureClassEmpty: case enumCatalogType.FeatureClass3D: case enumCatalogType.RasterCatalog: IFeatureLayer lyrFeature = new FeatureLayerClass(); lyrFeature.FeatureClass = catalogItem.Dataset as IFeatureClass; lyrNew = lyrFeature; break; case enumCatalogType.RasterMosaic: case enumCatalogType.RasterSet: IRasterLayer lyrRaster = new RasterLayerClass(); lyrRaster.CreateFromDataset(catalogItem.Dataset as IRasterDataset); lyrNew = lyrRaster; break; case enumCatalogType.RasterBand: IRasterLayer lyrRasterBand = new RasterLayerClass(); IRasterBand rasterBand = catalogItem.Dataset as IRasterBand; IRasterBandCollection colRasterBand = new RasterClass(); colRasterBand.Add(rasterBand, 0); lyrRasterBand.CreateFromRaster(colRasterBand as IRaster); lyrNew = lyrRasterBand; break; case enumCatalogType.Tin: ITinLayer lyrTin = new TinLayerClass(); lyrTin.Dataset = catalogItem.Dataset as ITin; lyrNew = lyrTin; break; case enumCatalogType.Terrain: ITerrainLayer lyrTerrain = new TerrainLayerClass(); lyrTerrain.Terrain = catalogItem.Dataset as ITerrain; lyrNew = lyrTerrain; break; case enumCatalogType.Topology: ITopologyLayer lyrTopology = new TopologyLayerClass(); lyrTopology.Topology = catalogItem.Dataset as ITopology; lyrNew = lyrTopology as ILayer; break; } return(lyrNew); }
public static void AddDataset(IBasicMap pMap, IDataset pDataset, string dsName) { IFeatureLayer fDOGraphicsLayerClass; IFeatureClass j; IFeatureLayer featureLayerClass; if (dsName == null) { dsName = ""; } switch (pDataset.Type) { case esriDatasetType.esriDTFeatureDataset: { IEnumDataset subsets = pDataset.Subsets; subsets.Reset(); for (IDataset i = subsets.Next(); i != null; i = subsets.Next()) { MapHelper.AddDataset(pMap, i, dsName); } return; } case esriDatasetType.esriDTFeatureClass: { IFeatureClass idataset0 = (IFeatureClass)pDataset; if (idataset0.FeatureType == esriFeatureType.esriFTAnnotation) { fDOGraphicsLayerClass = new FDOGraphicsLayerClass(); try { fDOGraphicsLayerClass.FeatureClass = idataset0; fDOGraphicsLayerClass.Name = string.Concat(dsName, idataset0.AliasName); pMap.AddLayer(fDOGraphicsLayerClass); return; } catch (Exception exception) { exception.ToString(); return; } } else if (idataset0.FeatureType != esriFeatureType.esriFTDimension) { fDOGraphicsLayerClass = new FeatureLayerClass() { FeatureClass = idataset0, Name = string.Concat(dsName, idataset0.AliasName) }; pMap.AddLayer(fDOGraphicsLayerClass); return; } else { fDOGraphicsLayerClass = new DimensionLayerClass() { FeatureClass = idataset0, Name = string.Concat(dsName, idataset0.AliasName) }; pMap.AddLayer(fDOGraphicsLayerClass); return; } break; } case esriDatasetType.esriDTPlanarGraph: case esriDatasetType.esriDTText: case esriDatasetType.esriDTRelationshipClass: { return; } case esriDatasetType.esriDTGeometricNetwork: { IGeometricNetwork geometricNetwork = pDataset as IGeometricNetwork; if (geometricNetwork == null) { return; } IEnumFeatureClass classesByType = geometricNetwork.ClassesByType[esriFeatureType.esriFTSimpleJunction]; classesByType.Reset(); for (j = classesByType.Next(); j != null; j = classesByType.Next()) { featureLayerClass = new FeatureLayerClass() { FeatureClass = j, Name = string.Concat(dsName, (j as IDataset).Name) }; pMap.AddLayer(featureLayerClass); } classesByType = geometricNetwork.ClassesByType[esriFeatureType.esriFTComplexJunction]; classesByType.Reset(); for (j = classesByType.Next(); j != null; j = classesByType.Next()) { featureLayerClass = new FeatureLayerClass() { FeatureClass = j, Name = string.Concat(dsName, (j as IDataset).Name) }; pMap.AddLayer(featureLayerClass); } classesByType = geometricNetwork.ClassesByType[esriFeatureType.esriFTSimpleEdge]; classesByType.Reset(); for (j = classesByType.Next(); j != null; j = classesByType.Next()) { featureLayerClass = new FeatureLayerClass() { FeatureClass = j, Name = string.Concat(dsName, (j as IDataset).Name) }; pMap.AddLayer(featureLayerClass); } classesByType = geometricNetwork.ClassesByType[esriFeatureType.esriFTComplexEdge]; classesByType.Reset(); for (j = classesByType.Next(); j != null; j = classesByType.Next()) { featureLayerClass = new FeatureLayerClass() { FeatureClass = j, Name = string.Concat(dsName, (j as IDataset).Name) }; pMap.AddLayer(featureLayerClass); } return; } case esriDatasetType.esriDTTopology: { ITopologyLayer topologyLayerClass = new TopologyLayerClass() { Topology = pDataset as ITopology }; (topologyLayerClass as ILayer).Name = string.Concat(dsName, pDataset.Name); pMap.AddLayer(topologyLayerClass as ILayer); return; } case esriDatasetType.esriDTTable: { try { IRasterCatalogTable rasterCatalogTableClass = new RasterCatalogTable() { Table = (ITable)pDataset }; rasterCatalogTableClass.Update(); IRasterCatalogLayer rasterCatalogLayerClass = new RasterCatalogLayerClass(); rasterCatalogLayerClass.Create(rasterCatalogTableClass); rasterCatalogLayerClass.Name = string.Concat(dsName, pDataset.BrowseName); pMap.AddLayer(rasterCatalogLayerClass); return; } catch { try { IStandaloneTableCollection ibasicMap0 = pMap as IStandaloneTableCollection; IPropertySet connectionProperties = pDataset.Workspace.ConnectionProperties; bool flag = false; int num = 0; while (true) { if (num < ibasicMap0.StandaloneTableCount) { ITable table = ibasicMap0.StandaloneTable[num].Table; if ( !connectionProperties.IsEqual((table as IDataset).Workspace.ConnectionProperties) || !((table as IDataset).Name == pDataset.Name)) { num++; } else { flag = true; break; } } else { break; } } if (!flag) { ibasicMap0.AddStandaloneTable(new StandaloneTableClass() { Table = pDataset as ITable }); } } catch (Exception exception1) { Logger.Current.Write(exception1.Message, LogLevel.Error, null); } return; } break; } case esriDatasetType.esriDTRasterDataset: case esriDatasetType.esriDTRasterBand: { IRasterLayer rasterLayerClass = new RasterLayerClass(); rasterLayerClass.CreateFromDataset((IRasterDataset)pDataset); rasterLayerClass.Name = string.Concat(dsName, pDataset.Name); pMap.AddLayer(rasterLayerClass); return; } case esriDatasetType.esriDTTin: { ITinLayer tinLayerClass = new TinLayerClass() { Dataset = (ITin)pDataset, Name = string.Concat(dsName, pDataset.Name) }; pMap.AddLayer(tinLayerClass); return; } case esriDatasetType.esriDTCadDrawing: { ICadLayer cadLayerClass = new CadLayerClass() { CadDrawingDataset = pDataset as ICadDrawingDataset, Name = pDataset.Name }; pMap.AddLayer(cadLayerClass); return; } default: { return; } } }
public void ThreeDToolLibrary(string toolName) { switch (toolName) { case "3DOpen": m_command = new ControlsSceneOpenDocCommandClass(); break; case "Navigation": m_command = new ControlsSceneNavigateToolClass(); break; case "3DZoomIn": m_command = new ControlsSceneZoomInToolClass(); break; case "3DZoomOut": m_command = new ControlsSceneZoomOutToolClass(); break; case "3DPan": m_command = new ControlsScenePanToolClass(); break; case "3DExtent": m_command = new ControlsSceneFullExtentCommandClass(); break; case "3DSel": m_command = new ControlsSceneSelectGraphicsToolClass(); break; } if (m_command is ITool) { m_command.OnCreate(m_sceneControl.Object); m_sceneControl.CurrentTool = (ITool)m_command; } if (m_command is ICommand) { m_command.OnCreate(m_sceneControl.Object); m_command.OnClick(); } m_command = null; if (toolName == "3DAddTIN") { FolderBrowserDialog fdlg = new FolderBrowserDialog(); fdlg.Description = "打开TIN"; if (fdlg.ShowDialog() == DialogResult.OK) { IWorkspaceFactory wsFac = new TinWorkspaceFactoryClass(); if (wsFac.IsWorkspace(System.IO.Path.GetDirectoryName(fdlg.SelectedPath))) { ITinWorkspace tinWS = wsFac.OpenFromFile(System.IO.Path.GetDirectoryName(fdlg.SelectedPath), 0) as ITinWorkspace; ITinLayer tinLyr = new TinLayerClass(); try { tinLyr.Dataset = tinWS.OpenTin(System.IO.Path.GetFileName(fdlg.SelectedPath)); this.m_sceneControl.Scene.AddLayer((ILayer)tinLyr, false); SetTinAsBase(tinLyr); } catch { MessageBox.Show("请选择有效的TIN文件!"); } } else { MessageBox.Show("请选择有效的TIN文件!"); return; } } } if (toolName == "3DAddDEM") { FolderBrowserDialog fdlg = new FolderBrowserDialog(); fdlg.Description = "打开DEM"; if (fdlg.ShowDialog() == DialogResult.OK) { IWorkspaceFactory wsFac = new RasterWorkspaceFactoryClass(); if (wsFac.IsWorkspace(System.IO.Path.GetDirectoryName(fdlg.SelectedPath))) { IRasterWorkspace tinWS = wsFac.OpenFromFile(System.IO.Path.GetDirectoryName(fdlg.SelectedPath), 0) as IRasterWorkspace; IRasterLayer rasLyr = new RasterLayerClass(); try { rasLyr.CreateFromDataset(tinWS.OpenRasterDataset(System.IO.Path.GetFileName(fdlg.SelectedPath))); this.m_sceneControl.Scene.AddLayer((ILayer)rasLyr, false); SetlayerSurface(rasLyr, 1); //this.axSceneControl1.Refresh(); } catch { MessageBox.Show("请选择有效的DEM文件!"); } } else { MessageBox.Show("请选择有效的DEM文件!"); return; } } } }
public bool GetLayerFormDataset(IDataset pDataset, Collection pLayersColl) { try { if (pDataset == null) { return(false); } if (pLayersColl == null) { return(false); } if (pDataset.Type == esriDatasetType.esriDTFeatureDataset) { IFeatureLayer item = null; IFeatureClassContainer container = pDataset as IFeatureClassContainer; if (container.ClassCount > 0) { int classIndex = 0; IFeatureClass class2 = null; for (classIndex = 0; classIndex <= (container.ClassCount - 1); classIndex++) { class2 = container.get_Class(classIndex); if (class2.FeatureType == esriFeatureType.esriFTAnnotation) { item = new FDOGraphicsLayerClass() as IFeatureLayer; } else if (class2.FeatureType == esriFeatureType.esriFTCoverageAnnotation) { item = new CoverageAnnotationLayerClass() as IFeatureLayer; } else if (class2.FeatureType == esriFeatureType.esriFTDimension) { item = new DimensionLayerClass() as IFeatureLayer; } else { item = new FeatureLayerClass(); } item.FeatureClass = class2; item.Name = pDataset.Name + " " + class2.AliasName; pLayersColl.Add(item, item.Name, null, null); } } } else if (pDataset.Type == esriDatasetType.esriDTFeatureClass) { IFeatureLayer layer2 = null; IFeatureClass class3 = pDataset as IFeatureClass; if (class3.FeatureType == esriFeatureType.esriFTAnnotation) { layer2 = new FDOGraphicsLayerClass() as IFeatureLayer; } else if (class3.FeatureType == esriFeatureType.esriFTCoverageAnnotation) { layer2 = new CoverageAnnotationLayerClass() as IFeatureLayer; } else if (class3.FeatureType == esriFeatureType.esriFTDimension) { layer2 = new DimensionLayerClass() as IFeatureLayer; } else { layer2 = new FeatureLayerClass(); } layer2.FeatureClass = class3; layer2.Name = class3.AliasName; pLayersColl.Add(layer2, layer2.Name, null, null); } else if (pDataset.Type == esriDatasetType.esriDTPlanarGraph) { Interaction.MsgBox("暂时不支持 Planar Graph 格式的数据。", MsgBoxStyle.Information, "数据格式不支持"); } else if (pDataset.Type == esriDatasetType.esriDTGeometricNetwork) { Interaction.MsgBox("暂时不支持 Geometric Network 格式的数据。", MsgBoxStyle.Information, "数据格式不支持"); } else if (pDataset.Type == esriDatasetType.esriDTTopology) { Interaction.MsgBox("暂时不支持 Topology 格式的数据。", MsgBoxStyle.Information, "数据格式不支持"); } else if (pDataset.Type == esriDatasetType.esriDTText) { Interaction.MsgBox("暂时不支持 Text Dataset 格式的数据。", MsgBoxStyle.Information, "数据格式不支持"); } else if (pDataset.Type == esriDatasetType.esriDTTable) { Interaction.MsgBox("暂时不支持 Table Dataset 格式的数据。", MsgBoxStyle.Information, "数据格式不支持"); } else if (pDataset.Type == esriDatasetType.esriDTRelationshipClass) { Interaction.MsgBox("暂时不支持 Relationship Class 格式的数据。", MsgBoxStyle.Information, "数据格式不支持"); } else if (pDataset.Type == esriDatasetType.esriDTRasterDataset) { IRasterDataset rasterDataset = pDataset as IRasterDataset; IRasterLayer layer3 = new RasterLayerClass(); layer3.CreateFromDataset(rasterDataset); layer3.Name = pDataset.Name; pLayersColl.Add(layer3, layer3.Name, null, null); } else if (pDataset.Type == esriDatasetType.esriDTRasterBand) { Interaction.MsgBox("暂时不支持 Raster Band 格式的数据。", MsgBoxStyle.Information, "数据格式不支持"); } else if (pDataset.Type == esriDatasetType.esriDTTin) { ITinLayer layer4 = new TinLayerClass { Dataset = pDataset as ITin, Name = pDataset.Name }; pLayersColl.Add(layer4, layer4.Name, null, null); } else if (pDataset.Type == esriDatasetType.esriDTCadDrawing) { Interaction.MsgBox("暂时不支持 Cad Drawing 格式的数据。", MsgBoxStyle.Information, "数据格式不支持"); } else if (pDataset.Type == esriDatasetType.esriDTRasterCatalog) { Interaction.MsgBox("暂时不支持 Raster Catalog 格式的数据。", MsgBoxStyle.Information, "数据格式不支持"); } else { Interaction.MsgBox("无法识别的数据格式。", MsgBoxStyle.Information, "数据格式错误"); } return(true); } catch (Exception exception) { this.mErrOpt.ErrorOperate(this.mSubSysName, "FunFactory.LayerFun", "GetLayerFormDataset", exception.GetHashCode().ToString(), exception.Source, exception.Message, "", "", ""); return(false); } }
private void 创建TinToolStripMenuItem_Click(object sender, EventArgs e) { IFeatureClass pFeatureClass = GetFeatureClass(@".\data\IDW数据", "山东20100321"); IField pField = pFeatureClass.Fields.get_Field(pFeatureClass.FindField("H")); ITin pTin = CreateTin(pFeatureClass, pField, @".\data\IDW数据\TinTest"); ITinLayer pTinLayer = new TinLayerClass(); pTinLayer.Dataset = pTin; axMapControl1.Map.AddLayer(pTinLayer as ILayer); }