コード例 #1
0
ファイル: FrmTmpDataCheck.cs プロジェクト: siszoey/geosufan
        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);
        }
コード例 #2
0
ファイル: frmOrderTask.cs プロジェクト: siszoey/geosufan
        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 { }
        }
コード例 #3
0
ファイル: ModuleRenderer.cs プロジェクト: siszoey/geosufan
        /// <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);
            }
        }
コード例 #4
0
ファイル: ModuleRenderer.cs プロジェクト: siszoey/geosufan
        //从数据库中读取图层设置
        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);
        }