public void TestSolve() { var svc = new RouteService(); var solveParameters = new SolveParameters { stops = new double[][] { new double[] { -122.4079, 37.78356 }, new double[] { -122.404, 37.782 } }, ////restrictionAttributeNames = new string[] { "none" } }; SolveResult result = svc.Solve(solveParameters, this.Token); Assert.IsInstanceOfType(result, typeof(SolveResult)); Assert.IsNotNull(result.directions, "Directions should not be null"); Assert.AreEqual(result.directions.Length, 1, "Directions should have a single element."); Direction direction = result.directions.First(); // Check some properties for expected results. Assert.AreEqual(direction.routeId, 1); Assert.AreEqual(direction.routeName, "Location 1 - Location 2"); Assert.IsTrue(direction.features.Length > 1); Assert.AreEqual(direction.features.First().attributes["maneuverType"], "esriDMTDepart"); Assert.AreEqual(direction.features.Last().attributes["maneuverType"], "esriDMTStop"); Assert.IsNotNull(result.routes); Assert.AreEqual(result.routes.spatialReference.wkid, 4326); }
/// <summary> /// Determines a route between two or more points. /// </summary> /// <param name="parameters"></param> /// <param name="token"></param> /// <returns></returns> /// <exception cref="SolveException"></exception> public SolveResult Solve(SolveParameters parameters, Token token) { UriBuilder uriBuilder = new UriBuilder(this.Uri); uriBuilder.Path += "solve"; string qs = parameters.ToQueryString(); if (token != null) { qs = string.Format("token={1}&{0}&f=json", qs, token.AccessToken); } uriBuilder.Query = qs; var request = HttpWebRequest.Create(uriBuilder.Uri) as HttpWebRequest; string json = null; using (var response = request.GetResponse() as HttpWebResponse) { var stream = response.GetResponseStream(); using (var streamReader = new StreamReader(stream)) { json = streamReader.ReadToEnd(); } } // If the request returned an error, throw an exception. var errorResponse = JsonConvert.DeserializeObject<SolveErrorResponse>(json); if (errorResponse.error != null) { throw new SolveException(errorResponse); } SolveResult solveResult = null; solveResult = JsonConvert.DeserializeObject<SolveResult>(json); return solveResult; }
public void TestSolve2() { const string stopsJson = "{\"features\":[{\"geometry\":{\"x\":-122.473948,\"y\":37.7436},\"attributes\":{\"Name\":\"Office\",\"Attr_TravelTime\":0}},{\"geometry\":{\"x\":-122.439613,\"y\":37.746144},\"attributes\":{\"Name\":\"Store 1\",\"Attr_TravelTime\":25}},{\"geometry\":{\"x\":-122.488254,\"y\":37.754092},\"attributes\":{\"Name\":\"Store 2\",\"Attr_TravelTime\":20}},{\"geometry\":{\"x\":-122.44915,\"y\":37.731837},\"attributes\":{\"Name\":\"Store 3\",\"Attr_TravelTime\":30}},{\"geometry\":{\"x\":-122.46441,\"y\":37.774756},\"attributes\":{\"Name\":\"Store 4\",\"Attr_TravelTime\":25}},{\"geometry\":{\"x\":-122.426896,\"y\":37.769352},\"attributes\":{\"Name\":\"Store 5\",\"Attr_TravelTime\":20}},{\"geometry\":{\"x\":-122.473948,\"y\":37.7436},\"attributes\":{\"Name\":\"Office\",\"Attr_TravelTime\":0}}]}"; var stopFeatures = JsonConvert.DeserializeObject <FeatureSet>(stopsJson); Assert.AreEqual(stopFeatures.features.Length, 7, "There should be seven stops."); var solveParams = new SolveParameters { stopsAsFeatures = stopFeatures, findBestSequence = true, preserveFirstStop = true, preserveLastStop = true, returnDirections = true, returnRoutes = true }; var svc = new RouteService(); SolveResult result = svc.Solve(solveParams, this.Token); Assert.IsInstanceOfType(result, typeof(SolveResult)); Assert.IsNotNull(result.routes, "Routes should not be null."); Assert.IsNotNull(result.directions, "Directions should not be null."); }
public SolveProjector(ProjectorEntry pe, double radius, ProjectionType type, ScreenTypes tranformType, SolveParameters solveParameters) { projectionType = type; screenType = tranformType; this.solveParameters = solveParameters; switch (type) { case ProjectionType.View: { Fov.Value = pe.ViewProjection.FOV; Aspect.Value = pe.ViewProjection.Aspect; OffsetX.Value = pe.ViewProjection.XOffset; OffsetY.Value = pe.ViewProjection.YOffset; RadialCenterX.Value = pe.ViewProjection.RadialCenterX; RadialCenterY.Value = pe.ViewProjection.RadialCenterY; RadialAmountX.Value = pe.ViewProjection.RadialAmountX; RadialAmountY.Value = pe.ViewProjection.RadialAmountY; Pitch.Value = pe.ViewTransform.Pitch; Heading.Value = pe.ViewTransform.Heading; Roll.Value = pe.ViewTransform.Roll; X.Value = -pe.ViewTransform.X; Y.Value = pe.ViewTransform.Y; Z.Value = pe.ViewTransform.Z; } break; case ProjectionType.FishEye: case ProjectionType.Projector: { Fov.Value = pe.ProjectorProjection.FOV; Aspect.Value = pe.ProjectorProjection.Aspect; OffsetX.Value = pe.ProjectorProjection.XOffset; OffsetY.Value = pe.ProjectorProjection.YOffset; RadialCenterX.Value = pe.ProjectorProjection.RadialCenterX; RadialCenterY.Value = pe.ProjectorProjection.RadialCenterY; RadialAmountX.Value = pe.ProjectorProjection.RadialAmountX; RadialAmountY.Value = pe.ProjectorProjection.RadialAmountY; Pitch.Value = pe.ProjectorTransform.Pitch; Heading.Value = pe.ProjectorTransform.Heading; Roll.Value = pe.ProjectorTransform.Roll; X.Value = -pe.ProjectorTransform.X; Y.Value = pe.ProjectorTransform.Y; Z.Value = pe.ProjectorTransform.Z; } break; case ProjectionType.Solved: { Fov.Value = pe.SolvedProjection.FOV; Aspect.Value = pe.SolvedProjection.Aspect; OffsetX.Value = pe.SolvedProjection.XOffset; OffsetY.Value = pe.SolvedProjection.YOffset; RadialCenterX.Value = pe.ProjectorProjection.RadialCenterX; RadialCenterY.Value = pe.ProjectorProjection.RadialCenterY; RadialAmountX.Value = pe.ProjectorProjection.RadialAmountX; RadialAmountY.Value = pe.ProjectorProjection.RadialAmountY; Pitch.Value = pe.SolvedTransform.Pitch; Heading.Value = pe.SolvedTransform.Heading; Roll.Value = pe.SolvedTransform.Roll; X.Value = -pe.SolvedTransform.X; Y.Value = pe.SolvedTransform.Y; Z.Value = pe.SolvedTransform.Z; } break; } width = pe.Width; height = pe.Height; sphereRadius = radius; }
public void TestSolve2() { const string stopsJson = "{\"features\":[{\"geometry\":{\"x\":-122.473948,\"y\":37.7436},\"attributes\":{\"Name\":\"Office\",\"Attr_TravelTime\":0}},{\"geometry\":{\"x\":-122.439613,\"y\":37.746144},\"attributes\":{\"Name\":\"Store 1\",\"Attr_TravelTime\":25}},{\"geometry\":{\"x\":-122.488254,\"y\":37.754092},\"attributes\":{\"Name\":\"Store 2\",\"Attr_TravelTime\":20}},{\"geometry\":{\"x\":-122.44915,\"y\":37.731837},\"attributes\":{\"Name\":\"Store 3\",\"Attr_TravelTime\":30}},{\"geometry\":{\"x\":-122.46441,\"y\":37.774756},\"attributes\":{\"Name\":\"Store 4\",\"Attr_TravelTime\":25}},{\"geometry\":{\"x\":-122.426896,\"y\":37.769352},\"attributes\":{\"Name\":\"Store 5\",\"Attr_TravelTime\":20}},{\"geometry\":{\"x\":-122.473948,\"y\":37.7436},\"attributes\":{\"Name\":\"Office\",\"Attr_TravelTime\":0}}]}"; var stopFeatures = JsonConvert.DeserializeObject<FeatureSet>(stopsJson); Assert.AreEqual(stopFeatures.features.Length, 7, "There should be seven stops."); var solveParams = new SolveParameters { stopsAsFeatures = stopFeatures, findBestSequence = true, preserveFirstStop = true, preserveLastStop = true, returnDirections = true, returnRoutes = true }; var svc = new RouteService(); SolveResult result = svc.Solve(solveParams, this.Token); Assert.IsInstanceOfType(result, typeof(SolveResult)); Assert.IsNotNull(result.routes, "Routes should not be null."); Assert.IsNotNull(result.directions, "Directions should not be null."); }
public void TestSolve() { var svc = new RouteService(); var solveParameters = new SolveParameters { stops = new double[][] { new double[] {-122.4079,37.78356}, new double[] {-122.404,37.782} }, ////restrictionAttributeNames = new string[] { "none" } }; SolveResult result = svc.Solve(solveParameters, this.Token); Assert.IsInstanceOfType(result, typeof(SolveResult)); Assert.IsNotNull(result.directions, "Directions should not be null"); Assert.AreEqual(result.directions.Length, 1, "Directions should have a single element."); Direction direction = result.directions.First(); // Check some properties for expected results. Assert.AreEqual(direction.routeId, 1); Assert.AreEqual(direction.routeName, "Location 1 - Location 2"); Assert.IsTrue(direction.features.Length > 1); Assert.AreEqual(direction.features.First().attributes["maneuverType"], "esriDMTDepart"); Assert.AreEqual(direction.features.Last().attributes["maneuverType"], "esriDMTStop"); Assert.IsNotNull(result.routes); Assert.AreEqual(result.routes.spatialReference.wkid, 4326); }
public SolveProjector(ProjectorEntry pe, double radius, ProjectionType type, ScreenTypes tranformType, SolveParameters solveParameters) { this.projectionType = type; this.screenType = tranformType; this.solveParameters = solveParameters; switch (type) { case ProjectionType.View: { Fov.Value = pe.ViewProjection.FOV; Aspect.Value = pe.ViewProjection.Aspect; OffsetX.Value = pe.ViewProjection.XOffset; OffsetY.Value = pe.ViewProjection.YOffset; RadialCenterX.Value = pe.ViewProjection.RadialCenterX; RadialCenterY.Value = pe.ViewProjection.RadialCenterY; RadialAmountX.Value = pe.ViewProjection.RadialAmountX; RadialAmountY.Value = pe.ViewProjection.RadialAmountY; Pitch.Value = pe.ViewTransform.Pitch; Heading.Value = pe.ViewTransform.Heading; Roll.Value = pe.ViewTransform.Roll; X.Value = -pe.ViewTransform.X; Y.Value = pe.ViewTransform.Y; Z.Value = pe.ViewTransform.Z; } break; case ProjectionType.FishEye: case ProjectionType.Projector: { Fov.Value = pe.ProjectorProjection.FOV; Aspect.Value = pe.ProjectorProjection.Aspect; OffsetX.Value = pe.ProjectorProjection.XOffset; OffsetY.Value = pe.ProjectorProjection.YOffset; RadialCenterX.Value = pe.ProjectorProjection.RadialCenterX; RadialCenterY.Value = pe.ProjectorProjection.RadialCenterY; RadialAmountX.Value = pe.ProjectorProjection.RadialAmountX; RadialAmountY.Value = pe.ProjectorProjection.RadialAmountY; Pitch.Value = pe.ProjectorTransform.Pitch; Heading.Value = pe.ProjectorTransform.Heading; Roll.Value = pe.ProjectorTransform.Roll; X.Value = -pe.ProjectorTransform.X; Y.Value = pe.ProjectorTransform.Y; Z.Value = pe.ProjectorTransform.Z; } break; case ProjectionType.Solved: { Fov.Value = pe.SolvedProjection.FOV; Aspect.Value = pe.SolvedProjection.Aspect; OffsetX.Value = pe.SolvedProjection.XOffset; OffsetY.Value = pe.SolvedProjection.YOffset; RadialCenterX.Value = pe.ProjectorProjection.RadialCenterX; RadialCenterY.Value = pe.ProjectorProjection.RadialCenterY; RadialAmountX.Value = pe.ProjectorProjection.RadialAmountX; RadialAmountY.Value = pe.ProjectorProjection.RadialAmountY; Pitch.Value = pe.SolvedTransform.Pitch; Heading.Value = pe.SolvedTransform.Heading; Roll.Value = pe.SolvedTransform.Roll; X.Value = -pe.SolvedTransform.X; Y.Value = pe.SolvedTransform.Y; Z.Value = pe.SolvedTransform.Z; } break; default: break; } useGrid = pe.UseGrid; width = pe.Width; height = pe.Height; sphereRadius = radius; if (useGrid) { LoadGrid(pe.Constraints); } }