UniqueValueRenderer

0 голосов
спросил 12 Окт, 06 от Fedor1 (160 баллов) в категории Программные продукты Esri
Здравствуйте!
Я пытаюсь раскрасить объекты в зависимости от значения некоторого поля. однако при отрисовке изображения программа зависает. никаких сообщений об ошибках (кроме таймаута) не возникает.
Что я делаю не так? как правильно пользоваться UniqueValueRenderer? где можно об этом подробно почитать, желательно на русском языке?
вот код:

public string HighlightLayerByField(string Layer, string Field)

{//метод для подсветки объектов слоя в зависимости от значения поля.

// часть кода, не имеющая отношения к настройке UniqueValueRenderer удалена

//создаем новый (временный) слой, который затем рисуем поверх базового

IFeatureLayer fl = sc.CreateObject("esriCarto.FeatureLayer") as IFeatureLayer;

            fl.FeatureClass = baselayer.FeatureClass;

           

            IGeoFeatureLayer gfl = nfl as IGeoFeatureLayer;

//получаем список уникальных значений для поля

            IQueryDef query = GetQueryDef(fws,"SELECT DISTINCT(" + Field + ") FROM " + table);

            ICursor fcur = (ICursor)query.Evaluate();

            //генерируем цвета              

            IRandomColorRamp rx = GetRandomColorRamp();

            //создаем и настраиваем renderer

            IUniqueValueRenderer renderer = sc.CreateObject("esriCarto.UniqueValueRenderer") as IUniqueValueRenderer;

            renderer.FieldCount = 1;

            renderer.set_Field(0,Field);

                                  

            IRow row = null;

            while( (row = fcur.NextRow()) != null )

            {

 &

2 Ответы

0 голосов
ответил 16 Окт, 06 от Appl (1,340 баллов)
Я бы на вашем месте попробовал сперва просто без рендерера сгенерировать картинку
0 голосов
ответил 16 Окт, 06 от Fedor1 (160 баллов)
Спасибо за совет!
Если использовать renderer по-умолчанию, то все нормально отрисовывается. в том числе и новый слой.
по всей видимости я что-то не правильно делаю с UniqueValueRenderer.
еще, если написать
UniqueValueRenderer rndr = newgeofeaturelayer.Renderer as IUniqueValueRenderer
получаем null, т.е. стандартный рисователь не поддерживаем этот интерфейс.
Может быть сможете посоветовать другой способ раскрасить объекты?
заранее спасибо!
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...