Determine the Scale Factor in Maps
Given only the set of coordinates, is there a way to find the scale factor being used? It will then be used to compute the distances between the coordinates.
Let's consider this:
On a map scale: (This is the only given)
- pointA(33.511615, -86.778809)
- pointB(34.398558, -87.669116)
On开发者_如何转开发 a real world scale:
- Distance between the 2 points = unknown
We can solve for the distance between the 2 points. What conversion factor can we use in order to convert the distance into the actual or real world scale? How do we get the conversion factor?
The coordinates given are based on actual points plotted in a smaller scale model.The format may look familiar to you. Could it be that the units by default are miles? I have no idea on how they came up with the coordinates, any thoughts?
I'm not sure what underlying concepts are involved (Geocoding or Geolocation?) and if I made sense when I try to point things out. Please help.
Those look like latitude and longitude coordinates (e.g. 33.511615 degrees North latitude, 86.778809 West longitude for the first one) which place them in Alabama.
Are you sure those are some sort of map-specific coordinates and not Lat/Lon?
Edit: if they are Lat/Lon, check out this site which has a great-circle distance calculator and the formulae you'd need to do it yourself. This site allows decimal degrees rather than minutes/seconds so that may be more useful.
The distance between two points:
Point1, with coordinates lat1 and long1 Point2, with coordinates lat2 and long2
may be calculated as follows, using the haversine formula (code shown in Python):
lat1=radians(lat1)
long1=radians(long1)
lat2=radians(lat2)
long2=radians(long2)
gradius=6378.137 # greatest earth radius (equator)
sradius=6356.7523142 # smallest earth radius (pole)
R=(gradius*sradius)/sqrt((gradius*cos(lat1))**2 + (sradius*sin(lat1))**2)
d_lat = lat2 - lat1
d_long = long2 - long1
a = sin(d_lat/2)**2 + cos(lat1) * cos(lat2) * sin(d_long/2)**2
c = 2 * atan2(sqrt(a), sqrt(1-a))
distance = maior * c
# and if you want bearing:
x = sin(d_long) * cos(lat2)
y = cos(lat2) * sin(lat1) - sin(lat2) * cos (lat1) * cos(d_long)
bearing = 90-(degrees(atan2(y, -x)))
Of course it should be adjusted and suited to your needs. Hope it helps.
I'm pretty sure you would need more information to scale the distance correctly. You would really need to know the model scale.
This is sort of a complex problem which requires a bit more information and some consideration of what you are hoping to accomplish with the solution.
I am going to assume that the coordinates you gave above are from the WGS 84 datum, which is the most common method used by modern gps systems today.
However, it is very important that you also know which map projection these coordinates will be plotted on. Basically, since the earth is round (and actually not perfectly round, it is slightly ellipsoid due to the rotation of the earth), when we project this onto a flat surface, it can be done in many ways. The method used to 'flatten' the Earth and also the scale of the map (how 'zoomed in' is the map) can have a strong impact on how useful a x/y scale can be for measurements on the map image.
What maps are you projecting onto? If I knew more, I think I could be of better assistance.
精彩评论