1

Pythonでは、lat / lng(epsg 4326)をGoogleマップのピクセル(最も近いズームレベルを想定)のx、yに変換したいと思います。

pyproj次のようなコードを使用して、投影スペース間で変換できます。

>>> p1 = pyproj.Proj(init='epsg:4326')
>>> p2 = pyproj.Proj(init='epsg:3857')
>>> pyproj.transform(p1, p2, 10, 10)
>>> pyproj.transform(p1, p2, 10, 10)
(1113194.9079327343, 1118889.9748579597)

私がよくわからないのは、x、yピクセルを取得するために使用する適切な投影です。

このページには、変換のPHP実装があります:http: //www.appelsiini.net/2008/11/introduction-to-marker-clustering-with-google-maps

define('OFFSET', 268435456);
define('RADIUS', 85445659.4471); /* $offset / pi() */

function lonToX($lon) {
    return round(OFFSET + RADIUS * $lon * pi() / 180);        
}

function latToY($lat) {
    return round(OFFSET - RADIUS * 
            log((1 + sin($lat * pi() / 180)) / 
            (1 - sin($lat * pi() / 180))) / 2);
}

変換をPythonで手動でコーディングするのではなく、pyprojを使用します。これは、より柔軟で、変換を元に戻すのが簡単になるためです。

これらは、実装がサンプルポイント(10、10)に与える値です。

>>> lon_to_x(10)
283348536.88889694

>>> lat_to_y(10)
253446080.30134577
4

0 に答える 0