前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python可视化| 山峦地图绘制

python可视化| 山峦地图绘制

作者头像
郭好奇同学
发布2021-02-12 18:00:21
1.1K0
发布2021-02-12 18:00:21
举报
文章被收录于专栏:好奇心Log好奇心Log

本期推文我们就使用Python-ridge_map包绘制山峦效果的地图可视化作品。主要内容如下:

  • Python-ridge_map包简介
  • Python-ridge_map包 实例应用

Python-ridge_map包简介

ridge_map包作为Python第三方包就是为绘制“山峦”地图而生,其官网为:https://github.com/ColCarroll/ridge_map,官方提供的例子如下:(由于官网提供的例子都需要在线下载数据,但由于有的小伙伴无法科学上网,这里只提供效果图)

「样例1」

代码语言:javascript
复制
from ridge_map import RidgeMap

RidgeMap().plot_map()

Sample_01

「样例2」

代码语言:javascript
复制
from ridge_map import FontManager

font = FontManager('https://github.com/google/fonts/blob/master/ofl/uncialantiqua/UncialAntiqua-Regular.ttf?raw=True')
rm = RidgeMap((-156.250305,18.890695,-154.714966,20.275080), font=font.prop)

values = rm.get_elevation_data(num_lines=100)
rm.plot_map(values=rm.preprocess(values=values, lake_flatness=2, water_ntile=10, vertical_ratio=240),
            label="Hawai'i",
            label_y=0.85,
            label_x=0.7,
            label_size=60,
            linewidth=2,
            line_color=plt.get_cmap('ocean'),
            kind='elevation')

(注:更多例子大家可参照官网,其数据都是在线获取)

Python-ridge_map包 实例应用

鉴于网络问题,这一部分我们提供实例数据进行可视化教程绘制,使用的数据为png格式的DEM数据。这里需要使用cv2 包进行图片读取。

在绘制之前,我们需要对图片数据进行“转置”操作:

代码语言:javascript
复制
import cv2
import numpy as np

img_file = r"G:\middle_earth.png"

img = cv2.imread(img_file, 0)
height = img.shape[0]
line_interval = int(height / 150)
image_values = []
for i in reversed(range(img.shape[0])):
    if (i % line_interval) == 0:
        row_values = []
        for j in range(img.shape[1]):
            if (j % 1) == 0:
                row_values.append(img[i][j])
        image_values.append(row_values)
values_pro = np.array(image_values)

数据结果如下:

数据处理后

我们对比下数据处理之前的(注意红色框中内容):

数据处理后

接下来我们直接进行可视化绘制,这里直接给出绘图代码:

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(9,6), dpi=100,facecolor="#EFEFE1")
ax.set_facecolor("#EFEFE1")

rm = RidgeMap()
values = rm.preprocess(values=values_pro,
                       water_ntile=20,
                       lake_flatness=2,
                       vertical_ratio=30)
# 可视化绘制
rm.plot_map(values=values,
            label='',
            label_y=0.2,
            label_x=0.2,
            label_size=30,
            linewidth=.6,
            line_color="black",
            kind='elevation',
            background_color="#EFEFE1",
            ax=ax)

ax.text(.5,1.1,"Map Charts in Python Exercise 02:Ridge_map Exercise",transform = ax.transAxes,ha='center', 
        va='center',fontweight="bold",fontsize=15)
ax.text(.5,1.03, "processed map charts with Ridge_map",
        transform = ax.transAxes,ha='center', va='center',fontsize = 10,color='black')
ax.text(.83,.0,'\nVisualization by DataCharm',transform = ax.transAxes,
        ha='center', va='center',fontsize = 8,color='black')
plt.show()

最终可视化结果如下:

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-27,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 好奇心Log 微信公众号,前往查看

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

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Python-ridge_map包简介
  • Python-ridge_map包 实例应用
相关产品与服务
灰盒安全测试
腾讯知识图谱(Tencent Knowledge Graph,TKG)是一个集成图数据库、图计算引擎和图可视化分析的一站式平台。支持抽取和融合异构数据,支持千亿级节点关系的存储和计算,支持规则匹配、机器学习、图嵌入等图数据挖掘算法,拥有丰富的图数据渲染和展现的可视化方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com