问题
I have a very small area map , which I downloaded from Openstreet map(PNG) and also its OSM(.osm) file which contains its Lat ,long.
Now I want to convert Lat ,long to an XY coordinate system (e.g. UTM) and then map this to pixel space of my Image which is of size (600 x 800 ). I know its a two way process ,like to know how to do this . Thank you
回答1:
GPS Coordinates to Pixels
- Assuming this map does not cross prime meridian
- Assuming pixel 0,0 is upper left, and pixel 600,800 is lower right.
Assuming map is Northern Hemisphere Only (no part of map is southern hemisphere)
- Determine the left-most longitude in your 800x600 image (X)
- Determine the east-most longitude in your 800x600 image (Y)
- Determine Longitude-Diff (Z = Y - X)
- Determine north-most latitude in your 800x600 image (A)
- Determine south-most latitude in your 800x600 image (B)
- Determine Longitude-Diff (C = A - B)
Given a Latitude and Longitude, to determine which pixel they clicked on:
- J = Input Longitude
K = Input Latitude
Calculate X-pixel
XPixel = CInt(((Y - J) / CDbl(Z)) * 800)
Calculate Y-pixel
YPixel = CInt(((A - K) / CDbl(C)) * 600)
UTM
Here is a cartographic library that should help with GPS to UTM conversions
来源:https://stackoverflow.com/questions/6172355/how-to-convert-lat-long-to-an-xy-coordinate-system-e-g-utm-and-then-map-this