1

在 python 中,我想将 lat/lng(在 epsg 4326 中)转换为谷歌地图像素中的 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