Символы "по умолчанию"

0 голосов
спросил 02 Дек, 08 от IgorPro2 (500 баллов) в категории Программные продукты Esri

Как в ArcMap настроить символ отображения точек "по умолчанию" ?

При добавлении нового точечного слоя кнопкой "Add Data" точки всегда добавляются символом повернутого на 45° квадрата размером 4 "points",  а цвет добавляемых точек произвольный.                       Где  можно настроить маркер и цвет добавляемых данных "по умолчанию" ?
 
( В ArcView 3.   это делалось на Avenu в StartUp скрипте.)
 
Спасибо.

4 Ответы

0 голосов
ответил 04 Дек, 08 от IgorPro2 (500 баллов)
Вот пример ESRI как на VB добавлять шейпфайл в  TOC ArcMap:
Кто знает как вставить сюда несколько строк чтобы изменить цвет и символ вставляемых данных.
Ясно, что для точек нужно использовать IMarkerSymbol Interface, к сожалению Help for VB6 developers сделан очень с очень скупыми примерами.
**********************************************************************
Dim pWorkspaceFactory As IWorkspaceFactory
Set pWorkspaceFactory = New ShapefileWorkspaceFactory

Dim pWorkSpace As IFeatureWorkspace
'Change C:\Source to the source location of the shapefile you wish to add
Set pWorkSpace = pWorkspaceFactory.OpenFromFile("C:\Source", 0)

Dim pClass As IFeatureClass
'Change USStates to the name of the shapefile you wish to add
Set pClass = pWorkSpace.OpenFeatureClass("USStates")

Dim pLayer As IFeatureLayer
Set pLayer = New FeatureLayer
Set pLayer.FeatureClass = pClass
pLayer.Name = pClass.AliasName

Dim pMxDoc As IMxDocument
Set pMxDoc = ThisDocument

pMxDoc.AddLayer pLayer
pMxDoc.ActiveView.PartialRefresh esriViewGeography, pLayer, Nothing
******************************************************
СПАСИБО
0 голосов
ответил 04 Дек, 08 от Grigoriy (127,020 баллов)
Если название класса объектов (шейп-файла) совпадает с названием символа в списке активных (подключенных) стилей, то добавляемый слой сразу будет отображаться этим символом.
Чтобы было более понятно, попробуйте включить стиль "Civic" ArcMap->Tools(Инструменты)->Styles(Стили)->Styles Reference(Ссылки на стили).
Потом переименуйте или скопируйте точечный класс объектов в одно из следующих имен (Bug, Bell, Anchor). И попробуйте добавить этот класс в ArcMap.
Также ведут себя и линейные, и полигональные слои.

Если имена не совпадают, то цвет слоя выбирается случайным, а вот размер можно задать, используя "\ArcGIS\Utilities\AdvancedArcMapSettings.exe"

Ну а если всё это не устраивает, то нужно кодировать.

Для простой заливки (полигональный шейп) примерно так:

Public Sub AddShapePoly()

Dim pWorkspaceFactory As IWorkspaceFactory
Set pWorkspaceFactory = New ShapefileWorkspaceFactory

Dim pWorkSpace As IFeatureWorkspace
'Change C:\Source to the source location of the shapefile you wish to add
Set pWorkSpace = pWorkspaceFactory.OpenFromFile("Диск:\Каталог", 0)

Dim pClass As IFeatureClass
'Change USStates to the name of the shapefile you wish to add
Set pClass = pWorkSpace.OpenFeatureClass("ваш_полигональный_шейп")

Dim pLayer As IFeatureLayer
Set pLayer = New FeatureLayer
Set pLayer.FeatureClass = pClass
pLayer.Name = pClass.AliasName

Dim pMxDoc As IMxDocument
Set pMxDoc = ThisDocument

Dim pColor As IRgbColor
Set pColor = New RgbColor
pColor.Red = 235
pColor.Green = 202
pColor.Blue = 250

' create a new fill symbol
Dim pFillSymbol As ISimpleFillSymbol
Set pFillSymbol = New SimpleFillSymbol
pFillSymbol.Style = esriSFSCross

