У меня есть ограничительная рамка:Преобразовать Lat/Long для X, Y позиции внутри ограничительного Box
Left -122.27671
Bottom 37.80445
Right -122.26673
Top 37.81449
Он также может быть преобразован в NE Lat/Long и SW Lat/Long
В этот ограничивающий ящик, я бы хотел найти позицию X, Y определенного Lat/Long. Это будет использовать проекцию Меркатора.
Я видел ответы, которые находят X, Y позиции на карте мира, используя Меркатор, но не в пределах конкретного lat/lon.
Любая помощь оценена!
ОБНОВЛЕНИЕ Объедините это вместе с другим вопросом, который я видел. Может ли кто-нибудь подтвердить, что это кажется законным?
map_width = 1240
map_height = 1279
map_lon_left = -122.296916
map_lon_right = -122.243380
map_lon_delta = map_lon_right - map_lon_left
map_lat_bottom = 37.782368
map_lat_bottom_degree = map_lat_bottom * Math::PI/180
def convert_geo_to_pixel(lat, long)
x = (long - map_lon_left) * (map_width/map_lon_delta)
lat = lat * Math::PI/180
world_map_width = ((map_width/map_lon_delta) * 360)/(2 * Math::PI)
map_offset_y = (world_map_width/2 * Math.log((1 + Math.sin(map_lat_bottom_degree))/(1 - Math.sin(map_lat_bottom_degree))))
y = map_height - ((world_map_width/2 * Math.log((1 + Math.sin(lat))/(1 - Math.sin(lat)))) - map_offset_y)
return [x, y]
end
Является ли код, который я использовал выше, неверным? У вас возникли проблемы с пониманием того, где ваш пример выводит «x, y», когда задан параметр lat/lon в ограничивающей рамке? – theartofbeing
Ваш x правильный расчет. y кажется неправильным. My Lat соответствует вашему lat, B = map_lat_bottom, T = map_lat_top (не вижу его в вашем коде) – MBo
Я скопировал свое решение с http://stackoverflow.com/questions/2103924/mercator-longitude-and-latitude- расчеты-to-x-and-y-on-a-crop-map of of the/10401734 # 10401734 Я верю map_lat слева и справа вверху слева и справа вверху. Поскольку мы знаем, где находится угол, все, что нам нужно, это лат дна, чтобы закончить квадрат. Так я интерпретировал это решение? – theartofbeing