Python:加载设施名称时未加载地图

时间:2018-10-18 09:13:10

标签: python shapefile folium

我正在制作一张交互式地图,以绘制全国各地的各种医疗设施。我在网上找到了可以用于该项目的合适的形状/数据库文件(以及GeoJson和CSV)。

我设法将位置显示在地图上,但是设施名称没有出现。

根据我打印的sf.fields,名称在字段8中,我可以将这些名称打印为record.record[8],它们将出现在控制台中。

但是,当我将弹出窗口设置为popup=record.record[8].title()时,地图将不再加载。它在控制台内编译,不返回错误。我在这里想念什么?

这是到目前为止我得到的:

import folium
import pandas
import shapefile
import csv

with open('VA_Facilities.csv', 'r') as data_file:
    csv_data = csv.reader(data_file)

myshp = open('data/va_facilities_1.shp', "rb")
mydbf = open('data/va_facilities_1.dbf', "rb")
sf = shapefile.Reader(shp=myshp, dbf=mydbf)
records = sf.shapeRecords()

# Prints the number of records, type of the shape, and fields for the 
dataset
print (len(records))
print (sf.shapes()[0].shapeType)
print (sf.fields)

# Prints the first three records for verification reasons
for record in records[:3]:
    print (record.record[0], record.shape.points[0], record.record[8])


map=folium.Map(location=[47.1164, -101.2996],zoom_start=4,tiles='CartoDB 
positron')
for record in records:
    lat, lng = (record.shape.points[0][1],record.shape.points[0][0])

    folium.RegularPolygonMarker(
    [lat, lng],
    popup=record.record[8].title(),
    fill_color='#EE1C25',
    number_of_sides=5,
    radius=5
    ).add_to(map)


map.save(outfile='Healthcare_Facilities.html')

record.record[0]的值更改为零将照常加载地图,但没有名称。

1 个答案:

答案 0 :(得分:0)

弄清楚了。 Folium的最新版本依赖于原始HTML输入,因此while (iStillWantToReceiveMessages) { }是必须添加到parse_html=True字段中的内容,才能获得所需的结果。

感谢您的帮助!