python 矢量数据转栅格数据代码实例


Posted in Python onSeptember 30, 2019

这篇文章主要介绍了python 矢量数据转栅格数据代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

投影包osr与proj4的使用

osr投影转换示例

from osgeo import osr,ogr
#定义投影
#wgs84
source=osr.SpatialReference()
source.ImportFromEPSG(4326)
#google
target=osr.SpatialReference()
target.ImportFromEPSG(3857)
#简单投影转换
coordTrans=osr.CoordinateTransformation(source,target)
#点转换
coordTrans.TransformPoint(117,40)
#点数组转换
coordTrans.TransformPoints([(117,40),(117.5,39.5)])
#SF几何对象转换
g=ogr.CreateGeometryFromWkt("POINT(117 40)")
#转换前wgs84
print(g.ExportToWkt())
print(g.GetX(),g.GetY())
#转换后google
g.Transform(coordTrans)
print(g.ExportToWkt())
print(g.GetX(),g.GetY())
2.投影转换示例
from pyproj import Proj,Geod,transform
# projection 1: UTM zone 15, grs80 ellipse, NAD83 datum
# (defined by epsg code 26915)
p1 = Proj(init='epsg:26915')
# projection 2: UTM zone 15, clrk66 ellipse, NAD27 datum
p2 = Proj(init='epsg:26715')
#点的转换(首先将地理坐标转换成p1投影坐标系下的平面直角坐标,再将x1,y1转换到p2投影坐标系下,最后将p2投影坐标系下的平面直角坐标转换成地理坐标)
x1,y1=p1(-92.199881,38.56694)
x2, y2 = transform(p1,p2,x1,y1)
print('%9.3f %11.3f' % (x1,y1))
print('%9.3f %11.3f' % (x2,y2))
print('%8.3f %5.3f' % p2(x2,y2,inverse=True))
#点数组的转换
lats = (38.83,39.32,38.75)
lons = (-92.22,-94.72,-90.37)
x1,y1=p1(lons,lats)
x2,y2=transform(p1,p2,x1,y1)
xy=x1+y1
print('%9.3f %9.3f %9.3f %11.3f %11.3f %11.3f' % xy)
xy=x2+y2
print('%9.3f %9.3f %9.3f %11.3f %11.3f %11.3f' % xy)
lons, lats = p2(x2,y2,inverse=True)
xy=lons+lats
print('%8.3f %8.3f %8.3f %5.3f %5.3f %5.3f' % xy)
p1 = Proj(proj='latlong',datum='WGS84')
x1 = -111.5; y1 = 45.25919444444
p2 = Proj(proj="utm",zone=10,datum='NAD27')
x2, y2 = transform(p1, p2, x1, y1)
print("%s %s" % (str(x2)[:9],str(y2)[:9]))

栅格数据投影转换

