private void cboSourceLayer_SelectedIndexChanged(object sender, EventArgs e) { try { clsSnippet pSnippet = new clsSnippet(); string strLayerName = cboSourceLayer.Text; IActiveView pActiveView = ArcMap.Document.ActiveView; int intLIndex = pSnippet.GetIndexNumberFromLayerName(pActiveView, strLayerName); ILayer pLayer = pActiveView.FocusMap.get_Layer(intLIndex); IFeatureLayer pFLayer = pLayer as IFeatureLayer; ESRI.ArcGIS.Geodatabase.IFeatureClass pFClass = pFLayer.FeatureClass; IFields fields = pFClass.Fields; cboValueField.Items.Clear(); CboUField.Items.Clear(); //cboConField.Items.Clear(); cboValueField.Text = ""; CboUField.Text = ""; for (int i = 0; i < fields.FieldCount; i++) { cboValueField.Items.Add(fields.get_Field(i).Name); CboUField.Items.Add(fields.get_Field(i).Name); //cboConField.Items.Add(fields.get_Field(i).Name); } } catch (Exception ex) { MessageBox.Show("Unexpected Error"); return; } }
private void cboTargetLayer_SelectedIndexChanged(object sender, EventArgs e) { try { string strLayerName = cboTargetLayer.Text; int intLIndex = m_pSnippet.GetIndexNumberFromLayerName(m_pActiveView, strLayerName); ILayer pLayer = m_pForm.axMapControl1.get_Layer(intLIndex); IFeatureLayer pFLayer = pLayer as IFeatureLayer; ESRI.ArcGIS.Geodatabase.IFeatureClass pFClass = pFLayer.FeatureClass; IFields fields = pFClass.Fields; cboFieldName.Items.Clear(); cboGroupField.Items.Clear(); for (int i = 0; i < fields.FieldCount; i++) { if (fields.get_Field(i).Type == esriFieldType.esriFieldTypeString) { cboGroupField.Items.Add(fields.get_Field(i).Name); } else { cboFieldName.Items.Add(fields.get_Field(i).Name); } } } catch { MessageBox.Show("Error 222"); return; } }
private void cboSourceLayer_SelectedIndexChanged(object sender, EventArgs e) { try { string strLayerName = cboSourceLayer.Text; int intLIndex = pSnippet.GetIndexNumberFromLayerName(pActiveView, strLayerName); ILayer pLayer = mForm.axMapControl1.get_Layer(intLIndex); IFeatureLayer pFLayer = pLayer as IFeatureLayer; ESRI.ArcGIS.Geodatabase.IFeatureClass pFClass = pFLayer.FeatureClass; IFields fields = pFClass.Fields; cboFieldName.Items.Clear(); cboX.Items.Clear(); cboY.Items.Clear(); for (int i = 0; i < fields.FieldCount; i++) { cboFieldName.Items.Add(fields.get_Field(i).Name); cboX.Items.Add(fields.get_Field(i).Name); cboY.Items.Add(fields.get_Field(i).Name); } } catch (Exception ex) { MessageBox.Show(this.Handle.ToString() + " Error:" + ex.Message); return; } }
private void cboSourceLayer_SelectedIndexChanged(object sender, EventArgs e) { IActiveView pActiveView = ArcMap.Document.ActiveView; clsSnippet pSnippet = new clsSnippet(); string strLayerName = cboSourceLayer.Text; int intLIndex = pSnippet.GetIndexNumberFromLayerName(pActiveView, strLayerName); ILayer pLayer = pActiveView.FocusMap.get_Layer(intLIndex); IFeatureLayer pFLayer = pLayer as IFeatureLayer; ESRI.ArcGIS.Geodatabase.IFeatureClass pFClass = pFLayer.FeatureClass; IFields fields = pFClass.Fields; cboValueField.Items.Clear(); cboUField.Items.Clear(); for (int i = 0; i < fields.FieldCount; i++) { cboValueField.Items.Add(fields.get_Field(i).Name); cboUField.Items.Add(fields.get_Field(i).Name); } }
private void cboTargetLayer_SelectedIndexChanged(object sender, EventArgs e) { try { string strLayerName = cboTargetLayer.Text; int intLIndex = m_pSnippet.GetIndexNumberFromLayerName(m_pActiveView, strLayerName); ILayer pLayer = m_pForm.axMapControl1.get_Layer(intLIndex); IFeatureLayer pFLayer = pLayer as IFeatureLayer; ESRI.ArcGIS.Geodatabase.IFeatureClass pFClass = pFLayer.FeatureClass; IFields fields = pFClass.Fields; cboVariable1.Items.Clear(); cboVariable2.Items.Clear(); for (int i = 0; i < fields.FieldCount; i++) { if (m_pSnippet.FindNumberFieldType(fields.get_Field(i))) { cboVariable1.Items.Add(fields.get_Field(i).Name); cboVariable2.Items.Add(fields.get_Field(i).Name); } } } catch (Exception ex) { MessageBox.Show("Error 232: " + ex.Message); return; } }
//裁剪图层要素 打开 按钮 private void button2_Click(object sender, EventArgs e) { // Use the OpenFileDialog Class to choose which shapefile to load. System.Windows.Forms.OpenFileDialog openFileDialog = new System.Windows.Forms.OpenFileDialog(); //openFileDialog.InitialDirectory = "c:\\"; openFileDialog.Filter = "Shapefiles (*.shp)|*.shp"; openFileDialog.FilterIndex = 2; openFileDialog.RestoreDirectory = true; openFileDialog.Multiselect = false; if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { // The user chose a particular shapefile. // The returned string will be the full path, filename and file-extension for the chosen shapefile. Example: "C:\test\cities.shp" string shapefileLocation = openFileDialog.FileName; txtClipsFile.Text = shapefileLocation; if (shapefileLocation != "") { // Ensure the user chooses a shapefile // Create a new ShapefileWorkspaceFactory CoClass to create a new workspace ESRI.ArcGIS.Geodatabase.IWorkspaceFactory workspaceFactory = new ESRI.ArcGIS.DataSourcesFile.ShapefileWorkspaceFactoryClass(); // System.IO.Path.GetDirectoryName(shapefileLocation) returns the directory part of the string. Example: "C:\test\" ESRI.ArcGIS.Geodatabase.IFeatureWorkspace featureWorkspace = (ESRI.ArcGIS.Geodatabase.IFeatureWorkspace)workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(shapefileLocation), 0); // Explicit Cast // System.IO.Path.GetFileNameWithoutExtension(shapefileLocation) returns the base filename (without extension). Example: "cities" ESRI.ArcGIS.Geodatabase.IFeatureClass featureClass = featureWorkspace.OpenFeatureClass(System.IO.Path.GetFileNameWithoutExtension(shapefileLocation)); ESRI.ArcGIS.Carto.IFeatureLayer featureLayer = new ESRI.ArcGIS.Carto.FeatureLayerClass(); featureLayer.FeatureClass = featureClass; featureLayer.Name = featureClass.AliasName; featureLayer.Visible = true; //activeView.FocusMap.AddLayer(featureLayer); // Zoom the display to the full extent of all layers in the map //activeView.Extent = activeView.FullExtent; // activeView.PartialRefresh(ESRI.ArcGIS.Carto.esriViewDrawPhase.esriViewGeography, null, null); } else { // The user did not choose a shapefile. // Do whatever remedial actions as necessary System.Windows.Forms.MessageBox.Show("No shapefile chosen", "No Choice #1", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Exclamation); } } else { // The user did not choose a shapefile. They clicked Cancel or closed the dialog by the "X" button. // Do whatever remedial actions as necessary. System.Windows.Forms.MessageBox.Show("No shapefile chosen", "No Choice #2", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Exclamation); } }
private void cboTargetLayer_SelectedIndexChanged(object sender, EventArgs e) { try { clsSnippet pSnippet = new clsSnippet(); string strLayerName = cboTargetLayer.Text; int intLIndex = pSnippet.GetIndexNumberFromLayerName(pActiveView, strLayerName); ILayer pLayer = mForm.axMapControl1.get_Layer(intLIndex); IFeatureLayer pFLayer = pLayer as IFeatureLayer; ESRI.ArcGIS.Geodatabase.IFeatureClass pFClass = pFLayer.FeatureClass; IFields fields = pFClass.Fields; cboFieldName.Items.Clear(); for (int i = 0; i < fields.FieldCount; i++) { cboFieldName.Items.Add(fields.get_Field(i).Name); } } catch (Exception ex) { frmErrorLog pfrmErrorLog = new frmErrorLog(); pfrmErrorLog.ex = ex; pfrmErrorLog.ShowDialog(); return; } }
private IFeatureClass getShapeFile(string inDir, string infile) { System.IO.DirectoryInfo directoryInfo_check = new System.IO.DirectoryInfo(inDir); if (directoryInfo_check.Exists) { //We have a valid directory, proceed System.IO.FileInfo fileInfo_check = new System.IO.FileInfo(inDir + "\\" + infile + ".shp"); if (fileInfo_check.Exists) { //We have a valid shapefile, proceed ESRI.ArcGIS.Geodatabase.IWorkspaceFactory workspaceFactory = new ESRI.ArcGIS.DataSourcesFile.ShapefileWorkspaceFactoryClass(); ESRI.ArcGIS.Geodatabase.IWorkspace workspace = workspaceFactory.OpenFromFile(inDir, 0); ESRI.ArcGIS.Geodatabase.IFeatureWorkspace featureWorkspace = (ESRI.ArcGIS.Geodatabase.IFeatureWorkspace)workspace; // Explict Cast ESRI.ArcGIS.Geodatabase.IFeatureClass featureClass = featureWorkspace.OpenFeatureClass(infile); return(featureClass); } else { //Not valid shapefile return(null); } } else { // Not valid directory return(null); } }
/// <summary> /// Generates a splice closure at the coincident endpoint. Does not start an edit operation. /// </summary> /// <param name="cableA">Cable A</param> /// <param name="cableB">Cable B</param> /// <returns>SpliceClosureWRapper based on new feature</returns> private SpliceClosureWrapper GenerateSpliceClosure(FiberCableWrapper cableA, SpliceableCableWrapper cableB) { SpliceClosureWrapper wrapper = null; #region Validation if (null == cableA) { throw new ArgumentNullException("cableA"); } if (null == cableB) { throw new ArgumentNullException("cableB"); } if (ESRI.ArcGIS.Editor.esriEditState.esriStateNotEditing == _editor.EditState) { throw new InvalidOperationException("You must be editing to perform this operation"); } #endregion // Populate an IPID; we will need it Guid g = Guid.NewGuid(); string spliceIpid = g.ToString("B").ToUpper(); try { ESRI.ArcGIS.Geometry.IPolyline line = cableB.Feature.Shape as ESRI.ArcGIS.Geometry.IPolyline; if (null != line) { ESRI.ArcGIS.Geometry.IPoint splicePoint = null; if (cableB.IsThisFromEnd) { splicePoint = line.FromPoint; } else { splicePoint = line.ToPoint; } ESRI.ArcGIS.Geodatabase.IFeatureClass spliceClosureFtClass = _wkspHelper.FindFeatureClass(ConfigUtil.SpliceClosureFtClassName); // ESRI.ArcGIS.Geodatabase.IFeatureClass spliceClosureFtClass = GdbUtils.GetFeatureClass(cableA.Feature.Class, ConfigUtil.SpliceClosureFtClassName); ESRI.ArcGIS.Geodatabase.IFeature spliceFt = spliceClosureFtClass.CreateFeature(); spliceFt.Shape = splicePoint; spliceFt.set_Value(spliceClosureFtClass.Fields.FindField(ConfigUtil.IpidFieldName), spliceIpid); spliceFt.Store(); wrapper = new SpliceClosureWrapper(spliceFt); } } catch { wrapper = null; } return(wrapper); }
void IFeatureRenderer.PrepareFilter(ESRI.ArcGIS.Geodatabase.IFeatureClass fc, ESRI.ArcGIS.Geodatabase.IQueryFilter queryFilter) { //Must Add OID queryFilter.AddField(fc.OIDFieldName); m_pFeatureClass = fc; m_pQueryFilter = queryFilter; }
/// <summary> /// Finds the connected device/port /// </summary> /// <param name="siblingFtClass">Any feature class from the workspace</param> /// <param name="cableId">Cable ID to check connx for</param> /// <param name="fiberNumber">Fiber Number to check connx for</param> /// <param name="isFromEnd">Whether to check the cable's from or to end</param> /// <param name="portRow">(out) result port</param> /// <param name="deviceFt">(out) result device</param> /// <returns>True if a connx was found</returns> private bool GetConnectedPort(ESRI.ArcGIS.Geodatabase.IFeatureClass siblingFtClass, string cableId, int fiberNumber, bool isFromEnd, out ESRI.ArcGIS.Geodatabase.IRow portRow, out ESRI.ArcGIS.Geodatabase.IFeature deviceFt) { portRow = null; deviceFt = null; bool result = false; string[] portTableNames = ConfigUtil.PortTableNames; using (ESRI.ArcGIS.ADF.ComReleaser releaser = new ESRI.ArcGIS.ADF.ComReleaser()) { ESRI.ArcGIS.Geodatabase.IQueryFilter filter = new ESRI.ArcGIS.Geodatabase.QueryFilterClass(); filter.WhereClause = string.Format("{0}='{1}' AND {2}={3} AND {4}='{5}'", ConfigUtil.ConnectedCableFieldName, cableId, ConfigUtil.ConnectedFiberFieldName, fiberNumber, ConfigUtil.ConnectedEndFieldName, isFromEnd ? "T" : "F"); releaser.ManageLifetime(filter); for (int i = 0; i < portTableNames.Length; i++) { string portTableName = portTableNames[i]; ESRI.ArcGIS.Geodatabase.ITable portTable = _wkspHelper.FindTable(portTableName); ESRI.ArcGIS.Geodatabase.ICursor cursor = portTable.Search(filter, false); releaser.ManageLifetime(cursor); portRow = cursor.NextRow(); if (null != portRow) { ESRI.ArcGIS.Geodatabase.IRelationshipClass deviceHasPorts = ConfigUtil.GetDeviceRelationship(portTable); if (null == deviceHasPorts) { throw new Exception("Device to port relationship is missing or cannot be opened."); } ESRI.ArcGIS.Geodatabase.IFeatureClass deviceClass = deviceHasPorts.OriginClass as ESRI.ArcGIS.Geodatabase.IFeatureClass; if (null == deviceClass) { throw new Exception("Device feature class is missing or cannot be opened."); } filter.WhereClause = string.Format("{0}='{1}'", deviceHasPorts.OriginPrimaryKey, portRow.get_Value(portTable.FindField(deviceHasPorts.OriginForeignKey))); ESRI.ArcGIS.Geodatabase.IFeatureCursor deviceCursor = deviceClass.Search(filter, false); deviceFt = deviceCursor.NextFeature(); result = true; break; } } } return(result); }
// Öppnar shapefil. public void AddShapefileUsingOpenFileDialog(ESRI.ArcGIS.Carto.IActiveView activeView) { //parameter check if (activeView == null) { return; } // Use the OpenFileDialog Class to choose which shapefile to load. System.Windows.Forms.OpenFileDialog openFileDialog = new System.Windows.Forms.OpenFileDialog(); openFileDialog.InitialDirectory = @"H:\VT2019\GIS_App\Projekt\Program\Data\InData\Vektor"; openFileDialog.Filter = "Shapefiles (*.shp)|*.shp"; openFileDialog.FilterIndex = 2; openFileDialog.RestoreDirectory = true; openFileDialog.Multiselect = false; if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { // The user chose a particular shapefile. // The returned string will be the full path, filename and file-extension for the chosen shapefile. Example: "C:\test\cities.shp" string shapefileLocation = openFileDialog.FileName; if (shapefileLocation != "") { // Ensure the user chooses a shapefile // Create a new ShapefileWorkspaceFactory CoClass to create a new workspace ESRI.ArcGIS.Geodatabase.IWorkspaceFactory workspaceFactory = new ESRI.ArcGIS.DataSourcesFile.ShapefileWorkspaceFactoryClass(); // System.IO.Path.GetDirectoryName(shapefileLocation) returns the directory part of the string. Example: "C:\test\" ESRI.ArcGIS.Geodatabase.IFeatureWorkspace featureWorkspace = (ESRI.ArcGIS.Geodatabase.IFeatureWorkspace)workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(shapefileLocation), 0); // Explicit Cast // System.IO.Path.GetFileNameWithoutExtension(shapefileLocation) returns the base filename (without extension). Example: "cities" ESRI.ArcGIS.Geodatabase.IFeatureClass featureClass = featureWorkspace.OpenFeatureClass(System.IO.Path.GetFileNameWithoutExtension(shapefileLocation)); ESRI.ArcGIS.Carto.IFeatureLayer featureLayer = new ESRI.ArcGIS.Carto.FeatureLayerClass(); featureLayer.FeatureClass = featureClass; featureLayer.Name = featureClass.AliasName; featureLayer.Visible = true; activeView.FocusMap.AddLayer(featureLayer); // Zoom the display to the full extent of all layers in the map activeView.Extent = activeView.FullExtent; activeView.PartialRefresh(ESRI.ArcGIS.Carto.esriViewDrawPhase.esriViewGeography, null, null); } else { } } else { } }
public static IFeatureClass ReadFeatureClass(string path) { ESRI.ArcGIS.Geodatabase.IWorkspaceFactory workspaceFactory = new ESRI.ArcGIS.DataSourcesFile.ShapefileWorkspaceFactoryClass(); // workspaceFactory.OpenFromFile,传入的参数是Shapefile文件所在的文件夹路径 string pathwithoutname = path.Substring(0, path.LastIndexOf("\\")); string namewithextention = path.Substring(path.LastIndexOf("\\") + 1); string name = namewithextention.Substring(0, namewithextention.LastIndexOf(".")); ESRI.ArcGIS.Geodatabase.IFeatureWorkspace featureWorkspace = (ESRI.ArcGIS.Geodatabase.IFeatureWorkspace)workspaceFactory.OpenFromFile(pathwithoutname, 0); // OpenFeatureClass传入的参数是shape文件的文件名,不带后缀 ESRI.ArcGIS.Geodatabase.IFeatureClass featureClass = featureWorkspace.OpenFeatureClass(name); return(featureClass); }
// ArcGIS Snippet Title: // Get FeatureClass of Selected Feature Layer in Contents View // // Long Description: // Returns a reference to the currently selected featureclass from the given contents view. // // Add the following references to the project: // ESRI.ArcGIS.ArcMapUI // ESRI.ArcGIS.Carto // ESRI.ArcGIS.Geodatabase // // Intended ArcGIS Products for this snippet: // ArcGIS Desktop (ArcEditor, ArcInfo, ArcView) // // Applicable ArcGIS Product Versions: // 9.2 // 9.3 // 9.3.1 // 10.0 // // Required ArcGIS Extensions: // (NONE) // // Notes: // This snippet is intended to be inserted at the base level of a Class. // It is not intended to be nested within an existing GetIntersection. // ///<summary>Returns a reference to the currently selected featureclass from the given contents view.</summary> /// ///<param name="currentContentsView">An IContentsView interface.</param> /// ///<returns>An IFeatureClass interface or Nothing if not found.</returns> /// ///<remarks></remarks> public ESRI.ArcGIS.Geodatabase.IFeatureClass GetFeatureClassOfSelectedFeatureLayerInContentsView(ESRI.ArcGIS.ArcMapUI.IContentsView currentContentsView) { if (currentContentsView == null) { return(null); } if (currentContentsView.SelectedItem is ESRI.ArcGIS.Carto.IFeatureLayer) { ESRI.ArcGIS.Carto.IFeatureLayer featureLayer = (ESRI.ArcGIS.Carto.IFeatureLayer)currentContentsView.SelectedItem; // Explicit Cast ESRI.ArcGIS.Geodatabase.IFeatureClass featureClass = featureLayer.FeatureClass; return(featureClass); } return(null); }
void IFeatureRenderer.PrepareFilter(ESRI.ArcGIS.Geodatabase.IFeatureClass fc, ESRI.ArcGIS.Geodatabase.IQueryFilter queryFilter) { //Must Add OID if (queryFilter == null) { queryFilter = new QueryFilterClass(); } queryFilter.AddField(fc.OIDFieldName); intEstIdx = fc.FindField(strValueFldName); queryFilter.AddField(strValueFldName); m_pFeatureClass = fc; m_pQueryFilter = queryFilter; }
/// <summary> /// Get the FeatureClass from a Shapefile on disk (hard drive). /// </summary> /// <param name="string_ShapefileDirectory">A System.String that is the directory where the shapefile is located. Example: "C:\data\USA"</param> /// <param name="string_ShapefileName">A System.String that is the shapefile name. Note: the shapefile extension's (.shp, .shx, .dbf, etc.) is not provided! Example: "States"</param> /// <returns>An IFeatureClass interface. Nothing (VB.NET) or null (C#) is returned if unsuccessful.</returns> /// <remarks></remarks> public ESRI.ArcGIS.Geodatabase.IFeatureClass GetFeatureClassFromShapefileOnDisk(System.String string_ShapefileDirectory, System.String string_ShapefileName) { System.IO.DirectoryInfo directoryInfo_check = null; try { directoryInfo_check = new System.IO.DirectoryInfo(string_ShapefileDirectory); if (directoryInfo_check.Exists) { //We have a valid directory, proceed System.IO.FileInfo fileInfo_check = new System.IO.FileInfo(string_ShapefileDirectory + "\\" + string_ShapefileName + ".shp"); if (fileInfo_check.Exists) { //We have a valid shapefile, proceed ESRI.ArcGIS.Geodatabase.IWorkspaceFactory workspaceFactory = new ESRI.ArcGIS.DataSourcesFile.ShapefileWorkspaceFactoryClass(); ESRI.ArcGIS.Geodatabase.IWorkspace workspace = workspaceFactory.OpenFromFile(string_ShapefileDirectory, 0); ESRI.ArcGIS.Geodatabase.IFeatureWorkspace featureWorkspace = (ESRI.ArcGIS.Geodatabase.IFeatureWorkspace)workspace; // Explict Cast ESRI.ArcGIS.Geodatabase.IFeatureClass featureClass = featureWorkspace.OpenFeatureClass(string_ShapefileName); return(featureClass); } else { //Not valid shapefile return(null); } } else { // Not valid directory return(null); } } catch (Exception ex) { throw ex; } finally { directoryInfo_check = null; } }
/// <summary> /// Returns devices at the endpoints of the given cable /// </summary> /// <param name="deviceWrapper">Cable to check</param> /// <returns>List of ConnectableDeviceWrapper</returns> public List <ConnectableDeviceWrapper> GetCoincidentDevices(FiberCableWrapper fiberCableWrapper) { List <ConnectableDeviceWrapper> result = new List <ConnectableDeviceWrapper>(); if (null == fiberCableWrapper) { throw new ArgumentNullException("fiberCableWrapper"); } ESRI.ArcGIS.Geometry.IPolyline cableGeometry = (ESRI.ArcGIS.Geometry.IPolyline)fiberCableWrapper.Feature.Shape; string[] deviceFtClassNames = ConfigUtil.DeviceFeatureClassNames; double buffer = _hookHelper.ConvertPixelsToMapUnits(1); for (int i = 0; i < deviceFtClassNames.Length; i++) { string ftClassName = deviceFtClassNames[i]; ESRI.ArcGIS.Carto.IFeatureLayer ftLayer = _hookHelper.FindFeatureLayer(ftClassName); if (ftLayer == null) { // Layer might not be in the map so just skip if not found. continue; } ESRI.ArcGIS.Geodatabase.IFeatureClass ftClass = ftLayer.FeatureClass; int displayIdx = ftClass.FindField(ftLayer.DisplayField); List <ESRI.ArcGIS.Geodatabase.IFeature> fromFts = GdbUtils.GetFeaturesWithCoincidentVertices(cableGeometry.FromPoint, ftClass, false, buffer); for (int fromIdx = 0; fromIdx < fromFts.Count; fromIdx++) { result.Add(new ConnectableDeviceWrapper(fromFts[fromIdx], true, displayIdx)); } List <ESRI.ArcGIS.Geodatabase.IFeature> toFts = GdbUtils.GetFeaturesWithCoincidentVertices(cableGeometry.ToPoint, ftClass, false, buffer); for (int toIdx = 0; toIdx < toFts.Count; toIdx++) { result.Add(new ConnectableDeviceWrapper(toFts[toIdx], false, displayIdx)); } } return(result); }
public static void SelectMapFeaturesByGeometryQuery(IActiveView activeView, IFeatureLayer featureLayer, IGeometry geometry) { if (activeView == null || featureLayer == null || geometry == null) { return; } ESRI.ArcGIS.Geodatabase.IFeatureClass pFeatureClass = featureLayer.FeatureClass; //空间过滤器 ESRI.ArcGIS.Geodatabase.ISpatialFilter pSpatialFilter = new ESRI.ArcGIS.Geodatabase.SpatialFilterClass(); pSpatialFilter.Geometry = geometry; //根据图层类型选择缓冲方式 switch (pFeatureClass.ShapeType) { case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryMultipoint: pSpatialFilter.SpatialRel = ESRI.ArcGIS.Geodatabase.esriSpatialRelEnum.esriSpatialRelContains; break; case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline: pSpatialFilter.SpatialRel = ESRI.ArcGIS.Geodatabase.esriSpatialRelEnum.esriSpatialRelCrosses; break; case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon: pSpatialFilter.SpatialRel = ESRI.ArcGIS.Geodatabase.esriSpatialRelEnum.esriSpatialRelIntersects; break; } //定义空间过滤器的空间字段 pSpatialFilter.GeometryField = pFeatureClass.ShapeFieldName; ESRI.ArcGIS.Geodatabase.IQueryFilter pQueryFilter; //利用要素过滤器查询要素 pQueryFilter = pSpatialFilter as ESRI.ArcGIS.Geodatabase.IQueryFilter; IFeatureSelection featureSelection = featureLayer as IFeatureSelection; // Dynamic Cast // Invalidate only the selection cache. Flag the original selection activeView.PartialRefresh(ESRI.ArcGIS.Carto.esriViewDrawPhase.esriViewGeoSelection, null, null); // Perform the selection featureSelection.SelectFeatures(pQueryFilter, ESRI.ArcGIS.Carto.esriSelectionResultEnum.esriSelectionResultNew, false); // Flag the new selection activeView.PartialRefresh(ESRI.ArcGIS.Carto.esriViewDrawPhase.esriViewGeoSelection, null, null); }
private static double DefaultIndexGridPoint(ref ESRI.ArcGIS.Geodatabase.IFeatureClass InFC) { ESRI.ArcGIS.Geodatabase.IGeoDataset pGeoDataSet; pGeoDataSet = InFC as IGeoDataset; ESRI.ArcGIS.Geometry.IEnvelope pEnvelope; pEnvelope = pGeoDataSet.Extent; int lngNumFeat; double dblArea; lngNumFeat = InFC.FeatureCount(null); if (lngNumFeat == 0 | pEnvelope.IsEmpty) { return(1000); } else { dblArea = pEnvelope.Height * pEnvelope.Width; return(System.Math.Sqrt(dblArea / lngNumFeat)); } }
private void cboTargetLayer_SelectedIndexChanged(object sender, EventArgs e) { try { string strLayerName = cboTargetLayer.Text; int intLIndex = m_pSnippet.GetIndexNumberFromLayerName(m_pActiveView, strLayerName); if (intLIndex == -1) { MessageBox.Show("Please select proper layer"); return; } ILayer pLayer = m_pForm.axMapControl1.get_Layer(intLIndex); IFeatureLayer pFLayer = pLayer as IFeatureLayer; ESRI.ArcGIS.Geodatabase.IFeatureClass pFClass = pFLayer.FeatureClass; IFields fields = pFClass.Fields; cboFieldName.Items.Clear(); for (int i = 0; i < fields.FieldCount; i++) { if (m_pSnippet.FindNumberFieldType(fields.get_Field(i))) { cboFieldName.Items.Add(fields.get_Field(i).Name); } } int intNfeatureCount = pFClass.FeatureCount(null); double dblBinCnt = Math.Ceiling(Math.Pow(intNfeatureCount, 1.0f / 3.0f) * 2.0); nudBinsCnt.Value = Convert.ToDecimal(dblBinCnt); } catch (Exception ex) { frmErrorLog pfrmErrorLog = new frmErrorLog(); pfrmErrorLog.ex = ex; pfrmErrorLog.ShowDialog(); return; } }
public ESRI.ArcGIS.Geodatabase.IFeatureClass GetFeatureClassFromShapefileOnDisk(System.String string_ShapefileName, out ESRI.ArcGIS.Geodatabase.IWorkspace workspace) { //We have a valid directory, proceed System.IO.FileInfo fileInfo_check = new System.IO.FileInfo(string_ShapefileName); if (fileInfo_check.Exists) { //We have a valid shapefile, proceed ESRI.ArcGIS.Geodatabase.IWorkspaceFactory workspaceFactory = new ESRI.ArcGIS.DataSourcesFile.ShapefileWorkspaceFactory(); workspace = workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(string_ShapefileName), 0); ESRI.ArcGIS.Geodatabase.IFeatureWorkspace featureWorkspace = (ESRI.ArcGIS.Geodatabase.IFeatureWorkspace)workspace; // Explict Cast ESRI.ArcGIS.Geodatabase.IFeatureClass featureClass = featureWorkspace.OpenFeatureClass(System.IO.Path.GetFileName(string_ShapefileName)); return(featureClass); } else { workspace = null; //Not valid shapefile return(null); } }
private void cboTargetLayer_SelectedIndexChanged(object sender, EventArgs e) { clsSnippet pSnippet = new clsSnippet(); string strLayerName = cboTargetLayer.Text; int intLIndex = pSnippet.GetIndexNumberFromLayerName(pActiveView, strLayerName); ILayer pLayer = mForm.axMapControl1.get_Layer(intLIndex); IFeatureLayer pFLayer = pLayer as IFeatureLayer; ESRI.ArcGIS.Geodatabase.IFeatureClass pFClass = pFLayer.FeatureClass; IFields fields = pFClass.Fields; cboXField.Items.Clear(); cboYField.Items.Clear(); for (int i = 0; i < fields.FieldCount; i++) { cboXField.Items.Add(fields.get_Field(i).Name); cboYField.Items.Add(fields.get_Field(i).Name); } }
private void cboTargetLayer_SelectedIndexChanged(object sender, EventArgs e) { try { string strLayerName = cboTargetLayer.Text; int intLIndex = m_pSnippet.GetIndexNumberFromLayerName(m_pActiveView, strLayerName); ILayer pLayer = m_pForm.axMapControl1.get_Layer(intLIndex); IFeatureLayer pFLayer = pLayer as IFeatureLayer; ESRI.ArcGIS.Geodatabase.IFeatureClass pFClass = pFLayer.FeatureClass; IFields fields = pFClass.Fields; cboFldnm1.Items.Clear(); cboFldnm2.Items.Clear(); for (int i = 0; i < fields.FieldCount; i++) { if (m_pSnippet.FindNumberFieldType(fields.get_Field(i))) { cboFldnm1.Items.Add(fields.get_Field(i).Name); cboFldnm2.Items.Add(fields.get_Field(i).Name); } } string strPAdjust = cboAdjustment.Text; string strMethod = cboSAM.Text; UpdateListview(lvFields, pFClass, strMethod); } catch (Exception ex) { frmErrorLog pfrmErrorLog = new frmErrorLog(); pfrmErrorLog.ex = ex; pfrmErrorLog.ShowDialog(); return; } }
private void populateDropDowns(ESRI.ArcGIS.Server.IServerContext serverContext, string mapDocPath) { logger.LogMessage(ServerLogger.msgType.warning, "SOE manager page", 8000, "SOE Manager page: populateDropDowns"); ESRI.ArcGIS.Carto.IMapServer3 mapServer = (ESRI.ArcGIS.Carto.IMapServer3) serverContext.ServerObject; string mapName = mapServer.DefaultMapName; // Using IMapServerDataAccess to get the data allows you to support MSD-based services. ESRI.ArcGIS.Carto.IMapServerDataAccess dataAccess = (ESRI.ArcGIS.Carto.IMapServerDataAccess)mapServer; ESRI.ArcGIS.Carto.IMapLayerInfo layerInfo; ESRI.ArcGIS.Carto.IMapLayerInfos layerInfos = mapServer.GetServerInfo (mapName).MapLayerInfos; Dictionary <string, List <string> > layersAndFieldsDictionary = new Dictionary <string, List <string> >(); // bool addFields = false; // Loop through all layers. int c = layerInfos.Count; for (int i = 0; i < c; i++) { layerInfo = layerInfos.get_Element(i); logger.LogMessage(ServerLogger.msgType.warning, "SOE manager page", 8000, "Layer " + layerInfo.Name + " has type " + layerInfo.Type); if (layerInfo.Type == "Raster") { if (dataAccess.GetDataSource(mapName, i) as IRaster != null) { m_FlowAccDropDown.Items.Add(layerInfo.Name); m_FlowDirDropDown.Items.Add(layerInfo.Name); m_ExtractionLayersDropDown.Items.Add(layerInfo.Name); } } if (layerInfo.IsFeatureLayer == true) { ESRI.ArcGIS.Geodatabase.IFeatureClass fc = (ESRI.ArcGIS.Geodatabase.IFeatureClass)dataAccess.GetDataSource (mapName, i); List <string> fieldsList = new List <string>(); // Check whether the current layer is a simple polygon layer. if (fc.ShapeType == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon && fc.FeatureType == ESRI.ArcGIS.Geodatabase.esriFeatureType.esriFTSimple) { // Add the layer to the layers drop-down. // Check whether the fields drop-down should be initialized with fields from the current loop layer. // Add each field to the fields list. // do stuff with non-raster layers } } } // Serialize the dictionary containing the layer and field names to JSON. System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); // m_jsonServiceLayersAndFields = serializer.Serialize // (layersAndFieldsDictionary); // If a flow acc layer is defined for the extension, select it in the relevant drop-down. if (m_flowacc != null) { m_FlowAccDropDown.SelectedValue = m_flowacc; } // If a flow dir layer is defined for the extension, select it in the relevant drop-down. if (m_flowdir != null) { m_FlowDirDropDown.SelectedValue = m_flowdir; } }
/// <summary> /// Break all connections for a given cable /// </summary> /// <param name="cable">Cable to break connections</param> /// <param name="isExistingOperation">Should we start/stop the edit operation, or are we already in one?</param> /// <returns>Success</returns> public bool BreakAllConnections(FiberCableWrapper cable, bool isExistingOperation) { bool success = false; bool isOperationOpen = false; #region Validation if (null == cable) { throw new ArgumentNullException("cable"); } if (ESRI.ArcGIS.Editor.esriEditState.esriStateNotEditing == _editor.EditState) { throw new InvalidOperationException("You must be editing to perform this operation"); } #endregion if (!isExistingOperation) { _editor.StartOperation(); isOperationOpen = true; } try { using (ESRI.ArcGIS.ADF.ComReleaser releaser = new ESRI.ArcGIS.ADF.ComReleaser()) { ESRI.ArcGIS.Geodatabase.IFeatureClass cableFtClass = cable.Feature.Class as ESRI.ArcGIS.Geodatabase.IFeatureClass; ESRI.ArcGIS.Geodatabase.IQueryFilter filter = new ESRI.ArcGIS.Geodatabase.QueryFilterClass(); releaser.ManageLifetime(filter); filter.WhereClause = string.Format("{0}='{1}'", ConfigUtil.ConnectedCableFieldName, cable.IPID); filter.SubFields = string.Format("{0},{1},{2}", ConfigUtil.ConnectedCableFieldName, ConfigUtil.ConnectedFiberFieldName, ConfigUtil.ConnectedEndFieldName); string[] deviceClassNames = ConfigUtil.DeviceFeatureClassNames; for (int i = 0; i < deviceClassNames.Length; i++) { string deviceClassName = deviceClassNames[i]; ESRI.ArcGIS.Geodatabase.IFeatureClass deviceFtClass = _wkspHelper.FindFeatureClass(deviceClassName); // ESRI.ArcGIS.Geodatabase.IFeatureClass deviceFtClass = GdbUtils.GetFeatureClass(cableFtClass, deviceClassName); ESRI.ArcGIS.Geodatabase.ITable portTable = ConfigUtil.GetPortTable(deviceFtClass); ESRI.ArcGIS.Geodatabase.IRowBuffer buffer = portTable.CreateRowBuffer(); // We want to set them to null, so we can just send the empty buffer portTable.UpdateSearchedRows(filter, buffer); ESRI.ArcGIS.ADF.ComReleaser.ReleaseCOMObject(buffer); } if (isOperationOpen) { _editor.StopOperation("Break Connections"); isOperationOpen = false; } success = true; } } catch { if (isOperationOpen) { _editor.AbortOperation(); } success = false; } return(success); }
/// <summary> /// Deletes given connections between cable to device /// </summary> /// <param name="cable">Cable</param> /// <param name="device">Device</param> /// <param name="units">Units to connect</param> /// <param name="portType">Input or Output?</param> /// <param name="isExistingOperation">Flag to control whether we need to wrap this in an edit operation</param> /// <returns>Success</returns> public bool BreakConnections(FiberCableWrapper cable, DeviceWrapper device, Dictionary <int, int> units, PortType portType, bool isExistingOperation) { bool success = false; bool isOperationOpen = false; #region Validation if (null == cable) { throw new ArgumentNullException("cable"); } if (null == device) { throw new ArgumentNullException("device"); } if (null == units) { throw new ArgumentNullException("units"); } if (ESRI.ArcGIS.Editor.esriEditState.esriStateNotEditing == _editor.EditState) { throw new InvalidOperationException("You must be editing to perform this operation"); } #endregion if (0 < units.Count) { if (!isExistingOperation) { _editor.StartOperation(); isOperationOpen = true; } try { ESRI.ArcGIS.Geodatabase.IFeatureClass deviceFtClass = device.Feature.Class as ESRI.ArcGIS.Geodatabase.IFeatureClass; ESRI.ArcGIS.Geodatabase.IRelationshipClass deviceHasPorts = ConfigUtil.GetPortRelationship(deviceFtClass); if (null == deviceFtClass) { throw new Exception("Unable to find port relationship class."); } ESRI.ArcGIS.Geodatabase.ITable portTable = deviceHasPorts.DestinationClass as ESRI.ArcGIS.Geodatabase.ITable; if (null == portTable) { throw new Exception("Invalid destination on port relationship class."); } using (ESRI.ArcGIS.ADF.ComReleaser releaser = new ESRI.ArcGIS.ADF.ComReleaser()) { ESRI.ArcGIS.Geodatabase.IQueryFilter filter = new ESRI.ArcGIS.Geodatabase.QueryFilterClass(); releaser.ManageLifetime(filter); StringBuilder inList = new StringBuilder(1024); foreach (KeyValuePair <int, int> pair in units) { string appendFormat = "{0},"; if (PortType.Input == portType) { inList.AppendFormat(appendFormat, pair.Key); } else { inList.AppendFormat(appendFormat, pair.Value); } } inList.Remove(inList.Length - 1, 1); string format = "{0}='{1}' AND {2}='{3}' AND {4}='{5}' AND {6} IN ({7})"; filter.WhereClause = string.Format(format, deviceHasPorts.OriginForeignKey, device.Feature.get_Value(deviceFtClass.FindField(deviceHasPorts.OriginPrimaryKey)), ConfigUtil.ConnectedCableFieldName, cable.IPID, ConfigUtil.PortTypeFieldName, (PortType.Input == portType ? "1" : "2"), ConfigUtil.ConnectedFiberFieldName, inList.ToString()); filter.SubFields = string.Format("{0},{1},{2}", ConfigUtil.ConnectedEndFieldName, ConfigUtil.ConnectedFiberFieldName, ConfigUtil.ConnectedCableFieldName); ESRI.ArcGIS.Geodatabase.IRowBuffer buffer = portTable.CreateRowBuffer(); releaser.ManageLifetime(buffer); // We want to set them to null, so we can just send the empty buffer portTable.UpdateSearchedRows(filter, buffer); if (isOperationOpen) { _editor.StopOperation("Break Connections"); isOperationOpen = false; } success = true; } } catch { if (isOperationOpen) { _editor.AbortOperation(); } success = false; } } return(success); }
/// <summary> /// Creates given connections between cable and device /// </summary> /// <param name="cable">Cable</param> /// <param name="device">Device</param> /// <param name="units">Units to connect</param> /// <param name="isFromEnd">Is it the cable's from end?</param> /// <param name="portType">Input or Output?</param> /// <param name="isExistingOperation">Flag to control whether we need to wrap this in a new edit operation</param> /// <returns>Success</returns> public bool MakeConnections(FiberCableWrapper cable, DeviceWrapper device, Dictionary <int, int> units, bool isFromEnd, PortType portType, bool isExistingOperation) { bool success = false; bool isOperationOpen = false; #region Validation if (null == cable) { throw new ArgumentNullException("cable"); } if (null == device) { throw new ArgumentNullException("device"); } if (null == units) { throw new ArgumentNullException("units"); } if (ESRI.ArcGIS.Editor.esriEditState.esriStateNotEditing == _editor.EditState) { throw new InvalidOperationException("You must be editing to perform this operation"); } #endregion if (!isExistingOperation) { _editor.StartOperation(); isOperationOpen = true; } try { ESRI.ArcGIS.Geodatabase.IFeatureClass deviceFtClass = device.Feature.Class as ESRI.ArcGIS.Geodatabase.IFeatureClass; ESRI.ArcGIS.Geodatabase.IRelationshipClass deviceHasPorts = ConfigUtil.GetPortRelationship(deviceFtClass); if (null == deviceHasPorts) { throw new Exception("Unable to get port relationship class."); } ESRI.ArcGIS.Geodatabase.ITable portTable = deviceHasPorts.DestinationClass as ESRI.ArcGIS.Geodatabase.ITable; if (null == portTable) { throw new Exception("Invalid destination on port relationship class."); } int portIdIdx = portTable.FindField(ConfigUtil.PortIdFieldName); int fiberNumberIdx = portTable.FindField(ConfigUtil.ConnectedFiberFieldName); int cableIdIdx = portTable.FindField(ConfigUtil.ConnectedCableFieldName); int isFromEndIdx = portTable.FindField(ConfigUtil.ConnectedEndFieldName); string isFromEndValue = isFromEnd ? "T" : "F"; Dictionary <int, int> portsAsKeys = units; if (PortType.Input == portType) { portsAsKeys = new Dictionary <int, int>(); foreach (KeyValuePair <int, int> pair in units) { portsAsKeys[pair.Value] = pair.Key; } } using (ESRI.ArcGIS.ADF.ComReleaser releaser = new ESRI.ArcGIS.ADF.ComReleaser()) { ESRI.ArcGIS.Geodatabase.IQueryFilter filter = new ESRI.ArcGIS.Geodatabase.QueryFilterClass(); releaser.ManageLifetime(filter); string format = "{0}='{1}' AND {2}='{3}'"; filter.WhereClause = string.Format(format, deviceHasPorts.OriginForeignKey, device.Feature.get_Value(deviceFtClass.FindField(deviceHasPorts.OriginPrimaryKey)), ConfigUtil.PortTypeFieldName, (PortType.Input == portType ? "1" : "2")); // Non recylcing cursor since we are doing updates. ESRI.ArcGIS.Geodatabase.ICursor portCursor = portTable.Update(filter, false); releaser.ManageLifetime(portCursor); ESRI.ArcGIS.Geodatabase.IRow portRow = portCursor.NextRow(); while (null != portRow) { object portIdObj = portRow.get_Value(portIdIdx); if (DBNull.Value != portIdObj) { int portId = System.Convert.ToInt32(portIdObj); if (portsAsKeys.ContainsKey(portId)) { portRow.set_Value(cableIdIdx, cable.IPID); portRow.set_Value(isFromEndIdx, isFromEndValue); portRow.set_Value(fiberNumberIdx, portsAsKeys[portId]); portRow.Store(); } } ESRI.ArcGIS.ADF.ComReleaser.ReleaseCOMObject(portRow); portRow = portCursor.NextRow(); } if (isOperationOpen) { _editor.StopOperation("Create Connections"); isOperationOpen = false; } success = true; } } catch (Exception ex) { if (isOperationOpen) { _editor.AbortOperation(); } success = false; throw new Exception("Save operation failed."); } return(success); }
/// <summary> /// Returns a list of connections between the cable and the device, at the cable's given end, to the device's given port type /// </summary> /// <param name="cable">Cable to check</param> /// <param name="device">Device to check</param> /// <param name="isFromEnd">Digitized end of cable</param> /// <param name="portType">Input or output</param> /// <returns>List of Connection</returns> public List <Connection> GetConnections(FiberCableWrapper cable, DeviceWrapper device, bool isFromEnd, PortType portType) { if (null == cable) { throw new ArgumentNullException("cable"); } if (null == device) { throw new ArgumentNullException("device"); } List <Connection> result = new List <Connection>(); List <int> ports = new List <int>(); List <int> strands = new List <int>(); using (ESRI.ArcGIS.ADF.ComReleaser releaser = new ESRI.ArcGIS.ADF.ComReleaser()) { ESRI.ArcGIS.Geodatabase.IFeatureClass deviceFtClass = device.Feature.Class as ESRI.ArcGIS.Geodatabase.IFeatureClass; ESRI.ArcGIS.Geodatabase.IRelationshipClass deviceHasPorts = ConfigUtil.GetPortRelationship(deviceFtClass); if (null == deviceHasPorts) { throw new Exception("Unable to find port relationship class."); } ESRI.ArcGIS.Geodatabase.ITable portTable = deviceHasPorts.DestinationClass as ESRI.ArcGIS.Geodatabase.ITable; if (null == portTable) { throw new Exception("Invalid destination on port relationship class."); } ESRI.ArcGIS.Geodatabase.IQueryFilter filter = new ESRI.ArcGIS.Geodatabase.QueryFilterClass(); releaser.ManageLifetime(filter); filter.WhereClause = string.Format("{0}='{1}' AND {2}='{3}' AND {4}='{5}' AND {6}='{7}' AND {8} IS NOT NULL AND {9} IS NOT NULL", deviceHasPorts.OriginForeignKey, device.Feature.get_Value(deviceFtClass.FindField(deviceHasPorts.OriginPrimaryKey)), ConfigUtil.ConnectedCableFieldName, cable.IPID, ConfigUtil.PortTypeFieldName, (PortType.Input == portType ? "1" : "2"), ConfigUtil.ConnectedEndFieldName, (isFromEnd ? "T" : "F"), ConfigUtil.ConnectedFiberFieldName, ConfigUtil.PortIdFieldName); // ORDER BY does not work outside of SDE. // Removing for now, should not be important. string orderFormat = "ORDER BY {0}"; if (PortType.Input == portType) { // ((ESRI.ArcGIS.Geodatabase.IQueryFilterDefinition2)filter).PostfixClause = string.Format(orderFormat, ConfigUtil.ConnectedFiberFieldName); } else { // ((ESRI.ArcGIS.Geodatabase.IQueryFilterDefinition2)filter).PostfixClause = string.Format(orderFormat, ConfigUtil.PortIdFieldName); } ESRI.ArcGIS.Geodatabase.ICursor portCursor = portTable.Search(filter, true); ESRI.ArcGIS.Geodatabase.IRow portRow = portCursor.NextRow(); int portIdIdx = portTable.FindField(ConfigUtil.PortIdFieldName); int fiberNumberIdx = portTable.FindField(ConfigUtil.ConnectedFiberFieldName); while (null != portRow) { ports.Add((int)portRow.get_Value(portIdIdx)); strands.Add((int)portRow.get_Value(fiberNumberIdx)); ESRI.ArcGIS.ADF.ComReleaser.ReleaseCOMObject(portRow); portRow = portCursor.NextRow(); } ESRI.ArcGIS.ADF.ComReleaser.ReleaseCOMObject(portCursor); } List <Range> portRanges = SpliceAndConnectionUtils.MergeRanges(ports); List <Range> strandRanges = SpliceAndConnectionUtils.MergeRanges(strands); if (PortType.Input == portType) { result = SpliceAndConnectionUtils.MatchUp(strandRanges, portRanges); } else { result = SpliceAndConnectionUtils.MatchUp(portRanges, strandRanges); } return(result); }
public override bool setHomeRangeCenter(Animal inAnimal, ESRI.ArcGIS.Geodatabase.IFeatureClass inAnmialMemoryMap) { return(false); }
private void FillCache(ESRI.ArcGIS.Geodatabase.IFeatureClass FClass, ESRI.ArcGIS.Geometry.IPoint pPoint, double Distance) { m_featureCache.Initialize(pPoint, Distance); m_featureCache.AddFeatures(FClass); }