空间关系
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 /// <summary>计算两点间距离2 /// </summary>3 /// <param name="point1"></param>4 /// <param name="point2"></param>5 /// <returns></returns>6 public static double getDistanceOfTwoPoints(ESRI.ArcGIS.Geometry.IPoint point1, ESRI.ArcGIS.Geometry.IPoint point2)7 {8 return Math.Sqrt((point1.X - point2.X) * (point1.X - point2.X) + (point1.Y - point2.Y) * (point1.Y - point2.Y));9 }
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 IGeometry geo=feature.Shape;2 ((ITransform2D)geo).Move(20,20);
计算范围
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 /// <summary>得到点集合的n倍Envelope范围 2 /// </summary> 3 /// <param name="points"></param> 4 /// <param name="zoomInNumber"></param> 5 /// <returns></returns> 6 public static IEnvelope getBigEnvelope(IPointCollection points, double zoomInNumber) 7 { 8 IEnvelope result = new EnvelopeClass(); 9 10 double xmax = 0, xmin = 999999999999, ymax = 0, ymin = 999999999999;11 12 for (int i = 0; i < points.PointCount; i++)13 {14 ESRI.ArcGIS.Geometry.IPoint p = points.get_Point(i);15 if (xmax < p.X) xmax = p.X;16 if (ymax < p.Y) ymax = p.Y;17 if (xmin > p.X) xmin = p.X;18 if (ymin > p.Y) ymin = p.Y;19 }20 result.XMax = xmax + xmax - xmin;21 result.XMin = xmin - xmax + xmin;22 result.YMax = ymax + ymax - ymin;23 result.YMin = ymin - ymax + ymin;24 25 return result;26 }
查询
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 /// <summary>查询要素 2 /// 多个要素取其union后的范围 3 /// </summary> 4 /// <param name="map">地图</param> 5 /// <param name="layer">矢量图层</param> 6 /// <param name="where">查询条件</param> 7 /// <returns></returns> 8 public static IGeometry queryUnionGeometry(IMap map, IFeatureLayer layer, string where) 9 {10 if (layer == null) return null;11 12 IFeatureClass featCls = layer.FeatureClass;13 14 IQueryFilter filter = new QueryFilterClass();15 filter.WhereClause = where;16 IFeatureCursor cursor = featCls.Search(filter, false);17 18 IFeature feature = cursor.NextFeature();19 if (feature == null) return null;20 21 Boolean isFirstFeature = true;22 IGeometry union = null;23 while (feature != null)24 {25 if (isFirstFeature)26 {27 isFirstFeature = false;28 union = feature.Shape;29 }30 else31 {32 union=((ITopologicalOperator)union).Union(feature.Shape);33 }34 feature = cursor.NextFeature();35 }36 37 return union; ;38 }
查找图层
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 /// <summary>得到地图上图层列表 2 /// </summary> 3 /// <param name="map"></param> 4 /// <returns></returns> 5 public static IEnumLayer getFeatureLayers(IMap map) 6 { 7 UID uid = new UIDClass(); 8 9 //{6CA416B1-E160-11D2-9F4E-00C04F6BC78E} IDataLayer (all)10 //{40A9E885-5533-11d0-98BE-00805F7CED21} IFeatureLayer11 //{E156D7E5-22AF-11D3-9F99-00C04F6BC78E} IGeoFeatureLayer12 //{34B2EF81-F4AC-11D1-A245-080009B6F22B} IGraphicsLayer13 //{5CEAE408-4C0A-437F-9DB3-054D83919850} IFDOGraphicsLayer14 //{0C22A4C7-DAFD-11D2-9F46-00C04F6BC78E} ICoverageAnnotationLayer15 //{EDAD6644-1810-11D1-86AE-0000F8751720} IGroupLayer16 uid.Value = "{40A9E885-5533-11d0-98BE-00805F7CED21}";//FeatureLayer17 IEnumLayer layers = map.get_Layers(uid, true);18 return layers;19 }
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 /// <summary>根据名称在地图上查找对应矢量图层 2 /// </summary> 3 /// <param name="map"></param> 4 /// <param name="layerName"></param> 5 /// <returns></returns> 6 public static IFeatureLayer getFeatureLayer(IMap map,string layerName) 7 { 8 IEnumLayer layers = getFeatureLayers(map); 9 layers.Reset();10 ILayer layer = null;11 while ((layer = layers.Next()) != null)12 {13 if (layer.Name == layerName)14 return layer as IFeatureLayer;15 }16 return null;17 }
选择要素集
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 /// <summary>得到指定图层上的选中的features 2 /// </summary> 3 /// <param name="map">地图</param> 4 /// <param name="layerName">图层名</param> 5 /// <returns>IFeatureCursor</returns> 6 public static IFeatureCursor getSelectFeatures(IMap map, string layerName) 7 { 8 IFeatureLayer featureLayer = Util.getFeatureLayer(map, layerName); ; 9 10 //得到选中的feature11 IFeatureClass inputFeatureClass = featureLayer.FeatureClass;12 IDataset inputDataset = (IDataset)inputFeatureClass;13 IDatasetName inputDatasetName = (IDatasetName)inputDataset.FullName;14 IFeatureSelection featureSelection = (IFeatureSelection)featureLayer;15 ISelectionSet selectionSet = featureSelection.SelectionSet;16 17 ICursor cursor;18 selectionSet.Search(null, false, out cursor);19 IFeatureCursor featureCursor = (IFeatureCursor)cursor;20 21 return featureCursor;22 }
加载数据
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 /// <summary>将GDB中数据添加至地图 2 /// </summary> 3 /// <param name="map">地图IMap</param> 4 /// <param name="gdbPath">GDB路径</param> 5 /// <param name="name">数据名称</param> 6 public static void addFeatLayerToMapFromGDB(IMap map,string gdbPath,string name) 7 { 8 IWorkspaceFactory toWsf = new FileGDBWorkspaceFactoryClass(); 9 IFeatureWorkspace toFeatWs = (IFeatureWorkspace)toWsf.OpenFromFile(gdbPath, 0);10 IFeatureClass featCls = toFeatWs.OpenFeatureClass(name);11 ILayer layer=new FeatureLayerClass();12 layer.Name = name;13 ((IGeoFeatureLayer)layer).FeatureClass=featCls;14 if (featCls != null) {15 map.AddLayer(layer);16 }17 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
新建shapefile文件/GDB
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 /// <summary>创建点shapefile 2 /// </summary> 3 /// <param name="filePath">target point shapefile path</param> 4 /// <param name="fileName">target point shapefile name</param> 5 public static void createPointShapefile(IMap map, string filePath, string fileName) 6 { 7 //建立shape字段 8 IFields pFields = new FieldsClass(); 9 IFieldsEdit pFieldsEdit = pFields as IFieldsEdit;10 IField pField = new FieldClass();11 IFieldEdit pFieldEdit = pField as IFieldEdit;12 pFieldEdit.Name_2 = "Shape";13 pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry;14 15 //设置geometry definition16 IGeometryDef pGeometryDef = new GeometryDefClass();17 IGeometryDefEdit pGeometryDefEdit = pGeometryDef as IGeometryDefEdit;18 pGeometryDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint;//点、线、面19 pGeometryDefEdit.SpatialReference_2 = map.SpatialReference;20 pFieldEdit.GeometryDef_2 = pGeometryDef;21 pFieldsEdit.AddField(pField);22 23 //新建字段24 pField = new FieldClass();25 pFieldEdit = pField as IFieldEdit;26 pFieldEdit.Length_2 = 10;27 pFieldEdit.Name_2 = "id";28 pFieldEdit.AliasName_2 = "id";29 pFieldEdit.Type_2 = esriFieldType.esriFieldTypeSmallInteger;30 pFieldsEdit.AddField(pField);31 //继续增加其它字段32 33 IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory();34 IFeatureWorkspace pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(filePath, 0) as IFeatureWorkspace;35 36 //IWorkspaceFactory pWorkspaceFactory = new FileGDBWorkspaceFactoryClass();37 //IFeatureWorkspace pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(filePath, 0) as IFeatureWorkspace;38 39 int i = fileName.IndexOf(".shp");40 if (i == -1)41 pFeatureWorkspace.CreateFeatureClass(fileName + ".shp", pFields, null, null, esriFeatureType.esriFTSimple, "Shape", "");42 else43 pFeatureWorkspace.CreateFeatureClass(fileName, pFields, null, null, esriFeatureType.esriFTSimple, "Shape", "");44 45 //MessageBox.Show("OK");46 47 }
将选中要素另存至GDB
另存为shapefile类似,修改workspacefactory为ShapefileWorkspaceFactoryClass,修改对应路径即可。
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 /// <summary>将选中的line feature作为线文件存至gdb 2 /// </summary> 3 /// <param name="featureLayer">select layer</param> 4 /// <param name="gdbPath">gdb路径</param> 5 /// <param name="name">文件名称</param> 6 public static void saveSelectLineFeatureToGDB(IMap map,IFeatureLayer featureLayer,string gdbPath,string name) 7 { 8 IFeatureClass inputFeatureClass = featureLayer.FeatureClass; 9 IDataset inputDataset = (IDataset)inputFeatureClass;10 IDatasetName inputDatasetName = (IDatasetName)inputDataset.FullName;11 12 // Get the layer's selection set. 13 IFeatureSelection featureSelection = (IFeatureSelection)featureLayer;14 ISelectionSet selectionSet = featureSelection.SelectionSet;15 16 IPropertySet ps = new PropertySetClass();17 ps.SetProperty("DATABASE", gdbPath);18 19 IWorkspaceFactory wsf = new FileGDBWorkspaceFactoryClass();20 IWorkspace ws = null;21 try22 {23 ws = wsf.Open(ps, 0);24 }25 catch (Exception e)26 {27 Console.WriteLine(e.Message);28 }29 IDataset ds = (IDataset)ws;30 IWorkspaceName wsName = (IWorkspaceName)ds.FullName;31 IFeatureClassName featClsName = new FeatureClassNameClass();32 IDatasetName dsName = (IDatasetName)featClsName;33 dsName.WorkspaceName = wsName;34 dsName.Name = name;35 36 //// Use the IFieldChecker interface to make sure all of the field names are valid for a shapefile. 37 IFieldChecker fieldChecker = new FieldCheckerClass();38 IFields shapefileFields = null;39 IEnumFieldError enumFieldError = null;40 fieldChecker.InputWorkspace = inputDataset.Workspace;41 fieldChecker.ValidateWorkspace = ws;42 fieldChecker.Validate(inputFeatureClass.Fields, out enumFieldError, out shapefileFields);43 44 // At this point, reporting/inspecting invalid fields would be useful, but for this example it's omitted.45 46 // We also need to retrieve the GeometryDef from the input feature class. 47 int shapeFieldPosition = inputFeatureClass.FindField(inputFeatureClass.ShapeFieldName);48 IFields inputFields = inputFeatureClass.Fields;49 50 IField shapeField = inputFields.get_Field(shapeFieldPosition);51 IGeometryDef geometryDef = shapeField.GeometryDef;52 53 IGeometryDef pGeometryDef = new GeometryDef();54 IGeometryDefEdit pGeometryDefEdit = pGeometryDef as IGeometryDefEdit;55 pGeometryDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolyline;56 pGeometryDefEdit.SpatialReference_2 = map.SpatialReference;57 58 // Now we can create a feature data converter. 59 IFeatureDataConverter2 featureDataConverter2 = new FeatureDataConverterClass();60 IEnumInvalidObject enumInvalidObject = featureDataConverter2.ConvertFeatureClass(inputDatasetName, null,61 selectionSet, null, featClsName, pGeometryDef, shapefileFields, "", 1000, 0);62 63 // Again, checking for invalid objects would be useful at this point...64 65 inputFeatureClass = null;66 ds = null;67 ws = null;68 wsf = null;69 }
编辑
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 //加载目标点图层 2 //IWorkspaceFactory toWsf = new ShapefileWorkspaceFactoryClass(); 3 IWorkspaceFactory toWsf = new FileGDBWorkspaceFactoryClass(); 4 IFeatureWorkspace toFeatWs = (IFeatureWorkspace)toWsf.OpenFromFile(fullGdbPath, 0); ; 5 IFeatureClass toFeatCls = toFeatWs.OpenFeatureClass(pointLayerName); 6 7 //编辑目标点图层 8 IWorkspaceEdit toEdit = (IWorkspaceEdit)toFeatWs; 9 try10 {11 toEdit.StartEditing(true);12 toEdit.StartEditOperation();13 14 IQueryFilter filter=new QueryFilterClass();15 filter.WhereClause="id=0";16 IFeatureCursor cursor = toFeatCls.Search(filter, false);17 18 IFeature feature = cursor.NextFeature();19 20 while(feature != null)21 {22 feature.Delete();23 feature = cursor.NextFeature();24 }25 26 }27 catch (Exception e)28 {29 Console.WriteLine(e.Message);30 }31 finally32 {33 toEdit.StopEditOperation();34 toEdit.StopEditing(true);35 }
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 IFeature toFeature = toFeatCls.CreateFeature();2 ESRI.ArcGIS.Geometry.IPoint newPoint = new PointClass();3 newPoint.PutCoords(fromPoint.X, fromPoint.Y);4 toFeature.Shape = newPoint;5 toFeature.set_Value(2, nowPointId);6 toFeature.Store();
label
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 /// <summary>显示label 2 /// </summary> 3 /// <param name="map"></param> 4 /// <param name="featLayer"></param> 5 /// <param name="field"></param> 6 public static void displayLabel(IMap map, IGeoFeatureLayer featLayer, string field) 7 { 8 featLayer.DisplayAnnotation = true; 9 IAnnotateLayerPropertiesCollection pAnnProCol = featLayer.AnnotationProperties;10 ILabelEngineLayerProperties pLabelEngine = null;11 IAnnotateLayerProperties prop;12 IBasicOverposterLayerProperties pBasicOverposterLayerProps = new BasicOverposterLayerProperties();13 pBasicOverposterLayerProps.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerShape;14 ITextSymbol symbol = new TextSymbolClass();15 IColor c = new RgbColorClass();16 c.RGB = 123;17 symbol.Color = c;18 symbol.Size = 4;19 20 IBasicOverposterLayerProperties bo = new BasicOverposterLayerPropertiesClass();21 IPointPlacementPriorities ipp = new PointPlacementPrioritiesClass();22 ipp.BelowCenter = 1;23 bo.PointPlacementPriorities = ipp;24 for (int i = 0; i < pAnnProCol.Count; i++)25 {26 IElementCollection ec = new ElementCollectionClass();27 pAnnProCol.QueryItem(i, out prop, out ec, out ec);28 pLabelEngine = (ILabelEngineLayerProperties)prop;29 pLabelEngine.Expression = "[" + field + "]";30 pLabelEngine.Symbol = symbol;31 pLabelEngine.BasicOverposterLayerProperties = bo;32 }33 34 ITrackCancel pCon = new CancelTracker();35 pCon.Continue();36 featLayer.Draw(esriDrawPhase.esriDPAnnotation, ((IActiveView)map).ScreenDisplay, pCon);37 }
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 /// <summary>label2Annotation 2 /// </summary> 3 /// <param name="fullGdbPath"></param> 4 /// <param name="featLayer"></param> 5 /// <param name="displayField"></param> 6 private void ConvertLabelsToGDBAnnotationSingleLayer(string fullGdbPath,IFeatureLayer featLayer,string displayField) 7 { 8 IMap map = m_map; 9 10 IPropertySet ps = new PropertySetClass();11 ps.SetProperty("DATABASE", fullGdbPath);12 13 IWorkspaceFactory wsf = new FileGDBWorkspaceFactoryClass();14 IWorkspace ws = wsf.Open(ps, 0);15 IFeatureWorkspace featWs = (IFeatureWorkspace)ws;16 IGeoFeatureLayer pGeoFeatureLayer = featLayer as IGeoFeatureLayer;17 IFeatureClass featCls = pGeoFeatureLayer.FeatureClass;18 19 //设置指定字段为label字段并显示20 Util.displayLabel(map, pGeoFeatureLayer, displayField);21 ((IActiveView)map).PartialRefresh(esriViewDrawPhase.esriViewForeground, null, null);22 23 IConvertLabelsToAnnotation pConvertLabelsToAnnotation = new24 ConvertLabelsToAnnotationClass();25 ITrackCancel pTrackCancel = new CancelTrackerClass();26 27 //Change global level options for the conversion by sending in different parameters to the next line.28 pConvertLabelsToAnnotation.Initialize(map,29 esriAnnotationStorageType.esriDatabaseAnnotation,30 esriLabelWhichFeatures.esriAllFeatures, true, pTrackCancel, null);31 32 if (featCls != null)33 {34 IDataset pDataset = featCls as IDataset;35 36 //Add the layer information to the converter object. Specify the parameters of the output annotation feature class here as well.37 pConvertLabelsToAnnotation.AddFeatureLayer(pGeoFeatureLayer,38 pGeoFeatureLayer.Name + "_anno", featWs,39 featCls.FeatureDataset, true, false, false, true, true,40 "");41 42 //Do the conversion.43 pConvertLabelsToAnnotation.ConvertLabels();44 IEnumLayer pEnumLayer = pConvertLabelsToAnnotation.AnnoLayers;45 46 //Turn off labeling for the layer converted.47 pGeoFeatureLayer.DisplayAnnotation = false;48 49 //Add the result annotation layer to the map.50 map.AddLayers(pEnumLayer, true);51 52 //Refresh the map to update the display.53 IActiveView pActiveView = map as IActiveView;54 pActiveView.Refresh();55 }56 }
GP
转换cad时,从shp转换cad不成功,从gdb中转换成功,原因不知。
GP:createCadXData需要在转换cad之前执行,给cad添加扩展属性
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 /// <summary>GP:shp2cad 2 /// </summary> 3 /// <param name="fromFile"></param> 4 /// <param name="toFile"></param> 5 public static void convertGdb2Cad(string fromFile, string toFile) 6 { 7 Geoprocessor GP = new Geoprocessor(); 8 9 ESRI.ArcGIS.ConversionTools.ExportCAD tool = new10 ESRI.ArcGIS.ConversionTools.ExportCAD();11 //tool.in_features = "d:/lzx/data/road/test.gdb/line_Annod";12 //tool.Output_File = "d:/lzx/data/kk2.dwg";13 tool.in_features = fromFile;14 tool.Output_File = toFile;15 tool.Output_Type = "DWG_R2004";16 GP.Execute(tool, null);17 18 //MessageBox.Show("shp2cad ok");19 }
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 /// <summary>GP:shp export to gdb 2 /// </summary> 3 /// <param name="fromFile"></param> 4 /// <param name="toFile"></param> 5 public static void convertShp2Gdb(string inputFeatures, string outputGdb, string outputName) 6 { 7 8 Geoprocessor GP = new Geoprocessor(); 9 10 ESRI.ArcGIS.ConversionTools.FeatureClassToGeodatabase tool = new ESRI.ArcGIS.ConversionTools.FeatureClassToGeodatabase();11 tool.Input_Features = inputFeatures;12 tool.Output_Geodatabase = outputGdb;13 14 GP.Execute(tool, null);15 16 //MessageBox.Show("shp2gdb ok");17 18 }
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 /// <summary>将线文件的节点转换为点文件 2 /// 使用gp 3 /// </summary> 4 /// <param name="fromFile"></param> 5 /// <param name="toFile"></param> 6 public static void convertFeatureVerticesToPoints(string fromFile, string toFile) 7 { 8 // Initialize the geoprocessor. 9 Geoprocessor GP = new Geoprocessor();10 11 ESRI.ArcGIS.DataManagementTools.FeatureVerticesToPoints tool = new12 ESRI.ArcGIS.DataManagementTools.FeatureVerticesToPoints();13 14 tool.in_features = fromFile;15 tool.out_feature_class = toFile;16 tool.point_location = "BOTH_ENDS";17 GP.Execute(tool, null);18 }
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 /// <summary>GP:createCadXData 2 /// </summary> 3 /// <param name="fromFile"></param> 4 /// <param name="toFile"></param> 5 public static void createCadXData(string fromFile,string field) 6 { 7 Geoprocessor GP = new Geoprocessor(); 8 CreateCADXData tool = new CreateCADXData(fromFile, field, "ArcGIS", "ADE"); 9 GP.Execute(tool, null);10 //MessageBox.Show(" ok");11 }
地图显示/刷新
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 /// <summary>清除选择集并刷新 2 /// </summary> 3 /// <param name="map"></param> 4 public static void clearSelectionInMap(IMap map) 5 { 6 IActiveView activeView = (IActiveView)map; 7 activeView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null); 8 map.ClearSelection(); 9 //需要在前后刷新2次10 activeView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null);11 }
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 /// <summary>删除地图中除指定图层组外的其他图层 2 /// </summary> 3 /// <param name="map"></param> 4 /// <param name="layerNames">不删除的图层列表</param> 5 public static void clearLayers(IMap map, string[] layerNames) 6 { 7 Boolean isToDel = true; 8 IEnumLayer layers = Util.getFeatureLayers(map); 9 layers.Reset();10 ILayer layer = null;11 while ((layer = layers.Next()) != null)12 {13 for (int i = 0; i < layerNames.Length; i++)14 {15 if (layer.Name == layerNames[i])16 {17 isToDel = false;18 }19 }20 if (isToDel)21 {22 map.DeleteLayer(layer);23 System.Runtime.InteropServices.Marshal.ReleaseComObject(layer);24 }25 }26 }
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 /// <summary>删除地图中除指定图层外的其他图层 2 /// </summary> 3 /// <param name="map"></param> 4 /// <param name="layerNames">不删除的图层列表</param> 5 public static void clearLayers(IMap map, string layerName) 6 { 7 Boolean isToDel = true; 8 IEnumLayer layers = Util.getFeatureLayers(map); 9 layers.Reset();10 ILayer layer = null;11 while ((layer = layers.Next()) != null)12 {13 if (layer.Name != layerName)14 {15 map.DeleteLayer(layer);16 System.Runtime.InteropServices.Marshal.ReleaseComObject(layer);17 }18 }19 }
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 /// <summary>缩放到指定要素并高亮显示 2 /// </summary> 3 /// <param name="av"></param> 4 /// <param name="env"></param> 5 public static void zoomAndHighlight(IActiveView av, IGeometry geo) 6 { 7 av.GraphicsContainer.DeleteAllElements(); 8 av.Extent = geo.Envelope; 9 IElement element = new LineElementClass();10 element.Geometry = geo;11 12 IRgbColor color = new RgbColorClass();13 color.Red = 255;14 color.Green = 0;15 color.Blue = 0;16 ISimpleLineSymbol symbol = new SimpleLineSymbolClass();17 symbol.Color = (IColor)color;18 symbol.Width = 2;19 symbol.Style = esriSimpleLineStyle.esriSLSSolid;20 ((ILineElement)element).Symbol = (ILineSymbol)symbol;21 22 av.GraphicsContainer.AddElement(element, 0);23 av.Refresh();24 }
Element
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 public static IColor getColor(int R, int G, int B){2 IRgbColor color=new RgbColorClass();3 color.Red=R;4 color.Green=G;5 color.Blue=B;6 return (IColor)color;7 }
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 public static IElement getFillShapeElement(IGeometry geo){ 2 IElement element=new PolygonElementClass(); 3 element.Geometry=geo; 4 5 ISimpleLineSymbol symbol=new SimpleLineSymbolClass(); 6 symbol.Color=getColor(255,0,0); 7 symbol.Width=2; 8 symbol.Style=esriSimpleLneStyle.esriSLSolid; 9 10 ISimpleFillSymbol fillSymbol=new SimpleFillSymbolClass();11 fillSymbol.outline=(ILineSymbol)symbol;12 fillSymbol.Color=getColor(255,250,200);13 ((IFillShapeElement)element).symbol=(IFillSymbol)fillSymbol;14 15 return element;16 }
来源:https://www.cnblogs.com/CSharpLover/p/5957657.html