散景地图情节。纬度/经度到 x 和 y

Posted

技术标签:

【中文标题】散景地图情节。纬度/经度到 x 和 y【英文标题】:bokeh map plot. lat/long to x and y 【发布时间】:2017-05-13 17:05:45 【问题描述】:

我正在尝试在散景中绘制一些圆形标记,python 在 stamer 墨粉图上。 我有来自谷歌地图 api 的位置,格式如下:

 latitude 41.552164 longitude 44.990961

但是散景地图以 X 和 Y 坐标格式获取数据点。 如何将这些纬度/经度坐标转换为 X 和 Y?

提前谢谢你。

【问题讨论】:

请看this能不能帮到你 我认为这与我的问题很接近,但没有完全回答。他们谈论距离,我只想从 lat/long 到 x,y 的点翻译。 【参考方案1】:

您的问题对于您到底要做什么有点含糊,代码示例将有助于提供更好的答案。

通常,当尝试绘制从在线资源获得的地理数据时,您将拥有坐标系 (WGS84) 中的数据,其中纬度为 y,经度为 x。 Bokeh 可以简单地通过在 ColumnDataSource 中指定适当的名称来绘制经度和​​纬度。

from bokeh.io import show
from bokeh.models import ColumnDataSource
from bokeh.plotting import figure


longitude  = [44.990961]
latitude = [41.552164]

source = ColumnDataSource(data=dict(longitude=longitude, latitude=latitude))

p = figure(plot_width=400, plot_height=400)
p.circle(x='longitude', y='latitude', source=source)
show(p)

如果您的问题确实与数据的坐标变换有关,那么如果没有更多详细信息,将很难回答您的问题。我建议您查看https://en.wikipedia.org/wiki/Map_projection 以了解地图投影。

如果您需要将经度/纬度坐标转换为不同的坐标系。您可以使用pyproj 包。

import pyproj

project_projection = pyproj.Proj("+init=EPSG:4326")  # wgs84
google_projection = pyproj.Proj("+init=EPSG:3857")  # default google projection

longitude = [44.990961]
latitude = [41.552164]

x, y = pyproj.transform(google_projection, project_projection, longitude, latitude)

print(x, y)

参考谷歌投影Google map api v3 projection?

【讨论】:

如果您不想让我们使用 pyproj 库,那么在纯 python 中转换坐标实际上很容易,如 here 所述【参考方案2】:

为了轻松地从经度/纬度 (EPSG:4326) 转换为另一个投影(例如 WebMercator EPSG:3857,由 GoogleMaps AFAIK 使用),我建议将 pyproj 包与 shapely 结合使用,例如:

from functools import partial
from shapely.geometry import Point
from shapely.ops import transform
import pyproj

pnt = transform(
    partial(
        pyproj.transform,
        pyproj.Proj(init='EPSG:4326'),
        pyproj.Proj(init='EPSG:3857')), Point(44.990961, 41.552164))

print(pnt.x, pnt.y)

【讨论】:

以上是关于散景地图情节。纬度/经度到 x 和 y的主要内容,如果未能解决你的问题,请参考以下文章

地图服务 纬度经度对应坐标轴x,y

将 X,Y 转换为纬度经度到 ESRI shapefile

如何将屏幕 X 和 Y 转换为纬度和经度

将游戏的 x,y 坐标转换为 Google 地球纬度/经度

帮助从 iPhone 中的纬度和经度计算 X 和 Y

将 x,y 转换为纬度和经度