#栅格数据投影转换
from osgeo import gdal,osr
from osgeo.gdalconst import *
#源图像投影
source=osr.SpatialReference()
source.ImportFromEPSG(32650)
#目标图像投影
target=osr.SpatialReference()
target.ImportFromEPSG(3857)
coordTrans=osr.CoordinateTransformation(source,target)
#打开源图像文件
ds=gdal.Open("fdem.tif")
#仿射矩阵六参数
mat=ds.GetGeoTransform()
#源图像的左上角与右下角像素,在目标图像中的坐标
(ulx, uly, ulz)=coordTrans.TransformPoint(mat[0],mat[3])
(lrx, lry, lrz ) = coordTrans.TransformPoint(mat[0] + mat[1]*ds.RasterXSize, mat[3] + mat[5]* ds.RasterYSize )
#创建目标图像文件(空白图像),行列数、波段数以及数值类型仍等同原图像
driver=gdal.GetDriverByName("GTiff")
ts=driver.Create("fdem_lonlat.tif",ds.RasterXSize,ds.RasterYSize,1,GDT_UInt16)
#转换后图像的分辨率
resolution=(int)((lrx-ulx)/ds.RasterXSize)
#转换后图像的六个放射变换参数
mat2=[ulx, resolution,0,uly,0, -resolution]
ts.SetGeoTransform(mat2)
ts.SetProjection(target.ExportToWkt())
#投影转换后需要做重采样
gdal.ReprojectImage(ds, ts, source.ExportToWkt(), target.ExportToWkt(), gdal.GRA_Bilinear)
#关闭
ds = None
ts= None

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用PYTHON接收多播数据的代码
Mar 01 Python
tensorflow输出权重值和偏差的方法
Feb 10 Python
Python利用递归实现文件的复制方法
Oct 27 Python
python实现BP神经网络回归预测模型
Aug 09 Python
详解python中index()、find()方法
Aug 29 Python
python 3.7.4 安装 opencv的教程
Oct 10 Python
pytorch 归一化与反归一化实例
Dec 31 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
Aug 18 Python
如何在scrapy中捕获并处理各种异常
Sep 28 Python
python 通过exifread读取照片信息
Dec 24 Python
Matplotlib animation模块实现动态图
Feb 25 Python
python中sqllite插入numpy数组到数据库的实现方法
Jun 21 Python
python多进程间通信代码实例
Sep 30 #Python
Python实现二叉树的最小深度的两种方法
Sep 30 #Python
python打开使用的方法
Sep 30 #Python
python 字典有序并写入json文件过程解析
Sep 30 #Python
python 下 CMake 安装配置 OPENCV 4.1.1的方法
Sep 30 #Python
Python3 翻转二叉树的实现
Sep 30 #Python
ubuntu上安装python的实例方法
Sep 30 #Python
You might like
第六节--访问属性和方法
2006/11/16 PHP
PHP删除特定数组内容并且重建数组索引的方法.
2011/03/25 PHP
php xml常用函数的集合(比较详细)
2013/06/06 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
JQuery 无废话系列教程(一) jquery入门 [推荐]
2009/06/23 Javascript
jQuery 使用手册(一)
2009/09/23 Javascript
点击弹出层外区域关闭弹出层jquery特效示例
2013/08/25 Javascript
js构造函数、索引数组和属性的实现方式和使用
2014/11/16 Javascript
JavaScript的面向对象编程基础
2015/08/13 Javascript
基于gulp合并压缩Seajs模块的方式说明
2016/06/14 Javascript
JavaScript的字符串方法汇总
2016/07/31 Javascript
让浏览器崩溃的12行JS代码(DoS攻击分析及防御)
2016/10/10 Javascript
js实现符合国情的日期插件详解
2017/01/19 Javascript
Vue computed计算属性的使用方法
2017/07/14 Javascript
jQuery选择器之子元素过滤选择器
2017/09/28 jQuery
Swiper 4.x 使用方法(移动端网站的内容触摸滑动)
2018/05/17 Javascript
如何实现一个webpack模块解析器
2018/10/24 Javascript
原生javascript单例模式的应用实例分析
2020/02/23 Javascript
vue用elementui写form表单时,在label里添加空格操作
2020/08/13 Javascript
Python编程实现线性回归和批量梯度下降法代码实例
2018/01/04 Python
Python线上环境使用日志的及配置文件
2019/07/28 Python
python字符串下标与切片及使用方法
2020/02/13 Python
浅谈keras保存模型中的save()和save_weights()区别
2020/05/21 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
2020/06/24 Python
详解pycharm配置python解释器的问题
2020/10/15 Python
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
英国健身仓库:Bodybuilding Warehouse
2019/03/06 全球购物
打架检讨书100字
2014/01/08 职场文书
中学生获奖感言
2014/02/04 职场文书
房屋租赁协议书
2014/04/10 职场文书
节能宣传周活动总结
2014/05/08 职场文书
音乐节策划方案
2014/06/09 职场文书
干部职工纪律作风整改措施思想汇报
2014/10/11 职场文书
2014年终个人工作总结
2014/11/07 职场文书
2015年小学辅导员工作总结
2015/05/27 职场文书
Python天气语音播报小助手
2021/09/25 Python