Преобразовать широту / долготу в пиксельные местоположения
У меня есть карта (Меркатор) и координаты 4 углов карты. Мне нужно что-то придумать, чтобы я мог преобразовать данные координаты в соответствующие точки на карте. Я не могу использовать Google или что-то в этом роде, поэтому мне нужно сделать это в первую очередь.
Языки, которые я могу использовать, будут либо PHP, либо Javascript. Я пробовал кое-что, что нашел в других постах, таких как этот: расчеты долготы и широты Меркатора по x и y на обрезанной карте (Великобритании), но мне не повезло с ними.
Если кто-то может предложить некоторую помощь, я был бы очень благодарен. Я ужасно разбираюсь в математике и, глядя на некоторые из этих уравнений, это начинает ощущаться вне моей лиги, но я должен это сделать.
Еще раз спасибо заранее.
2 ответа
function convert_coords($lat, $lon)
{
$width = 1281;
$height = 1529;
// X and Y boundaries
$westLong = -75.196438;
$eastLong = -74.674072;
$northLat = 41.377581;
$southLat = 40.909232;
$lat = $lat;
$lon = $lon;
$x = $width * (($westLong-$lon)/($westLong-$eastLong));
$y = ($height * (($northLat-$lat)/($northLat-$southLat)));
echo $x."<br />";
echo $y;
}
Это то, что я пытался заставить работать. Думаю, это вариация чего-то, что я сделал здесь, но это не дает мне нужных результатов. Я действительно столкнулся с кирпичной стеной с этим плохо. И нет никакого способа на земле, я собираюсь выяснить здесь математику самостоятельно, я пытался, и это выход из моей лиги.
Похоже, вы работаете в JavaScript, и в этом случае стоит взглянуть на библиотеку с открытым исходным кодом proj4js.
Кроме того, предполагая, что ваше растровое изображение ортогонально с системой координат, тогда вы можете взять Mercla forumla (посмотрите в Википедии или любой книге возражений наполовину приличной карты) применить простое линейное преобразование, чтобы получить необходимое преобразование. Затем решите за четыре угла. для линейного преобразования вы найдете, что некоторые переменные просто дублируют параметры в проекции Меркатора (т.е. коэффициенты масштабирования)