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