散景地图。 lat / long到x和y

时间:2017-05-13 17:05:45

标签: python google-maps gis bokeh

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

 latitude 41.552164 longitude 44.990961

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

提前谢谢。

2 个答案:

答案 0 :(得分:4)

你的问题对于你究竟要做的事情有点含糊不清,而代码示例将有助于提供更好的答案。

通常在尝试绘制在线资源获取的地理数据时,您将拥有坐标系(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投影的参考Google map api v3 projection?

答案 1 :(得分:1)

为了轻松地从经度/纬度(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)