目录
效果展示
准备工作
#安装第三方库
pip install prettymaps
pip install matplotlib
教程
地址
prettymaps.plot(your_query)
#your_query指的是你想要绘制的地址,有以下三种格式
#1.地址,例如天安门,1,西长安街,东华街道,北京市,东城区,北京市,100010,中国
#建议使用openstreetmap查询
#2.经纬度,比如天安门就是经度:116.38 纬度:39.90
#Latitude / Longitude coordinates (Example: (39.90, 116.38 ))
#3.A custom boundary in GeoDataFrame format意思是使用Python的GeoPandas库,
#创建一个包含几何数据和相关属性数据的GeoDataFrame。GeoDataFrame是GeoPandas的核心数据结构,
#类似于Pandas的DataFrame,但专门用于处理地理空间数据。
预设
fig, map_axis = plt.subplots(figsize=(12, 12), constrained_layout=True)
map_plot = prettymaps.plot(
"北京大学, 5号, 颐和园路, 海淀区, 北京市, 100871, 中国",
preset='minimal',
ax=map_axis,
)
查看预设
print(prettymaps.presets())
prettymaps.plot()的参数,直接上代码
colors = {
"background": "#F2F4CB",
"background_edge": "#dadbc1",
"green": "#D0F1BF",
"green_edge": "#2F3737",
"forest": "#64B96A",
"forest_edge": "#2F3737",
"water": "#a1e3ff",
"water_edge": "#2F3737",
"water_hatch": "#85c9e6",
"parking": "#F2F4CB",
"parking_edge": "#2F3737",
"streets": "#2F3737",
"streets_edge": "#475657",
"building_palette": ["#FFC857", "#E9724C", "#C5283D"],
"building_edge": "#2F3737"
}
fig, map_axis = plt.subplots(figsize=(12, 12), constrained_layout=True)
map_plot = prettymaps.plot(
"北京大学, 5号, 颐和园路, 海淀区, 北京市, 100871, 中国",
ax=map_axis,
circle=True,
radius=1100,
#图层(layer):要获取的 OpenStreetMap 图层的字典。
#值:代表 OpenStreetMap 查询的字典
#style:Matplotlib样式参数
#Keys:图层名称(与之前相同)
#值:代表 Matplotlib 样式参数的字典
#其实就是获取的图层和你要绘制的图层11对应
layers={
"green": {
"tags": {
"land-use": "grass",
"natural": ["island", "wood"],
"leisure": "park"
}
},
"forest": {
"tags": {
"land-use": "forest"
}
},
"water": {
"tags": {
"natural": ["water", "bay"]
}
},
"parking": {
"tags": {
"amenity": "parking",
"highway": "pedestrian",
"man_made": "pier"
}
},
"streets": {
"width": {
"motorway": 5,
"trunk": 5,
"primary": 4.5,
"secondary": 4,
"tertiary": 3.5,
"residential": 3,
}
},
"building": {
"tags": {"building": True},
},
},
#fc fill-color 填充色
#ec edge-color 边缘颜色
#1. `"hatch": "ooo..."`
# 这个参数设置了要使用的填充图案。`"ooo..."`表示使用一种由圆圈(`o`)和点(`.`)交替组成的图案#进行填充。
# - 这种填充图案常用于给区域添加视觉纹理,使其与其他区域有所区别。
#2. `"lw": 1`
# - `"lw"`是"linewidth"的缩写,表示线宽。
# - 将`"lw"`设置为1表示该元素的边界线宽度为1个单位。通常单位是像素,但也可能因情况而异。
#3. `"alpha": 1`
# - `"alpha"`参数控制元素的透明度。
# - 取值范围从0到1,其中0表示完全透明,1表示完全不透明。
# - 将`"alpha"`设置为1意味着该元素是完全不透明的。
#4. `"hatch_c": colors["water_hatch"]`
# - `"hatch_c"`是"hatch color"的缩写,表示填充图案的颜色。
# - `colors["water_hatch"]`是从`colors`字典中获取键为`"water_hatch"`对应的颜色值。
#- 因此,`"hatch_c": colors["water_hatch"]`表示将使用`colors`字典中`"water_hatch"`键对应
style={
"background": {
"fc": colors["background"],
"ec": colors["background_edge"],
"hatch": "ooo...",
},
"perimeter": {
"fc": colors["background"],
"ec": colors["background_edge"],
"lw": 0,
"hatch": "ooo...",
},
"green": {
"fc": colors["green"],
"ec": colors["green_edge"],
"lw": 1,
},
"forest": {
"fc": colors["forest"],
"ec": colors["forest_edge"],
"lw": 1,
},
"water": {
"fc": colors["water"],
"ec": colors["water_edge"],
"hatch": "ooo...",
"hatch_c": colors["water_hatch"],
"lw": 1,
},
"parking": {
"fc": colors["parking"],
"ec": colors["parking_edge"],
"lw": 1,
},
"streets": {
"fc": colors["streets"],
"ec": colors["streets_edge"],
"alpha": 1,
"lw": 0,
},
"building": {
"palette": colors["building_palette"],
"ec": colors["building_edge"],
"lw": 0.5,
}
}
)
效果图(北京大学)
加上文字
map_plot.ax.set_title(
'北京大学',
fontproperties = FontProperties(
fname = 'image/OtsutomeFont_Ver3_15.ttf',
size = 50
)
)
控制地图圆还是方
radius = False
改变生成地图大小和旋转方向
scale_x = .6,
scale_y = -.6,
#scale_x控制水平方向的缩放。设置为0.6意味着输出图像在水平方向上缩小到原始尺寸的60%。
#scale_y控制垂直方向的缩放。设置为-0.6意味着输出图像在垂直方向上缩小到原始尺寸的60%,并沿y轴翻
#转。负值会导致y轴反向。
设置边界和输出尺寸
dilate = 0.5
figsize = (22,10)
#dilate=0.5
#dilate参数用于控制地图边界的扩展或收缩。
#如果设置为正值(例如0.5),则会扩大地图边界,包含更大的区域。
#如果设置为负值(例如-0.5),则会收缩地图边界,仅显示较小的区域。
#figsize=(22, 10)
#figsize参数控制输出图像的尺寸大小,单位为英寸。
#它是一个元组,包含两个值:(width, height)
#在这个例子中,figsize=(22, 10)意味着输出图像的宽度为22英寸,高度为10英寸。
#增大这些值会产生更大的图像,反之亦然。
#适当设置figsize可确保输出地图的尺寸适合您的使用场景,如海报打印、网页显示等。
最开始设置的
circle=True
radius=1100
意味着输出圆形,半径为1100米的范围
如果不输出圆形,要么
radius=False
要么不设置
预设设置
#创建预设
prettymaps.create_preset(
"my-preset",
layers = {...
#删除预设
prettymaps.delete_preset('my-preset')
多个地图拼接,懒得写了,结束吧