UnicodeDecodeError: кодек "ascii" не может декодировать байт 0xe2 в позиции 10894: порядковый номер не в диапазоне (128)
Я следовал этому примеру ( https://github.com/geodocker/geodocker-jupyter-geopyspark/blob/master/notebooks/sanfranmvp.ipynb), поэтому я могу повторить похожий вывод, каждый был успешным, кроме последнего, я попробовал все возможна подстройка, но безуспешно, пожалуйста, кто-нибудь может сказать мне, что я делаю неправильно. Вот последний шаг кода с использованием folium для просмотра моей карты в блокноте Jupyter.
m = folium.Map(tiles='OpenStreetMap', location=map_center, zoom_start=zoom)
folium.TileLayer(tiles=tms.url_pattern, attr='GeoPySpark', name='Weighted layer', overlay=True).add_to(m)
folium.GeoJson('data/bars.geojson', name='Bars', style_function=lambda x: {'radius': 2, 'color': 'red'}, overlay=True).add_to(m)
folium.GeoJson('data/cafes.geojson', name='Cafes', style_function=lambda x: {'fillColor': 'orange'}, overlay=True).add_to(m)
folium.GeoJson('data/transit.geojson', name='Transit', style_function=lambda x: {'fillColor': 'green'}, overlay=True).add_to(m)
m
Вот сообщение об ошибке:
UnicodeDecodeError Traceback (most recent call last)
<ipython-input-13-42944e2ceb84> in <module>()
11 m = folium.Map(tiles='OpenStreetMap', location=map_center, zoom_start=zoom)
12 folium.TileLayer(tiles=tms.url_pattern, attr='GeoPySpark', name='Weighted layer', overlay=True).add_to(m)
---> 13 folium.GeoJson('data/bars.geojson', name='Bars', style_function=lambda x: {'radius': 2, 'color': 'red'}, overlay=True).add_to(m)
14 folium.GeoJson('data/cafes.geojson', name='Cafes', style_function=lambda x: {'fillColor': 'orange'}, overlay=True).add_to(m)
15 folium.GeoJson('data/transit.geojson', name='Transit', style_function=lambda x: {'fillColor': 'green'}, overlay=True).add_to(m)
/usr/local/lib/python3.4/site-packages/folium/features.py in __init__(self, data, style_function, name, overlay, control, smooth_factor, highlight_function)
480 else: # This is a filename
481 with open(data) as f:
--> 482 self.data = json.loads(f.read())
483 elif data.__class__.__name__ in ['GeoDataFrame', 'GeoSeries']:
484 self.embed = True
/usr/lib64/python3.4/encodings/ascii.py in decode(self, input, final)
24 class IncrementalDecoder(codecs.IncrementalDecoder):
25 def decode(self, input, final=False):
---> 26 return codecs.ascii_decode(input, self.errors)[0]
27
28 class StreamWriter(Codec,codecs.StreamWriter):
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 10894: ordinal not in range(128)
1 ответ
Вот мое окончательное решение проблемы, с помощью @ottomeister, я смог сузить свое исследование, которое привело меня к решению.
m = folium.Map(tiles='OpenStreetMap', location=map_center, zoom_start=zoom)
folium.TileLayer(tiles=tms.url_pattern, attr='MYGeoPySpark', name='Weighted layer', overlay=True).add_to(m)
folium.GeoJson(json.load(open('data/bars.geojson', encoding = 'utf-8')), name='Bars', style_function=lambda x: {'radius': 2, 'color': 'red'}, overlay=True).add_to(m)
folium.GeoJson(json.load(open('data/cafes.geojson', encoding = 'utf-8')), name='Cafes', style_function=lambda x: {'fillColor': 'orange'}, overlay=True).add_to(m)
folium.GeoJson(json.load(open('data/transit.geojson', encoding = 'utf-8')), name='Transit', style_function=lambda x: {'fillColor': 'green'}, overlay=True).add_to(m)
m