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);
        }
Ejemplo n.º 7
0
        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);
            }
        }