Начало работы с ArcGIS Engine

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
speed0
Интересующийся
Сообщения: 26
Зарегистрирован: 12 авг 2011, 11:14
Репутация: 0

Re: Начало работы с ArcGIS Engine

Сообщение speed0 » 13 окт 2011, 12:46

Еще раз здравствуйте.
Моя бестолковость снова привела меня к вам. Я сделал проект на WindowsForms с использованием контролов из Toolbox поставляемых с ArcGIS Engine. Разместил на форме AxMapControl, AxTOCControl, AxToolbarControl. Разместил на тулбаре кнопку добавления данных. Нажимаю на эту кнопку и выбираю несколько shp файлов. Они подгружаются, отображаются в AxMapControl и добавляются в AxTOCControl.
Вопросы в следующем:
1. Как задать раскраску этих слоёв? По умолчанию я так понимаю выбирается случайный цвет для всех элементов слоя, а мне необходимо чтобы цвет либо задавал я программно, либо была возможность выбора у пользователя.
2. SHP файл содержит данные которые необходимы для создания подписей на карте. Как включить отображение этих подписей?
Заранее приношу извинения за назойливость.

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Начало работы с ArcGIS Engine

Сообщение Дмитрий Барышников » 13 окт 2011, 21:47

Отображение свойств слоя (стиль, подписи и т.п.). код на с++ - придется вам его адаптировать. Закоментированы разные вкладки свойств слоя. Если вам нужны все - то не вызывайте ClearCategoryIDs и все что дальше до EditProperties.

Код: Выделить всё

	
ILayerPtr pLayer;
m_pMapControl->get_Layer(номер слоя в карте ,&pLayer);
if(pLayer == NULL)
return 0;
IComPropertySheetPtr pComPropertySheet(CLSID_ComPropertySheet);
ISetPtr pSet(CLSID_Set);
pSet->Add(pLayer);
VARIANT_BOOL bOk;
pComPropertySheet->put_Title(L"Свойства слоя");

pComPropertySheet->ClearCategoryIDs();
IUIDPtr pUID(CLSID_UID);
pUID->put_Value(CComVariant(CComBSTR(_T("{1476C782-6F57-11D2-A2C6-080009B6F22B}"))));
pComPropertySheet->AddCategoryID(pUID);
// pUID->put_Value(CComVariant(CComBSTR(_T("{523318B3-C40C-4D7C-9C6B-34684742BD18}"))));
//pComPropertySheet->AddCategoryID(pUID);
// pUID->put_Value(CComVariant(CComBSTR(_T("{43B21396-F1E2-11D2-B870-00600802E603}"))));
//pComPropertySheet->AddCategoryID(pUID);
pComPropertySheet->EditProperties(pSet,NULL,&bOk);

Ссылки для "внеклассного чтения":
http://resources.esri.com/help/9.3/ArcG ... e2b17c.htm
http://help.arcgis.com/en/sdk/10.0/arco ... 000000.htm
http://help.arcgis.com/en/sdk/10.0/arco ... 08wq000000

speed0
Интересующийся
Сообщения: 26
Зарегистрирован: 12 авг 2011, 11:14
Репутация: 0

Re: Начало работы с ArcGIS Engine

Сообщение speed0 » 17 окт 2011, 15:27

Спасибо за ответ. Я так понял русские надписи он в принципе не отображает? И еще такой вопрос: я для постановки меток на карту использую DynamicLayer. Есть следующий код:
string bitmapfileName = System.IO.Path.GetFullPath(@"..\..\BS.PNG");
if (System.IO.File.Exists(bitmapfileName))
{
// Sets the transparency color
IRgbColor tranparencyColor = new RgbColorClass();
tranparencyColor.Red = 255;
tranparencyColor.Green = 255;
tranparencyColor.Blue = 255;

//create the glyph from the picture symbol
m_markerGlyphs[0] = pDynamicGlyphFactory.CreateDynamicGlyphFromFile(esriDynamicGlyphType.esriDGlyphMarker, bitmapfileName, tranparencyColor as IColor);
}
else
{
m_markerGlyphs[0] = pDynamicGlyphFactory.get_DynamicGlyph(1, esriDynamicGlyphType.esriDGlyphMarker, 3);
}

и еще вот:
//set the heading of the current symbol
m_dynamicSymbolProps.set_Heading(esriDynamicSymbolType.esriDSymbolMarker, (float)heading);

//set the symbol alignment so that it will align with towards the symbol heading
m_dynamicSymbolProps.set_RotationAlignment(esriDynamicSymbolType.esriDSymbolMarker, esriDynamicSymbolRotationAlignment.esriDSRANorth);

m_dynamicSymbolProps.SetScale(esriDynamicSymbolType.esriDSymbolMarker, 1.1f, 1.1f);
m_dynamicSymbolProps.SetColor(esriDynamicSymbolType.esriDSymbolMarker, 0.0f, 1.0f, 0.6f, 1.0f); // GREEN
m_dynamicSymbolProps.set_DynamicGlyph(esriDynamicSymbolType.esriDSymbolMarker, m_markerGlyphs[0]);

//draw the current location
DynamicDisplay.DrawMarker(m_point);
break;
Но мой маркер не раскрашивается в зеленый цвет. Объясните пожалуйста что я делаю не так

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Начало работы с ArcGIS Engine

Сообщение Дмитрий Барышников » 18 окт 2011, 00:05

Ваш код несколько отличается от вот этого http://edndoc.esri.com/arcobjects/9.2/N ... ass.cs.htm
Может быть в этом дело?

novice
Гуру
Сообщения: 527
Зарегистрирован: 21 окт 2012, 00:17
Репутация: 15
Ваше звание: developer

Re: Начало работы с ArcGIS Engine

Сообщение novice » 19 апр 2013, 14:11

Подскажите, пожалуйста, как правильно построить классификационный рендерер к IRaster?
где IRaster - это результат выполнения операции PointDensity

Ответить

Вернуться в «ArcGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость