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