散景地图情节。纬度/经度到 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的主要内容,如果未能解决你的问题,请参考以下文章