Начало работы с ArcGIS Engine
-
- Интересующийся
- Сообщения: 26
- Зарегистрирован: 12 авг 2011, 11:14
- Репутация: 0
Re: Начало работы с ArcGIS Engine
Еще раз здравствуйте.
Моя бестолковость снова привела меня к вам. Я сделал проект на WindowsForms с использованием контролов из Toolbox поставляемых с ArcGIS Engine. Разместил на форме AxMapControl, AxTOCControl, AxToolbarControl. Разместил на тулбаре кнопку добавления данных. Нажимаю на эту кнопку и выбираю несколько shp файлов. Они подгружаются, отображаются в AxMapControl и добавляются в AxTOCControl.
Вопросы в следующем:
1. Как задать раскраску этих слоёв? По умолчанию я так понимаю выбирается случайный цвет для всех элементов слоя, а мне необходимо чтобы цвет либо задавал я программно, либо была возможность выбора у пользователя.
2. SHP файл содержит данные которые необходимы для создания подписей на карте. Как включить отображение этих подписей?
Заранее приношу извинения за назойливость.
Моя бестолковость снова привела меня к вам. Я сделал проект на WindowsForms с использованием контролов из Toolbox поставляемых с ArcGIS Engine. Разместил на форме AxMapControl, AxTOCControl, AxToolbarControl. Разместил на тулбаре кнопку добавления данных. Нажимаю на эту кнопку и выбираю несколько shp файлов. Они подгружаются, отображаются в AxMapControl и добавляются в AxTOCControl.
Вопросы в следующем:
1. Как задать раскраску этих слоёв? По умолчанию я так понимаю выбирается случайный цвет для всех элементов слоя, а мне необходимо чтобы цвет либо задавал я программно, либо была возможность выбора у пользователя.
2. SHP файл содержит данные которые необходимы для создания подписей на карте. Как включить отображение этих подписей?
Заранее приношу извинения за назойливость.
- Дмитрий Барышников
- Гуру
- Сообщения: 2572
- Зарегистрирован: 17 ноя 2009, 19:17
- Репутация: 261
- Откуда: Москва
Re: Начало работы с ArcGIS Engine
Отображение свойств слоя (стиль, подписи и т.п.). код на с++ - придется вам его адаптировать. Закоментированы разные вкладки свойств слоя. Если вам нужны все - то не вызывайте ClearCategoryIDs и все что дальше до EditProperties.
Ссылки для "внеклассного чтения":
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
Код: Выделить всё
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
-
- Интересующийся
- Сообщения: 26
- Зарегистрирован: 12 авг 2011, 11:14
- Репутация: 0
Re: Начало работы с ArcGIS Engine
Спасибо за ответ. Я так понял русские надписи он в принципе не отображает? И еще такой вопрос: я для постановки меток на карту использую 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;
Но мой маркер не раскрашивается в зеленый цвет. Объясните пожалуйста что я делаю не так
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
Ваш код несколько отличается от вот этого http://edndoc.esri.com/arcobjects/9.2/N ... ass.cs.htm
Может быть в этом дело?
Может быть в этом дело?
-
- Гуру
- Сообщения: 527
- Зарегистрирован: 21 окт 2012, 00:17
- Репутация: 15
- Ваше звание: developer
Re: Начало работы с ArcGIS Engine
Подскажите, пожалуйста, как правильно построить классификационный рендерер к IRaster?
где IRaster - это результат выполнения операции PointDensity
где IRaster - это результат выполнения операции PointDensity
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 11 гостей