I'm just starting with ArcObjects and I want to update coordinates of geometry vertices. Specifically, I want to swap X, Y coordinates for each vertex of polygons (which can be multipart and have inner rings).
I've found web help topic Updating geometry of existing features where ITransform2D interface is suggested. But it's methods does not seem solve my problem directly. I think I can use Move method, but it requires calculating dx and dy.
Is it possible to do coordinate replacement in ArcObjects like in Python vertex.X = vertex.Y but without recreating geometry? (this is quite tricky in Python for polygons with inner rings)
I adapted @vinayan code, but it does nothing. What do I miss?
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(); }
أكثر...
I've found web help topic Updating geometry of existing features where ITransform2D interface is suggested. But it's methods does not seem solve my problem directly. I think I can use Move method, but it requires calculating dx and dy.
Is it possible to do coordinate replacement in ArcObjects like in Python vertex.X = vertex.Y but without recreating geometry? (this is quite tricky in Python for polygons with inner rings)
I adapted @vinayan code, but it does nothing. What do I miss?
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(); }
أكثر...