Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am now using ArcGIS 10.1 and currently a beginner in ArcPy.

There is a project requiring to generate landmark-based route description. I am wondering how to use a buffer to find the landmarks in the neighborhood of the pre-defined route, in additional to provide a relationship between landmark and the route

are there any alternatives way to find out this "landmark-based route description" instead of using ArcGIS existing option?

The final product of the project requires a description of route in every turn/edge, such as:

"Turn right in McDonald to the Manhattan Road"

"Walk along the Manhattan Road, and there is a Park on your right"

It is not necessary to provide a distance in the description, as the target of the description is pedestrian and he/she doesn't really need this piece of information.

share|improve this question
Do you refer to the landmark information that was added to the Network Analyst directions since 10.1? Would you please update your question to include more details and examples of what you are trying to achieve? – Alex Tereshenkov Mar 31 '14 at 7:46
up vote 2 down vote accepted

ArcGIS Network Analyst provides you with a way to specify the point layer that will be used as a landmark layer (go to the "Landmarks tab" section). The point features from this layer will be used when generating the directions of the Route layer. This will let you introduce more specific route guidance with statements like "Turn right at Alan's Hardware Store" or "Pass by the printer station. It will be on your left."

If this is not something that you want to use, you can of course set up an own customized workflow for obtaining those parts of the routing guidance. This can be implemented in multiple steps (by using ModelBuilder and/or Python+ArcPy; can be done with ArcObjects too, but I would stick to the Python option):

  1. You run Solve GP tool for your network analysis layer.
  2. You run some buffering GP operations on the geometry of the solved route to include point features representing landmarks you want to include to the routing directions.
  3. You run Directions GP tool to generate directions for the route and obtain the result as XML or text.
  4. You perform spatial join or attribute based join on your point features and your network edges to push the name of the points into the Directions GP tool output.
  5. You do some minor parsing in the output routing file to clean it up.
  6. The resultant directions text can be shown in the dialog box when running a custom script tool/model or as a message box when running a Python add-in.

In case you would need to access some minor parts of the resultant objects during the analysis, consider using module. In 10.2.1, there is a really nice new function GenerateDirectionsFeatures, (Network Analyst Python module) which, produces text directions as a feature class that pairs each piece of the text direction with a corresponding line feature on the map. You can then use the output feature class to visualize turns and other maneuvers and include your custom landmark data.

share|improve this answer
thanks for your help!:) I have just upgraded my ArcGIS from 10.1 to 10.2.1 (trial). I will try to look into those new features;) May I ask one more question? about the landmark layer, must it be a point feature? What if I have a set of building/line(such as river) i want to set as landmark? is there a way to alter these with existing "landmark tab" function? Or I have to customize a landmark routing guidance with python script, using your suggested workflow? (by the way your suggestions are real nice;D ) – new_world2014 Apr 1 '14 at 7:28

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.