1

こんにちは、属性に基づいて ArcGIS オブジェクトを拡大するための次のコードがあります。必要なのは、選択機能 (マップ上の領域を右クリックして選択する機能) でその領域を強調表示できることだけです。特徴)。

現在、ズームを行うイベントがあります。この選択を同じ属性にも追加したいと思います。

前もって感謝します!!!

ESRI.ArcGIS.Carto.ILayer layer = GetLayersClass.GetFieldBoundaryLayer;
if (layer is ESRI.ArcGIS.Carto.IGroupLayer)
{
    ESRI.ArcGIS.Carto.IGroupLayer groupLayer = layer as ESRI.ArcGIS.Carto.IGroupLayer;
    ICompositeLayer pCompositeLayer = layer as ICompositeLayer;
    int layers = pCompositeLayer.Count;
    ILayer pLayer = pCompositeLayer.Layer[0];

    IFeatureLayer pFeatureLayer = (IFeatureLayer)pLayer;

    IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;
    IQueryFilter pFilter = new QueryFilterClass();
    pFilter.WhereClause = "RightID = '" + selectedRightID.ToString() + "'";

    IFeatureCursor pFeatureCursor = pFeatureClass.Search(pFilter, false);
    IFeature pFeature = pFeatureCursor.NextFeature();

    if (pFeature == null)
    {
        System.Windows.Forms.MessageBox.Show("This section doesn't exist");
        return;
    }

    IApplication m_application = ArcMap.Application;
    IMxDocument pMxDoc = (IMxDocument)m_application.Document;
    IActiveView pActiveView = (IActiveView)pMxDoc.FocusMap;

    IEnvelope pEnv = pFeature.Shape.Envelope;
    pEnv.Expand(1.1, 1.1, true);

    pActiveView.Extent = pEnv;

    pActiveView.Refresh();

特定の機能を選択に追加すると思われるこのコードを追加してみました。しかし、それも運が悪いです。

IFeatureSelection pfeatSelect = pFeatureLayer as IFeatureSelection;
pfeatSelect.Add(pFeature);
4

2 に答える 2

1

私があなたを正しく理解していれば、必要なのはこれだけです:

IFeatureSelection featSelect = pFeatureLayer as IFeatureSelection;
featSelect.SelectFeatures(pFilter, esriSelectionResultEnum.esriSelectionResultNew, false);

これにより、フィルターに一致するすべての機能が選択されます。

于 2013-11-05T15:53:05.617 に答える