zoukankan      html  css  js  c++  java
  • 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)
    
  • 相关阅读:
    Go 语言简介(下)— 特性
    Array.length vs Array.prototype.length
    【转】javascript Object使用Array的方法
    【转】大话程序猿眼里的高并发架构
    【转】The magic behind array length property
    【转】Build Your own Simplified AngularJS in 200 Lines of JavaScript
    【转】在 2016 年做 PHP 开发是一种什么样的体验?(一)
    【转】大话程序猿眼里的高并发
    php通过token验证表单重复提交
    windows 杀进程软件
  • 原文地址:https://www.cnblogs.com/dengz/p/14835576.html
Copyright © 2011-2022 走看看