private bool TryWriteCircle(object shape, out string result)
 {
     if (_shapeConverter.CanConvert(ObjectType.Circle) &&
         _shapeConverter.GetObjectType(shape) == ObjectType.Circle)
     {
         var circle = _shapeConverter.FromCircle(shape);
         result = string.Format(CultureInfo.InvariantCulture, "CIRCLE({0:F9} {1:F9} d={2:F9})", circle[0], circle[1], circle[2]);
         return(true);
     }
     result = default(string);
     return(false);
 }
        public bool TryWriteFeature(JsonWriter writer, object value, JsonSerializer serializer)
        {
            if (!_shapeConverter.CanConvert(ObjectType.Feature))
            {
                return(false);
            }

            ObjectType geomType = _shapeConverter.GetObjectType(value);

            if (geomType != ObjectType.Feature)
            {
                return(false);
            }

            writer.WriteStartObject();
            writer.WritePropertyName("type");
            writer.WriteValue(Enum.GetName(typeof(ObjectType), ObjectType.Feature));

            object id;
            Dictionary <string, object> props;
            var geometry = _shapeConverter.FromFeature(value, out id, out props);

            if (id != null)
            {
                writer.WritePropertyName("id");
                serializer.Serialize(writer, id);
            }

            if (props != null && props.Count > 0)
            {
                writer.WritePropertyName("properties");
                serializer.Serialize(writer, props);
            }

            writer.WritePropertyName("geometry");
            serializer.Serialize(writer, geometry);

            writer.WriteEndObject();
            return(true);
        }
Esempio n. 3
0
        private void AppendGeometry(StringBuilder builder, object geometry)
        {
            var type = _shapeConverter.GetObjectType(geometry);

            if (type == ObjectType.Point)
            {
                AppendPoint(builder, geometry);
                return;
            }

            //if (_settings.LinearRing)
            //{
            //	var linearRing = geometry as LinearRing;
            //	if (linearRing != null)
            //	{
            //		AppendLinearRing(builder, linearRing);
            //		return;
            //	}
            //}

            if (type == ObjectType.LineString)
            {
                AppendLineString(builder, geometry);
                return;
            }

            //if (_settings.Triangle)
            //{
            //	var triangle = geometry as Triangle;
            //	if (triangle != null)
            //	{
            //		AppendTriangle(builder, triangle);
            //		return;
            //	}
            //}

            if (type == ObjectType.Polygon)
            {
                AppendPolygon(builder, geometry);
                return;
            }

            if (type == ObjectType.MultiPoint)
            {
                AppendMultiPoint(builder, geometry);
                return;
            }

            if (type == ObjectType.MultiLineString)
            {
                AppendMultiLineString(builder, geometry);
                return;
            }

            if (type == ObjectType.MultiPolygon)
            {
                AppendMultiPolygon(builder, geometry);
                return;
            }

            if (type == ObjectType.GeometryCollection)
            {
                AppendGeometryCollection(builder, geometry);
                return;
            }

            throw new SerializationException("Geometry of type '" + geometry.GetType().Name + "' is not supported");
        }