2014-12-21 2 views
8

Так что я пытаюсь использовать боке для построения набора географических точек (точнее, для школ). Я могу нарисовать их, используя латы и длинные, но как я могу наложить эти точки поверх реальной карты? Есть ли способ интегрировать боке с картами Google или что-то еще?Использование bokeh для построения поверх карты

Благодаря

+0

Я не знаю, что такое «боке», но как кто-то, кто работает в ГИС, то, что вы пытаетесь, называется добавлением базовой карты. Надеюсь, это поможет вашему Google-фу. – jpmc26

+0

Bokeh - это библиотека с многостраничной визуализацией с открытым исходным кодом, ориентированная на браузер для интерактивной и потоковой визуализации: http://bokeh.pydata.org – bigreddot

ответ

3

Там является примером интеграции Bokeh с Google карты здесь:

http://bokeh.pydata.org/en/latest/docs/user_guide/geo.html#google-maps-support

Прямо сейчас (как 0,7), вы должны использовать нижний интерфейс уровня, но будет добавлять GMap варианты для API более высокого уровня в ближайшее время.

+0

есть ли способ сохранить это изображение (карта с боке сверху)? – Crystal

+0

Вышеупомянутая ссылка отключена. –

+0

Обновлено – bigreddot

1

Вот ссылка, которую вы можете проверить:

http://bokeh.pydata.org/en/latest/docs/gallery/choropleth.html

from bokeh.sampledata import us_states, us_counties, unemployment 
from bokeh.plotting import * 

us_states = us_states.data.copy() 
us_counties = us_counties.data.copy() 
unemployment = unemployment.data 

del us_states["HI"] 
del us_states["AK"] 

state_xs = [us_states[code]["lons"] for code in us_states] 
state_ys = [us_states[code]["lats"] for code in us_states] 

county_xs=[us_counties[code]["lons"] for code in us_counties if us_counties[code]["state"] not in ["ak", "hi", "pr", "gu", "vi", "mp", "as"]] 
county_ys=[us_counties[code]["lats"] for code in us_counties if us_counties[code]["state"] not in ["ak", "hi", "pr", "gu", "vi", "mp", "as"]] 

colors = ["#F1EEF6", "#D4B9DA", "#C994C7", "#DF65B0", "#DD1C77", "#980043"] 

county_colors = [] 
for county_id in us_counties: 
    if us_counties[county_id]["state"] in ["ak", "hi", "pr", "gu", "vi", "mp", "as"]: 
     continue 
    try: 
     rate = unemployment[county_id] 
     idx = min(int(rate/2), 5) 
     county_colors.append(colors[idx]) 
    except KeyError: 
     county_colors.append("black") 

output_file("choropleth.html", title="choropleth.py example") 

p = figure(title="US Unemployment 2009", toolbar_location="left", 
    plot_width=1100, plot_height=700) 

p.patches(county_xs, county_ys, fill_color=county_colors, fill_alpha=0.7, 
    line_color="white", line_width=0.5) 
p.patches(state_xs, state_ys, fill_alpha=0.0, 
    line_color="#884444", line_width=2) 

show(p) 

Я не пробовал еще, но я думаю, вы можете использовать файлы формы, чтобы иметь более точные карты, если вы хотите.

То, что я пытался до того, как модуль базовой карты ..

+0

Поскольку цель ссылки может быть удалена, добавьте короткую сводку содержания. – BDL

+0

Ох. Виноват. Это был первый раз, когда я отправил ответ. Я обращу внимание на это. Большое спасибо! – jtitusj

+3

Попробуйте кроме блока для доступа к dict? В самом деле? Вы должны использовать 'colors.get (idx, 'black')' – MaxNoe

8

Я понимаю, что эта нить старый, но я не нашел супер четкий ответ где-нибудь еще, так что надеюсь, это поможет.

from bokeh.sampledata import us_states 
from bokeh.plotting import * 

us_states = us_states.data.copy() 

del us_states["HI"] 
del us_states["AK"] 

# separate latitude and longitude points for the borders 
# of the states. 
state_xs = [us_states[code]["lons"] for code in us_states] 
state_ys = [us_states[code]["lats"] for code in us_states] 

# init figure 
p = figure(title="Plotting Points Example: The 5 Largest Cities in Texas", 
      toolbar_location="left", plot_width=1100, plot_height=700) 

# Draw state lines 
p.patches(state_xs, state_ys, fill_alpha=0.0, 
    line_color="#884444", line_width=1.5) 

# Latitude and Longitude of 5 Cities 
# ------------------------------------ 
# Austin, TX -------30.26° N, 97.74° W 
# Dallas, TX -------32.77° N, 96.79° W 
# Fort Worth, TX ---32.75° N, 97.33° W 
# Houston, TX ------29.76° N, 95.36° W 
# San Antonio, TX --29.42° N, 98.49° W 

# Now group these values together into a lists of x (longitude) and y (latitude) 
x = [-97.7431, -96.79, -97.33, -95.36, -98.49] 
y = [30.26, 32.77, 32.75, 29.76, 29.42] 

# The scatter markers 
p.circle(x, y, size=8, color='navy', alpha=1) 

# output to static HTML file 
output_file("texas.html") 

# show results 
show(p) 

Такие точки, как они называются «Маркеры рассеяния» в Боке. Для получения дополнительной информации см. http://bokeh.pydata.org/en/latest/docs/user_guide/plotting.html#scatter-markers