public static double GetLength(GeographyLineString line)
 {
     if (line == null)
     {
         throw new ArgumentNullException("line");
     }
     return line.Length().Value;
 }
        /// <summary>
        /// Sends the current spatial object to the given pipeline with a figure that represents this LineString
        /// </summary>
        /// <param name="lineString">GeographyLineString instance to serialize.</param>
        /// <param name="pipeline">The pipeline to populate to</param>
        internal static void SendFigure(this GeographyLineString lineString, GeographyPipeline pipeline)
        {
            ReadOnlyCollection <GeographyPoint> points = lineString.Points;

            for (int i = 0; i < points.Count; ++i)
            {
                if (i == 0)
                {
                    pipeline.BeginFigure(new GeographyPosition(points[i].Latitude, points[i].Longitude, points[i].Z, points[i].M));
                }
                else
                {
                    pipeline.LineTo(new GeographyPosition(points[i].Latitude, points[i].Longitude, points[i].Z, points[i].M));
                }
            }

            if (points.Count > 0)
            {
                pipeline.EndFigure();
            }
        }
        static ODataSpatialTypeUtil()
        {
            // Geometry type values.
            GeometryValue = GeometryFactory.Point(32.0, -10.0).Build();
            GeometryPointValue = GeometryFactory.Point(33.1, -11.0).Build();
            GeometryLineStringValue = GeometryFactory.LineString(33.1, -11.5).LineTo(35.97, -11).Build();
            GeometryPolygonValue = GeometryFactory.Polygon().Ring(33.1, -13.6).LineTo(35.97, -11.15).LineTo(11.45, 87.75).Ring(35.97, -11).LineTo(36.97, -11.15).LineTo(45.23, 23.18).Build();
            GeometryCollectionValue = GeometryFactory.Collection().Point(-19.99, -12.0).Build();
            GeometryMultiPointValue = GeometryFactory.MultiPoint().Point(10.2, 11.2).Point(11.9, 11.6).Build();
            GeometryMultiLineStringValue = GeometryFactory.MultiLineString().LineString(10.2, 11.2).LineTo(11.9, 11.6).LineString(16.2, 17.2).LineTo(18.9, 19.6).Build();
            GeometryMultiPolygonValue = GeometryFactory.MultiPolygon().Polygon().Ring(10.2, 11.2).LineTo(11.9, 11.6).LineTo(11.45, 87.75).Ring(16.2, 17.2).LineTo(18.9, 19.6).LineTo(11.45, 87.75).Build();

            // Geography type values.
            GeographyValue = GeographyFactory.Point(32.0, -100.0).Build();
            GeographyPointValue = GeographyFactory.Point(33.1, -110.0).Build();
            GeographyLineStringValue = GeographyFactory.LineString(33.1, -110.0).LineTo(35.97, -110).Build();
            GeographyPolygonValue = GeographyFactory.Polygon().Ring(33.1, -110.0).LineTo(35.97, -110.15).LineTo(11.45, 87.75).Ring(35.97, -110).LineTo(36.97, -110.15).LineTo(45.23, 23.18).Build();
            GeographyCollectionValue = GeographyFactory.Collection().Point(-19.99, -12.0).Build();
            GeographyMultiPointValue = GeographyFactory.MultiPoint().Point(10.2, 11.2).Point(11.9, 11.6).Build();
            GeographyMultiLineStringValue = GeographyFactory.MultiLineString().LineString(10.2, 11.2).LineTo(11.9, 11.6).LineString(16.2, 17.2).LineTo(18.9, 19.6).Build();
            GeographyMultiPolygonValue = GeographyFactory.MultiPolygon().Polygon().Ring(10.2, 11.2).LineTo(11.9, 11.6).LineTo(11.45, 87.75).Ring(16.2, 17.2).LineTo(18.9, 19.6).LineTo(11.45, 87.75).Build();
        }
Exemple #4
0
 public bool Equals(GeographyLineString other)
 {
     return(this.BaseEquals(other) ?? this.Points.SequenceEqual(other.Points));
 }
 public bool Equals(GeographyLineString other)
 {
     return this.BaseEquals(other) ?? this.Points.SequenceEqual(other.Points);
 }
        /// <summary>
        /// Writes out a GeographyLineString value in geojson format.
        /// {
        ///      "__metadata": {"type": "Edm.GeographyLineString"}, 
        ///      { "type" :"LineString",
        ///          "coordinates": { [-122.1202778,47.6741667] } ,
        ///          "crs":{"type":"name","properties":{"name":"EPSG:4326"}}
        ///      }
        /// }
        /// </summary>
        /// <param name="geographyLineStringValue">The geography value to serialize into Json</param>
        /// <param name="writer">The Json writer being used to write out a Json payload</param>
        private static void WriteGeographyLineString(GeographyLineString lineString, JsonWriter writer)
        {
            // { 
            writer.StartObjectScope();

            //  "__metadata":
            writer.WriteName(JsonMetadataString);
            //      {
            writer.StartObjectScope();

            // "type"
            writer.WriteName(JsonTypeString);

            // "Edm.GeographyLineString"
            writer.WriteValue(Gml_Edm_GeographyLineStringName);

            //      }
            writer.EndScope();

            //  "type":"LineString",
            writer.WriteName(JsonTypeString);
            writer.WriteValue(GmlLineString);

            //  "coordinates":
            writer.WriteName(JsonCoOrdinatesString);

            // [
            writer.StartArrayScope();
            foreach (var point in lineString.Points)
            {
                WritePointCoordinates(writer, point);
            }

            // ]
            writer.EndScope();

            // 	"crs": {"type": "name", "properties": {"name": "EPSG:4326"}}
            WriteCrsElement(writer, lineString.CoordinateSystem.EpsgId);

            // }
            writer.EndScope();
        }