/// <summary> /// 查询该图层是否可查询 added by xisheng 20110802 /// </summary> /// <param name="layer">图层</param> /// <returns></returns> public bool GetIsQuery(IFeatureLayer layer) { ILayerGeneralProperties pLayerGenPro = layer as ILayerGeneralProperties; //读取该图层的描述信息,转成xml节点 string strNodeXml = pLayerGenPro.LayerDescription; if (strNodeXml.Equals("")) { return(true); } XmlDocument pXmldoc = new XmlDocument(); pXmldoc.LoadXml(strNodeXml); //获取节点的NodeKey信息 XmlNode pxmlnode = pXmldoc.SelectSingleNode("//AboutShow"); if (pxmlnode == null) { pXmldoc = null; return(true); } string strNodeKey = pxmlnode.Attributes["IsQuery"].Value.ToString(); if (strNodeKey.Trim().ToUpper() == "FALSE") { pXmldoc = null; return(false); } else { pXmldoc = null; return(true); } }
//added by chulili 20110731 获取图层顺序号,返回字符型,为了同时适应整形和双精度型 private string GetOrderIDofLayer(ILayer pLayer) { try { ILayerGeneralProperties pLayerGenPro = pLayer as ILayerGeneralProperties; //读取图层的描述 string strNodeXml = pLayerGenPro.LayerDescription; XmlDocument pXmlDoc = new XmlDocument(); pXmlDoc.LoadXml(strNodeXml); //构成xml节点,根据NodeKey在节点里查询 XmlNode pNode = pXmlDoc.ChildNodes[0]; string strOrder = ""; try { strOrder = pNode.Attributes["OrderID"].Value.ToString(); } catch { } return(strOrder); } catch { } return(""); }
public override void OnClick() { if (m_pLayer == null) { return; } // 获取图层NodeKey ygc 2012-20-11 ILayerGeneralProperties pLayerGenPro = m_pLayer as ILayerGeneralProperties; string sValue = pLayerGenPro.LayerDescription; string NodeKey = ""; if (sValue != "") { XmlDocument docXml = new XmlDocument(); docXml.LoadXml(sValue); XmlNode node = docXml.SelectSingleNode("//Layer"); NodeKey = node.Attributes["NodeKey"].Value.ToString(); }//end //xisheng 20111117 传递m_MapControl以便刷新********************************* if (layerProDialog == null) { //layerProDialog = new frmLayerProperties(m_pLayer, m_pActiveView, true); layerProDialog = new frmLayerProperties(m_pLayer, m_MapControl, true, NodeKey); layerProDialog.Show(); } else if (layerProDialog.Visible == false) { //layerProDialog = new frmLayerProperties(m_pLayer, m_pActiveView, true); layerProDialog = new frmLayerProperties(m_pLayer, m_MapControl, true, NodeKey); layerProDialog.Show(); } ////xisheng 20111117 传递m_MapControl以便刷新****************************end }
//获取图层属性 private void ReadLayerProperties(ILayer layer, AdvTree tree) { tree.BeginUpdate(); tree.Nodes.Clear(); if (layer is IFeatureLayer) { ILayerGeneralProperties layerProperties = layer as ILayerGeneralProperties; AddChildNode(tree.Nodes, "LastMaximumScale", layerProperties.LastMaximumScale.ToString()); AddChildNode(tree.Nodes, "LastMinimumScale", layerProperties.LastMinimumScale.ToString()); AddChildNode(tree.Nodes, "LayerDescription ", layerProperties.LayerDescription); } else if (layer is IRasterLayer) { IRasterLayer rasterLayer = layer as IRasterLayer; if (rasterLayer.Raster != null) { IRaster raster = rasterLayer.Raster; IRaster2 raster2 = raster as IRaster2; IRasterBandCollection coll = raster2 as IRasterBandCollection; IRasterProps rasterProps = raster2 as IRasterProps; //基本信息 Node node = AddChildNode(tree.Nodes, "基本信息", null); AddChildNode(node.Nodes, "行数,列数", rasterProps.Height.ToString() + "," + rasterProps.Width.ToString()); AddChildNode(node.Nodes, "波段数", coll.Count.ToString()); AddChildNode(node.Nodes, "像元大小(x,y)", rasterProps.MeanCellSize().X.ToString() + "," + rasterProps.MeanCellSize().Y.ToString()); AddChildNode(node.Nodes, "波段数", coll.Count.ToString()); AddChildNode(node.Nodes, "像素类型", rasterProps.PixelType.ToString()); AddChildNode(node.Nodes, "无效值", ClsGetCameraView.getNoDataValue(rasterProps.NoDataValue).ToString()); node = AddChildNode(tree.Nodes, "坐标范围", null); AddChildNode(node.Nodes, "上", rasterProps.Extent.YMax.ToString()); AddChildNode(node.Nodes, "左", rasterProps.Extent.XMin.ToString()); AddChildNode(node.Nodes, "右", rasterProps.Extent.XMax.ToString()); AddChildNode(node.Nodes, "下", rasterProps.Extent.YMin.ToString()); node = AddChildNode(tree.Nodes, "统计信息", null); ClsGDBDataCommon cls = new ClsGDBDataCommon(); for (int i = 0; i < coll.Count; i++) { double[] dValue = cls.GetRasterStatistics(m_pLayer, i); Node nodeBand = AddChildNode(node.Nodes, "Band_" + (i + 1).ToString(), null); AddChildNode(nodeBand.Nodes, "最大值", dValue[0].ToString()); AddChildNode(nodeBand.Nodes, "最小值", dValue[1].ToString()); AddChildNode(nodeBand.Nodes, "平均值", dValue[2].ToString()); AddChildNode(nodeBand.Nodes, "标准差", dValue[3].ToString()); } } } tree.EndUpdate(true); tree.ExpandAll(); }
//added by chulili 20110730根据NodeKey查找图层 递归调用 private static ILayer GetLayerByNodeKey(IMap pMap, ILayer pLayer, string strNodeKey) { if (pMap == null) { return(null); } if (pLayer == null) { return(null); } if (strNodeKey.Equals(string.Empty)) { return(null); } ILayer pSearchLayer = null; //遍历子节点 IGroupLayer pGrouplayer = pLayer as IGroupLayer; if (pGrouplayer != null) { ICompositeLayer pComLayer = pGrouplayer as ICompositeLayer; for (int i = 0; i < pComLayer.Count; i++) { ILayer pTmpLayer = pComLayer.get_Layer(i); pSearchLayer = GetLayerByNodeKey(pMap, pTmpLayer, strNodeKey); if (pSearchLayer != null) { return(pSearchLayer); } } } else { ILayerGeneralProperties pLayerGenPro = pLayer as ILayerGeneralProperties; //读取图层的描述 string strNodeXml = pLayerGenPro.LayerDescription; XmlDocument pXmlDoc = new XmlDocument(); pXmlDoc.LoadXml(strNodeXml); //构成xml节点,根据NodeKey在节点里查询 string strSearch = "//Layer[@NodeKey=" + "'" + strNodeKey + "'" + "]"; XmlNode pNode = pXmlDoc.SelectSingleNode(strSearch); if (pNode != null) { pXmlDoc = null; return(pLayer); } } return(null); }
public static XmlNode GetSelectNodeXml(ILayer pLayer) { ILayerGeneralProperties pLayerGenPro = pLayer as ILayerGeneralProperties; string sValue = pLayerGenPro.LayerDescription; if (sValue.Equals(string.Empty)) { return(null); } XmlDocument docXml = new XmlDocument(); docXml.LoadXml(sValue); XmlNode nodeSelectXml = docXml.DocumentElement; return(nodeSelectXml); }
//刷新单个层的图层顺序号,支持图层组类型以及图层类型 public void RefreshOrderIDofLayer(ILayer pLayer, XmlDocument pXmldoc) { if (pLayer == null) { return; } ILayerGeneralProperties pLayerGenPro = pLayer as ILayerGeneralProperties; //读取图层的描述 string strNodeXml = pLayerGenPro.LayerDescription; if (strNodeXml == "") { return; } XmlDocument pTmpXmlDoc = new XmlDocument(); pTmpXmlDoc.LoadXml(strNodeXml); //构成xml节点,根据NodeKey在节点里查询 XmlNode pNode = pTmpXmlDoc.ChildNodes[0]; string strNodeKey = pNode.Attributes["NodeKey"].Value.ToString(); string strSearch = ""; if (pLayer is IGroupLayer) { strSearch = "//DataDIR [@NodeKey='" + strNodeKey + "']"; } else { strSearch = "//Layer [@NodeKey='" + strNodeKey + "']"; } pTmpXmlDoc = null; XmlNode pNewLayerNode = pXmldoc.SelectSingleNode(strSearch); if (pNewLayerNode != null) { pLayerGenPro.LayerDescription = pNewLayerNode.OuterXml; this.layerTree.RefreshOrderIDofLayer(strNodeKey, pNewLayerNode.OuterXml); } }
//为图层赋顺序号,此处是双精度型 private void SetOrderIDofLayer(ILayer pLayer, double dOrderID) { try { ILayerGeneralProperties pLayerGenPro = pLayer as ILayerGeneralProperties; //读取图层的描述 string strNodeXml = pLayerGenPro.LayerDescription; XmlDocument pXmlDoc = new XmlDocument(); pXmlDoc.LoadXml(strNodeXml); //构成xml节点,根据NodeKey在节点里查询 XmlNode pNode = pXmlDoc.ChildNodes[0]; string strNodeKey = pNode.Attributes["NodeKey"].Value.ToString(); pXmlDoc = null; //为图层设置顺序号,双精度型 XmlDocument pnewXmldoc = new XmlDocument(); pnewXmldoc.Load(ModPublicFun._layerTreePath); string strSearch = ""; if (pLayer is IGroupLayer) { //若是图层组,则取数据集节点 strSearch = "//DataDIR [@NodeKey='" + strNodeKey + "']"; } else { //若是单图层,则取图层节点 strSearch = "//Layer [@NodeKey='" + strNodeKey + "']"; } XmlNode pLayerNode = pnewXmldoc.SelectSingleNode(strSearch); XmlElement pLayerEle = pLayerNode as XmlElement; if (pLayerEle != null) { pLayerEle.SetAttribute("OrderID", dOrderID.ToString()); } pLayerGenPro.LayerDescription = pLayerNode.OuterXml;//这一句很重要,将修改的顺序号保存回去 pnewXmldoc.Save(ModPublicFun._layerTreePath); } catch { } }
private void uctrGeneral_Load_1(object sender, EventArgs e) { //xisheng 20111117 屏蔽掉判断是不是影像,不明白之前为什么要这样处理*******************// //if (frmLayerProperties.m_featureTrue) //{ txtLayerName.Text = m_pLayer.Name; //} //else //{ // txtLayerName.Text = "影像数据"; //} //xisheng 20111117 屏蔽掉判断是不是影像,不明白之前为什么要这样处理end*************// //获得图层NodeKey xisheng 20111117**************************************************** ILayerGeneralProperties pLayerGenPro = m_pLayer as ILayerGeneralProperties; txtDescription.Text = pLayerGenPro.LayerDescription; if (pLayerGenPro.LayerDescription != "") { XmlDocument xmldoc = new XmlDocument(); xmldoc.LoadXml(pLayerGenPro.LayerDescription); XmlNode xmlNode = xmldoc.SelectSingleNode(@"//Layer"); m_nodeKey = (xmlNode as XmlElement).GetAttribute("NodeKey"); //获得图层NodeKey xisheng 20111117**********************************************end m_LayerDescription = "图层名称:" + (xmlNode as XmlElement).GetAttribute("NodeText") + ";\r\n"; m_LayerDescription += "要素集名称:" + (xmlNode as XmlElement).GetAttribute("FeatureDatasetName") + ";\r\n"; switch ((xmlNode as XmlElement).GetAttribute("DataType")) { case "FC": m_LayerDescription += "要素集类型:FeatureClass;\r\n"; break; case "FD": m_LayerDescription += "要素集类型:FeatureDataset;\r\n"; break; case "RC": m_LayerDescription += "要素集类型:RasterClasss;\r\n"; break; case "RD": m_LayerDescription += "要素集类型:RasterDataset;\r\n"; break; } m_LayerDescription += "要素类名称:" + (xmlNode as XmlElement).GetAttribute("Code") + ";\r\n"; m_LayerDescription += "要素类类型:" + (xmlNode as XmlElement).GetAttribute("FeatureType") + ";"; } List <string> list = new List <string>(); chkLayerVisible.Checked = m_layerVisible; if (m_pCurrentLayer.MaximumScale == 0 && m_pCurrentLayer.MinimumScale == 0) { rbtnAllScale.Checked = true; cboMaxScale.Enabled = false; cboMinScale.Enabled = false; //等于上次的比例尺 xisheng 20111117 if (Plugin.Mod.m_Dic.ContainsKey(m_nodeKey)) { list = Plugin.Mod.m_Dic[m_nodeKey]; cboMaxScale.Text = list[1]; cboMinScale.Text = list[0]; } //等于上次的比例尺 xisheng 20111117 end } else { rbtnRangeScale.Checked = true; cboMaxScale.Enabled = true; cboMinScale.Enabled = true; //shduan add 20110720 cboMaxScale.Text = m_pCurrentLayer.MaximumScale.ToString(); cboMinScale.Text = m_pCurrentLayer.MinimumScale.ToString(); } txtDescription.Text = m_LayerDescription; ILayerEffects pLyrEffects = m_pCurrentLayer as ILayerEffects; this.inPutTrans.Value = pLyrEffects.Transparency; }
/// <summary> /// Builds the index file with layers /// </summary> /// <param name="searchPaths">The search paths.</param> public void BuildIndex(List <string> searchPaths) { if (!File.Exists(this.IndexPath)) { CreateNewIndexFile(this.IndexPath); } List <string> layerFiles = new List <string>(); int i = 0; foreach (string searchPath in searchPaths) { i++; LayerfileIndexer indexer = new LayerfileIndexer(searchPath); indexer.Search(); layerFiles.AddRange(indexer.LayerFiles); OnProgressUpdate(i, searchPaths.Count, "Scanning Search Path " + searchPath); } List <string> insertSQLStatements = new List <string>(); i = 0; foreach (string filePath in layerFiles) { i++; FileInfo fileInfo = new FileInfo(filePath); ILayerFile layerFile = new LayerFileClass(); layerFile.Open(filePath); ILayer layer = layerFile.Layer; ILayerGeneralProperties layerProps = (ILayerGeneralProperties)layer; ILayerExtensions layerExt = (ILayerExtensions)layer; string lyrGUID = "00000000-0000-0000-0000-000000000000"; string revision = "0"; if (Layer.Util.LayerExtHelper.UmbrielPropertySetExists(layerExt)) { IPropertySet propertySet = Util.LayerExtHelper.GetUmbrielPropertySet(layerExt); if (propertySet != null && Util.LayerExtHelper.PropertyExists(propertySet, "GUID")) { lyrGUID = propertySet.GetProperty("GUID").ToString(); } if (propertySet != null && Util.LayerExtHelper.PropertyExists(propertySet, "revision")) { revision = propertySet.GetProperty("revision").ToString(); } } StringBuilder sql = new StringBuilder(); sql.AppendLine("INSERT INTO layerfile "); sql.AppendLine("(lyrgid,lyrName,lyrDescription,lyrFileName,lyrFullPath,lyrParentDir,lyrRevision,DateRecCreated,DateRecModified)"); sql.AppendLine(" VALUES ("); sql.AppendLine("'" + lyrGUID + "'"); sql.AppendLine(",'" + layer.Name.Replace("'", "''") + "'"); sql.AppendLine(",'" + layerProps.LayerDescription.Replace("'", "''") + "'"); sql.AppendLine(",'" + Path.GetFileName(filePath) + "'"); sql.AppendLine(",\"" + filePath + "\""); sql.AppendLine(",'" + Path.GetDirectoryName(filePath) + "'"); sql.AppendLine("," + revision + ""); sql.AppendLine(",'" + SqliteDateString(DateTime.Now) + "'"); sql.AppendLine(",'" + SqliteDateString(DateTime.Now) + "'"); sql.AppendLine(")"); Debug.WriteLine(sql.ToString()); insertSQLStatements.Add(sql.ToString()); OnProgressUpdate(i, layerFiles.Count, "Building layer data file: "); if (layer != null) { // System.Runtime.InteropServices.Marshal.FinalReleaseComObject(layerFile); } } i = 0; // build insert sql statement using (SQLiteConnection cnn = new SQLiteConnection(this.GetDBConnectionString())) { cnn.Open(); using (DbTransaction transaction = cnn.BeginTransaction()) { using (DbCommand cmd = cnn.CreateCommand()) { foreach (string sql in insertSQLStatements) { i++; cmd.CommandText = sql; cmd.ExecuteNonQuery(); OnProgressUpdate(i, insertSQLStatements.Count, "Inserting data: "); } } transaction.Commit(); } OnProgressUpdate(i, insertSQLStatements.Count, "Insert Complete!"); cnn.Close(); } }
/// <summary> /// 设置图层 /// </summary> private void DoApply() { IFeatureLayer featureLayer = (IFeatureLayer)m_layer; IGeoFeatureLayer geoLayer = (IGeoFeatureLayer)m_layer; IFeatureClass featureClass = featureLayer.FeatureClass; ILayerGeneralProperties layerProperties = (ILayerGeneralProperties)featureLayer; // 图层属性页 String tmp = this.textBoxLayerName.Text.Trim(); if (!String.IsNullOrEmpty(tmp)) { m_layer.Name = tmp; } tmp = layerProperties.LayerDescription.Trim(); layerProperties.LayerDescription = tmp; m_layer.Visible = this.checkBoxVisibility.Checked; if (this.radioButtonScaleAll.Checked) { geoLayer.MaximumScale = 0; geoLayer.MinimumScale = 0; } else { tmp = this.comboBoxScaleMax.Text.Trim(); double d = 0; if (Double.TryParse(tmp, out d)) { geoLayer.MaximumScale = d; } else { geoLayer.MaximumScale = 0; } tmp = this.comboBoxScaleMin.Text.Trim(); if (Double.TryParse(tmp, out d)) { geoLayer.MinimumScale = d; } else { geoLayer.MinimumScale = 0; } } // 标注 IAnnotateLayerPropertiesCollection annoLayerPropsColl = geoLayer.AnnotationProperties; IAnnotateLayerProperties annoLayerProps = null; IElementCollection placedElements = null; IElementCollection unplacedElements = null; annoLayerPropsColl.QueryItem(0, out annoLayerProps, out placedElements, out unplacedElements); ILabelEngineLayerProperties aLELayerProps = annoLayerProps as ILabelEngineLayerProperties; annoLayerProps.DisplayAnnotation = checkBoxLabelVisibility.Checked; if (annoLayerProps.DisplayAnnotation) { // cmbFontName.Text = "宋体"; ITextSymbol textSymbol = aLELayerProps.Symbol; stdole.IFontDisp fontDisp = textSymbol.Font; decimal d = 8; if (decimal.TryParse(cmbFontSize.Text, out d)) { fontDisp.Size = d; } fontDisp.Bold = toolBarStyle.Buttons[0].Pushed; fontDisp.Italic = toolBarStyle.Buttons[1].Pushed; fontDisp.Underline = toolBarStyle.Buttons[2].Pushed; fontDisp.Name = cmbFontName.Text; IRgbColor rgbColor = new RgbColorClass(); rgbColor.Transparency = this.colorButtonFont.Color.A; rgbColor.Red = this.colorButtonFont.Color.R; rgbColor.Green = this.colorButtonFont.Color.G; rgbColor.Blue = this.colorButtonFont.Color.B; textSymbol.Color = rgbColor; textSymbol.Font = fontDisp; aLELayerProps.Symbol = textSymbol; annoLayerProps = aLELayerProps as IAnnotateLayerProperties; annoLayerProps.FeatureLayer = geoLayer; annoLayerProps.LabelWhichFeatures = esriLabelWhichFeatures.esriAllFeatures; // annoLayerPropsColl.Add(annoLayerProps); if (cmbFieldName.SelectedIndex == -1) { aLELayerProps.IsExpressionSimple = false; } else { aLELayerProps.IsExpressionSimple = true; String expr = "[" + cmbFieldName.Items[cmbFieldName.SelectedIndex] + "]"; aLELayerProps.Expression = expr; } if (this.rbScaleWithLayer.Checked) { annoLayerProps.AnnotationMaximumScale = 0; annoLayerProps.AnnotationMinimumScale = 0; } else { double dTmp = 0; if (double.TryParse(cmbMaxScale.Text, out dTmp)) { annoLayerProps.AnnotationMaximumScale = dTmp; } dTmp = 0; if (double.TryParse(cmbMinScale.Text, out dTmp)) { annoLayerProps.AnnotationMinimumScale = dTmp; } } //ITextSymbol pTextSymbol = aLELayerProps.Symbol; //stdole.IFontDisp pFontDisp = pTextSymbol.Font; //pFontDisp.Size = decimal.Parse(fontSize); //pFontDisp.Bold = boldBool; //pFontDisp.Italic = italicBool; //pFontDisp.Name = fontStyle; //IRgbColor pRgbColor = new RgbColorClass(); //pRgbColor.Red = int.Parse(fontColor.R.ToString()); //pRgbColor.Blue = int.Parse(fontColor.B.ToString()); //pRgbColor.Green = int.Parse(fontColor.G.ToString()); //pTextSymbol.Font = pFontDisp; //pTextSymbol.Color = pRgbColor; //aLELayerProps.Symbol = pTextSymbol; //annoLayerProps = aLELayerProps as IAnnotateLayerProperties; //annoLayerProps.FeatureLayer = geoLayer; //annoLayerProps.LabelWhichFeatures = esriLabelWhichFeatures.esriAllFeatures; //annoLayerPropsColl.Add(annoLayerProps); } // 符号 EPSUtils.RendererFeatureLayer(featureLayer, checkBoxCostomSymbol.Checked); MapUtils.GetActiveView().Refresh(); }
/// <summary> /// 初始化form element /// </summary> private void Initialize() { IFeatureLayer featureLayer = (IFeatureLayer)m_layer; IGeoFeatureLayer geoLayer = (IGeoFeatureLayer)m_layer; IFeatureClass featureClass = featureLayer.FeatureClass; ILayerGeneralProperties layerProperties = (ILayerGeneralProperties)featureLayer; // 图层属性页 this.textBoxLayerName.Text = m_layer.Name; this.textBoxLayerDescription.Text = layerProperties.LayerDescription; this.checkBoxVisibility.Checked = m_layer.Visible; String scaleMin = geoLayer.MinimumScale.ToString(); String sacleMax = geoLayer.MaximumScale.ToString(); if ("0" == scaleMin && "0" == sacleMax) { this.radioButtonScaleAll.Checked = true; this.radioButtonScaleZoom.Checked = false; } else { this.radioButtonScaleAll.Checked = false; this.radioButtonScaleZoom.Checked = true; this.comboBoxScaleMax.Text = sacleMax; this.comboBoxScaleMin.Text = scaleMin; } // 字段定义页 IFields fields = featureClass.Fields; int fieldCount = fields.FieldCount; for (int i = 0; i < fieldCount; i++) { IField field = fields.get_Field(i); ListViewItem item = new ListViewItem(field.Name); item.SubItems.Add(field.AliasName); item.SubItems.Add(field.Editable ? "允许编辑" : "不允许编辑"); item.SubItems.Add(field.IsNullable ? "允许为空" : "不允许为空"); item.SubItems.Add(field.Length.ToString()); item.SubItems.Add(field.Precision.ToString()); item.SubItems.Add(field.Scale.ToString()); item.SubItems.Add(GetFieldType(field.Type)); listViewFields.Items.Add(item); } // 数据源及四至范围 IEnvelope envelope = m_layer.AreaOfInterest; textBoxLeft.Text = envelope.XMin.ToString(); textBoxRight.Text = envelope.XMax.ToString(); textBoxTop.Text = envelope.YMin.ToString(); textBoxBottom.Text = envelope.YMax.ToString(); IDataset dataset = (IDataset)featureLayer; textBoxDataSource.AppendText("数据源类型: "); textBoxDataSource.AppendText(featureLayer.DataSourceType); textBoxDataSource.AppendText("\r\n数据集: "); textBoxDataSource.AppendText(dataset.BrowseName); textBoxDataSource.AppendText("\r\n数据源名称: "); textBoxDataSource.AppendText(dataset.Workspace.PathName); textBoxDataSource.AppendText("\r\n要素类: "); textBoxDataSource.AppendText(featureClass.AliasName); textBoxDataSource.AppendText("\r\n要素类类型: "); textBoxDataSource.AppendText(GetFeatureType(featureClass.FeatureType)); textBoxDataSource.AppendText("\r\n几何类型: "); textBoxDataSource.AppendText(GetGeometryType(featureClass.ShapeType)); IGeoDataset geoDataset = (IGeoDataset)featureClass; // 通过IGeoDataset接口获取FeatureClass坐标系统 ISpatialReference spatialReference = geoDataset.SpatialReference; IProjectedCoordinateSystem projectCoordSystem = null; if (spatialReference is IProjectedCoordinateSystem) { projectCoordSystem = (IProjectedCoordinateSystem)spatialReference; if (projectCoordSystem == null) { return; } textBoxDataSource.AppendText("\r\n"); IProjection project = projectCoordSystem.Projection; textBoxDataSource.AppendText("\r\n投影坐标系: "); textBoxDataSource.AppendText(projectCoordSystem.Name); textBoxDataSource.AppendText("\r\n投影: "); textBoxDataSource.AppendText(project.Name); textBoxDataSource.AppendText("\r\nFalseEasting: "); textBoxDataSource.AppendText(projectCoordSystem.FalseEasting.ToString()); textBoxDataSource.AppendText("\r\nFalseNorthing: "); textBoxDataSource.AppendText(projectCoordSystem.FalseNorthing.ToString()); textBoxDataSource.AppendText("\r\n中央经线: "); textBoxDataSource.AppendText(projectCoordSystem.get_CentralMeridian(true).ToString()); textBoxDataSource.AppendText("\r\n缩放比例: "); textBoxDataSource.AppendText(projectCoordSystem.ScaleFactor.ToString()); textBoxDataSource.AppendText("\r\n高度原点: "); try { textBoxDataSource.AppendText(projectCoordSystem.LongitudeOfOrigin.ToString()); } catch (Exception e) { textBoxDataSource.AppendText("0"); } textBoxDataSource.AppendText("\r\n单位: "); textBoxDataSource.AppendText(projectCoordSystem.CoordinateUnit.Name); textBoxDataSource.AppendText("\r\n"); IGeographicCoordinateSystem geographCoordinateSystem = projectCoordSystem.GeographicCoordinateSystem; if (geographCoordinateSystem != null) { textBoxDataSource.AppendText("\r\n地理坐标系: "); textBoxDataSource.AppendText(geographCoordinateSystem.Name); textBoxDataSource.AppendText("\r\n基准面: "); textBoxDataSource.AppendText(geographCoordinateSystem.Datum.Name); textBoxDataSource.AppendText("\r\n本初子午线: "); textBoxDataSource.AppendText(geographCoordinateSystem.PrimeMeridian.Name); textBoxDataSource.AppendText("\r\n单位: "); textBoxDataSource.AppendText(geographCoordinateSystem.CoordinateUnit.Name); } } else if (spatialReference is IGeographicCoordinateSystem) { IGeographicCoordinateSystem geographCoordinateSystem = spatialReference as IGeographicCoordinateSystem; if (geographCoordinateSystem != null) { textBoxDataSource.AppendText("\r\n地理坐标系: "); textBoxDataSource.AppendText(geographCoordinateSystem.Name); textBoxDataSource.AppendText("\r\n基准面: "); textBoxDataSource.AppendText(geographCoordinateSystem.Datum.Name); textBoxDataSource.AppendText("\r\n本初子午线: "); textBoxDataSource.AppendText(geographCoordinateSystem.PrimeMeridian.Name); textBoxDataSource.AppendText("\r\n单位: "); textBoxDataSource.AppendText(geographCoordinateSystem.CoordinateUnit.Name); } } // filter IDisplayString displayString = (IDisplayString)featureLayer; textBoxFilter.AppendText(displayString.ExpressionProperties.Expression); // 标注 IAnnotateLayerPropertiesCollection annoLayerPropsColl = geoLayer.AnnotationProperties; IAnnotateLayerProperties annoLayerProps = null; IElementCollection placedElements = null; IElementCollection unplacedElements = null; annoLayerPropsColl.QueryItem(0, out annoLayerProps, out placedElements, out unplacedElements); ILabelEngineLayerProperties aLELayerProps = annoLayerProps as ILabelEngineLayerProperties; // annoLayerProps.DisplayAnnotation; checkBoxLabelVisibility.Checked = annoLayerProps.DisplayAnnotation; //初始化字体大小下拉框 for (int k = 5; k <= 11; k++) { cmbFontSize.Items.Add(k); } for (int k = 12; k <= 72; k = k + 2) { cmbFontSize.Items.Add(k); } // cmbFontSize.Text = "8"; //初始化字体下拉框 foreach (FontFamily onefontfamily in FontFamily.Families) { //去掉名称头个字为@的字体 if (onefontfamily.Name.Substring(0, 1) != "@") { cmbFontName.Items.Add(onefontfamily.Name); } } // cmbFontName.Text = "宋体"; ITextSymbol pTextSymbol = aLELayerProps.Symbol; stdole.IFontDisp pFontDisp = pTextSymbol.Font; cmbFontSize.Text = pFontDisp.Size.ToString(); toolBarStyle.Buttons[0].Pushed = pFontDisp.Bold; toolBarStyle.Buttons[1].Pushed = pFontDisp.Italic; toolBarStyle.Buttons[2].Pushed = pFontDisp.Underline; cmbFontName.Text = pFontDisp.Name; IRgbColor rgbColor = (IRgbColor)pTextSymbol.Color; colorButtonFont.Color = Color.FromArgb(rgbColor.Transparency, rgbColor.Red, rgbColor.Green, rgbColor.Blue); colorButtonFont.Refresh(); for (int i = 0; i < fields.FieldCount; i++) { IField field = fields.get_Field(i); cmbFieldName.Items.Add(field.Name); } cmbFieldName.Enabled = aLELayerProps.IsExpressionSimple; String expr = aLELayerProps.Expression.Trim('[').Trim(']'); cmbFieldName.SelectedIndex = cmbFieldName.FindString(expr); cmbMaxScale.Text = annoLayerProps.AnnotationMaximumScale.ToString(); cmbMinScale.Text = annoLayerProps.AnnotationMinimumScale.ToString(); if (cmbMaxScale.Text == "0" && cmbMinScale.Text == "0") { rbScaleWithLayer.Checked = true; this.rbScaleDefined.Checked = false; } else { rbScaleWithLayer.Checked = false; this.rbScaleDefined.Checked = true; } //ITextSymbol pTextSymbol = aLELayerProps.Symbol; //stdole.IFontDisp pFontDisp = pTextSymbol.Font; //pFontDisp.Size = decimal.Parse(fontSize); //pFontDisp.Bold = boldBool; //pFontDisp.Italic = italicBool; //pFontDisp.Name = fontStyle; //IRgbColor pRgbColor = new RgbColorClass(); //pRgbColor.Red = int.Parse(fontColor.R.ToString()); //pRgbColor.Blue = int.Parse(fontColor.B.ToString()); //pRgbColor.Green = int.Parse(fontColor.G.ToString()); //pTextSymbol.Font = pFontDisp; //pTextSymbol.Color = pRgbColor; //aLELayerProps.Symbol = pTextSymbol; //annoLayerProps = aLELayerProps as IAnnotateLayerProperties; //annoLayerProps.FeatureLayer = geoLayer; //annoLayerProps.LabelWhichFeatures = esriLabelWhichFeatures.esriAllFeatures; //annoLayerPropsColl.Add(annoLayerProps); // 符号 checkBoxCostomSymbol.Checked = EPSUtils.IsLayerRenderer(featureLayer); }