Editing a Geometry Object

This example demonstrates how to modify each part of a multipart geometry. This example uses the IGeometryCreator (CreateGeometryFromWKT), ICreator61 (CreatePolygon, IPosition61 (Distance, Pitch), INavigate61 (JumpTo), and IPolygon(StartEdit, EndEdit) properties and methods.

 

function EditPolygon()

        {

            try

            {

                var geometry = sgworld.Creator.GeometryCreator.CreateGeometryFromWKT("POLYGON((-82.900091 26.739261,-82.906338 26.840896,-82.591731 26.951601,-82.809248 26.716679,-82.900091 26.739261),(-82.873569 26.819371,-82.81616 26.772908,-82.811242 26.846308,-82.873569 26.819371))");

                var polygon = sgworld.Creator.CreatePolygon(geometry, "#00ff00", "#00ffff",0 /* AltitudeTypeCode.ATC_TERRAIN_RELATIVE */, 0, "Polygon");

                polygon.Position.Distance = 80000;

                polygon.Position.Pitch = -45;

                sgworld.Navigate.JumpTo(polygon);

                alert("Polygon created. Click Ok to move all its points 0.001 to the right on x axis and add z value");

                var polygonGeometry = polygon.Geometry;

                // call start edit on the polygon

                polygonGeometry.StartEdit();

                // iterate over all of its rings. First one is exterior ring. All after it, are interior rings

                for (var ringIndex = 0; ringIndex < polygonGeometry.Rings.Count; ringIndex++)

                {

                    var ring = polygonGeometry.Rings(ringIndex);

                    for (var pointIndex = 0; pointIndex < ring.Points.Count; pointIndex++)

                    {

                        var point = ring.Points(pointIndex);

                        point.X += 0.001;

                        point.Z += point.X + point.Y;

                    }

                }

                // call EndEdit at the end. EndEdit returns new IGeometry. It does so, because IPolygon could have turned to IMultiPolygon

                var editedGeometry = polygonGeometry.EndEdit();

                // set the new geometry to the object

                polygon.Geometry = editedGeometry;

            }

            catch (e)

            {

                alert("Unexpected error:" + e.description);

            }

        }