Добавление цветовой карты поверх плитки карты с помощью Bokeh

1

У меня есть пользовательские шейп файлы для школьных зон в школьном округе, которые я могу построить поверх картографической плитки, например, cartodbpositron, используя Folium. Однако я хотел бы добавить виджеты, чтобы при выборе разных параметров виджетов обновлялся рендеринг карты. Для этого я использую Bokeh. Тем не менее, на Bokeh график карты выполняется на пустом холсте, а не на карте, и у меня возникают проблемы с наложением границ шейп файла поверх плитки карты в Bokeh.

Извините, если этот вопрос не является полным с образцом кода, но вопрос не обязательно является программным, а одним из возможностей пакета.

Заранее спасибо.

Теги:
bokeh

1 ответ

2
Лучший ответ

Проблема заключалась в том, что плитки карты Bokeh ожидают координаты Web Mercator. Тот факт, что мои пользовательские шейп файлы имели координатные пары lat/lon, сделало его несовместимым с визуальными изображениями на карте Bokeh.

Я преобразовал координаты полигонов из пар lat/lon в координаты Web Mercator, используя:

def latlontomercator_math(row):
    x_lon = row['x']
    y_lat = row['y']

    # longitudes are a one step transformation
    x_mer = list(map(lambda x: x * 20037508.34 / 180, x_lon))

    # latitudes are a two step transformation
    y_mer_aux = list(map(lambda y: math.log(math.tan((90 + y) * math.pi / 360))
                                    / (math.pi / 180), y_lat))
    y_mer = list(map(lambda y: y * 20037508.34 / 180, y_mer_aux))

    return(x_mer, y_mer)

data[['x_mer', 'y_mer']] = data.apply(latlontomercator_math, axis=1).apply(pd.Series)

Функция была написана так, чтобы она использовалась с использованием фрейма данных Pandas.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню