• BaseMap入门


    Basemap入门

    # 需要导入
    # -*- coding: utf-8 -*-
    from mpl_toolkits.basemap import Basemap
    import matplotlib.pyplot as plt
    

    1. 基础地图

    map  = Basemap() # 实例化地图对象
    map.drawcoastlines() # 调用惯性线层
    plt.show() # 展示图片
    plt.savefig('./test.png')
    

    2. 添加投影参数 lat_0 , lon_0 地图构造器

    # fillcontinents()   color 大陆颜色 , lake_color湖泊颜色
    # drawmapboundary() fill_color填充地图颜色
    
    map = Basemap(projection='ortho',lat_0=0,lon_0=0)
    map.drawmapboundary(fill_color='aqua')
    
    # lake_color 是湖泊的变色
    
    map.fillcontinents(color='coral',lake_color='#1f77b4')
    map.drawcoastlines()
    plt.show()
    

    3 投影 Projection cyl 是默认的 方形投影 和 长方投影

    map = Basemap(projection='cyl')
    map.drawmapboundary(fill_color='aqua')
    map.fillcontinents(color='coral',lake_color='aqua')
    map.drawcoastlines()
    plt.show()
    

    4. lon_0 经度 , lat_0 纬度

    map = Basemap(projection='aeqd',lon_0=10,lat_0=50)
    map.drawmapboundary(fill_color='aqua')
    map.fillcontinents(color='coral',lake_color='aqua')
    map.drawcoastlines()
    plt.show()
    

    5. 使用 espg 设置投影

    '''espg是数字命名的投影,'''
    
    # 使用 UTM 投影 展示 梅诺卡岛
    
    map = Basemap(llcrnrlon=3.75,llcrnrlat=39.75,urcrnrlon=4.35,urcrnrlat=40.15,resolution='h',epsg=5520)
    map.drawmapboundary(fill_color='aqua')
    map.fillcontinents(color='coral',lake_color='aqua')
    map.drawcoastlines()
    plt.show()
    
    
    #### 笔记: cyl , merc, mill,cea,gall投影时, 假定角:为 -180,-90,180,90为全地球
    
    

    6. 边界框

    map = Basemap(llcrnrlon = -10.5,llcrnrlat=35,urcrnrlon=4,urcrnrlat=44,
               resolution='i',projection='tmerc',lat_0=39.5,lon_0=-3.25)
    
    map.drawmapboundary(fill_color='aqua')
    map.fillcontinents(color='coral',lake_color='aqua')
    map.drawcoastlines()
    plt.show()
    

    7. 使用sinu,moll,hammer,npstere,spstere,nplaea,splaea,npaeqd,spaeqd,robin,eck4,kav7或mbtfpq投影时,无法使用此方法。

    # 要么是因为绘制了所有地球仪,要么是因为无法根据地理坐标计算出扩展名。
    
    map = Basemap(resolution='l', satellite_height=3000000,
               projection='nsper', lat_0=30, lon_0=-27,
               llcrnrx=500000, llcrnry=500000, urcrnrx=2700000, urcrnry=2700000)
    map.drawmapboundary(fill_color='aqua')
    map.fillcontinents(color='coral', lake_color='aqua')
    map.drawcoastlines()
    plt.show()
    

    8. 只有正射,geos和nsper投影可以使用此方法来设置地图扩展名

    map = Basemap(projection='aeqd',lon_0 = 0,lat_0 =90,width=10000000,height=10000000)
    map.drawmapboundary(fill_color='aqua')
    map.fillcontinents(color='coral',lake_color='aqua')
    map.drawcoastlines()# 标注点
    for i in range(0,10000000,1000000):   
        map.plot(i,i,marker='o',color='y')
    
    plt.show()
    

    9. 地图上画点

    map = Basemap(projection='ortho',lat_0=0,lon_0=0)
    map.drawmapboundary(fill_color='aqua')
    map.fillcontinents(color='coral',lake_color='aqua')
    map.drawcoastlines()
    x, y =map(0,0)# laction 关键字设置为True, x,y是经纬度(单位度)
    map.plot(x,y,marker='D',color='m')
    plt.show()
    

    10. 散点

    ### 10. 散点map = Basemap(projection='ortho',lat_0=0,lon_0=0)
    map.drawmapboundary(fill_color='aqua')
    map.fillcontinents(color='coral',lake_color='aqua')
    map.drawcoastlines()
    lons =[0,10,-20,-20] # 经线
    lats = [0,-10,40,-20] # 纬线
    x,y = map(lons,lats) 
    # 经纬线 组合 
    scattermap.scatter(x,y,marker='D',color='m')plt.show()
    

    11. 栅格数据读取

    from osgeo import gdal
    from numpy import linspace
    meshgridmap = Basemap(projection='tmerc',lat_0=0,lon_0=3, llcrnrlon=1.819757266426611,llcrnrlat=41.583851612359275,           urcrnrlon=1.841589961763497, urcrnrlat=41.598674173123)
    ds = gdal.Open('./dem.tiff')
    data = ds.ReadAsArray()
    ### 在绘制轮廓之前,必须创建两个矩阵,其中包含数据矩阵中每个点的x和y坐标位置# - linspace , 使用n个元素创建一个从初始值到最终值得数组#           地图坐标从0到 map.urcrnrx或者map.urcrnry.#           并且具有与数据数组data.shape[1]  和 data.shape[0]相同的大小   
    
    # - meshgrid , 接收两个数组并使用他们创建一个矩阵. x的坐标在每一列中重复,x在每一行中重复
    x = linspace(0,map.urcrnrx,data.shape[1])
    y = linspace(0,map.urcrnry,data.shape[0])
    
    xx,yy = meshgrid(x,y)# contourf 方法 将采用x,y 和数据巨准. 并将他们绘制在默认的颜色表中(jet),自动绘制# 级别数据, 在数据组装之后定义   # - 指示级别数据是整数, 数据数组的极值将指示色标的极值   # - 包含每个级别的值得列表. 范围功能可用于设置他们 range(0,3000,100) ,每100个单位的级别
    
    map.contourf(xx,yy,data)
    plt.show()
    

    12. contour 轮廓

    map = Basemap(projection='tmerc',           lat_0=0,lon_0=3,           llcrnrlon=1.819757266426611,           llcrnrlat=41.583851612359275,           urcrnrlon=1.841589961763497,           urcrnrlat=41.598674173123)ds = gdal.Open('dem.tiff')
    data = ds.ReadAsArray()
    x = linspace(0,map.urcrnrx,data.shape[1])
    y = linspace(0,map.urcrnrx,data.shape[0])
    xx,yy = meshgrid(x,y)# 使用 contour 来处理# 处理海拔高度 : 400m - 1400m , 每100m都会创建一条轮廓# 颜色不是默认喷射的 , 是通过cubehelix颜色图传递给cmap参数来完成# 可以将标签设置为轮廓线方法()   # - 内联 使要删除的轮廓线,在该线下   # - fmt 格式化数字   # - fontsize 设置标签字体的大小 
    # - colors 设置标签而颜色. 默认情况下,与轮廓线相同
    cs = map.contour(xx,yy,data,range(400,1500,100),cmap=plt.cm.cubehelix)plt.clabel(cs,inline=True,fmt='%1.0f',fontsize=12,colors='k')plt.show()
    

    13 . pcolormesh 绘制分类

    map = Basemap(projection='tmerc',lat_0=0,lon_0=3,           llcrnrlon=1.819757266426611,           llcrnrlat=41.583851612359275,           urcrnrlon=1.841589961763497,           urcrnrlat=41.598674173123           )
    ds =  gdal.Open('dem.tiff')
    data = ds.ReadAsArray()
    x = linspace(0,map.urcrnrx,data.shape[1])
    y = linspace(0,map.urcrnrx,data.shape[0])
    xx,yy = meshgrid(x,y)
    map.pcolormesh(xx,yy,data)
    plt.show()
    

    14 . 计算点在地图上的位置

    map = Basemap(projection='aeqd',lon_0=10,lat_0=50)print map(10,50)#  inverse 为False 输出的经度和纬度,#  inverse 为True 输出相反print map(20015077.3712, 20015077.3712, inverse=True)
    
  • 相关阅读:
    java 泛型 -- 泛型类,泛型接口,泛型方法
    android:id="@id/resid" , andorid:id="@+id/resid" 的区别
    Ubuntu16.04 + Win 10 双系统 时间同步,启动项顺序,NumLock指示灯常亮
    Linux 下 Console / 控制台 复制粘贴快捷键
    Android 快速开发框架:推荐10个框架:afinal、ThinkAndroid、andBase、KJFrameForAndroid、SmartAndroid、dhroid..
    JQuery的Ajax跨域请求的
    1031. Hello World for U (20)
    项目进阶 之 集群环境搭建(三)多管理节点MySQL集群
    Tomcatserverhttps协议配置简单介绍
    Unity3D
  • 原文地址:https://www.cnblogs.com/dengz/p/14835576.html
Copyright © 2020-2023  润新知