Пример #1
0
        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();
        }
Пример #3
0
 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(")");
     }
 }
Пример #4
0
 public EsriMultiPoint(EsriPointCollection points, SpatialReference sref)
 {
     Points = points;
     this.SpatialReference = sref;
 }
Пример #5
0
 public EsriMultiPoint(EsriPointCollection points)
 {
     Points = points;
 }