Parameters
- geometry
- The input geometry.
- distance
- The distance (in meters) to buffer the geometry.
Return Value
A geometry representing the buffered area.
Exception | Description |
---|---|
System.ArgumentNullException | Geometry is null or empty. |
System.NotImplementedException | The method is not implemented for GeometryBag. |
System.ArgumentException | Geometry has no spatial reference. |
System.ArgumentException | The buffer distance must be a valid floating point number. |
System.NotImplementedException | Spatial reference of geometryis an image coordinate system. |
If the buffer distance is zero and the input geometry is a polygon or an envelope, then a polygon created from the input geometry is returned.
If the distance is less than or equal to zero and the input geometry is not a polygon or an envelope, then an empty polygon is returned.
// buffer a point MapPoint pt = MapPointBuilder.CreateMapPoint(1.0, 1.0, SpatialReferences.WGS84); Polygon outPolygon = GeometryEngine.Instance.GeodesicBuffer(pt, 5) as Polygon; double delta = SpatialReferences.WGS84.XYTolerance * 2 * Math.Sqrt(2); ReadOnlyPointCollection points = outPolygon.Points; foreach (MapPoint p in points) { double d = GeometryEngine.Instance.GeodesicDistance(pt, p); // d = 5 (+- delta) } // buffer of 0 distance produces an empty geometry Geometry g = GeometryEngine.Instance.GeodesicBuffer(pt, 0); // g.IsEmpty = true // buffer many points List<MapPoint> list = new List<MapPoint>(); list.Add(MapPointBuilder.CreateMapPoint(1.0, 1.0, SpatialReferences.WGS84)); list.Add(MapPointBuilder.CreateMapPoint(10.0, 20.0)); list.Add(MapPointBuilder.CreateMapPoint(40.0, 40.0)); list.Add(MapPointBuilder.CreateMapPoint(60.0, 60.0)); outPolygon = GeometryEngine.Instance.GeodesicBuffer(list, 10000) as Polygon; // outPolygon.PartCount = 4 // buffer different geometry types List<Coordinate2D> coords = new List<Coordinate2D>() { new Coordinate2D(1, 2), new Coordinate2D(10, 20), new Coordinate2D(20, 30), new Coordinate2D(50, 60), new Coordinate2D(70, 80), new Coordinate2D(80, 40), new Coordinate2D(90, 10), new Coordinate2D(110, 15), new Coordinate2D(120, 30), new Coordinate2D(10, 40), new Coordinate2D(-10, 40), new Coordinate2D(-10, 50) }; List<Geometry> manyGeometries = new List<Geometry> { MapPointBuilder.CreateMapPoint(1.0, 1.0, SpatialReferences.WGS84), PolylineBuilder.CreatePolyline(new List<Coordinate2D>(){coords[0], coords[1], coords[2]}, SpatialReferences.WGS84), PolylineBuilder.CreatePolyline(new List<Coordinate2D>(){coords[3], coords[4], coords[5]}), PolygonBuilder.CreatePolygon(new List<Coordinate2D>(){coords[9], coords[10], coords[11]}) }; outPolygon = GeometryEngine.Instance.GeodesicBuffer(manyGeometries, 20000) as Polygon;
Target Platforms: Windows 10, Windows 8.1