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); }
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"); }