前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >不用某度、某德个性地图编辑器,用Python几行代码绘制任何地区的风格化城市肌理

不用某度、某德个性地图编辑器,用Python几行代码绘制任何地区的风格化城市肌理

作者头像
renhai
发布2023-11-24 16:11:52
2670
发布2023-11-24 16:11:52
举报

话不多说先上图:

richmond_district

port_au_prince

monrovia_liberia

上海外滩

上海人民广场

杭州

1.OSMnx 简介

OSMnx 是Python的一个包,建立在 GeoPandas、NetworkX 和 matplotlib 之上,可以调用 OpenStreetMap 的 地图数据,所以不限调用数据大小、次数限制就可以获取包括道路、建筑物、附属设施等地图数据,可以进行拓扑和空间分析,计算并可视化最短路径,绘制交通等时圈图;并且可以导出为shapefile、GeoPackages等格式,实现与Arcgis等软件的交互。

今天仅用来介绍关于绘制地图图底的功能。首先我们需要配置python环境,通过Anaconda配置其实非常简单:

--OSMnx环境配置:

利用清华大学开源软件镜像站下载conda安装包,安装好之后修改默认仓库为镜像源仓库。导入OSMnx环境文件,下载OSMnx的conda环境,点击可下载,将osmnx.yml导入到conda环境中即可。启动相应的IDE运行代码测试一下,我用的是jetbrains(pycharm)家的DataSpell开源软件,可以连接和编写jupyter nootbook的文件,还带有代码补全功能和debug功能,对新手很友好。

DataSpell软件界面

代码语言:javascript
复制
#测试是否安装好了
import osmnx as ox
ox.__version__
# 我的是 1.2.2 
# 如果用conda install osmnx安装的应该会是1.0.2有些会出错

说安装过程中踩的坑:

  • 一定要转为安装osmnx装一个新环境,避免python包之间的兼容问题。
  • 不要在osmnx包内运行update命令即更新包,会出现错误。

2. 生成城市肌理图片

代码语言:javascript
复制
# 导入库
import osmnx as ox
from IPython.display import Image
%matplotlib inline
代码语言:javascript
复制
# 可选,储存图片路径
img_folder = "images"
extension = "png"
size = 480 #图片长宽大小

代码语言:javascript
复制
# 定义函数
def make_plot(place,point,
              network_type="drive",
              dpi=80,dist=1000,default_width=4,
              street_widths=None): # dists 填入米
  tags = {"building": True}
    fp = f"./{img_folder}/{place}.{extension}" # 图片的地址保存
    gdf = ox.geometries_from_point(point, tags, dist=dist)
    fig, ax = ox.plot_figure_ground(
        point=point,
        dist=dist,
        network_type=network_type,
        default_width=default_width,
        street_widths=street_widths,
        save=False,
        show=False,
        close=True,
    )
    fig, ax = ox.plot_footprints(
        gdf, ax=ax, filepath=fp, dpi=dpi, save=True, show=False, close=True
    )
    return Image(fp, height=size, width=size)
  
 #执行函数
place = "shanghai"
point = (31.238850562378246, 121.48578354186554) # 填入wgs1984坐标
make_plot(place, point,network_type="all", default_width=2, street_widths={"primary": 6})

就这几行带代码,随随便便出图。

参考:

  • GitHub含有操作案例
  • OSMnx官方文档
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 renhailab 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.OSMnx 简介
    • --OSMnx环境配置:
    • 2. 生成城市肌理图片
    相关产品与服务
    图数据库 KonisGraph
    图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档