Ejemplo n.º 1
0
        public void GetRouting_Car_ShouldReturnLineStringFromGateway()
        {
            _graphHopperGateway.GetRouting(Arg.Any <RoutingGatewayRequest>())
            .Returns(new LineString(new []
            {
                new Coordinate(1, 1),
                new Coordinate(1.5, 1.5),
                new Coordinate(2, 2)
            }));

            var results = _controller.GetRouting("1,1", "2,2", RoutingType.FOUR_WHEEL_DRIVE).Result as OkObjectResult;
            var content = results.Value as FeatureCollection;

            Assert.AreEqual(1, content.Features.Count);
            var lineString = content.Features.First().Geometry as LineString;

            Assert.IsNotNull(lineString);
            var points = lineString.Coordinates.OfType <Coordinate>();

            Assert.AreEqual(3, points.Count());
            Assert.AreEqual(1, points.First().X);
            Assert.AreEqual(1, points.First().Y);
            Assert.AreEqual(2, points.Last().X);
            Assert.AreEqual(2, points.Last().Y);
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> GetRouting(string from, string to, string type)
        {
            LineString lineString;
            var        profile   = ConvertProfile(type);
            var        pointFrom = await GetGeographicPosition(from);

            var pointTo = await GetGeographicPosition(to);

            if (ModelState.IsValid == false)
            {
                return(BadRequest(ModelState));
            }
            if (profile == ProfileType.None)
            {
                lineString = new LineString(new[] { pointFrom, pointTo });
            }
            else
            {
                lineString = await _graphHopperGateway.GetRouting(new RoutingGatewayRequest
                {
                    From    = from,
                    To      = to,
                    Profile = profile,
                });

                if (!lineString.Coordinates.Any())
                {
                    lineString = new LineString(new[] { pointFrom, pointTo });
                }
                foreach (var coordinate in lineString.Coordinates)
                {
                    coordinate.Z = await _elevationDataStorage.GetElevation(coordinate);
                }
            }
            var table = new AttributesTable
            {
                { "Name", "Routing from " + @from + " to " + to + " profile type: " + profile },
                { "Creator", "IsraelHikingMap" }
            };
            var feature = new Feature(lineString, table);

            return(Ok(new FeatureCollection(new Collection <IFeature> {
                feature
            })));
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> GetRouting(string from, string to, string type)
        {
            LineString lineString;
            var        profile   = ConvertProfile(type);
            var        pointFrom = await GetGeographicPosition(from);

            var pointTo = await GetGeographicPosition(to);

            if (ModelState.IsValid == false)
            {
                return(BadRequest(ModelState));
            }
            if (profile == ProfileType.None)
            {
                lineString = GetDenseStraightLine(pointFrom, pointTo);
            }
            else
            {
                lineString = await _graphHopperGateway.GetRouting(new RoutingGatewayRequest
                {
                    From    = from,
                    To      = to,
                    Profile = profile,
                });

                if (!lineString.Coordinates.Any())
                {
                    lineString = _geometryFactory.CreateLineString(new[] { pointFrom, pointTo }) as LineString;
                }
            }
            ElevationSetterHelper.SetElevation(lineString, _elevationDataStorage);
            var table = new AttributesTable
            {
                { "Name", "Routing from " + @from + " to " + to + " profile type: " + profile },
                { "Creator", "IsraelHikingMap" }
            };
            var feature = new Feature(lineString, table);

            return(Ok(new FeatureCollection {
                feature
            }));
        }