Страница 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
Спасибо, что откликнулись.
Дело в том, что я только начал что то писать под АРКГИС на Сшарп.
Но не в этом дело. Я хотел Вашей подсказки по вопросам организации ГЕО-информации.
Я нашел книгу по програмированию ArcObject, но ее авторы ссылаются на техническую документацию АРКГИС, а вы представляете как ее изучать.

Это же не книга. Мне бы даже точная ссылка на англоязычный сайт ЕСРИ .
Заранее спасибо
Re: Программное добавление точек к существующему файлу Shp
Добавлено: 27 апр 2010, 14:35
Дмитрий Барышников
Re: Программное добавление точек к существующему файлу Shp
Добавлено: 27 апр 2010, 14:43
BodyZ
Большое спасибо

Re: Программное добавление точек к существующему файлу Shp
Добавлено: 27 апр 2010, 17:18
BodyZ
что делает это код?
Сначала. по моему эта функция создает среду для редактирования (Feature),
потом ?????????
Код: Выделить всё
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();
}
Я понимаю, что для Вас мой вопрос покажется туповатым, но я не могу до конца понять

Re: Программное добавление точек к существующему файлу Shp
Добавлено: 27 апр 2010, 17:30
BodyZ
Re: Программное добавление точек к существующему файлу Shp
Добавлено: 28 апр 2010, 21:01
BodyZ
Re: Программное добавление точек к существующему файлу Shp
Добавлено: 29 апр 2010, 22:35
BodyZ
Доброго времени суток.
Разбирался с хелпами. Вроде тучи понемногу расступаются.
Уперся в таку проблему.
Есть код
Код: Выделить всё
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
Спасибо за помощь. Буду пробовать.
С наступающими праздниками. Крепкого здоровья, успехов в делах

Re: Программное добавление точек к существующему файлу Shp
Добавлено: 30 апр 2010, 15:36
Дмитрий Барышников
И вас с праздниками.
Re: Программное добавление точек к существующему файлу Shp
Добавлено: 22 июл 2010, 01:29
BodyZ
Доброго времени суток. Извините за долгое отсуцтвие

Плотно уперся рогом, как не было бы мне стыдно признаться

Подскажите плиз поподробней как добавить точки к слою

, если я имею IFeatureLayer
Простите за назойливость, уж очень хочется тронуться с места

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