public void IFeatureWorkspace_OpenFeatureClass_Example(string dataPath, string nameOfShapefile)
{
IWorkspaceFactory workspaceFactory = new ESRI.ArcGIS.DataSourcesFile.ShapefileWorkspaceFactoryClass();
IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspaceFactory.OpenFromFile(dataPath, 0);
IFeatureClass inputFeatureClass = featureWorkspace.OpenFeatureClass(nameOfShapefile);
Console.WriteLine("There are {0} features in the {1} feature class", inputFeatureClass.FeatureCount(new QueryFilterClass()), inputFeatureClass.AliasName);
// Получить курсор для обновления
IFeatureCursor updateCursor = inputFeatureClass.Update(null, false);
// Получить первый объект
IFeature updateFeature = updateCursor.NextFeature();
// Перебрать все объекты
while (updateFeature != null)
{
// Проверить, является ли тип полигоном
if (updateFeature.Shape.GeometryType == esriGeometryType.esriGeometryPolygon)
{
// Получить "геометрию"
IGeometry geometry = updateFeature.Shape;
// Получить полигон
IPolygon polygon = updateFeature.Shape as IPolygon;
// Получить коллекцию точек полигона
IPointCollection4 pointCollection = polygon as IPointCollection4;
//pointCollection.get_Point(1).PutCoords(50,59);
ESRI.ArcGIS.Geometry.IAffineTransformation2D affineTransformation2D = new ESRI.ArcGIS.Geometry.AffineTransformation2DClass();
affineTransformation2D.Move(200000000000, 30000000000);
ESRI.ArcGIS.Geometry.ITransform2D transform2D = polygon as ESRI.ArcGIS.Geometry.ITransform2D;
transform2D.Transform(ESRI.ArcGIS.Geometry.esriTransformDirection.esriTransformForward, affineTransformation2D);
// Массив для хранения точек
ArrayList points = new ArrayList();
// Флаг для определения: вычислять ли "серединную" точку
bool averagePoint = false;
// Перебрать все точки в полигоне
int i = 0;
while (i < pointCollection.PointCount)
{
if (averagePoint == false)
{
// Не вычислять "серединную" точку
// Добавить точку в массив точек
points.Add(pointCollection.get_Point(i));
// Установить флаг на true
averagePoint = true;
}
else
{
// Вычислить "серединную" точку
// Получить начальную точку