MapControl & Delphi

0 голосов
спросил 10 Март, 04 от fbor (480 баллов) в категории Программные продукты Esri

Добрый день Всем

Подскажите плиз как добавить точку в слой в приложении на Delphi & MapControl, если есть то пример.

9 Ответы

0 голосов
ответил 10 Март, 04 от Andranic (2,620 баллов)

1) Получите указатель на интерфейсы IFeatureLayer и IFeatureClass слоя MapControl в который хотите добавить объект.

2) Вот пример процедуры которая добавляет объект, с заданным IGeometry и в заданный FeatureClass.

Public Sub AddShapeToFeatureClass(pGeom As IGeometry, pFC As IFeatureClass)
  Dim pFeature As IFeature
  Set pFeature = pFC.CreateFeature
  Set pFeature.Shape = pGeom
  pFeature.Store
End Sub

Примеры на Дельфи попробуйте поискать на arcobjectsonline.esri.com


0 голосов
ответил 10 Март, 04 от fbor (480 баллов)

В следующем коде указатель IFeatureLayer я получаю правильно а вот IFeatureClass он возвращает nil

pMap.Get_Layer(0, pLayer);
pFeatureLayer:=pLayer as IFeatureLayer;

pFeatureLayer.Get_FeatureClass(pFeatureClass);

0 голосов
ответил 10 Март, 04 от Andranic (2,620 баллов)
0 голосов
ответил 10 Март, 04 от fbor (480 баллов)

Спасибо, буду пробовать, мое начальство требует писать на C++Builder6, я попробовал создавать библиотеки, проблемы как и в Д7, есть у билдера еще проблемы?

0 голосов
ответил 10 Март, 04 от Andranic (2,620 баллов)

Сам я с Borland не работаю, но другие проблемы (кроме этой) мне на глаза не попадались.

0 голосов
ответил 11 Март, 04 от fbor (480 баллов)

Подскажите пожалуйста где я не прав? 

 m_pEd:=CoEditor.Create as IEditor;
  pEditor:=m_pEd as IEditor;
  pEditLayers:=pEditor as IEditLayers;
  pEditLayers.SetCurrentLayer(pFeatureLayer as IFeatureLayer,1);
  pFeatureLayer.Get_FeatureClass(pFeatureClass);
  pEditor.StartOperation;
  pFeatureClass.CreateFeature(pFeature);
  pPoint:=CoPoint.Create as IPoint;      
   with pPoint do begin
     Set_X(100);
     Set_Y(100);
   end; { end of with }
  pFeature._Set_Shape(pPoint as IGeometry);//В этом месте  вылетает ошибка
  pFeature.Store;

0 голосов
ответил 11 Март, 04 от Andranic (2,620 баллов)

Слой у вас точечный ?

Если да то проверьте Extent (XY Domain) у этого слоя, попадает ли ваша точка в него или нет ?

0 голосов
ответил 12 Март, 04 от Гость (210,080 баллов)

Да, слой точечный, и точка попадает в него.

 Если есть пример с добавлением обьекта  со всеми действиями от начала до конца подскажите пожалуйста

0 голосов
ответил 12 Март, 04 от Гость (210,080 баллов)

Я сразу не обратил внимания, у меня после вызова

pFeatureClass.CreateFeature(pFeature);

pFeature=nil

похоже проблема в этом.

Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...