Estoy empezando con ArcObjects y quiero actualizar las coordenadas de los vértices de la geometría. Específicamente, quiero intercambiar las coordenadas X, Y para cada vértice de los polígonos (que pueden ser multipartes y tener anillos interiores).
He encontrado un tema de ayuda en la web Actualización de la geometría de los elementos existentes donde ITransform2D
se sugiere la interfaz. Pero sus métodos no parecen resolver mi problema directamente. Creo que puedo usar Move
pero requiere calcular dx y dy.
¿Es posible hacer la sustitución de coordenadas en ArcObjects como en Python? vertex.X = vertex.Y
pero sin recrear la geometría? (esto es bastante complicado en Python para polígonos con anillos interiores)
He adaptado el código de @vinayan, pero no hace nada. ¿Qué me falta?
protected override void OnClick()
{
IMxDocument mxDocument = ((IMxDocument)(ArcMap.Application.Document)); // Explicit Cast
IContentsView currentContentsView = mxDocument.CurrentContentsView;
IFeatureLayer featureLayer = (IFeatureLayer)currentContentsView.SelectedItem; // Explicit Cast
IFeatureClass featureClass = featureLayer.FeatureClass;
//Get the Feature or FeatureCursor as you like..
IFeatureClass pFC = featureClass;
IFeature polygonFeature = pFC.GetFeature(1);
IPointCollection pPtsColl = (IPointCollection)polygonFeature.ShapeCopy;
//swap X and Y
double tempValue;
IPoint pPoint;
for (int i = 0; i < pPtsColl.PointCount; i++)
{
pPoint = pPtsColl.get_Point(i);
tempValue = pPoint.X;
pPoint.X = pPoint.Y;
pPoint.Y = tempValue;
}
//Update Feature
polygonFeature.Shape = (IGeometry)pPtsColl;
polygonFeature.Store();
}