листовка gdal2tile wgs84 lat long для обозначения точки - PullRequest
0 голосов
/ 30 июня 2018

Используя буклет gdal2tiles, я рендерил растровое изображение GeoTiff в браузере. https://github.com/commenthol/gdal2tiles-leaflet

Что я делаю, чтобы конвертировать из проецируемой карты, чтобы получить фактические координаты (широта, долгота)

// Данные GeoTransform

var xoff = 424562.64403639885,
        a   = 0.5064676564009486,
        b   = 0,
        yoff = 3285265.740653501,
        d   = 0,
        e   = -0.5064676564009355;


var X_proj = a * coords.x + b * coords.y + xoff
var Y_proj = d * coords.x + e * coords.y + yoff

Где координаты. X и координаты. Y ({x: 15336, y: 14088}) - точка пикселя карты браузера. Возвращено из события клика, как в примере: https://commenthol.github.io/leaflet-rastercoords/.

Затем преобразование растровых точек (X_proj и Y_proj) с использованием proj4js для получения lat, lng

Теперь у меня есть набор координат (lal, lng), извлеченный из карты Google.

То, что я пытаюсь сделать здесь, это нарисовать точку на моей карте (сгенерированной из листовки gdal2tiles), отображаемой в браузере. Как сделать так, чтобы оно указывало на фактическое местоположение (широта, долгота).

То, что я хочу достичь, это обратное решение выше.

1 Ответ

0 голосов
/ 03 июля 2018

Решая его с помощью линейных уравнений. Я сгенерировал ниже код, чтобы дать мне координаты. Х и координаты.

var coordsToPoint = function(X_proj, Y_proj) {

    var x = ( ( b * (Y_proj - yoff) ) - ((X_proj - xoff) * e)  ) / ( d * b - a * e );
    var y = ( (( a * ( Y_proj - yoff ) ) - ( d * ( X_proj - xoff ) )) /  ( (a * e) - ( d * b ) ) );
    return {
        x: x,
        y: y
    };
};
...