' set the color of the fillsymbol
pFillSymbol.color = pColor

' set the renderer's symbol, label, and description
Dim pSimpleRenderer As ISimpleRenderer
Set pSimpleRenderer = New SimpleRenderer
Set pSimpleRenderer.Symbol = pFillSymbol
pSimpleRenderer.Label = "Label"
pSimpleRenderer.Description = "Description"

Dim pGeoFeatureLayer As IGeoFeatureLayer
Set pGeoFeatureLayer = pLayer
Set pGeoFeatureLayer.Renderer = pSimpleRenderer

pMxDoc.AddLayer pGeoFeatureLayer

pMxDoc.ActiveView.PartialRefresh esriViewGeography, pGeoFeatureLayer, Nothing

End Sub

Public Sub AddShapePoint()

Dim pWorkspaceFactory As IWorkspaceFactory
Set pWorkspaceFactory = New ShapefileWorkspaceFactory

Dim pWorkSpace As IFeatureWorkspace
'Change C:\Source to the source location of the shapefile you wish to add
Set pWorkSpace = pWorkspaceFactory.OpenFromFile("C:\Temp", 0)

Dim pClass As IFeatureClass
'Change USStates to the name of the shapefile you wish to add
Set pClass = pWorkSpace.OpenFeatureClass("ваш_точечный_шейп")

Dim pLayer As IFeatureLayer
Set pLayer = New FeatureLayer
Set pLayer.FeatureClass = pClass
pLayer.Name = pClass.AliasName

Dim pMxDoc As IMxDocument
Set pMxDoc = ThisDocument

Dim pColor As IRgbColor
Set pColor = New RgbColor
pColor.Red = 235
pColor.Green = 202
pColor.Blue = 250

' create a new point symbol
Dim pMarkerSymbol As ISimpleMarkerSymbol
Set pMarkerSymbol = New SimpleMarkerSymbol
pMarkerSymbol.Style = esriSMSCircle

' set the color of the Marker symbol
pMarkerSymbol.color = pColor

' set the renderer's symbol, label, and description
Dim pSimpleRenderer As ISimpleRenderer
Set pSimpleRenderer = New SimpleRenderer
Set pSimpleRenderer.Symbol = pMarkerSymbol
pSimpleRenderer.Label = "Label"
pSimpleRenderer.Description = "Description"

Dim pGeoFeatureLayer As IGeoFeatureLayer
Set pGeoFeatureLayer = pLayer
Set pGeoFeatureLayer.Renderer = pSimpleRenderer

pMxDoc.AddLayer pGeoFeatureLayer

pMxDoc.ActiveView.PartialRefresh esriViewGeography, pGeoFeatureLayer, Nothing

End Sub

0 голосов
ответил 05 Дек, 08 от IgorPro2 (500 баллов)

Григорий !

Спасибо огромное за ответ!
 
Как обычно обстоятельно и дружелюбно !
0 голосов
ответил 05 Дек, 08 от IgorPro2 (500 баллов)

Когда указано где копать то можно найти кое-что и в дебрях "Help for VB6 developers"  :))

В примере Григория можно заменить ISimpleMarkerSymbol на ICharacterMarkerSymbol, и тогда использовать все возможности управления точечными символами:
 
'** Set some Variables
 Dim chMrkSym As ICharacterMarkerSymbol
 Set chMrkSym = New CharacterMarkerSymbol
 Dim aFont As IFontDisp
 Set aFont = New StdFont
 Dim aColor As IRgbColor
 Set aColor = New RgbColor
 
 '** Define the color we want to use
 aColor.Red = 255
 aColor.Green = 0
 aColor.Blue = 0
 
 '** Define the Font we want to use
 aFont.Name = "ESRI Default Marker"
 aFont.size = 24
 
 
 '** Set the CharacterMarkerSymbols Properties
 With chMrkSym
     .Angle = 90
     .CharacterIndex = 36
     .Color = aColor
     .Font = aFont
     .size = 24
     .XOffset = 0
     .YOffset = 0
 End With
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...