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实现批量把SVG格式转成png、pdf格式的代码分享
Aug 21 Python
Python单链表的简单实现方法
Sep 23 Python
python实现爬虫下载美女图片
Jul 14 Python
Python中str.format()详解
Mar 12 Python
django 常用orm操作详解
Sep 13 Python
Python 变量类型详解
Oct 10 Python
python 实现倒排索引的方法
Dec 25 Python
Django中reverse反转并且传递参数的方法
Aug 06 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
Nov 06 Python
Tensorflow实现将标签变为one-hot形式
May 22 Python
Python持续监听文件变化代码实例
Jul 22 Python
python中的时区问题
Jan 14 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
php 友好URL的实现(吐血推荐)
2008/10/04 PHP
php图片的裁剪与缩放生成符合需求的缩略图
2013/01/11 PHP
php通过隐藏表单控件获取到前两个页面的url
2014/09/09 PHP
php中静态类与静态变量用法的区别分析
2015/01/15 PHP
PHP安装memcached扩展笔记
2015/05/28 PHP
简单谈谈php浮点数精确运算
2016/03/10 PHP
PHP生成指定范围内的N个不重复的随机数
2019/03/18 PHP
jquery异步循环获取功能实现代码
2010/09/19 Javascript
JavaScript初学者应注意的七个细节详细介绍
2012/12/27 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
浅析js预加载/延迟加载
2014/09/25 Javascript
jQuery Chart图表制作组件Highcharts用法详解
2016/06/01 Javascript
js下载文件并修改文件名
2017/05/08 Javascript
mac上node.js环境的安装测试
2017/07/03 Javascript
纯js实现的积木(div层)拖动功能示例
2017/07/19 Javascript
使用Bootrap和Vue实现仿百度搜索功能
2017/10/26 Javascript
vue+php实现的微博留言功能示例
2019/03/16 Javascript
vue实现数据控制视图的原理解析
2020/01/07 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
python通过pil模块将raw图片转换成png图片的方法
2015/03/16 Python
python制作爬虫并将抓取结果保存到excel中
2016/04/06 Python
Python编写登陆接口的方法
2017/07/10 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
python中break、continue 、exit() 、pass终止循环的区别详解
2019/07/08 Python
打印tensorflow恢复模型中所有变量与操作节点方式
2020/05/26 Python
利用python 下载bilibili视频
2020/11/13 Python
css3 按钮 利用css3实现超酷下载按钮
2013/03/18 HTML / CSS
加拿大票务网站:Ticketmaster加拿大
2017/07/17 全球购物
西雅图的买手店:Totokaelo
2019/10/19 全球购物
电子商务优秀毕业生求职信
2014/07/11 职场文书
临时租车协议范本
2014/09/23 职场文书
苦儿流浪记读书笔记
2015/07/01 职场文书
python 批量压缩图片的脚本
2021/06/02 Python
php访问对象中的成员的实例方法
2021/11/17 PHP
vue中的可拖拽宽度div的实现示例
2022/04/08 Vue.js