отображать данные на реальной карте на основе почтового индекса - PullRequest
0 голосов
/ 21 сентября 2019

Я пытаюсь отобразить данные на реальной карте (данные должны быть в Онтарио, Канада): у меня есть файл .csv с двумя столбцами, A и B, A - почтовый индекс, B - его соответствующее значение (целое число, 15), я хочу найти область, на которую отображается А, и раскрасить ее на основе соответствующего значения.Например.почтовый индекс P0G, P0A (первые 3 цифры канадского почтового кода, представляющего область) со связанными значениями 2 и 5, я хочу отображать разные цвета (возможно, 2 с зеленым и 5 с красным) в этих двух областях в реальномкарта.

Я не знаю, как, может быть, использовать Python или какой-либо сервис веб-сайта или какой-то API?У меня нет опыта визуализации данных на реальной карте раньше.

Вопрос, который я описал выше, является упрощенной версией.Фактический вопрос имеет больше столбцов (доменов), один почтовый индекс для каждой строки, мне нужно иметь |domains| количество графиков / карт, генерируемых для каждого домена.Но я понял, что когда я знаю, как сделать один домен, тогда я смогу сделать все.

Я пытался использовать какой-то онлайн-аналитический инструмент, например SimplyAnalytics, но не понял, как отобразить много областей с разнымицвета в то же время.Я пытался найти похожие вопросы, но, похоже, из-за разных конечных целей и формата данных, поэтому изменение кода / метода может значительно различаться.

Спасибо !!!

Некоторые примеры данных будутbe: введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 26 сентября 2019

@ Ответ Самика отличный, он отлично работает с 3-значным почтовым индексом.Тем не менее, для 6 цифр, plot_bokeh действительно медленно.В моем случае, для формирования граничного шейп-файла Онтарио потребовалось 21 часа (я рассчитал его в Python, возможно, моя машина работает медленно) !!!Если у вас несколько доменов, это будет 21*|domains| hs, время будет огромной проблемой.

Лучший способ для 6-значных ( больших файлов в общем ), используйте Tableau , загружать пространственные файлы и отображать карту, выбирать подходящий параметр для настройки вашей карты, это будет намного быстрее, чем plot_bokeh;однако использование Tableau не требует программирования, оно лучше подходит для обычных пользователей.

0 голосов
/ 22 сентября 2019

Если вы хотите сделать это на python, вы можете использовать библиотеку геопанд.Ниже приведен пример кода ( Github Gist ).Сначала нам нужно получить шейп-файл, который определяет область для каждого почтового индекса (область прямой пересылки) ( ссылка ).Затем отфильтруйте почтовые индексы для Онтарио и объедините их с данными, которые вы хотите построить.

import geopandas
import pandas as pd
import pandas_bokeh
import matplotlib.pyplot as plt
pandas_bokeh.output_notebook()

canada = geopandas.read_file("./gfsa000b11a_e.shp")
ontario = canada[canada['PRUID'] == '35']

# Sample data to plot
df=pd.DataFrame({'PCODE': ['P0V','P0L','P0T','P0Y', 'P0G', 'P2N'], 'A':[6,3,5,2,2,4] })

# Join ontario dataset with sample data
new_df=ontario.join(df.set_index('PCODE'), on='CFSAUID')


new_df.plot_bokeh(simplify_shapes=20000,
                  category="A", 
                  colormap="Spectral", 
                  hovertool_columns=["CFSAUID","A"])

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...