Convert Lat/Longs to X/Y Co-ordinates

匿名 (未验证) 提交于 2019-12-03 02:14:01

问题:

I have the Lat/Long value of New York City, NY; 40.7560540,-73.9869510 and a flat image of the earth, 1000px × 446px.

I would like to be able to convert, using Javascript, the Lat/Long to an X,Y coordinate where the point would reflect the location.

So the X,Y coordinate form the Top-Left corner of the image would be; 289, 111

Things to note:

  1. don't worry about issues of what projection to use, make your own assumption or go with what you know might work
  2. X,Y can be form any corner of the image
  3. Bonus points for the same solution in PHP (but I really need the JS)

回答1:

A basic conversion function in js would be:

MAP_WIDTH = 1000; MAP_HEIGHT = 446;  function convert(lat, lon){     var y = ((-1 * lat) + 90) * (MAP_HEIGHT / 180);     var x = (lon + 180) * (MAP_WIDTH / 360);     return {x:x,y:y}; } 

This will return the number of pixels from upper left. This function assumes the following:

  1. That your image is properly aligned with the upper left corner (0,0) aligning with 90* North by 180* West.
  2. That your coords are signed with N being -, S being +, W being - and E being +


回答2:

The projection you use is going to change everything, but this will work assuming a Mercator projection:

              


回答3:

There's a good Javascript library, PROJ4JS, that allows you to do transformations between different projections.



回答4:

If you have a picture of the whole earth, the projection does always matter. But maybe I just don't understand your question.



回答5:

I've written a function which works for Mercator maps. Especially if your image doesn't cover the whole world, means it also works with cropped maps: https://stackoverflow.com/a/10401734/730823



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!