private static void AppendGeometryTaggedText(EsriGeometry geometry, StringWriter writer) { if (geometry == null) { throw new NullReferenceException("Cannot write Well-Known Text: geometry was null"); } if (geometry is EsriPoint) { var point = geometry as EsriPoint; AppendPointTaggedText(point, writer); } else if (geometry is EsriPolyline) { var pl = (EsriPolyline)geometry; if (pl.Paths.Count == 1) { AppendLineStringTaggedText(geometry as EsriPolyline, writer); } else if (pl.Paths.Count > 1) { AppendMultiLineStringTaggedText(geometry as EsriPolyline, writer); } } else if (geometry is EsriPolygon) { var plo = (EsriPolygon)geometry; if (plo.Rings.Count == 1) { AppendPolygonTaggedText(geometry as EsriPolygon, writer); } else if (plo.Rings.Count > 1) { AppendMultiPolygonTaggedText(geometry as EsriPolygon, writer); } } else if (geometry is EsriMultiPoint) { AppendMultiPointTaggedText(geometry as EsriMultiPoint, writer); } else if (geometry is EsriExtent) { var ply = new EsriPolygon(); EsriPointCollection pc = new EsriPointCollection(); EsriExtent ev = geometry as EsriExtent; pc.Add(new EsriPoint(ev.XMin, ev.YMin)); pc.Add(new EsriPoint(ev.XMax, ev.YMin)); pc.Add(new EsriPoint(ev.XMax, ev.YMax)); pc.Add(new EsriPoint(ev.XMin, ev.YMax)); pc.Add(new EsriPoint(ev.XMin, ev.YMin)); ply.Rings.Add(pc); AppendPolygonTaggedText(ply, writer); } else { throw new NotSupportedException("Unsupported Geometry implementation:" + geometry.GetType().Name); } }
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { EsriPointCollection pts = value as EsriPointCollection; writer.WriteStartArray(); foreach (var point in pts) { WritePoint(writer, point); } writer.WriteEndArray(); }
private static void AppendLineStringText(EsriPointCollection lineString, StringWriter writer) { if (lineString == null) { writer.Write("Empty"); } else { writer.Write("("); for (int i = 0; i < lineString.Count; i++) { if (i > 0) { writer.Write(", "); } AppendCoordinate(lineString[i], writer); } writer.Write(")"); } }
public EsriMultiPoint(EsriPointCollection points, SpatialReference sref) { Points = points; this.SpatialReference = sref; }
public EsriMultiPoint(EsriPointCollection points) { Points = points; }