private void selectFeatures() { IQueryByLayer _qrBl = new QueryByLayerClass(); int method=cbxMethod.SelectedIndex; switch (method) { case 0: _method = esriLayerSelectionMethod.esriLayerSelectIntersect; break; case 1: _method = esriLayerSelectionMethod.esriLayerSelectContainedBy; break; case 2: _method = esriLayerSelectionMethod.esriLayerSelectContains; break; default: _method = esriLayerSelectionMethod.esriLayerSelectIntersect; break; } int selectLayer = cbxSelectLayer.SelectedIndex; _byLayer = _mapControl.get_Layer(selectLayer); int resultType=cbxResultType.SelectedIndex; switch (resultType) { case 0: _resultType = esriSelectionResultEnum.esriSelectionResultNew; break; case 1: _resultType = esriSelectionResultEnum.esriSelectionResultAdd; break; case 2: _resultType = esriSelectionResultEnum.esriSelectionResultSubtract; break; case 3: _resultType = esriSelectionResultEnum.esriSelectionResultAnd; break; case 4: _resultType = esriSelectionResultEnum.esriSelectionResultXOR; break; default: _resultType = esriSelectionResultEnum.esriSelectionResultNew; break; } if (chkUseSelected.CheckState == CheckState.Unchecked) { _useSelected = false; } else { _useSelected = true; } bool re = false; try { re = double.TryParse(txtBuffer.Text, out _buffer); } catch { } if (!re) { _buffer = 0; } int unit = cbxUnit.SelectedIndex; switch (unit) { case 0: _bufferUnit = esriUnits.esriCentimeters; break; case 1: _bufferUnit = esriUnits.esriDecimeters; break; case 2: _bufferUnit = esriUnits.esriMeters; break; case 3: _bufferUnit = esriUnits.esriKilometers; break; default: _bufferUnit = esriUnits.esriMeters; break; } _qrBl.ByLayer = (IFeatureLayer)_byLayer; _qrBl.LayerSelectionMethod = _method; _qrBl.ResultType = _resultType; _qrBl.UseSelectedFeatures = _useSelected; _qrBl.BufferDistance = _buffer; _qrBl.BufferUnits = _bufferUnit; foreach (object o in lstInputLayer.SelectedItems) { int index = lstInputLayer.Items.IndexOf(o); _fromLayer = _mapControl.get_Layer(index); _qrBl.FromLayer = (IFeatureLayer)_fromLayer; ISelectionSet selectionSet; IFeatureSelection featureSelection; try { selectionSet = _qrBl.Select(); featureSelection = (IFeatureSelection)_fromLayer; featureSelection.SelectionSet = selectionSet; //MessageBox.Show("line 255 count=" + selectionSet.Count); } catch(Exception ex) { //MessageBox.Show("line 257 SelectByLocation, ex=" + ex); continue; } } _mapControl.ActiveView.Refresh(); }
void ISpatialAlgrorithm.SetMethod(esriLayerSelectionMethod method) { this._queryByLayer.LayerSelectionMethod = method; }