private void AppendCoordinate(StringBuilder builder, CoordinateInfo coordinate) { builder.Append(coordinate.X.ToString(CultureInfo.InvariantCulture)); builder.Append(" "); builder.Append(coordinate.Y.ToString(CultureInfo.InvariantCulture)); if (coordinate.Z.HasValue && _settings.MaxDimesions > 2) { builder.Append(" "); builder.Append(coordinate.Z.Value.ToString(CultureInfo.InvariantCulture)); } if (coordinate.M.HasValue && _settings.MaxDimesions > 3) { builder.Append(" "); builder.Append(coordinate.M.Value.ToString(CultureInfo.InvariantCulture)); } }
private static void WriteJsonCoordinate(JsonWriter writer, CoordinateInfo coordinate) { writer.WriteStartArray(); writer.WriteValue(coordinate.X); writer.WriteValue(coordinate.Y); if (coordinate.Z.HasValue) { writer.WriteValue(coordinate.Z.Value); } if (coordinate.Z.HasValue && coordinate.M.HasValue) { writer.WriteValue(coordinate.M.Value); } writer.WriteEndArray(); }
private bool TryParseCoordinate(RavenJArray coordinates, out CoordinateInfo result) { if (coordinates != null && coordinates.Length > 1 && coordinates.All(x => x is RavenJValue)) { var vals = coordinates.Cast <RavenJValue>().ToList(); if (vals.All(x => x.Type == JTokenType.Float || x.Type == JTokenType.Integer)) { result = new CoordinateInfo { X = Convert.ToDouble(vals[0].Value), Y = Convert.ToDouble(vals[1].Value), Z = vals.Count > 2 ? Convert.ToDouble(vals[2].Value) : (double?)null, M = vals.Count > 3 ? Convert.ToDouble(vals[3].Value) : (double?)null }; return(true); } } result = null; return(false); }
private bool TryParseCoordinateArrayArrayArray(RavenJArray coordinates, out CoordinateInfo[][][] result) { result = null; if (coordinates == null) return false; var valid = coordinates.All(x => x is RavenJArray); if (!valid) return false; var tempResult = new CoordinateInfo[coordinates.Length][][]; for (var index = 0; index < coordinates.Length; index++) { if (!TryParseCoordinateArrayArray((RavenJArray)coordinates[index], out tempResult[index])) return false; } result = tempResult; return true; }
private bool TryParseCoordinate(RavenJArray coordinates, out CoordinateInfo result) { if (coordinates != null && coordinates.Length > 1 && coordinates.All(x => x is RavenJValue)) { var vals = coordinates.Cast<RavenJValue>().ToList(); if (vals.All(x => x.Type == JTokenType.Float || x.Type == JTokenType.Integer)) { result = new CoordinateInfo { X = Convert.ToDouble(vals[0].Value), Y = Convert.ToDouble(vals[1].Value), Z = vals.Count > 2 ? Convert.ToDouble(vals[2].Value) : (double?) null, M = vals.Count > 3 ? Convert.ToDouble(vals[3].Value) : (double?) null }; return true; } } result = null; return false; }
private Dimensions GetDimensions(CoordinateInfo[] coordinates) { return coordinates.Aggregate(Dimensions.XY, (current, coordinate) => current | coordinate.GetDimensions()); }
private void AppendCoordinate(StringBuilder builder, CoordinateInfo coordinate) { builder.Append(coordinate.X.ToString(CultureInfo.InvariantCulture)); builder.Append(" "); builder.Append(coordinate.Y.ToString(CultureInfo.InvariantCulture)); if (coordinate.Z.HasValue && _settings.MaxDimesions > 2) { builder.Append(" "); builder.Append(coordinate.Z.Value.ToString(CultureInfo.InvariantCulture)); } if (coordinate.M.HasValue && _settings.MaxDimesions > 3) { builder.Append(" "); builder.Append(coordinate.M.Value.ToString(CultureInfo.InvariantCulture)); } }
private void AppendCoordinates(StringBuilder builder, CoordinateInfo[] coordinates) { for (var i = 0; i < coordinates.Length; i++) { if (i > 0) builder.Append(", "); AppendCoordinate(builder, coordinates[i]); } }
//private void AppendTriangle(StringBuilder builder, object polygon) //{ // builder.Append("TRIANGLE"); // AppendDimensions(builder, polygon); // builder.Append(" "); // AppendPolygonInner(builder, polygon); //} private void AppendPolygonInner(StringBuilder builder, CoordinateInfo[][] polygon) { if (polygon.Length == 0) { builder.Append("EMPTY"); return; } builder.Append("("); AppendLineStringInner(builder, polygon[0]); for (var i = 1; i < polygon.Length; i++) { builder.Append(", "); AppendLineStringInner(builder, polygon[i]); } builder.Append(")"); }
//private void AppendLinearRing(StringBuilder builder, object linearRing) //{ // builder.Append("LINEARRING"); // AppendDimensions(builder, linearRing); // builder.Append(" "); // AppendLineStringInner(builder, linearRing.Coordinates); //} private void AppendLineStringInner(StringBuilder builder, CoordinateInfo[] lineString) { if (lineString.Length == 0) { builder.Append("EMPTY"); return; } builder.Append("("); AppendCoordinates(builder, lineString); builder.Append(")"); }
private void AppendPointInner(StringBuilder builder, CoordinateInfo point) { if (point == null) { builder.Append("EMPTY"); return; } builder.Append("("); AppendCoordinate(builder, point); builder.Append(")"); }
protected static void WriteJsonCoordinatesEnumerable2(JsonWriter writer, CoordinateInfo[][][] coordinates) { writer.WriteStartArray(); foreach (var coordinate in coordinates) WriteJsonCoordinatesEnumerable(writer, coordinate); writer.WriteEndArray(); }
private static void WriteJsonCoordinate(JsonWriter writer, CoordinateInfo coordinate) { writer.WriteStartArray(); writer.WriteValue(coordinate.X); writer.WriteValue(coordinate.Y); if (coordinate.Z.HasValue) writer.WriteValue(coordinate.Z.Value); if (coordinate.Z.HasValue && coordinate.M.HasValue) writer.WriteValue(coordinate.M.Value); writer.WriteEndArray(); }