![](/img/trans.png)
[英]How to set longitude and latitude ranges for Bokeh Google Maps plot in Python?
[英]How to plot Latitude and Longitude in Bokeh
我在bokeh中創建了一個帶有X和Y軸標簽的圖形,其中顯示了緯度和經度坐標,但是使用了WMTS瓦片地圖,該地圖當然使用了Mercator投影。 我認為Bokeh正在進行某種轉換,因為在他們的文檔中他們說:
“還請注意,將x_axis_type =“ mercator”和y_axis_type =“ mercator”傳遞給圖形將生成帶有緯度和經度標簽的軸,而不是原始的Web Mercator坐標。”( https://docs.bokeh.org/en/latest/docs/ user_guide / geo.html )
但是,當我繪制由LAT和LON設置的標記時,它們將忽略X和Y軸比例,而是根據墨卡托比例進行繪制
title = "test"
mercator_extent = dict(start=-20000000, end=20000000,bounds=None)
# create a tile source
tile_options = {}
tile_options['url'] = 'http://tile.stamen.com/watercolor/{z}/{x}/{y}.jpg'
tile_options['attribution'] = """
Map tiles by <a href="http://stamen.com">Stamen Design</a>, under
<a href="http://creativecommons.org/licenses/by/3.0">CC BY 3.0</a>.
Data by <a href="http://openstreetmap.org">OpenStreetMap</a>,
under <a href="http://www.openstreetmap.org/copyright">ODbL</a>.
"""
mq_tile_source = WMTSTileSource(**tile_options)
source = ColumnDataSource(data=OrderedDict(lat=([50]), lon=([50])))
x_range= Range1d(**mercator_extent)
y_range= Range1d(**mercator_extent)
plot = figure(title='printed line on map',
tools= "pan,wheel_zoom",
x_range=x_range,
x_axis_type="mercator",
y_axis_type="mercator",
y_range=y_range,
sizing_mode = 'stretch_both')#create a figure
plot.add_tile(mq_tile_source)#add the map
plot.circle(source=source,x='lon',y='lat',line_color ='red')
output_file("file.html")
save(plot)
我的印象是,將X和Y軸設置為“ mercator”,我的X和Y軸標簽顯示為緯度和經度,因此我的標記應相應地相對於該軸進行繪制。 換句話說,根據上面的示例,我應該具有觀察X和Y軸的標記,但我沒有。
下圖顯示了輸出; 懸停工具顯示我的數據是50 LAT和LON,因此我希望標記位於我手動繪制紫色斑點的位置,但它繪制的幾乎是死點
任何想法?
我會回答我自己的問題
標簽是LAT和LNG,但基礎圖是通過墨卡托坐標
通過將帶有Lat和Lon列的DF傳遞給以下函數,可以將LAT / LNG轉換為Mercator:
def wgs84_to_web_mercator(df, lon="LON", lat="LAT"):
k = 6378137
df["x"] = df[lon] * (k * np.pi/180.0)
df["y"] = np.log(np.tan((90 + df[lat]) * np.pi/360.0)) * k
return df
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.