Basemap使用记录

 一、在地图上画点,将经纬度标记在地图上。

1、平铺

def plot_ducts_points(csv_path,point_color,save_path):
    lon = []
    lat = []
    csv_reader = csv.reader(open(csv_path, encoding='utf-8'))
    for row in csv_reader:
        lon.append(eval(row[1]))
        lat.append(eval(row[2]))
    map = Basemap(resolution='l', projection='robin', lat_0=0, lon_0=0)
    map.drawmapboundary(fill_color='#6994C9')
    map.fillcontinents(color='#D5D5D5', lake_color='#98D4EC')
    map.drawmeridians(range(-180, 180, 60), labels=[0, 0, 0, 1], fontsize=6)
    map.drawparallels(range(-90, 90, 30), labels=[1, 0, 0, 0], fontsize=6)
    map.drawcoastlines()
    x, y = map(lon, lat)
    # cm = plt.cm.get_cmap('Reds')
    plt.scatter(x, y, 3, c= point_color,marker='D')
    plt.savefig(save_path, dpi=600)

 示意图如下:

 2、北极

map = Basemap(resolution='l', projection='npstere', boundinglat=66, lon_0=0)

其中projection = 'npstere' 为北极地区

def plot_ducts_points_Arctic(csv_path, point_color, save_path):
    lon = []
    lat = []
    csv_reader = csv.reader(open(csv_path, encoding='utf-8'))
    for row in csv_reader:
        if eval(row[1])>=66.34:
            lon.append(eval(row[0]))
            lat.append(eval(row[1]))
    map = Basemap(resolution='l', projection='npstere', boundinglat=66, lon_0=0)
    map.drawmapboundary(fill_color='#6994C9')
    map.fillcontinents(color='#D5D5D5', lake_color='#98D4EC')
    map.drawmeridians(np.arange(0, 360, 30), labels=[True, True, False, False], fontsize=8, latmax=90)
    map.drawparallels(np.arange(60, 90, 10), labels=[False, False, True, False], fontsize=8)
    # map.drawmeridians(range(-180, 180, 60), labels=[0, 0, 0, 1], fontsize=8)
    # map.drawparallels(range(-90, 90, 30), labels=[1, 0, 0, 0], fontsize=8)
    map.drawcoastlines()
    x, y = map(lon, lat)
    # cm = plt.cm.get_cmap('Reds')
    plt.scatter(x, y, 4, c=point_color, marker='D')
    plt.savefig(save_path, dpi=600)

 示意图如下:

3、南极

 map = Basemap(resolution='l', projection='spstere', boundinglat =-60, lon_0=0)

其中projection='spstere'为南极地区

def plot_ducts_points_Antarctic(csv_path, point_color, save_path):
    lon = []
    lat = []
    csv_reader = csv.reader(open(csv_path, encoding='utf-8'))
    for row in csv_reader:
        if eval(row[1]) <= -60:
            lon.append(eval(row[0]))
            lat.append(eval(row[1]))
    map = Basemap(resolution='l', projection='spstere', boundinglat =-60, lon_0=0)
    map.drawmapboundary(fill_color='#6994C9')
    map.fillcontinents(color='#D5D5D5', lake_color='#98D4EC')
    map.drawmeridians(np.arange(0, 360, 30), labels=[True, True, False, False], fontsize=8, latmax=90)
    map.drawparallels(np.arange(-90, 90, 30), labels=[False, False, True, False], fontsize=8)
    # map.drawmeridians(range(-180, 180, 60), labels=[0, 0, 0, 1], fontsize=8)
    # map.drawparallels(range(-90, 90, 30), labels=[1, 0, 0, 0], fontsize=8)
    map.drawcoastlines()
    x, y = map(lon, lat)
    # cm = plt.cm.get_cmap('Reds')
    plt.scatter(x, y, 4, c=point_color, marker='D')
    plt.savefig(save_path, dpi=600)

示意图如下:

 

二、 在地图上将某个变量进行标注(如高度)

 

def plot_hb(csv_path,save_path):
    # 使用open函数打开csv文件再通过reader()方法将其转为可被识别的python对象
    csv_reader=csv.reader(open(csv_path,encoding='utf-8'))
    # 这里的输出是逐行的循环输出.
    lon=[]
    lat=[]
    Msl_alt = []
    for row in csv_reader:
        lon.append(eval(row[1]))
        lat.append(eval(row[2]))
        Msl_alt.append(eval(row[3]))
    # 创建地图对象
    map = Basemap(projection='robin', lon_0=0, resolution='c')
    # 转换经纬度到地图坐标系
    x, y = map(lon, lat)
    # 绘制地图
    map.drawmapboundary(fill_color='#6994C9')
    map.fillcontinents(color='#D5D5D5', lake_color='#98D4EC')
    # 标注经纬度
    # 参数解释:longitude, latitude, s, fontsize
    map.drawmeridians(range(-180, 180, 60), labels=[0, 0, 0, 1], fontsize=6)
    map.drawparallels(range(-90, 90, 30), labels=[1, 0, 0, 0], fontsize=6)
    map.scatter(x, y, c = Msl_alt, cmap='gnuplot', marker='o',s = 4, alpha=1)
    plt.colorbar(label='Vertical Height of the Troposphere(km)')
    plt.title("Duct_hb")
    plt.savefig(save_path, dpi=600)

示意图如下:

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

StrugglerL123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值