private void cmbPipePoint_SelectedIndexChanged(object sender, EventArgs e) { RelateQueryUI.LayerboxItem layerboxItem = this.cmbPipePoint.SelectedItem as RelateQueryUI.LayerboxItem; IFeatureLayer pPipeLayer = layerboxItem.m_pPipeLayer; this.FillLayerFieldsToCmb(pPipeLayer, this.cmbPipePointFields); if (this.cmbPipePoint.Focused) { string text = this.cmbPipePoint.Text.Trim(); if (text.Length >= 2) { int length = text.LastIndexOf("点", StringComparison.Ordinal) > 0 ? text.LastIndexOf("点", StringComparison.Ordinal) : 2; text = text.Substring(0, length); int count = this.cmbPipeLine.Items.Count; for (int i = 0; i < count; i++) { string text2 = this.cmbPipeLine.Items[i].ToString(); int length2 = text2.LastIndexOf("线", StringComparison.Ordinal) > 0 ? text2.LastIndexOf("线", StringComparison.Ordinal) : 2; text2 = text2.Substring(0, length2); if (text2.Equals(text)) { this.cmbPipeLine.SelectedIndex = i; } } } } }
private void button2_Click(object sender, EventArgs e) { if (this.cmbPipePoint.Items.Count >= 1) { RelateQueryUI.LayerboxItem layerboxItem = this.cmbPipePoint.SelectedItem as RelateQueryUI.LayerboxItem; IFeatureLayer pPipeLayer = layerboxItem.m_pPipeLayer; if (pPipeLayer != null) { this.FillFieldValuesToListBox(pPipeLayer, this.cmbPipePointFields.Text.Trim(), this.lstBoxPipePointValues); } } }
public void AddName(ILayer pLayer) { if (pLayer is IFeatureLayer) { IFeatureLayer featureLayer = pLayer as IFeatureLayer; if (this.pPipeCfg.IsPipelineLayer(featureLayer.FeatureClass.AliasName, enumPipelineDataType.Line)) { RelateQueryUI.LayerboxItem layerboxItem = new RelateQueryUI.LayerboxItem(); layerboxItem.m_pPipeLayer = featureLayer; this.cmbPipeLine.Items.Add(layerboxItem); } if (this.pPipeCfg.IsPipelineLayer(featureLayer.FeatureClass.AliasName, enumPipelineDataType.Point)) { RelateQueryUI.LayerboxItem layerboxItem2 = new RelateQueryUI.LayerboxItem(); layerboxItem2.m_pPipeLayer = featureLayer; this.cmbPipePoint.Items.Add(layerboxItem2); } } }
private void btnPipeLineQuery_Click(object sender, EventArgs e) { if (this.cmbPipeLineFields.Text == "") { MessageBox.Show(@"请选择管线层查询字段!"); } else if (this.lstBoxPipeLineValues.Text == "") { MessageBox.Show(@"请指定管线层查询值!"); } else if (this.lstBoxPipeLineValues.Text == "") { MessageBox.Show(@"请指定管点层查询值!"); } else { Splash.Show(); Splash.Status = "状态:关联查询中,请稍候..."; this.Walk(); RelateQueryUI.LayerboxItem layerboxItem = this.cmbPipeLine.SelectedItem as RelateQueryUI.LayerboxItem; IFeatureLayer pPipeLayer = layerboxItem.m_pPipeLayer; IFeatureSelection featureSelection = (IFeatureSelection)pPipeLayer; featureSelection.Clear(); ISelectionSet selectionSet = featureSelection.SelectionSet; selectionSet.IDs.Reset(); int count = this.m_alPipeLine.Count; for (int i = 0; i < count; i++) { IFeature feature = this.m_alPipeLine[i] as IFeature; selectionSet.Add(feature.OID); } IQueryFilter queryFilter = new QueryFilter(); ICursor cursor; selectionSet.Search(queryFilter, false, out cursor); IFeatureCursor pFeatureCursor = cursor as IFeatureCursor; Splash.Close(); _plugin.FireQueryResultChanged(new QueryResultArgs(pFeatureCursor, featureSelection, queryFilter as ISpatialFilter)); } }
private void Walk() { if (this.cmbPipeLine.Items.Count >= 1) { RelateQueryUI.LayerboxItem layerboxItem = this.cmbPipeLine.SelectedItem as RelateQueryUI.LayerboxItem; IFeatureLayer pPipeLayer = layerboxItem.m_pPipeLayer; if (pPipeLayer != null) { IFeatureClass featureClass = pPipeLayer.FeatureClass; ISpatialFilter spatialFilter = new SpatialFilter(); int num = featureClass.Fields.FindField(this.cmbPipeLineFields.Text.Trim()); if (featureClass.Fields.Field[num].Type == (esriFieldType)4) { spatialFilter.WhereClause = this.cmbPipeLineFields.Text.Trim() + " = '" + this.lstBoxPipeLineValues.Text.Trim() + "'"; } else if (featureClass.Fields.Field[num].Type == (esriFieldType)5) { if (pPipeLayer.DataSourceType == "Personal Geodatabase Feature Class") { spatialFilter.WhereClause = this.cmbPipeLineFields.Text.Trim() + " = #" + this.lstBoxPipeLineValues.Text.Trim() + "#"; } else { spatialFilter.WhereClause = this.cmbPipeLineFields.Text.Trim() + "= TO_DATE('" + this.lstBoxPipeLineValues.Text.Trim() + "','YYYY-MM-DD')"; } } else { spatialFilter.WhereClause = this.cmbPipeLineFields.Text.Trim() + " = " + this.lstBoxPipeLineValues.Text.Trim(); } if (this.GeometrySet.Checked) { if (this.m_ipGeo != null) { spatialFilter.Geometry = (this.m_ipGeo); } spatialFilter.SpatialRel = (esriSpatialRelEnum)(1); } IFeatureCursor featureCursor = featureClass.Search(spatialFilter, false); IFeature feature = featureCursor.NextFeature(); int num2 = featureClass.Fields.FindField(this.cmbPipeLineFields.Text.Trim()); if (num2 != -1) { this.m_alPipeLine.Clear(); this.m_alPipePoint.Clear(); while (feature != null) { if (this.JustifyPipeLine(feature)) { this.m_alPipeLine.Add(feature); } feature = featureCursor.NextFeature(); } } } } }