Страница 1 из 2

Программное добавление точек к существующему файлу Shp

Добавлено: 21 апр 2010, 17:23
BodyZ
Доброго времени суток. Подскажите начинающему программисту ArcGis как можно произвести программное добавление точек к существующему файлу shp. Заранее спасибо

Re: Программное добавление точек к существующему файлу Shp

Добавлено: 21 апр 2010, 19:39
Дмитрий Барышников
Например так:

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

IFeatureBufferPtr pFeatureBuffer;
IFeatureCursorPtr pFeatureCursor;
pFeatureClass->Insert(VARIANT_TRUE,&pFeatureCursor);
pFeatureClass->CreateFeatureBuffer(&pFeatureBuffer);

CComVariant ID;
IPointPtr pPoint(CLSID_Point);

pPoint->put_X(37);
pPoint->put_Y(55);
IGeometryPtr pOutGeom(pPoint);

pFeatureBuffer->putref_Shape(pOutGeom);
pFeatureCursor->InsertFeature(pFeatureBuffer,&ID);

pFeatureCursor->Flush();

Re: Программное добавление точек к существующему файлу Shp

Добавлено: 27 апр 2010, 13:31
BodyZ
Спасибо, что откликнулись. :P
Дело в том, что я только начал что то писать под АРКГИС на Сшарп.
Но не в этом дело. Я хотел Вашей подсказки по вопросам организации ГЕО-информации.
Я нашел книгу по програмированию ArcObject, но ее авторы ссылаются на техническую документацию АРКГИС, а вы представляете как ее изучать. :?: Это же не книга. Мне бы даже точная ссылка на англоязычный сайт ЕСРИ .
Заранее спасибо

Re: Программное добавление точек к существующему файлу Shp

Добавлено: 27 апр 2010, 14:35
Дмитрий Барышников

Re: Программное добавление точек к существующему файлу Shp

Добавлено: 27 апр 2010, 14:43
BodyZ
Bishop писал(а):См. здесь и далее по библиотеке
http://edndoc.esri.com/arcobjects/9.2/N ... 176a9e.htm
http://edndoc.esri.com/arcobjects/9.2/N ... 907898.htm
Большое спасибо :wink:

Re: Программное добавление точек к существующему файлу Shp

Добавлено: 27 апр 2010, 17:18
BodyZ
что делает это код?
Сначала. по моему эта функция создает среду для редактирования (Feature),
потом ????????? :oops:

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

public void CreateFeature(IFeatureClass featureClass, IPoint point)
{
  // Ensure the feature class contains points.
  if (featureClass.ShapeType != esriGeometryType.esriGeometryPoint)
  {
    return ;
  }

  // Build the feature.
  IFeature feature = featureClass.CreateFeature();
  feature.Shape = point;

  // Apply the appropriate subtype to the feature.
  ISubtypes subtypes = (ISubtypes)featureClass;
  IRowSubtypes rowSubtypes = (IRowSubtypes)feature;
  if (subtypes.HasSubtype)
  {
    // In this example, the value of 3 represents the Cross subtype.
    rowSubtypes.SubtypeCode = 3;
  }

  // Initialize any default values the feature has.
  rowSubtypes.InitDefaultValues();

  // Update the value on a string field that indicates who installed the feature.
  int contractorFieldIndex = featureClass.FindField("CONTRACTOR");
  feature.set_Value(contractorFieldIndex, "K Johnston");

  // Commit the new feature to the geodatabase.
  feature.Store();
}
Я понимаю, что для Вас мой вопрос покажется туповатым, но я не могу до конца понять :roll:

Re: Программное добавление точек к существующему файлу Shp

Добавлено: 27 апр 2010, 17:30
BodyZ
Не примите за наглость.
А этот код что делает?
Пример использования IFeatureClass.CreateFeatureBuffer :?: :?: :?:

Re: Программное добавление точек к существующему файлу Shp

Добавлено: 28 апр 2010, 21:01
BodyZ
Нашел интересную ссылку
http://edn.esri.com/index.cfm?fa=downlo ... nloadId=89

Re: Программное добавление точек к существующему файлу Shp

Добавлено: 29 апр 2010, 22:35
BodyZ
Доброго времени суток.
Разбирался с хелпами. Вроде тучи понемногу расступаются. :P
Уперся в таку проблему.
Есть код

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

                    IMxDocument pDoc = m_application.Document as IMxDocument;
                    IMap myMap = pDoc.Maps.get_Item(0);
                    IFeatureLayer featureLayer = myMap.get_Layers(null, true) as IFeatureLayer;

                    IFeatureClass featureClass = featureLayer.FeatureClass;
                    
                    IFeatureBuffer_Example(featureClass, 0, 0);
:?: Вопрос.
Что я не так делаю, чтобы добраться до IFeatureClass
Выбивает ошибка на строке

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

IFeatureClass featureClass = featureLayer.FeatureClass;
Заранее спасибо :?

Re: Программное добавление точек к существующему файлу Shp

Добавлено: 30 апр 2010, 08:19
Дмитрий Барышников
Начнем по порядку вопросов
BodyZ писал(а):что делает это код?
1. Данный код создает точку в таблице (FeatureClass) с заданием атрибутов, из подтипов
BodyZ писал(а):Не примите за наглость.
А этот код что делает?
2. Данный код создает курсор добавления и вносит геометрию в таблицу (FeatureClass) с добавлением нулевых атрибутов
BodyZ писал(а):Что я не так делаю, чтобы добраться до IFeatureClass
3.
А слои подгружены (хотя бы один)? Данная процедура работает только в ArcMap и для первого фрейма (см. pDoc.Maps.get_Item(0))!
Здесь ошибка в этом месте IFeatureLayer featureLayer = myMap.get_Layers(null, true) as IFeatureLayer;
Должно быть IFeatureLayer featureLayer = myMap.get_Layer(0) as IFeatureLayer;

Re: Программное добавление точек к существующему файлу Shp

Добавлено: 30 апр 2010, 14:08
BodyZ
Спасибо за помощь. Буду пробовать.
С наступающими праздниками. Крепкого здоровья, успехов в делах :wink:

Re: Программное добавление точек к существующему файлу Shp

Добавлено: 30 апр 2010, 15:36
Дмитрий Барышников
И вас с праздниками.

Re: Программное добавление точек к существующему файлу Shp

Добавлено: 22 июл 2010, 01:29
BodyZ
Доброго времени суток. Извините за долгое отсуцтвие :lol: Плотно уперся рогом, как не было бы мне стыдно признаться :cry: Подскажите плиз поподробней как добавить точки к слою :oops:, если я имею IFeatureLayer :?:
Простите за назойливость, уж очень хочется тронуться с места :D
Заранее спасибо

Re: Программное добавление точек к существующему файлу Shp

Добавлено: 22 июл 2010, 10:18
Дмитрий Барышников

Re: Программное добавление точек к существующему файлу Shp

Добавлено: 27 июл 2010, 20:53
BodyZ
Спасибо за помощь.
Есть другой вопрос. Как задать географические координаты для точки если Point.X Point.Y прямоугольные. Заранее спасибо