Beispiel #1
0
        public void LineString3DReturnsPolyline3D(Type type, GeoJsonSerializerSettings serializerSettings, double x1, double y1, double z1, double x2, double y2, double z2)
        {
            serializerSettings.Dimensions = DimensionHandling.XYZ;
            var sut = new GeometryGeoJsonConverter(serializerSettings);

            var geoJson = $@"{{
  ""type"": ""LineString"",
  ""coordinates"": [
    [{x1.ToJsonString()}, {y1.ToJsonString()}, {z1.ToJsonString()}],
    [{x2.ToJsonString()}, {y2.ToJsonString()}, {z2.ToJsonString()}]
  ]
}}";

            var actual = (IPolyline)JsonConvert.DeserializeObject(geoJson, type, sut);

            Assert.Equal(x1, actual.FromPoint.X);
            Assert.Equal(y1, actual.FromPoint.Y);
            Assert.Equal(z1, actual.FromPoint.Z);

            Assert.Equal(x2, actual.ToPoint.X);
            Assert.Equal(y2, actual.ToPoint.Y);
            Assert.Equal(z2, actual.ToPoint.Z);

            Assert.True(((IZAware)actual).ZAware);
        }
Beispiel #2
0
            public void PointReturnsEmpty(GeoJsonSerializerSettings serializerSettings, double x, double y)
            {
                serializerSettings.Simplify = true;
                var sut = new GeometryGeoJsonConverter(serializerSettings);

                var geoJson = $@"{{
  ""type"": ""Point"",
  ""coordinates"": [{x.ToJsonString()}, {y.ToJsonString()}]
}}";

                var actual = JsonConvert.DeserializeObject <IPolygon>(geoJson, sut);

                Assert.True(actual.IsEmpty);
            }
Beispiel #3
0
            public void NullToPointReturnsNull(GeoJsonSerializerSettings serializerSettings, IPoint point)
            {
                serializerSettings.Simplify = true;

                var sut = new GeometryGeoJsonConverter(serializerSettings);

                var invalidPolyline = (IPolyline) new PolylineClass();

                invalidPolyline.FromPoint = point;

                var actual = JsonConvert.SerializeObject(invalidPolyline, Formatting.Indented, sut);

                Assert.Equal("null", actual);
            }
            public void PointReturnsMultipoint(GeoJsonSerializerSettings serializerSettings, double x, double y)
            {
                serializerSettings.Simplify = true;
                var sut = new GeometryGeoJsonConverter(serializerSettings);

                var geoJson = $@"{{
  ""type"": ""Point"",
  ""coordinates"": [{x.ToJsonString()}, {y.ToJsonString()}]
}}";

                var actual = (IPointCollection)JsonConvert.DeserializeObject <IMultipoint>(geoJson, sut);

                Assert.Equal(1, actual.PointCount);
                Assert.Equal(x, actual.Point[0].X);
                Assert.Equal(y, actual.Point[0].Y);
            }
Beispiel #5
0
            public void SinglePositionArrayReturnsEmpty(GeoJsonSerializerSettings serializerSettings, double x1, double y1)
            {
                serializerSettings.Simplify = true;
                var sut = new GeometryGeoJsonConverter(serializerSettings);

                var geoJson = $@"{{
  ""type"": ""LineString"",
  ""coordinates"": [
    [{x1.ToJsonString()}, {y1.ToJsonString()}]
  ]
}}";

                var actual = JsonConvert.DeserializeObject <IPolyline>(geoJson, sut);

                Assert.True(actual.IsEmpty);
            }
Beispiel #6
0
            public void OverlappedSegmentIsRemoved(GeoJsonSerializerSettings serializerSettings, ILine line,
                                                   IPoint midPoint, IPoint extensionPoint, ISpatialReference spatialReference)
            {
                serializerSettings.Simplify = true;

                var sut = new GeometryGeoJsonConverter(serializerSettings);

                // Find the midpoint to create the FromPoint of the overlapped segment.
                line.QueryPoint(esriSegmentExtension.esriNoExtension, 0.5, true, midPoint);

                // Extend pass the endpoint to create to ToPoint of the overlapped segment.
                line.QueryPoint(esriSegmentExtension.esriExtendAtTo, line.Length + line.Length / 2, false,
                                extensionPoint);

                var overlappedLine = (ILine) new LineClass();

                overlappedLine.FromPoint = midPoint;
                overlappedLine.ToPoint   = extensionPoint;

                var path = (ISegmentCollection) new PathClass();

                path.AddSegment((ISegment)line);
                path.AddSegment((ISegment)overlappedLine);

                var polyline = (IGeometryCollection) new PolylineClass();

                polyline.AddGeometry((IGeometry)path);

                ((IGeometry)polyline).SpatialReference = spatialReference;

                var actual   = JsonConvert.SerializeObject(polyline, Formatting.Indented, sut);
                var expected = $@"{{
  ""type"": ""LineString"",
  ""coordinates"": [
    [
      {line.FromPoint.X.ToJsonString()},
      {line.FromPoint.Y.ToJsonString()}
    ],
    [
      {extensionPoint.X.ToJsonString()},
      {extensionPoint.Y.ToJsonString()}
    ]
  ]
}}";

                JsonAssert.Equal(expected, actual);
            }
