ArcGIS Анализ двигателя реализации анализа пространственного буфера

Результаты анализа буфер (BufferAnalysis) представляет собой планарный элемент - то есть элемент буфера , характерная точку, линию и полигональные-образные элементы, после обработки буфера для анализа , чтобы произвести буферную область вокруг них, то есть новый регион плоские элементы генерируются.

В направлении буфера, и линейной функции точки особенность буфера только внешне, плоские элементы могут быть двунаправленным буфером - буфер наружу и внутрь буфера .

В ArcGIS Engine, буфер анализировали с помощью ITopologicalOperator.Buffer (двойной расстояние) достигается, возвращаемое значение IGeometry функции (таблица 5-12). Отличающееся тем , что входной параметр тайм - аут буфера, буфер является отрицательным внутрь.

 

Основная идея заключается в том, чтобы достичь анализа буфера:

1, из буфера

2, вызовите метод ITopologicalOperator.Buffer () для генерации буфера

3, добавить буфер для axMapControl в.

// 
// Описание:
 //      Конструирует Многоугольник геометрическое место точек , что находится на расстоянии в течение последних меньше или равна
 //      . Указанный в этой геометрии Расстояние от
 //        Построить полигон, геометрию полигона это расстояние меньше или равно заданному отслеживать расстояние точки. 
Буфер IGeometry ( Double Расстояние);

Параметр (1) Буфер Метод
Метод Bulfer нести только один аргумент: расстояние, которое подается на расстояние буфера. Цифровой входной буфер является положительным наружу, внутрь буфера является отрицательным (только плоские объекты).


Функция Основная идея (2) Буфер
Буферные методы не производит новую функцию класса (Feature Class), так как возвращаемое значение метода буфера lGeometry, только геометрия элемента, не несет каких - либо характеристик элемента свойств.

Таким образом, в ArcGIS Engine, буфер объект функции не приводит к прямому буферу результата.

Bufer показывает событие кнопки запуска, как показано на рисунке:

 

Функция буфера анализ: BufferArea (двойной BuffDistance)

///  <Summary> 
/// Анализ буфера функции
 ///  </ Summary> 
///  <парам имя = "BuffDistance"> Буфер Расстояние </ PARAM> 
Частный  аннулируются BufferArea ( Double BuffDistance)
{
    // добавить к главной карте объект буфера 
    IGraphicsContainer GraphicsContainer = axMapControl1.Map А.С. IGraphicsContainer;
     // оставшееся до удаления всех элементов 
    graphicsContainer.DeleteAllElements ();
     // Выбрать значение индекса 0 Layer 
    ILAYER слой = axMapControl1.get_Layer ( 0 );
     // этот цикл используется для поиска слоя с именем индекса слой LayerName из 
    / *
    ILAYER слой = NULL;
    для (INT I = 0; я <axMapControl1.LayerCount; я ++)
    {
        если (axMapControl1.get_Layer (I) .Name.Equals ( "Layer-Name"))
        {
            Слой = axMapControl1.get_Layer (я);
            сломать;
        }
    }
    * / 
    // слой с именем LayerName слой превратился в сильный выбор набора функций 
    IFeatureSelection pFtSel = (IFeatureLayer) слой А.С. IFeatureSelection;
     // чтобы все элементы LayerName слоя под названием слоев добавлены Выборки 
    pFtSel.SelectFeatures ( NULL , esriSelectionResultEnum.esriSelectionResultNew, ложь );

    ICursor pCursor;
    // получить все элементы , проходимый выбор установите курсор 
    pFtSel.SelectionSet.Search ( нуль , ложь , OUT pCursor);
    IFeatureCursor pFtCursor = pCursor , как IFeatureCursor;
    Спиро параметрический элемент = pFtCursor.NextFeature ();
     // цикл по всем элементам все набора выбора, один за другими элементы для создания буфера 
    в то время как (ПФТ =! Нуль )
    {
        // Комфортные геометрические объекты (pFt.Shape) превращаются в сильный ITopologicalOperator
         @ pFt.Shape является создание объекта буфера 
        ITopologicalOperator topologicalOperator = pFt.Shape AS ITopologicalOperator;
         // Примечание: BuffDIstance наружу синхронизации входного буфера , внутренне буфер является отрицательным 
        IPolygon многоугольник = topologicalOperator.Buffer (BuffDistance) , как в IPolygon;
         // проиллюстрированный загружать элементы буфера 
        IElement элемент = новый новый PolygonElement ();
         // многоугольной геометрические элементы , назначенные 
        element.Geometry = многоугольник;
         // отображается один 
        graphicsContainer.AddElement (элемент, 0 );
         //Точки на следующей 
        PFT = pFtCursor.NextFeature ();
    }
    // Здесь Очистить набор выбора, поэтому амортизирующие элементы результаты выявили запутаться друг с другом 
    pFtSel.Clear ();
     // обновить axMapControl1 
    axMapControl1.Refresh ();
}  

 

Ядро буфера анализа функции Резюме:

 

 

Спасибо за просмотр! Я новичок ГИС вторичное развитие, если есть что-то не так, пожалуйста, прости меня!

 

рекомендация

отwww.cnblogs.com/edcoder/p/11797487.html