Welcome to MapForums!

Register, sign in, or use Facebook Connect above to join in and participate in the forum.

When you are signed in, this message, the ads in this row, and the red-underlined link ads all go away.

 Subscribe to receive our newsletter. Subscribe Unsubscribe

## Finding the nearest road given a lat long.

This is a discussion on Finding the nearest road given a lat long. within the MapPoint Desktop Discussion forums, part of the Map Forums category; Hi, I want to find the nearest road from a lat/long the reason I want this is because of the ...

1. Senior Member Black Belt
Join Date
Jul 2002
Posts
5,137

## Finding the nearest road given a lat long.

Hi,
I want to find the nearest road from a lat/long the reason I want this is because of the inherant inaccuracy in GPS's sometimes my car appears off road (only slightly) but when I try to calculate a route based on these waypoints it goes mad and totaly gets it wrong.

Thanks

2. Member Yellow Belt
Join Date
Aug 2002
Posts
45
Hi Scarr,

I encontered the same problem. Could you give me an update once you have a fix?

Thanks in advance!

3. Member Yellow Belt
Join Date
Dec 2002
Posts
35
I have seen this issue pop up a lot, and I have an idea that I am going to try (though i am not quite there yet).. if you are tracking GPS then you know your compass heading. if you are moving along a road, and your gps is returning an invalid point, it must be either to the left or right of you. so if you take a line perpendicular to your compass heading, you can start looking along that line in both directions until you can get a valid location. if you check like 100 feet to either side of you, you should hit the road you want (and not the wrong one). just a thought, but it cuts down on the number of iterations required in the method where you spiral outward 360 degrees around your gps point.

hope this makes sense. post here if you get this working and i will do the same!

ps is there any way to get the car icon up on the map screen (like in streets and trips application during gps tracking)

4. Junior Member White Belt
Join Date
Apr 2005
Posts
1

## how to measure distance and direction

I’m new to MapPoint, and I want to drag a line from a point that shows distance and direction. I thought pointing a line in a give direction—say 286 degrees—would be an obvious feature similar to “Measure Distance.” Have I missed something or isn’t this doable?

5. Senior Member Black Belt
Join Date
Nov 2004
Location
Belgium
Posts
2,433
Hi,

I just encountered a similar problem (with other purpose, but my solution may be working for you). What I do is running in a circle around the point where the car 'pretends' to be. I start with a radius of 5 meter and check the circumfence of the circle every 5 meter. If not found I increment the radius by 5 meter till a street is found. In your case I only should do a small maximum of 10..15 meter because you can end up with a wrong street if car is on a non digitized street.

This is the code (in Delphi). DistanceRes is the resollution (I set it to 5 meter), and MaxDistance is the radius where the routine should give up. FindAddr is the routine that ask Mappoint for streetresults (not listed here).

Code:
```function TMapPoint.CalcInCircle&#40;CenterLat, CenterLon&#58; double; Streets&#58; TStrings; out Distance, Angle&#58; integer&#41;&#58; boolean;
var
Lat, Lon&#58; double;
Radius&#58; double;         // radius of the circle in degree
Circum&#58; integer;        // circumfence of the circle in Distance
Count&#58;  integer;        // the amount of points to calculate on the circumfence
AngleInc&#58; integer;      // angle increments in degree per calculation
begin
Distance &#58;= DistanceRes;
while Distance <= MaxDistance do begin
Radius   &#58;= 1 / 60 / 1852 * Distance;
Circum   &#58;= Trunc&#40;Distance * 2 * PI&#41;;
Count    &#58;= Circum div DistanceRes;
AngleInc &#58;= 360 div Count;
if AngleInc <= 0 then begin
Result &#58;= False;
Exit;
end;
Angle &#58;= 0;
while Angle < 360 do begin
CalcXY&#40;CenterLat, CenterLon, Angle, Radius, Lat, Lon&#41;;
Result &#58;= FindAddr&#40;Lat, Lon, Streets&#41;;
if Result then
Exit;
Inc&#40;Angle, AngleInc&#41;;
end;
Inc&#40;Distance, DistanceRes&#41;;
end;
Result &#58;= False;
end;```
And this is the actulally working horse:

Code:
```procedure TMapPoint.CalcXY&#40;centerLat, centerLon, Angle, Radius&#58; double; out Lat, lon&#58; double&#41;;
var
a, b, c, r&#58; double;
begin
&#123;                       B
/ |
/   |
/     |
/       |
c /         | a
/           |
/             |
/               |
/_________________|
A         b          C

given A en c
a = c * sin&#40;A&#41;
b = c * cos&#40;A&#41;

A == 0 is direction East in this drawing
a = Latitude offset
b = Longitude offset
c = Radius of circle   &#125;

r &#58;= DegToRad&#40;Angle&#41;;
c &#58;= Radius;
a &#58;= c * Sin&#40;r&#41;;
b &#58;= c * Cos&#40;r&#41; / Cos&#40;DegToRad&#40;centerLat&#41;&#41;;  // correct longitude for circle
Lat &#58;= CenterLat + a;
Lon &#58;= CenterLon + b;
end;```

6. Junior Member Yellow Belt
Join Date
Jan 2007
Posts
16

## Re: Finding the nearest road given a lat long.

Hi Wilfried

I have a similar need. Actually, I need to show the nearest POI to the actual position of the vehicle. This info should be updated every 2 minutes or so. My POI table has some 1000s records.

What I'm doing so far is, in a separate thread, to load the POI data in an in-memory dataset (delphi kbmMemTable) and calculate the distance between every POI and the given position (for loop). I store the results (actual position - POI infos - distance) in an array, and finally select the closest POI (min distance).

I know what I'm doing is REALLY awful but since I didn't have much time when I did it, I didn't really have the choice (optimizing and taking time to search for the better solution when my boss is crying about not meeting an impossible deadline isn't the easiest thing to do

Anyway, I would like to optimize this now, so Could you give me a hand in adapting your code to my need?

Best Regards,
Michel

#### Thread Information

##### Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•