Как изменить Renderer слоя?

0 голосов
спросил 01 Май, 06 от bess (800 баллов) в категории Программные продукты Esri
Есть слой с геометрией "Point"... Соответственно, данные о координатах точек хранятся в базе... При добавлении  слоя в ArcMap (программно) символ отображения объектов слоя - простая точка... Как изменить это дело?

12 Ответы

0 голосов
ответил 01 Май, 06 от bess (800 баллов)
    'Создаем документ ArcMap
    Set m_pDoc = New MxDocument
    Set m_pApp = m_pDoc.Parent
    'Открываем ArcMap
    m_pApp.Visible = True

    m_pApp.OpenDocument "C\temp.mxd"
    
    Dim pDoc As IMxDocument

    Set pDoc = m_pApp.Document
    Set pMap = pDoc.FocusMap

Dim pGeoFeatureLayer As IGeoFeatureLayer
Dim pSimpleRenderer As ISimpleRenderer
Dim pFillSymbol As IFillSymbol
Dim pOutlineSymbol As ILineSymbol

Set pFillSymbol = New SimpleFillSymbol

pFillSymbol.Color = GetRGBColor(235, 202, 250)

Set pOutlineSymbol = New SimpleLineSymbol
pOutlineSymbol.Color = GetRGBColor(0, 0, 0)
pOutlineSymbol.Width = 1
pFillSymbol.Outline = pOutlineSymbol

Set pSimpleRenderer = New SimpleRenderer
Set pSimpleRenderer.Symbol = pFillSymbol

Set pGeoFeatureLayer = pDoc.FocusMap.Layer(0)
Set pGeoFeatureLayer.Renderer = pSimpleRenderer
    
    pDoc.ActiveView.PartialRefresh esriViewGeography, Nothing, Nothing

Пробовал сделать вышеописанным методом... (только на полигонах)
При обновлении слой вообще стирается с карты, а renderer получается нихт (то бишь пустой...)
В чем моя ошибка??? Подскажите пожалуйста...
0 голосов
ответил 03 Май, 06 от bess (800 баллов)
image Никто не знает что ли???
0 голосов
ответил 04 Май, 06 от vig11 (2,220 баллов)

А что требуется изменить? Символ слоя?

Попробуйте добавить:
pGeoFeatureLayer.DisplayAnnotation = true

0 голосов
ответил 05 Май, 06 от Alexander1 (32,520 баллов)
0 голосов
ответил 06 Май, 06 от bess (800 баллов)
Я хочу изменить символ слоя... Например: была звездочка, стал кружок...
А pGeoFeatureLayer.DisplayAnnotation = true показывает LABEL слоя...
0 голосов
ответил 06 Май, 06 от bess (800 баллов)
Alexander спасибо за ссылку... только такой вариант в VBA прокатывает, а в VB получается тоже самое...
Когда обновляю дисплей и саму карту
    pMxDocument.UpdateContents
    pMxDocument.ActiveView.Refresh
то всё стирается...
Как решить этот вопрос? Не подскажете?
0 голосов
ответил 07 Май, 06 от vig11 (2,220 баллов)

Попробуйте вот так. Это на С#, но перевести на VB думаю не проблемма. Если не получится, - пишите.

SimpleMarkerSymbol pSimplePointSymbol = new SimpleMarkerSymbolClass();
     pSimplePointSymbol.Style = esriSimpleMarkerStyle.esriSMSCross;
    //Set the color of the fill symbol
    pSimplePointSymbol.Color = pRGBColor;
    pSimplePointSymbol.Size = 5;
    //Set the renderer's symbol, label, and description
    SimpleRenderer pSimpleRenderer = new SimpleRendererClass();
    pSimpleRenderer.Symbol = (ISymbol)pSimplePointSymbol;
    pGeoFeatureLayer.Renderer = (IFeatureRenderer)pSimpleRenderer;

0 голосов
ответил 17 Май, 06 от bess (800 баллов)
vig11

То же самое я и на VB делал... А когда обновляю ArcMap у меня слой стирается в карте, а renderer становится пустой... image
Почему так???
0 голосов
ответил 18 Май, 06 от vig11 (2,220 баллов)
У меня работает отлично. Видимо на VB у Вас есть какие-то отличия.
0 голосов
ответил 19 Май, 06 от bess (800 баллов)
А Вы может расписать алгоритм как Вы делаете с начала до конца... Если не трудно...
С кодом было бы вообще замечательно!
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...