1

I have road network in a geodatabase. At a certain junction in network (Point A), I want to figure out Point B which is X kilometres away from Point A in certain direction.

Summary:

  • Point A: fixed point
  • Point B: Unknown
  • Kms: fixed distance

I have been doing it by using Network Analyst; plotting a route from Point A to B, clicking at info to see kms, then adjusting the point B and recalculating the route until I reach the desired kms distance.

Since the roads are curved, I can't use buffer. Please advise if there is a better way.

  • This sounds like a linear referencing/event table question – dassouki Dec 6 '14 at 13:15
1

Yes, there is a better way. You're looking at service areas. This is essentially a 'buffer' which is constrained to follow the paths of the network. While usually run against drive time (show areas within a five minute drive of x, where drive time [speed/distance] is the network impedance), they can be run using distance as the impedance, so a result will show you all portions of a network within x distance of your origin point.

While you're only interested in "a certain direction" and a service area will completely surround the origin, a single point in "a certain direction" doesn't make a lot of sense depending on what the road network looks like. By creating a service area, you will see exactly where the boundary of x km lies along any road in the network, be it 'this block' or 'the next block over'. You can then place your point at whichever intersection best conforms to your idea of "a certain direction".

If you're looking for a specific distance along a route, then you can generate the route first as one analysis, run a service area analysis at the appropriate distance, and finally find where the boundary of the service area intersects the specific route to locate the point.

0

Sounds like you should over-bound the route you want and set the route output to give you the true shape with measures. Measures start at 0 from Point A and cumulatively increase until they reach this initial Point B. Create a table that contains two fields: the Route ID and a distance measure field with the desired distance on that route where you really want Point B to be located. Use this table to create a point event layer against the Route output with measures and a point will appear in the layer at the distance you want on that route. Copy/paste that new point into the network analyst set up you used to generate your route to replace the original Point B and you should get the route you are looking for.

You could also add two double fields to the initial route output and calculate the from and to measure of each segment into them using the Python Calculation of !Shape.FirstPoint.M! and !Shape.LastPoint.M! to select which segment of the route that will contain the distance you want (i.e. FROM_MEAS <= desired_distance and TO_MEAS >= desired_distance).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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