private string GetRegionName(string RegionCode) { string RegionName = RegionCode; SysCommon.Gis.SysGisTable pTable = new SysCommon.Gis.SysGisTable(Plugin.ModuleCommon.TmpWorkSpace); Exception err = null; object objName = pTable.GetFieldValue("行政区字典表", "NAME", "CODE='" + RegionCode + "'", out err); pTable = null; if (objName != null) { RegionName = objName.ToString(); } return(RegionName); }
private void bttCK_Click(object sender, EventArgs e) { try { string[] strMapNo = GetMapNo().Split(new char[] { ',' }); IList <IFeature> pListFeature = new List <IFeature>(); if (strMapNo == null) { return; } Exception eError; string NodeKey = ""; if (strMapNo[0].Length == 3)//1:100万 接图表NodeKey { NodeKey = "61073218-927f-4eba-a245-e6e59a121a5e"; } else { switch (strMapNo[0].ToString().Substring(3, 1).ToUpper()) { case "C": //1:25万 接图表NodeKey NodeKey = "610we218-927f-4eba-a245-e6e59a121a5e"; break; case "E": //1:5万 接图表NodeKey NodeKey = "c113ac32-14ce-44f6-83b2-c5e0322ef8f9"; //不同比例尺的接图表的ID号 break; } } XmlDocument xmldoc = new XmlDocument(); xmldoc.Load(_layerTreePath); SysCommon.Gis.SysGisTable sysTable = new SysCommon.Gis.SysGisTable(m_WS); string strSearch = "//Layer[@NodeKey='" + NodeKey.ToString() + "']"; XmlNode pxmlnode = xmldoc.SelectSingleNode(strSearch); XmlElement pxmlele = pxmlnode as XmlElement; if (pxmlnode == null) { return; } string strDataSourceID = pxmlele.GetAttribute("ConnectKey"); string feaclscode = pxmlele.GetAttribute("Code"); object objDataSource = sysTable.GetFieldValue("DATABASEMD", "DATABASENAME", "ID=" + strDataSourceID, out eError); string DataSourcename = ""; if (objDataSource != null) { DataSourcename = objDataSource.ToString(); } string conninfostr = ""; int type = -1; object objconnstr = sysTable.GetFieldValue("DATABASEMD", "CONNECTIONINFO", "ID=" + strDataSourceID, out eError); object objType = sysTable.GetFieldValue("DATABASEMD", "DATAFORMATID", "DATABASENAME='" + DataSourcename + "'", out eError); if (objconnstr != null) { conninfostr = objconnstr.ToString(); } if (objType != null) { type = int.Parse(objType.ToString()); } //连接并获得目录数据库 IWorkspace pWorkspace = GetWorkSpacefromConninfo(conninfostr, type); if (pWorkspace == null) { return; } IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace; IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass(feaclscode); if (pFeatureClass == null) { return; } for (int i = 0; i < strMapNo.Length; i++) { IQueryFilter pQueryFilter = new QueryFilterClass(); IFeature pFeature = null; IFeatureCursor pFeatureCursor = null; pQueryFilter.WhereClause = "MAP='" + strMapNo[i] + "'"; pFeatureCursor = pFeatureClass.Search(pQueryFilter, false); pFeature = pFeatureCursor.NextFeature(); while (pFeature != null) { pListFeature.Add(pFeature); pFeature = pFeatureCursor.NextFeature(); } System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatureCursor); } IGeometry pGeometry = GetLyrUnionPlygon(pListFeature); if (pGeometry == null) { MessageBox.Show("不存在相关图幅信息,请认真核对图幅信息!", "提示!"); return; } this.WindowState = FormWindowState.Minimized; m_MapControl.Extent = pGeometry.Envelope; m_MapControl.ActiveView.Refresh(); } catch { } }
/// <summary> /// 得到Renderer从数据库中 /// </summary> /// <returns></returns> public static object GetRendererFromBlob(string sql, IWorkspace pConfigWks) { Exception err = null; SysCommon.Gis.IGisTable pGISTable = new SysCommon.Gis.SysGisTable(pConfigWks); //获取Renderer byte[] renderByte = pGISTable.GetFieldValue("Render", "Render", sql, out err) as byte[]; //是否得到了序列化的blob,没得到,则返回NULL if (renderByte == null) { return(null); } IMemoryBlobStreamVariant pMemoryBlobStreamVariant = new MemoryBlobStreamClass(); pMemoryBlobStreamVariant.ImportFromVariant((object)renderByte); IStream pStream = pMemoryBlobStreamVariant as IStream; //从数据库中得到符号的类型 shduan 20110721 增加RasterRenderer string strRenderType = pGISTable.GetFieldValue("Render", "RenderType", sql, out err).ToString(); string strLyrType = pGISTable.GetFieldValue("Render", "LayerType", sql, out err).ToString(); if (strLyrType == "RasterLayer") { IRasterRenderer pRRenderer = null; switch (strRenderType) { case "RasterClassifyColorRampRenderer": pRRenderer = new RasterClassifyColorRampRendererClass(); break; case "RasterUniqueValueRenderer": pRRenderer = new RasterUniqueValueRendererClass(); break; case "RasterDiscreteColorRenderer": pRRenderer = new RasterDiscreteColorRendererClass(); break; case "RasterRGBRenderer": pRRenderer = new RasterRGBRendererClass(); break; case "RasterStretchColorRampRenderer": pRRenderer = new RasterStretchColorRampRendererClass(); break; } IPersistStream pPersistStream = pRRenderer as IPersistStream; pPersistStream.Load(pStream); //pRRenderer = pPersistStream as IRasterRenderer; return(pRRenderer); } else { IFeatureRenderer pFRenderer = null; switch (strRenderType) { case "AnnoColor": string sAnnoColor = Encoding.Default.GetString(renderByte); return((object)sAnnoColor); case "SimpleRenderer": pFRenderer = new SimpleRendererClass(); break; case "UniqueValueRenderer": pFRenderer = new UniqueValueRendererClass(); break; case "ClassBreaksRenderer": pFRenderer = new ClassBreaksRendererClass(); break; case "ProportionalSymbolRenderer": pFRenderer = new ProportionalSymbolRendererClass(); break; case "ChartRenderer": pFRenderer = new ChartRendererClass(); break; } IPersistStream pPersistStream = pFRenderer as IPersistStream; pPersistStream.Load(pStream); pFRenderer = pPersistStream as IFeatureRenderer; return(pFRenderer); } }
//从数据库中读取图层设置 public static object GetLayerConfigFromBlob(string sql, IWorkspace pConfigWks) { Exception err = null; SysCommon.Gis.IGisTable pGISTable = new SysCommon.Gis.SysGisTable(pConfigWks); //获取Layer byte[] LayerByte = pGISTable.GetFieldValue("Render", "LayerConfig", sql, out err) as byte[]; //是否得到了序列化的blob,没得到,则返回NULL if (LayerByte == null) { return(null); } //从数据库中得到图层的类型 string strLayerType = pGISTable.GetFieldValue("Render", "LayerType", sql, out err).ToString(); ILayer pLayer = null; if (strLayerType == "" || strLayerType == null) { return(null); } switch (strLayerType) { case "FDOGraphicsLayer": //注记层 pLayer = new FDOGraphicsLayerClass(); break; case "DimensionLayer": //标注层 pLayer = new DimensionLayerClass(); break; case "GdbRasterCatalogLayer": //影像层(RC) pLayer = new GdbRasterCatalogLayerClass(); break; case "RasterLayer": //影像数据集(RD) pLayer = new RasterLayerClass(); break; case "FeatureLayer": //普通地物层 pLayer = new FeatureLayerClass(); break; default: pLayer = new FeatureLayerClass(); break; } IMemoryBlobStreamVariant pMemoryBlobStreamVariant = new MemoryBlobStreamClass(); pMemoryBlobStreamVariant.ImportFromVariant((object)LayerByte); IStream pStream = pMemoryBlobStreamVariant as IStream; if (pLayer != null && pStream != null) { IPersistStream pPersistStream = pLayer as IPersistStream; try { pPersistStream.Load(pStream); } catch { return(null); } pLayer = pPersistStream as ILayer; } return(pLayer); }