POST
|
Hi Emilia, Alas, REST endpoint of the Route solver does not allow clients to change the default snap tolerance. Is you still think you need to do this, you can try doing it through SOAP, or another option would be a GP service. In the former case the things get complicated as there is now out of the box JavaScript SOAP client; in the later case - GP services are slightly slower than NAServer ones. But I'm also curious - why do you need to change the snap tolerance? Is there a problem with accurate locating of the bridges on the network? thanks, Dmitry
... View more
11-14-2011
07:12 AM
|
0
|
0
|
486
|
POST
|
Hi Aragon, Could you tell what network dataset are you using? What is the value of the impedanceAttributeName parameter you specify? thanks, Dmitry
... View more
11-14-2011
07:02 AM
|
0
|
0
|
622
|
POST
|
hi Thomas, Please try specifying the Attr_Minutes and Attr_Meters on your Stop attributes, e.g.: { "features" : [ { "geometry" : {"x" : -122.4079, "y" : 37.78356}, "attributes" : {"Attr_Minutes" : 1, "Attr_Meters" : 2} }, { "geometry" : {"x" : -122.404, "y" : 37.782}, "attributes" : {"Attr_Minutes" : 1, "Attr_Meters" : 2} } ] } For example (please note, that this particular service has different attribute names - Time and Length): http://tasks.arcgisonline.com/ArcGIS/rest/services/NetworkAnalysis/ESRI_Route_NA/NAServer/Route/solve?stops=%7B+%0D%0A%22features%22++%3A+%5B%0D%0A%7B%0D%0A++%22geometry%22+%3A+%7B%22x%22+%3A+-122.4079%2C+%22y%22+%3A+37.78356%7D%2C%0D%0A++%22attributes%22+%3A+%7B%22Attr_Time%22+%3A+1%2C+%22Attr_Length%22+%3A+2%7D%0D%0A%7D%2C%0D%0A%7B%0D%0A++%22geometry%22+%3A+%7B%22x%22+%3A+-122.404%2C+%22y%22+%3A+37.782%7D%2C%0D%0A++%22attributes%22+%3A+%7B%22Attr_Time%22+%3A+3%2C+%22Attr_Length%22+%3A+4%7D%0D%0A%7D%0D%0A%5D%0D%0A%7D&barriers=&polylineBarriers=&polygonBarriers=&outSR=4326&ignoreInvalidLocations=true&accumulateAttributeNames=Length&impedanceAttributeName=Time&restrictionAttributeNames=OneWay%2CAvoid+Private+Roads%2CAvoid+Roads+for+Authorities%2CAvoid+Walkways%2CAvoid+Pedestrian+Zones%2CAvoid+Service+Roads%2CNon-routeable+Segments%2CAvoid+Ferries&attributeParameterValues=&restrictUTurns=esriNFSBAllowBacktrack&useHierarchy=true&returnDirections=false&returnRoutes=true&returnStops=true&returnBarriers=false&returnPolylineBarriers=false&returnPolygonBarriers=false&directionsLanguage=en-US&directionsStyleName=NA+Desktop&outputLines=esriNAOutputLineTrueShape&findBestSequence=false&preserveFirstStop=true&preserveLastStop=true&useTimeWindows=false&startTime=&outputGeometryPrecision=10&outputGeometryPrecisionUnits=esriMeters&directionsTimeAttributeName=Time&directionsLengthUnits=esriNAUMiles&f=html thanks, Dmitry
... View more
11-08-2011
07:20 AM
|
0
|
0
|
414
|
POST
|
Hi Dmitry, You are correct - geometry which comes with Route directions is slightly generalized and this is by design. You can match Stops with Directions geometry by comparing the Stops' ArriveTime attributes against either ETA or Time attribute on the Directions items (set returnStops=true). Hope this helps, Dmitry
... View more
10-10-2011
05:05 PM
|
0
|
0
|
389
|
POST
|
Hi Magus, If you need to find shortest (not fastest) route, you can solve using a distance-based cost attribute. The name of such attribute depends on particular network dataset service is working with, e.g. in case of Route service on sampleserver3.arcgisonline.com this is the "Length" cost attribute. List of available attributes can be found in the REST service directory e.g. http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Network/USA/NAServer/Route So, if you are solving based on a Distance cost attribute (shortest path): Ask server to return no directions, no route geometry: http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Network/USA/NAServer/Route/solve?stops=-122.4079,37.78356;-122.404,37.782&returnDirections=false&returnRoutes=true&outputLines=esriNAOutputLineNone&impedanceAttributeName=Length&useTimeWindows=false&f=pjson In another case, when route is built using a Time-based cost attribute (fastest route), in order to return length of the built route (Distance value), you will need ask the service to accumulate Distance-based costs along the route using the accumulateAttributeNames parameter, e.g.: http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Network/USA/NAServer/Route/solve?stops=-122.4079,37.78356;-122.404,37.782&returnDirections=false&returnRoutes=true&outputLines=esriNAOutputLineNone&impedanceAttributeName=Time&useTimeWindows=false&accumulateAttributeNames=Length&f=pjson Dmitry
... View more
08-22-2011
08:49 AM
|
0
|
0
|
423
|
POST
|
Hi Juliano, A one way to do it would be through creating a RDBMS view on top of the Feature Class and specify Order Clause on it. On the other hand, it might require some SDE skills. It also will not be dynamic enough, shell you decide to change sorting depending on the client requests. On the other hand, I just discovered that there is a way to pass 3D input locations even to the 10.0 NAServer REST endpoint: to do it you need to pass X, Y, Z attributes on the Stops (you do not even have to specify "geometry" part), e.g.: {
"features" : [
{
"attributes" : {"X":481903.591, "Y":3768558.745, "Z":0}
},
{
"attributes" : {"X":481849.220, "Y":3768533.156, "Z":9}
},
{
"attributes" : {"X":481883.752, "Y":3768450.258, "Z":4.5}
}
] Hope this will help, Dmitry
... View more
07-25-2011
03:08 PM
|
0
|
0
|
606
|
POST
|
Hi Juliano, 10.0 REST API (and, consequently, client APIs such as JavaScript API) does not support 3D geometry. In some cases though, compressed geometry returned by NAServer (DotNet ArcGIS Server only) through REST can contain Z-values. In order to decode this format you will need to do some custom client-side programming. Please see this code-gallery sample: http://resources.arcgis.com/gallery/file/java/details?entryID=7B5F4B9F-1422-2418-A0AA-E4F68C404124 It's still important to mention that although you can potentially deliver Z-values to client through the way described above, 10.0 REST API still will not allow to pass trough 3D input locations. If you need to specify 3D input locations while working with 10.0 NAServer, you can use NAServer SOAP API which fully supports 3D input/output. 10.1 REST API and corresponding releases of client APIs will support 3D. Dmitry
... View more
06-13-2011
06:14 PM
|
0
|
0
|
734
|
POST
|
Hi Juliano, Please take a look at the code below. In order to make it work, publish SanFrancisco tutorial MXD from ArcGIS 10.0 and change the value of the ROUTE_ENDPOINT variable in the code below accordingly: [HTML] <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=7,IE=9" /> <!--The viewport meta tag is used to improve the presentation and behavior of the samples on iOS devices--> <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"/> <title>Simple Routing</title> <link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/2.3/js/dojo/dijit/themes/claro/claro.css"> <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=2.3"></script> <script type="text/javascript"> dojo.require("esri.map"); dojo.require("esri.tasks.route"); var map, routeTask, routeParams; var stopSymbol, routeSymbol, lastStop; var ROUTE_ENDPOINT = "http://my_server/arcgis/rest/services/SanFrancisco/NAServer/Route"; function init() { var initialExtent = new esri.geometry.Extent({"xmin":-13635300,"ymin":4545210,"xmax":-13623834,"ymax":4552853, "spatialReference":{"wkid":102100}}); map = new esri.Map("map", { extent: initialExtent }); map.addLayer(new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer")); dojo.connect(map, "onClick", solve); routeTask = new esri.tasks.RouteTask(ROUTE_ENDPOINT); //setup the route parameters routeParams = new esri.tasks.RouteParameters(); routeParams.stops = new esri.tasks.FeatureSet(); routeParams.outSpatialReference = {"wkid":102100}; dojo.connect(routeTask, "onSolveComplete", showRoute); dojo.connect(routeTask, "onError", errorHandler); //define the symbology used to display the route stopSymbol = new esri.symbol.SimpleMarkerSymbol().setStyle(esri.symbol.SimpleMarkerSymbol.STYLE_CROSS).setSize(15); stopSymbol.outline.setWidth(4); routeSymbol = new esri.symbol.SimpleLineSymbol().setColor(new dojo.Color([0,0,255,0.5])).setWidth(5); } dojo.addOnLoad(init); function solve() { var stops = new esri.tasks.DataLayer(); stops.name = "Hospitals"; stops.spatialRelationship = "esriSpatialRelContains"; stops.geometry = map.extent; routeParams.impedanceAttribute = dojo.byId("impedance").value; routeParams.restrictionAttributes = []; if (dojo.byId('restDefault').checked) routeParams.restrictionAttributes = null; if (dojo.byId('restOneway').checked) routeParams.restrictionAttributes.push("Oneway"); if (dojo.byId('restTurns').checked) routeParams.restrictionAttributes.push("RestrictedTurns"); routeParams.stops = stops; routeTask.solve(routeParams); } //Adds the solved route to the map as a graphic function showRoute(solveResult) { map.graphics.clear(); map.graphics.add(solveResult.routeResults[0].route.setSymbol(routeSymbol)); } //Displays any error returned by the Route Task function errorHandler(err) { alert("An error occured\n" + err.message + "\n" + err.details.join("\n")); routeParams.stops.features.splice(0, 0, lastStop); map.graphics.remove(routeParams.stops.features.splice(1, 1)[0]); } </script> </head> <body class="claro"> <table><tr><td> Click the map - </td><td> Solve on <select id="impedance"> <option value="Minutes" selected="true">Minutes</option> <option value="Meters">Meters</option> </select> </td><td> Restrictions:<br/> <input type="checkbox" id="restDefault" checked="true" onchange="dojo.byId('restOneway').checked=false;dojo.byId('restTurns').checked=false;solve();">Use defaults</input><br/> <input type="checkbox" id="restOneway" onchange="dojo.byId('restDefault').checked=false;solve();">Oneway</input><br/> <input type="checkbox" id="restTurns" onchange="dojo.byId('restDefault').checked=false;solve();">RestrictedTurns</input><br/> </td></tr></table> <div id="map" style="width:600px; height:400px; border:1px solid #000;"></div> </body> </html> [/HTML]
... View more
06-08-2011
01:46 PM
|
0
|
0
|
606
|
POST
|
Hi Murugesh, Please take a look at this C# sample app using NAServer SOAP endpoint. This is about Route solver, but the general pattern of addressing a remote solver is exactly the same. http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/0001/0001000004n8000000.htm thanks, Dmitry
... View more
05-17-2011
10:31 AM
|
0
|
0
|
254
|
POST
|
Hi Chris, The most probable case in which you can get new 10.0 formatted compressed geometry through 10.0 REST endpoint is if the underlying network dataset is a 3D one, or somehow server produces output route geometry with measures. If you are using your own network dataset, please make sure that none of the network dataset source feature classes are 3D aware. If any of them is a 3D feature class, you will have to make them 2D and rebuild the network. To make sure that NAServer does not return compressed geometry with measures, please make sure tat you pass RouteParameters.outputLines = "esriNAOutputLineTrueShape". Also, to be absolutely sure, open the published map document in ArcMap, open corresponding Route layer's "Analysis Settings" dialog box and check that "Output Shape Type" value is set to "True Shape". Save the document, restart the service, and clean the REST endpoint cache (or restart the web server). Dmitry
... View more
01-21-2011
01:42 PM
|
0
|
1
|
734
|
POST
|
Hi Carine, Yes, you can do it as long as the feature class with barriers is part of the same map document which hosts Route layer: http://help.arcgis.com/en/webapi/flex/apiref/com/esri/ags/tasks/supportClasses/DataLayer.html In order to speed up the processes of loading barriers from a layer, I would recommend to pre-calculate location fields on them. You can do it from ArcMap using the "Calculate Locations" GP Tool from Network Analyst Tools > Analysis category. Dmitry
... View more
12-01-2010
08:34 AM
|
0
|
0
|
606
|
POST
|
Hi Fatih, Can you please show both http requests: http request with NO directions which works; http request with directions which does not work. Can you also tell which particular network dataset you are using on the server? Thanks, Dmitry
... View more
11-29-2010
07:13 AM
|
0
|
0
|
693
|
POST
|
Hello, Fatih, Try building exactly the same route with driving directions using your network dataset in ArcMap. If building driving directions in ArcMap works fine, go through the server log files and see if more detailed error message was written there: set the server Log Level to Detailed, send the request you are having problem with, and look into the ArcGIS Server log files (located <ArcGIS>\server\user\log). If server log does not contain helpful information, please show the HTTP request your Silverlight application sends to server (you can use Fiddler: http://www.fiddler2.com/Fiddler2/version.asp) Dmitry
... View more
11-23-2010
07:22 AM
|
0
|
0
|
693
|
POST
|
Hi Srinath, A couple of suggestions I can make on your code: - try using default "en-US" instead of "english": routeParams.setDirectionsLanguage("en-US"). - add routeParams.setReturnRouteGeometries(false) call: Routes and RouteGeometries outputs are redundant and NAServer discourages returning them both populated. If it still doesn't work, please review directions settings on the network dataset you are working with. With the changes mentioned above, your code works well against published Network Analyst Tutorial's SanFrancisco.mxd, so you can always use SanFrancisco network as a reference while defining directions on the custom network. More general question: Do you have any specific requirements limiting you to work with NAServer objects via DCOM? Can you switch to SOAP or REST API? Thanks, Dmitry
... View more
11-15-2010
09:18 AM
|
0
|
0
|
693
|
POST
|
Hi Sunil, Do you use ArcGIS Server 10.0? If you do, please take a look at these docs below: http://help.arcgis.com/en/arcgisserver/10.0/help/arcgis_server_dotnet_help/index.html#//009300000055000000.htm http://help.arcgis.com/en/arcgisserver/10.0/help/arcgis_server_dotnet_help/index.html#//009300000013000000.htm So called throttling parameters on Network Analysis services can be set from ArcCatalog in the Service Properties / Capabilities, or from ArcGIS Server Manager. Dmitry
... View more
10-20-2010
09:57 AM
|
0
|
0
|
459
|
Title | Kudos | Posted |
---|---|---|
1 | 09-27-2016 10:04 AM |
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:23 AM
|