GDAL之栅格重投影

栅格重投影主要涉及到:空间坐标系的转换,栅格仿射变换系数的重新计算这两个主要方面。

示例代码是将一幅WGS84 UTM投影的影像重新投影到WGS84地理坐标系上。

 

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import gdal,osr
from gdalconst import *

#获取源数据及栅格信息
gdal.AllRegister()
src_data = gdal.Open("smallaster.img")
#获取源的坐标信息
srcSRS_wkt=src_data.GetProjection()
srcSRS=osr.SpatialReference()
srcSRS.ImportFromWkt(srcSRS_wkt)
#获取栅格尺寸
src_width = src_data.RasterXSize
src_height = src_data.RasterYSize
src_count=src_data.RasterCount
#获取源图像的仿射变换参数
src_trans=src_data.GetGeoTransform()
OriginLX_src=src_trans[0]
OriginTY_src=src_trans[3]
pixl_w_src=src_trans[1]
pixl_h_src=src_trans[5]

OriginRX_src=OriginLX_src+pixl_w_src*src_width
OriginBY_src=OriginTY_src+pixl_h_src*src_height
#创建输出图像
driver = gdal.GetDriverByName("GTiff")
driver.Register()
dst_data = driver.Create("tpix1.tif",src_width,src_height,src_count)
#设置输出图像的坐标
dstSRS=osr.SpatialReference()
dstSRS.ImportFromEPSG(4326)
#投影转换
ct=osr.CoordinateTransformation(srcSRS,dstSRS)
#计算目标影像的左上和右下坐标,即目标影像的仿射变换参数
OriginLX_dst,OriginTY_dst,temp=ct.TransformPoint(OriginLX_src,OriginTY_src)
OriginRX_dst,OriginBY_dst,temp=ct.TransformPoint(OriginRX_src,OriginBY_src)

pixl_w_dst=(OriginRX_dst-OriginLX_dst)/src_width
pixl_h_dst=(OriginBY_dst-OriginTY_dst)/src_height
dst_trans=[OriginLX_dst,pixl_w_dst,0,OriginTY_dst,0,pixl_h_dst]
#print outTrans
dstSRS_wkt=dstSRS.ExportToWkt()
#设置仿射变换系数及投影
dst_data.SetGeoTransform(dst_trans)
dst_data.SetProjection(dstSRS_wkt)
#重新投影
gdal.ReprojectImage(src_data,dst_data,srcSRS_wkt,dstSRS_wkt,GRA_Bilinear)
#创建四级金字塔
gdal.SetConfigOption('HFA_USE_RRD', 'YES')
dst_data.BuildOverviews(overviewlist=[2,4,8,16])
#计算统计值
for i in range(0,src_count):
	band=dst_data.GetRasterBand(i+1)
	band.SetNoDataValue(-99)
	print band.GetStatistics(0,1)

 

参考 Geoprocessing with Python (一)

 

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值