python浮雕图片_Python+basemap绘制投影图像,PythonBasemap,已,的,影像
from osgeo import gdal
from osgeo import gdal_array
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np
# import rasterio
import pyproj
import math
file = r'F:\***.tif'
# 读取tif影像函数
def readTifAsArray(tifPath):
dataset = gdal.Open(tifPath)
if dataset == None:
print(tifPath + "文件错误")
return tifPath
image_datatype = dataset.GetRasterBand(1).DataType
row = dataset.RasterYSize
col = dataset.RasterXSize
nb = dataset.RasterCount
proj = dataset.GetProjection()
gt = dataset.GetGeoTransform()
if nb != 1:
array = np.zeros((row, col, nb),
dtype = gdal_array.GDALTypeCodeToNumericTypeCode(
image_datatype))
for b in range(nb):
band = dataset.GetRasterBand(b + 1)
nan = band.GetNoDataValue()
array[:, :, b] = band.ReadAsArray()
else:
array = np.zeros((row,col),
dtype = gdal_array.GDALTypeCodeToNumericTypeCode(
image_datatype))
band = dataset.GetRasterBand(1)
nan = band.GetNoDataValue()
array = band.ReadAsArray()
return array, nan, gt, proj
data = readTifAsArray(file)[0] # 栅格数组
data[data>320] = np.nan # 去除海面 999
affine = readTifAsArray(file)[2] # 读取仿射变换参数
width = data.shape[1]
height = data.shape[0]
map_width = width * affine[1] # 影像的宽度米
map_height = height * affine[1] # 高度 米
xmin = affine[0] # 分别为左下xy 右上xy坐标
xmax = xmin + map_width
ymax = affine[3]
ymin = ymax - map_height
extent = [xmin, xmax, ymin, ymax] # [left, right, bottom, top]
crs = readTifAsArray(file)[3] # 原始影像的投影albers
crs2 = readTifAsArray(r'Y:\folder\仿射变换_final_test.tif')[3] # WGS84大地坐标系
crs = pyproj.CRS.from_proj4('+proj=aea +lat_0=0 +lon_0=105 +lat_1=25 +lat_2=47 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs')
crs2 = pyproj.CRS.from_wkt(crs2)
x1 = np.array([xmin, xmax]) # 一定要转换为numpy数组形式,否则转换后可能出现inf等无效值
y1 = np.array([ymin, ymax])
proj = pyproj.Transformer.from_crs(crs, crs2)
lat, lon = proj.transform(x1, y1) # 将左下右上xy坐标(米)转化为大地坐标系(经纬度)
# Instantiate Basemap class
plt.style.use(['no-latex'])
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
fig = plt.figure(figsize=(8,5))
ax = fig.add_subplot(121)
m = Basemap(llcrnrlon=lon[0], llcrnrlat=lat[0], urcrnrlon=lon[1], urcrnrlat=lat[1], # 左下右上经纬度坐标 关键在于如何将已投影的坐标转换为经纬度坐标
projection='aea', # albers等面积投影
resolution='h', lat_0=0, lon_0=105, lat_1=25, lat_2=47) # 指定albers的参考纬度线和中心经度线
# There might be other parameters to set depending on your CRS
# m.drawmapboundary(fill_color='skyblue') # 背景绘制蓝色
# m.shadedrelief() # 灰蓝背景
# m.etopo() # 绘制noaa浮雕底图 etopo
# m.bluemarble() # 大理石蓝背景
# m.fillcontinents(lake_color='aqua')
# m.drawcoastlines() # 绘制世界矢量边界
import matplotlib
norm = matplotlib.colors.Normalize(vmin=275, vmax=325)
m.imshow(data, origin='upper', extent=extent, cmap='jet', norm=norm) # 绘制栅格数据
cb = m.colorbar(extend='both' ,location="bottom", pad=0.3)
cb.ax.tick_params(labelsize=10) #设置色标刻度字体大小。
font = {'family' : 'serif',
# 'color' : 'darkred',
'color' : 'black',
'weight' : 'normal',
'size' : 10,
}
cb.set_label('Temperature/K' ,fontdict=font)
parallels = np.arange(0.,43,1.) # 绘制经纬度线
meridians = np.arange(116.,125.,2.)
m.drawparallels(parallels,labels=[True,False,False,False], linewidth=0.1) # labels = [left,right,top,bottom]
m.drawmeridians(meridians,labels=[False,False,False,True], linewidth=0.1)
# plt.show()
# plt.savefig('figure_name.png',dpi=300, bbox_inches='tight') # , transparent=True透明保存
############################################################################### 绘制第二个子图
ax = fig.add_subplot(122)
m = Basemap(llcrnrlon=lon[0], llcrnrlat=lat[0], urcrnrlon=lon[1], urcrnrlat=lat[1], # 左下右上经纬度坐标 关键在于如何将已投影的坐标转换为经纬度坐标
projection='aea', # albers等面积投影
resolution='h', lat_0=0, lon_0=105, lat_1=25, lat_2=47) # 指定albers的参考纬度线和中心经度线
import matplotlib
norm = matplotlib.colors.Normalize(vmin=275, vmax=325)
m.imshow(data, origin='upper', extent=extent, cmap='jet', norm=norm) # 绘制栅格数据
cb = m.colorbar(extend='both' ,location="bottom", pad=0.3)
cb.ax.tick_params(labelsize=10) #设置色标刻度字体大小。
font = {'family' : 'serif',
# 'color' : 'darkred',
'color' : 'black',
'weight' : 'normal',
'size' : 10,
}
cb.set_label('Temperature/K' ,fontdict=font)
parallels = np.arange(0.,43,1.) # 绘制经纬度线
meridians = np.arange(116.,125.,2.)
m.drawparallels(parallels,labels=[True,False,False,False], linewidth=0.1) # labels = [left,right,top,bottom]
m.drawmeridians(meridians,labels=[False,False,False,True], linewidth=0.1)
plt.savefig('figure_name.png', dpi=300, bbox_inches='tight') # , transparent=True透明保存
python浮雕图片_Python+basemap绘制投影图像,PythonBasemap,已,的,影像相关推荐
- python浮雕图片_Python bug只会出现在使用Numpy的浮雕图像上
该程序的目的是拍摄ppm图像并对其进行浮雕. (整个项目的详细信息可以找到 here)我正在帮助分配任务,似乎无法找到学生的错误. 我使用的原始图像如下所示: 结果应如下所示: 这是整个程序(围绕问题 ...
- python浮雕图片_Python bug,只出现在使用Numpy的浮雕图像上
这个程序的目的是采取一个ppm图像和浮雕它.(整个项目的细节可以找到here)我正在帮作业评分,似乎找不到学生的缺陷.在 我使用的原始图像如下所示: 结果应该如下所示: 以下是整个程序(在问题行周围加 ...
- python浮雕图片_python图像数据增强——imgaug (二)
在这章我们展示一个涵盖了大部分数据增强方法的例子.这里有大量的代码,可能会引起部分读者的不适,但是大家可以主要看注释,以及最后的总结性的话语,在实际上使用的时候再详细的看具体的实现,有一些.from ...
- python浮雕图片_python图片处理PIL
一.PIL介绍 PIL中所涉及的基本概念有如下几个:通道(bands).模式(mode).尺寸(size).坐标系统(coordinate system).调色板(palette).信息(info)和 ...
- python显示图片_python 一个figure上显示多个图像的实例
方法一:主要是inshow()函数的使用 首先基本的画图流程为: import matplotlib.pyplot as plt #创建新的figure fig = plt.figure() #必须通 ...
- python 添加图片_python 图片读取、添加等
一 opencv import cv2 as cv # load img = cv.imread(imagepath) # shape=(height, width, channel) h,w,c = ...
- python控制台图片_Python实现图像信息隐藏
Python实现图像信息隐藏 之前学习密码学的时候老师有提到过『信息隐藏』,现在用图像的方法尝试一下.思想是:把信息藏到RGB通道中的B通道,然后利用奇偶性可以恢复过来 原理 从源图中提取文字图像信息 ...
- python开发图片_python实现图片上添加图片
在介绍完给图上添加文字后,我们再介绍给图片上添加图片,也就是图片的叠加. 需要使用的Python的图像库:PIL.更加详细的知识点如下: Imaga模块:用来创建,打开,保存图片文件 new(path ...
- python 缩放图片_python实现按长宽比缩放图片
使用python按图片固定长宽比缩放图片到指定图片大小,空白部分填充为黑色. 代码 # -*- coding: utf-8 -*- from pil import image class image_ ...
最新文章
- iframe 有那些缺
- python调用接口requests_【python接口自动化】- 使用requests库发送http请求
- 微软System Center 2012推进私有云计算
- 【ios】Storyboard教程
- C语言之从内存角度理解不同类型的变量
- Java并发编程之并发容器ConcurrentHashMap(JDK1.8)解析
- haproxy 负载_负载测试HAProxy(第1部分)
- Qt QMenu圆角阴影超详细 干净圆角 屏蔽原生阴影 绘制阴影
- C语言-字符型数据与ASCII码表
- FBI教你破解身体语言
- python lncrna_使用CNCI分析lncRNA
- python优点是代码库支持、灵活_Google将限制Python语言的应用 开发社区热议
- AC/DC电源模块输入电压范围
- Webbrowser指定IE内核版本(更改注册表)
- Python趣味案例 - 抓扑克牌的手气
- RNA 10. SCI 文章中基因表达富集之 KEGG 注释
- UINavigation导航栏和UITabbar布局和样式
- 天融信上网行为管理如何做短信验证?
- 外国建筑史的学习资料
- 第三十七章 SQL函数 CURRENT_TIMESTAMP