Подготовка геоданных для интерактивного гео, а именно, с помощью Bokeh — slow в JSON

#json #visualization #bokeh #geopandas

Вопрос:

Я пытаюсь создать гео-карту, используя эти данные, которые отображают все почтовые индексы в Нью-Йорке: https://data.cityofnewyork.us/Health/Modified-Zip-Code-Tabulation-Areas-MODZCTA-Map/5fzm-kpwv . Я использовал geopandas для чтения данных в виде фрейма геоданных, использовал shapely.wkt — loads на multipoloygon и установил соответствующий столбец в качестве геометрии.

Затем я загрузил эти данные переписи дерева (https://data.cityofnewyork.us/Environment/2015-Street-Tree-Census-Tree-Data/uvpi-gqnh ) в df и объединил их в столбце zipcode (я сам переименовал cols, поскольку наборы данных использовали разные термины).

Моя цель — создать интерактивную гео, а именно с использованием Bokeh, который, как я понимаю, использует GeoJSON. Для достижения этого я использовал следующий код: скриншот кода JNB

Однако для выполнения кода требуется чрезвычайно много времени: nyc_trees = json.loads(nyc_trees.to_json())

Я тоже пробовал ujson, но это не помогло с выбором времени. Есть ли способ ускорить это или обойти?

Комментарии:

1. Вы можете увидеть быстрый рендеринг полигонов на основе Bokeh для всех зданий в Нью-Йорке, который, предположительно, значительно превышает количество почтовых индексов в Нью-Йорке, на examples.pyviz.org/nyc_buildings . Если вы можете использовать этот подход, конечно, это будет очень быстро! Но обратите внимание, что в примере используются данные, преобразованные в формат Parquet, в то время как JSON будет значительно медленнее, поэтому сначала вам нужно преобразовать из JSON (что, как я знаю, является вашим узким местом прямо сейчас!).).

2. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.