/// <summary> /// Method collects information from solve request data for planned date and /// builds request object. /// </summary> /// <param name="data">Required data to get information from.</param> /// <exception cref="T:System.ArgumentNullException"> /// <paramref name="data"/> is null reference.</exception> /// <returns>Request object with filled information for request.</returns> public SubmitDiscoveryRequest BuildRequest(DiscoveryRequestData data) { // Validate inputs. if (data == null) { throw new ArgumentNullException("data"); } // Build request object. SubmitDiscoveryRequest req = new SubmitDiscoveryRequest(); if (data.RegionPoint != null) { int wkid = data.MapExtent.SpatialReference.WKID; // Get depot point converted with correct spatial reference. Point depotPoint = (Point)data.RegionPoint; Point wmPoint = WebMercatorUtil.ProjectPointToWebMercator(depotPoint, wkid); GPPoint gpPoint = GPObjectHelper.PointToGPPoint(wmPoint); gpPoint.SpatialReference = new GPSpatialReference(wkid); // Fill required options. req.Geometry = gpPoint; req.GeometryType = NAGeometryType.esriGeometryPoint; req.SpatialReference = wkid; req.ResponseFormat = NAOutputFormat.JSON; req.Layers = NAIdentifyOperationLayers.AllLayers; req.Tolerance = DEFAULT_TOLERANCE; req.ImageDisplay = _GetImageDisplayParameter(data.MapExtent); req.MapExtent = string.Format(MAP_EXTENT_PARAMETER_FORMAT, data.MapExtent.XMin, data.MapExtent.YMin, data.MapExtent.XMax, data.MapExtent.YMax); // Do not return geometry to optimize request. req.ReturnGeometry = false; req.ReturnZ = false; req.ReturnM = false; // Fill non-required options. req.LayerDefinitions = string.Empty; req.Time = string.Empty; req.LayerTimeOptions = string.Empty; req.MaxAllowableOffset = string.Empty; req.DynamicLayers = string.Empty; } return(req); }
/// <summary> /// Fixes VRP tool names with correct regional info. /// </summary> /// <param name="schedule">Current schedule, which is used for routing operation.</param> private void _FixRegionalRoutingToolsInfo(Schedule schedule) { Debug.Assert(schedule != null); // Get point at which routes region will be detected. var currentRegionPoint = DiscoveryRequestBuilder.GetPointForRegionRequest(schedule.Routes); // If region point hasn't been changed - do nothing. if (_lastRegionPoint == currentRegionPoint) { return; } // Remember current point as last checked point. _lastRegionPoint = currentRegionPoint; // Detect current region name to create VRP service. var builder = new DiscoveryRequestBuilder(); // Build discovery request. var reqData = new DiscoveryRequestData(); reqData.RegionPoint = currentRegionPoint; reqData.MapExtent = _discoveryService.GetFullMapExtent( DiscoveryRequestBuilder.JsonTypes); var discoveryRequest = builder.BuildRequest(reqData); // Make discovery request to get current Region name. string regionName = _discoveryService.GetRegionName(discoveryRequest, DiscoveryRequestBuilder.JsonTypes); // Do nothing in case region name is empty. if (string.IsNullOrEmpty(regionName)) { return; } // If operation call for new region, we need to reinitialize context. if (regionName != _currentRegionName) { _isContextInited = false; } _currentRegionName = regionName; // Fix route service config with new region name. _routeServiceConfig.LayerName = _GetRegionalLayerName(_routeServiceConfig.LayerName, regionName); }
/// <summary> /// Method collects information from solve request data for planned date and /// builds request object. /// </summary> /// <param name="data">Required data to get information from.</param> /// <exception cref="T:System.ArgumentNullException"> /// <paramref name="data"/> is null reference.</exception> /// <returns>Request object with filled information for request.</returns> public SubmitDiscoveryRequest BuildRequest(DiscoveryRequestData data) { // Validate inputs. if (data == null) throw new ArgumentNullException("data"); // Build request object. SubmitDiscoveryRequest req = new SubmitDiscoveryRequest(); if (data.RegionPoint != null) { int wkid = data.MapExtent.SpatialReference.WKID; // Get depot point converted with correct spatial reference. Point depotPoint = (Point)data.RegionPoint; Point wmPoint = WebMercatorUtil.ProjectPointToWebMercator(depotPoint, wkid); GPPoint gpPoint = GPObjectHelper.PointToGPPoint(wmPoint); gpPoint.SpatialReference = new GPSpatialReference(wkid); // Fill required options. req.Geometry = gpPoint; req.GeometryType = NAGeometryType.esriGeometryPoint; req.SpatialReference = wkid; req.ResponseFormat = NAOutputFormat.JSON; req.Layers = NAIdentifyOperationLayers.AllLayers; req.Tolerance = DEFAULT_TOLERANCE; req.ImageDisplay = _GetImageDisplayParameter(data.MapExtent); req.MapExtent = string.Format(MAP_EXTENT_PARAMETER_FORMAT, data.MapExtent.XMin, data.MapExtent.YMin, data.MapExtent.XMax, data.MapExtent.YMax); // Do not return geometry to optimize request. req.ReturnGeometry = false; req.ReturnZ = false; req.ReturnM = false; // Fill non-required options. req.LayerDefinitions = string.Empty; req.Time = string.Empty; req.LayerTimeOptions = string.Empty; req.MaxAllowableOffset = string.Empty; req.DynamicLayers = string.Empty; } return req; }