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