Python: Basemap进行数据可视化分析------专题图绘制

本文详述如何利用Python的Basemap库进行地理数据可视化,涵盖tiff数据获取、专题图绘制、颜色填充、底图添加、经纬度标记、边框设置、图例和标题添加以及图片保存等步骤。
摘要由CSDN通过智能技术生成

目录

 # # # 定义类及方法

# 一 tiff数据获取

# 二 专题图画板绘制

# 三 专题图颜色填充

# 四 底图添加

# 五 经纬度刻度线划分及标记

# 六 专题图边框设置

# 七 图例添加

# 八 标题添加

# 九 专题图保存


描述:本篇文章主要内容是基于Basemap绘制专题图,进行地理信息数据可视化;分别从tiff数据获取、专题图画板绘制、专题图颜色填充、底图添加、经纬度刻度线划分及标记、专题图边框设置、图例添加、标题添加及专题图保存这几个方面来描述并提供相关代码及注释说明。

# 导入模块
import os
import sys
import traceback
import gdal
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

# 解决打包时报的RuntimeError: main thread is not in main loop
from osgeo import ogr
plt.switch_backend('agg')
from mpl_toolkits.basemap import Basemap
from utils.configUtils import ConfigUtils
from utils.OSUtils import OSUtils

# 载入宋体
simsunpath = os.path.join(os.path.dirname(os.path.realpath(sys.argv[0])), 'resource', 'font', 'SimSun.ttf')
SimSun = FontProperties(fname=simsunpath)

# 全局设置字体及大小,设置公式字体即可,若要修改刻度字体,可在此修改全局字体
plt.rcParams['font.serif'] = ['SimSun']
plt.rcParams['font.family'] = 'Times New Roman'  # 设置默认为Times New Roman
plt.rcParams['mathtext.fontset'] = 'stix'  # 设置数学符号字体,stix与Times New Roman接近
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

 # 定义类及方法

class Mapping:

    def __init__(self, drgs):
        """
        :param
            drgs: 阈值
        """
        self.drgs = drgs
        self.config = ConfigUtils()
        self.osutils = OSUtils()
        self.systempath = self.osutils.get_system_path()

    # basemap画专题图
    def createBasemap(self, rasterfile, pngpath, tm, algor, ts, point_shp, addvcd):
        """
        :param
            rasterfile: wgs84坐标下的tif文件
            pngpath: 输出路径
            tm:起始时间
            algor:指标名
            ts:时间尺度
            prefixe:前缀地区名
            addvcd:地区行政编号
        """
        

# 一 tiff数据获取

         try:
            # 准备tif数据
            dataset = gdal.Open(rasterfile, gdal.GA_ReadOnly)
            # 仿射矩阵,左上角像素的大地坐标和像素分辨率。
            adfGeoTransform = dataset.GetGeoTransform()
            # 宽
            im_width = dataset.RasterXSize
            # 高
            im_height = dataset.RasterYSize

            # adfGeoTransform参数:
            # adfGeoTransform[0]:影像左上角x坐标
            # adfGeoTransform[1]:像元分辨率
            # adfGeoTransform[3]:影像左上角y坐标
            # llon,ulon,ulat,llat 专题图图像所占的最左、最右、最上、最下位置
            llon = adfGeoTransform[0]  # 左上角x坐标
            ulon = adfGeoTransform[0] + adfGeoTransform[1] * im_width  # 最右端x坐标
            ulat = adfGeoTransform[3]  # 影像左上角y坐标
            llat = adfGeoTransform[3] + adfGeoTransform[5] * im_height  # 最下端y坐标

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值