Страница 3 из 3
Re: Начало работы с ArcGIS Engine
Добавлено: 13 окт 2011, 12:46
speed0
Еще раз здравствуйте.
Моя бестолковость снова привела меня к вам. Я сделал проект на WindowsForms с использованием контролов из Toolbox поставляемых с ArcGIS Engine. Разместил на форме AxMapControl, AxTOCControl, AxToolbarControl. Разместил на тулбаре кнопку добавления данных. Нажимаю на эту кнопку и выбираю несколько shp файлов. Они подгружаются, отображаются в AxMapControl и добавляются в AxTOCControl.
Вопросы в следующем:
1. Как задать раскраску этих слоёв? По умолчанию я так понимаю выбирается случайный цвет для всех элементов слоя, а мне необходимо чтобы цвет либо задавал я программно, либо была возможность выбора у пользователя.
2. SHP файл содержит данные которые необходимы для создания подписей на карте. Как включить отображение этих подписей?
Заранее приношу извинения за назойливость.
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
Re: Начало работы с ArcGIS Engine
Добавлено: 17 окт 2011, 15:27
speed0
Спасибо за ответ. Я так понял русские надписи он в принципе не отображает? И еще такой вопрос: я для постановки меток на карту использую 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;
Но мой маркер не раскрашивается в зеленый цвет. Объясните пожалуйста что я делаю не так
Re: Начало работы с ArcGIS Engine
Добавлено: 18 окт 2011, 00:05
Дмитрий Барышников
Ваш код несколько отличается от вот этого
http://edndoc.esri.com/arcobjects/9.2/N ... ass.cs.htm
Может быть в этом дело?
Re: Начало работы с ArcGIS Engine
Добавлено: 19 апр 2013, 14:11
novice
Подскажите, пожалуйста, как правильно построить классификационный рендерер к IRaster?
где IRaster - это результат выполнения операции PointDensity