Beispiel #7
0
            public void TouchingPathsReturnsLineString(GeoJsonSerializerSettings serializerSettings, ILine line, IPoint point, ISpatialReference spatialReference)
            {
                serializerSettings.Simplify = true;
                var sut = new GeometryGeoJsonConverter(serializerSettings);

                var path1 = (ISegmentCollection) new PathClass();

                path1.AddSegment((ISegment)line);

                var otherLine = (ILine) new LineClass();

                otherLine.FromPoint = line.ToPoint;
                otherLine.ToPoint   = point;

                var path2 = (ISegmentCollection) new PathClass();

                path2.AddSegment((ISegment)otherLine);

                var polyline = (IGeometryCollection) new PolylineClass();

                polyline.AddGeometry((IGeometry)path1);
                polyline.AddGeometry((IGeometry)path2);

                ((IGeometry)polyline).SpatialReference = spatialReference;

                var actual   = JsonConvert.SerializeObject(polyline, Formatting.Indented, sut);
                var expected = $@"{{
  ""type"": ""LineString"",
  ""coordinates"": [
    [
      {line.FromPoint.X.ToJsonString()},
      {line.FromPoint.Y.ToJsonString()}
    ],
    [
      {line.ToPoint.X.ToJsonString()},
      {line.ToPoint.Y.ToJsonString()}
    ],
    [
      {point.X.ToJsonString()},
      {point.Y.ToJsonString()}
    ]
  ]
}}";

                JsonAssert.Equal(expected, actual);
            }
        public void Point3DReturnsMultipoint3D(Type type, GeoJsonSerializerSettings serializerSettings, double x, double y, double z)
        {
            serializerSettings.Dimensions = DimensionHandling.XYZ;
            var sut = new GeometryGeoJsonConverter(serializerSettings);

            var geoJson = $@"{{
  ""type"": ""Point"",
  ""coordinates"": [{x.ToJsonString()}, {y.ToJsonString()}, {z.ToJsonString()}]
}}";

            var actual = (IPointCollection)JsonConvert.DeserializeObject(geoJson, type, sut);

            Assert.Equal(1, actual.PointCount);
            Assert.Equal(x, actual.Point[0].X);
            Assert.Equal(y, actual.Point[0].Y);
            Assert.Equal(z, actual.Point[0].Z);

            Assert.True(((IZAware)actual).ZAware);
        }
            public void MultiSamePointReturnsUniquePoint(GeoJsonSerializerSettings serializerSettings, IMultipoint multiPoint, IPoint point)
            {
                serializerSettings.Simplify = true;
                var sut = new GeometryGeoJsonConverter(serializerSettings);

                multiPoint.SetEmpty();
                ((IPointCollection)multiPoint).AddPoint(point);
                ((IPointCollection)multiPoint).AddPoint(point);
                ((IPointCollection)multiPoint).AddPoint(point);

                var actual   = JsonConvert.SerializeObject(multiPoint, sut);
                var expected = $@"{{
  ""type"": ""Point"",
  ""coordinates"": [
    {point.X.ToJsonString()},
    {point.Y.ToJsonString()}
  ]
}}";

                JsonAssert.Equal(expected, actual);
            }
        public void Point3DReturnsJson(IPoint point)
        {
            var settings = new GeoJsonSerializerSettings
            {
                Dimensions = DimensionHandling.XYZ
            };
            var sut = new GeometryGeoJsonConverter(settings);

            ((IZAware)point).ZAware = true;

            var actual   = JsonConvert.SerializeObject(point, Formatting.Indented, sut);
            var expected = $@"{{
  ""type"": ""Point"",
  ""coordinates"": [
    {point.X.ToJsonString()},
    {point.Y.ToJsonString()},
    {point.Z.ToJsonString()}
  ]
}}";

            JsonAssert.Equal(expected, actual);
        }
Beispiel #11
0
 public TestGeometryGeoJsonConverter(GeoJsonSerializerSettings serializerSettings)
     : base(serializerSettings)
 {
 }