Страница 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 прямоугольные. Заранее спасибо