Программный способ создания линейных ссылок в ArcGIS

Я работаю над пользовательским проектом инструмента ArcGIS Desktop и хочу реализовать в нем функцию автоматической линейной привязки. Короче говоря, я хотел бы отображать проблемные сегменты на маршруте и показывать серьезность с помощью цветового кода (скажем, зеленого, желтого, красного и т. д.). Я знаю, что это довольно распространенный сценарий, и пришел к выводу, что «правильный способ» выполнения этой задачи — создать линейную таблицу событий, которая позволит мне назначать разные коды для определенных сегментов маршрута. Некоторые из моих коллег знают, как сделать это вручную, но я не могу найти способ воспроизвести это программно.

Текущий инструмент написан на C# и уже выполняет все необходимые вычисления для определения проблемных областей. Проблема в основном в том, что я не знаю, с чего начать, так как я мало знаю об ArcObjects. Приветствуются любые примеры кода или предложения (предпочтительнее C#, но C++, VB и другие наверняка мне помогут).

РЕДАКТИРОВАТЬ :

Я пытаюсь использовать инструмент MakeRouteEventLayer, но не могу выполнить различные предварительные условия. Маршруты размещаются на сервере SDE. Пока я устанавливаю соединение таким образом:

ESRI.ArcGIS.esriSystem.IPropertySet pConnectionProperties = new ESRI.ArcGIS.esriSystem.PropertySet();
ESRI.ArcGIS.Geodatabase.IWorkspaceFactory pWorkspaceFactory;
ESRI.ArcGIS.Geodatabase.IWorkspace pWorkspace;
ESRI.ArcGIS.Location.ILocatorManager pLocatorManager;
ESRI.ArcGIS.Location.IDatabaseLocatorWorkspace pDatabaseLocatorWorkspace;

pConnectionProperties.SetProperty("server", "xxxx");
pConnectionProperties.SetProperty("instance", "yyyy");
pConnectionProperties.SetProperty("database", "zzzz");
pConnectionProperties.SetProperty("AUTHENTICATION_MODE", "OSA");
pConnectionProperties.SetProperty("version", "dbo.DEFAULT");

pWorkspaceFactory = new ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactory();
pWorkspace = pWorkspaceFactory.Open(pConnectionProperties, 0);
pLocatorManager = new ESRI.ArcGIS.Location.LocatorManager();
pDatabaseLocatorWorkspace = (ESRI.ArcGIS.Location.IDatabaseLocatorWorkspace)pLocatorManager.GetLocatorWorkspace(pWorkspace);

Теперь я застрял, пытаясь подготовить все для MakeRouteEventLayer конструктора< /а>. Я не могу понять, как заставить Слой объектов передаваться как Входные объекты маршрута. Кроме того, я не понимаю, как правильно создать таблицу событий. Кажется, я не могу найти ни одного примера того, что я пытаюсь сделать, кроме этот, который я не понимаю, так как он не задокументирован/не прокомментирован, а типы данных не упомянуты.


person El Weon    schedule 11.08.2009    source источник


Ответы (1)


Я не совсем уверен, что ты хочешь сделать. Если вы хотите получить значения линейной привязки или манипулировать ими непосредственно в классе пространственных объектов, в котором уже определена линейная привязка, это довольно просто.

IFeatureClass fc = ....; Функция IFeature = fc.GetFeature(...); IMSegmentation3 seg = (IMSegmentation3)feature; ... бла ...

Если вам нужно создать класс объектов с линейной привязкой, вы должны начать с инструментов «Геообработка» в ArcToolbox. Если стандартные инструменты могут делать большую часть того, что вам нужно, это сведет к минимуму ваше кодирование.

Я настоятельно рекомендую попытаться выяснить, что вам нужно делать с ArcMap, если это вообще возможно... а затем отказаться от ArcObjects.

  1. API линейных ссылок
  2. Панель инструментов линейной привязки
  3. Понятие линейной привязки
person James Schek    schedule 11.08.2009