public void ConvertDataContainerToGeoJson_ShouldConvertToGeoJson() { var dataContainer = new DataContainer { markers = new List<MarkerData> { new MarkerData { latlng = new LatLng() } } }; var results = _converterService.ToAnyFormat(dataContainer, "geojson").Result.ToFeatureCollection(); Assert.AreEqual(1, results.Features.Count); }
public void ToGpx_WithData_ShouldReturnFullGpx() { var dataContainer = new DataContainer { markers = new List<MarkerData> { new MarkerData { latlng = new LatLng { lat = 1, lng = 2 } } }, routes = new List<RouteData> { new RouteData { name = "name", segments = new List<RouteSegmentData> { new RouteSegmentData {latlngzs = new List<LatLngZ> {new LatLngZ {lat = 3, lng = 4, z = 5}}} } } } }; var gpx = _converter.ToGpx(dataContainer); Assert.AreEqual(1, gpx.wpt.Length); Assert.AreEqual(1, gpx.wpt[0].lat); Assert.AreEqual(2, gpx.wpt[0].lon); Assert.AreEqual(0, gpx.rte.Length); Assert.AreEqual(1, gpx.trk.Length); Assert.AreEqual(1, gpx.trk[0].trkseg.Length); Assert.AreEqual(3, gpx.trk[0].trkseg[0].trkpt[0].lat); Assert.AreEqual(4, gpx.trk[0].trkseg[0].trkpt[0].lon); Assert.AreEqual(5, gpx.trk[0].trkseg[0].trkpt[0].ele); }
public void ConvertDataContainerToKml_ShouldConvertToKmlUsingGpsBabel() { var datacContainer = new DataContainer(); _gpsBabelGateway.ConvertFileFromat(Arg.Any<byte[]>(), Arg.Any<string>(), Arg.Any<string>()).Returns(Task.FromResult(_randomBytes)); var results = _converterService.ToAnyFormat(datacContainer, "kml").Result; CollectionAssert.AreEqual(_randomBytes, results); }
public void ConvertDataContainerToGpx_ShouldConvertToGpx() { var dataContainer = new DataContainer(); var results = _converterService.ToAnyFormat(dataContainer, "gpx").Result.ToGpx(); Assert.IsNull(results.wpt); Assert.IsNull(results.rte); Assert.IsNull(results.trk); }
public void ToGpx_NoData_ShouldReturnEmptyGpx() { var dataContainer = new DataContainer(); var gpx = _converter.ToGpx(dataContainer); Assert.AreEqual(0, gpx.wpt.Length); Assert.AreEqual(0, gpx.rte.Length); Assert.AreEqual(0, gpx.trk.Length); }
public gpxType ToGpx(DataContainer container) { var routes = (container.routes ?? new List<RouteData>()).Where(r => r.segments.SelectMany(s => s.latlngzs).Any()); return new gpxType { wpt = container.markers.Select(ToWptType).ToArray(), rte = new rteType[0], trk = routes.Select(r => new trkType { name = r.name, trkseg = r.segments.Select(ToTrksegType).ToArray() }).ToArray() }.UpdateBounds(); }
public DataContainer ToDataContainer(gpxType gpx) { gpx.UpdateBounds(); var container = new DataContainer { markers = (gpx.wpt ?? new wptType[0]).Select(ToMarkerData).ToList(), routes = ConvertRoutesToRoutesData(gpx.rte ?? new rteType[0]) }; container.routes.AddRange(ConvertTracksToRouteData(gpx.trk ?? new trkType[0])); if (gpx.metadata?.bounds != null) { UpdateBoundingBox(container, gpx.metadata.bounds); } return container; }
public async Task<byte[]> Create(DataContainer dataContainer) { _logger.Debug("Creating image for thumbnail started."); var allLocations = dataContainer.routes.SelectMany(r => r.segments).SelectMany(s => s.latlngzs.OfType<LatLng>()).ToArray(); if (!allLocations.Any()) { allLocations = new[] { dataContainer.northEast, dataContainer.southWest }; } var backgroundImage = await GetBackGroundImage(GetAddressTemplate(dataContainer), allLocations); var points = dataContainer.routes .Select(r => r.segments.SelectMany(s => s.latlngzs) .Select(l => ConvertLatLngZToPoint(l, backgroundImage)) .ToArray()); DrawRouteOnImage(backgroundImage.Image, points); var resizedForFacebook = new Bitmap(backgroundImage.Image, new Size(600, 315)); var imageStream = new MemoryStream(); resizedForFacebook.Save(imageStream, ImageFormat.Png); _logger.Debug("Creating image for thumbnail completed."); return imageStream.ToArray(); }
public void LocalTiles_RouteWithNoPoints_ShouldReturnBackgroungImageFromBounds() { var dataContainer = new DataContainer { northEast = new LatLng { lat = 0.1, lng = 0.1 }, southWest = new LatLng { lat = 0.15, lng = 0.15 }, baseLayer = new LayerData { address = "/Tiles/{z}/{x}/{y}.png"}, routes = new List<RouteData> { new RouteData() } }; var ressults = _imageCreationService.Create(dataContainer).Result; Assert.IsTrue(ressults.Length > 0); _remoteFileFetcherGateway.Received(8).GetFileContent(Arg.Any<string>()); }
public void ConvertDataContainerToGpxSingleTrack_ShouldConvertToGpxUsingGpsBabelAndThenToGpxSingleTrack() { var datacContainer = new DataContainer { routes = new List<RouteData> { new RouteData { segments = new List<RouteSegmentData> { new RouteSegmentData { latlngzs = new List<LatLngZ> { new LatLngZ {lat = 1, lng = 2}, new LatLngZ {lat = 3, lng = 4} } }, new RouteSegmentData { latlngzs = new List<LatLngZ> { new LatLngZ {lat = 5, lng = 6}, new LatLngZ {lat = 7, lng = 8} } } } } } }; var results = _converterService.ToAnyFormat(datacContainer, "gpx_single_track").Result; var gpx = results.ToGpx(); Assert.AreEqual(1, gpx.trk.Length); Assert.AreEqual(1, gpx.trk.First().trkseg.Length); Assert.AreEqual(1, gpx.trk.First().trkseg.First().trkpt.First().lat); Assert.AreEqual(8, gpx.trk.First().trkseg.First().trkpt.Last().lon); }
private void UpdateBoundingBox(DataContainer container, boundsType bounds) { container.northEast = new LatLngZ { lat = (double)bounds.maxlat, lng = (double)bounds.maxlon }; container.southWest = new LatLngZ { lat = (double)bounds.minlat, lng = (double)bounds.minlon }; }
public void PostSaveFile_ConvertToGpx_ShouldReturnByteArray() { var dataContainer = new DataContainer { routes = new List<RouteData> { new RouteData { segments = new List<RouteSegmentData> { new RouteSegmentData {latlngzs = new List<LatLngZ> {new LatLngZ()}} } } }, markers = new List<MarkerData> { new MarkerData { latlng = new LatLng {lat = 10, lng = 10}, title = "title" } } }; var expectedGpx = _gpxDataContainerConverter.ToGpx(dataContainer); expectedGpx.creator = "IsraelHikingMap"; var bytes = _controller.PostSaveFile("gpx", dataContainer).Result; CollectionAssert.AreEqual(expectedGpx.ToBytes(), bytes); }
public Task<byte[]> ToAnyFormat(DataContainer dataContainer, string format) { var gpx = _gpxDataContainerConverter.ToGpx(dataContainer); gpx.creator = ISRAEL_HIKING_MAP; return Convert(gpx.ToBytes(), GPX, format); }
private static string GetAddressTemplate(DataContainer dataContainer) { var address = string.IsNullOrWhiteSpace(dataContainer.baseLayer.address) ? "http://israelhiking.osm.org.il/tiles/{z}/{x}/{y}.png" : dataContainer.baseLayer.address; if (address.StartsWith("http") == false && address.StartsWith("www") == false) { address = "http://israelhiking.osm.org.il/" + address; } return address; }
public void ConvertToGpxAndBack_WithData_ShouldReturnTheSameData() { var dataContainer = new DataContainer { markers = new List<MarkerData> { new MarkerData { latlng = new LatLng { lat = 1, lng = 2 } } }, routes = new List<RouteData> { new RouteData { name = "name1", segments = new List<RouteSegmentData> { new RouteSegmentData { latlngzs = new List<LatLngZ> { new LatLngZ {lat = 3, lng = 4, z = 5}, new LatLngZ {lat = 6, lng = 7, z = 8} }, routePoint = new LatLng { lat = 6, lng = 7} } } }, new RouteData { name = "name2", segments = new List<RouteSegmentData> { new RouteSegmentData {latlngzs = new List<LatLngZ> { new LatLngZ {lat = 13, lng = 14, z = 15}, new LatLngZ {lat = 16, lng = 17, z = 18} }} } } } }; var gpx = _converter.ToGpx(dataContainer); var newDataContainer = _converter.ToDataContainer(gpx); Assert.AreEqual(dataContainer.routes.Count, newDataContainer.routes.Count); Assert.AreEqual(dataContainer.routes.First().name, newDataContainer.routes.First().name); CollectionAssert.AreEqual(dataContainer.routes.First().segments.First().latlngzs, newDataContainer.routes.First().segments.First().latlngzs); Assert.AreEqual(dataContainer.markers.First().latlng, newDataContainer.markers.First().latlng); Assert.AreEqual(dataContainer.routes.Last().name, newDataContainer.routes.Last().name); }