51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1180|回复: 0
打印 上一主题 下一主题

[python] 使用Python来绘制你的世界地图

[复制链接]
  • TA的每日心情
    无聊
    12 分钟前
  • 签到天数: 1038 天

    连续签到: 4 天

    [LV.10]测试总司令

    跳转到指定楼层
    #
    发表于 2022-11-9 11:44:17 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    Python之所以这么流行,是因为它不仅能够应用于科技领域,还能用来做许多其他学科的研究工具,绘制地图便是其功能之一。
      今天我们用matplot工具包之一的 mpl_toolkits 来绘制世界地图,这是一个简单的可视化工具,如果希望绘制更加复杂的地图,可以考虑使用Google Maps API,不过这不在我们今天的讨论范围之内。
      一、准备
      请选择以下任一种方式输入命令安装依赖:1. Windows 环境 打开 Cmd (开始-运行-CMD)。2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.


    1. <font size="3"> pip install numpy

    2.   pip install matplotlib</font>
    复制代码


    为了使用 mpl_toolkits, 单纯安装matplotlib是不够的,我们还需要单独安装basemap,如果你已经安装了Anaconda,那这一步就非常好办,输入以下命令安装即可:


    1. <font size="3"> conda install basemap</font>
    复制代码


    如果没有的话,就稍微麻烦一点:
      1.安装geos: pip install geos2.根据你的Python版本下载basemaphttp://www.lfd.uci.edu/~gohlke/pythonlibs/#basemap注意cp后面的数字是Python的版本。(在页面上按ctrl+F,输入basemap快速定位)
      3.在 cmd 下进入该文件的目录,运行



    1. <font size="3">pip install basemap?1.2.1?cp37?cp37m?win_amd64.whl</font>
    复制代码


    二、简单地图
      让我们开始绘制一个地球,中心指向中国:






    这里的重点在于Basemap,指定好你想要放置的中心。





    效果还不错哦,不仅如此,它其实不单单只是一张图像,它还是一个功能齐全的matplot画布。这也就意味着,你能够在上面画线!让我们放大地图,进入中国区域,然后标记出深圳的位置:








    不要用蓝底图了,看得不是很清晰,我们换成浮雕型:





    可以很明显地看到山区、丘陵等地理样貌。你还可以根据你的需要,针对某几个城市做连线或者绘制某些经纬度之间的区域。别忘了,这可是matplotlib可编辑的画布。?
      三、世界地图
      接下来,我们将上述的世界地图展开成带经纬线的平面图形。









     嗯,有点那个味了哈。甚至可以自己去打印出来给小孩子学习地理知识了。
      但是如果他想学习地理,整个世界的范围好像有点大?我们先让他学习世界著名景点的位置吧?






    放大查看:





    这样,只需要往locations里类似地加入某个地点的经纬度,就能在地图上展示出来了,你还能自定义地画两个地点之间的连线,或者是重点放大某个区域。总而言之,你想干的,基本上基于Matplotlib都可以做得到。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-1 09:21 , Processed in 0.063732 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表