前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python basemap制作utm遥感图(改)

python basemap制作utm遥感图(改)

作者头像
一个有趣的灵魂W
发布2020-09-15 12:37:54
9890
发布2020-09-15 12:37:54
举报
文章被收录于专栏:一个有趣的灵魂W

上文做了个大概的结果,发现还是有问题,明显能发现国界线对不上:

但是改完之后还是有问题,栅格图没法垂直正北放置:

投影坐标是正确了,但是不美观啊,不过暂时也只能这样了。。。慢慢琢磨有没有其他参数可以修改吧。。。另外还有一个问题就是0值镂空,暂时也还没完善。

import os

import gdal, osr

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

import numpy as np

from mpl_toolkits.basemap import Basemap, cm

import pyproj

img='D:/Thesis/aodrepair/temp/result/inter/monthave/20181.tif'

#img='D:/Thesis/aodrepair/temp/result/c20181.tif'

ds=gdal.Open(img)

band=ds.GetRasterBand(1)

elevation = band.ReadAsArray()

elevation[elevation==32767]=0

x0, dx, dxdy, y0, dydx, dy = ds.GetGeoTransform()

nrows, ncols = elevation.shape

x1 = x0 + dx * ncols

y1 = y0 + dy * nrows

latst=np.linspace(x0,x1,ncols)

lonst=np.linspace(y0,y1,nrows)

lont, latt = np.meshgrid(latst, lonst)

lon_0t=(x0+x1)/2#计算中心坐标

lat_0t=(y0+y1)/2#计算中心坐标

lo=lont.reshape((ncols*nrows))

la=latt.reshape((ncols*nrows))

projlatlon=np.column_stack((lo,la))

coor=np.zeros((len(projlatlon),2))

p1 = pyproj.Proj(init='epsg:32650')

for i in range(len(projlatlon)):

coor[i,0],coor[i,1]= p1(projlatlon[i,0],projlatlon[i,1],inverse=True)

coor=coor.reshape((nrows,ncols,2))

lonst2=coor[:,:,0]

latst2=coor[:,:,1]

#map = Basemap(projection = 'tmerc',rsphere=(6378137.00,6356752.3142),lat_0 = lat_0t, lon_0 = lon_0t,llcrnrlon = x0, llcrnrlat = y1,urcrnrlon = x1,urcrnrlat = y0)

#map = Basemap(projection = 'merc',lat_0 = 33.86499240539949, lon_0 = 122.20569578770636,llcrnrlon = 96.18590848038274, llcrnrlat = 16.998146356664954,urcrnrlon = 139.022,urcrnrlat = 46.281)

#map= Basemap(epsg=23849,llcrnrlon = 96.18590848038274, llcrnrlat = 16.998146356664954,urcrnrlon =148.22548309502997,urcrnrlat = 50.73183845413403)#,urcrnrlon = 131.022,urcrnrlat = 44.5281

#map = Basemap(projection = 'merc',lat_0 = 33.86499240539949, lon_0 = 122.20569578770636,)

#map= Basemap(projection = 'merc',lat_0 = 33.86499240539949, lon_0 = 122.20569578770636,lat_1=60,width=3915000,height=3600000)#,urcrnrlon = 131.022,urcrnrlat = 44.5281

#map = Basemap(projection = 'tmerc',resolution='i',area_thresh=10000,lat_0 = 33.86499240539949, lon_0 = 122.20569578770636,width=3915000,height=3600000\

# ,ellps='NWL9D')

map = Basemap(projection = 'tmerc',area_thresh=10000,resolution='i',no_rot=True,anchor='N',ellps='WGS84',lat_0 = 33.86499240539949, lon_0 = 121.20569578770636,width=3915000,height=3600000)

#map = Basemap(projection = 'cyl',area_thresh=10000,k_0=1.01,resolution='i',rsphere=(6378137.00,6356752.3142,298.257223563),lat_0 = 33.86499240539949, lon_0 = 122.20569578770636,llcrnrlon = 96.18590848038274, llcrnrlat = 16.998146356664954,urcrnrlon =148.22548309502997,urcrnrlat = 50.73183845413403)

xit, yit = map(lonst2, latst2)

#lonst1=lonst-min(lonst)

#latst1=latst-min(latst)

#map = Basemap(projection = 'cyl',lat_0 = lat_0t, lon_0 = lon_0t,llcrnrlon = x0, llcrnrlat = y1,

# urcrnrlon = x1,urcrnrlat = y0,resolution = 'c')

#map.readshapefile('D:/Thesis/aodrepair/temp/result/wgsshp','a')

map.drawcoastlines(linewidth=0.5)

map.drawcountries(linewidth=0.5)

map.drawparallels(np.arange(-80., 81, 20.), labels=[1, 0, 0, 0], fontsize=12)

map.drawmeridians(np.arange(-180., 181., 20.), labels=[0, 0, 0, 1], fontsize=12)

plt.annotate(u"East\nChina\nSea", xy=(0.55,0.32), xycoords='axes fraction',

color='k', fontsize=5,fontstyle='italic')

plt.annotate(u"Sea\n of\nJapan", xy=(0.75,0.67), xycoords='axes fraction',

color='k', fontsize=5,fontstyle='italic')

plt.annotate(u" South\nChina Sea", xy=(0.25,0.05), xycoords='axes fraction',

color='k', fontsize=5,fontstyle='italic')

plt.annotate(u"Pacific\nOcean", xy=(0.8,0.15), xycoords='axes fraction',

color='k', fontsize=5,fontstyle='italic')

levels=map.pcolor(xit, yit,elevation)#latst1, lonst1 xit, yit

cbar = map.colorbar(levels, location='right', pad="2%")

#plt.savefig('d:/a.png',dpi=300)

plt.show()

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一个有趣的灵魂W 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档