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 Deque 模块使用详解
Jul 04 Python
python解决方案:WindowsError: [Error 2]
Aug 28 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
Jan 12 Python
python中通过预先编译正则表达式提高效率
Sep 25 Python
python3使用flask编写注册post接口的方法
Dec 28 Python
python开头的coding设置方法
Aug 08 Python
python 画3维轨迹图并进行比较的实例
Dec 06 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
Feb 27 Python
Python使用socket模块实现简单tcp通信
Aug 18 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
Sep 29 Python
基于Python和openCV实现图像的全景拼接详细步骤
Oct 05 Python
python创建字典及相关管理操作
Apr 13 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 模板高级篇总结
2006/12/21 PHP
PHP防止刷新重复提交页面的示例代码
2015/11/11 PHP
Zend Framework开发入门经典教程
2016/03/23 PHP
PHP对象克隆clone用法示例
2016/09/28 PHP
phpStorm+XDebug+chrome 配置详解
2019/04/01 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
JavaScript语句可以不以;结尾的烦恼
2007/03/08 Javascript
用nodejs访问ActiveX对象,以操作Access数据库为例。
2011/12/15 NodeJs
Javascript中typeof 用法小结
2015/05/12 Javascript
jquery插件EasyUI中form表单提交实例分享
2016/01/11 Javascript
如何使用Bootstrap 按钮实例详解
2017/03/29 Javascript
详解webpack 如何集成第三方js库
2017/06/29 Javascript
vue实现留言板todolist功能
2017/08/16 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
2018/05/30 Javascript
微信小程序使用wxParse解析html的方法教程
2018/07/06 Javascript
vue 使某个组件不被 keep-alive 缓存的方法
2018/09/21 Javascript
uni-app之APP和小程序微信授权方法
2019/05/09 Javascript
Vue实现计算器计算效果
2020/08/17 Javascript
用Python给文本创立向量空间模型的教程
2015/04/23 Python
python图像处理之反色实现方法
2015/05/30 Python
Python实现的读取文件内容并写入其他文件操作示例
2019/04/09 Python
Django框架中间件(Middleware)用法实例分析
2019/05/24 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
基于Tensorflow:CPU性能分析
2020/02/10 Python
selenium切换标签页解决get超时问题的完整代码
2020/08/30 Python
python使用yaml 管理selenium元素的示例
2020/12/01 Python
AmazeUI底部导航栏与分享按钮的示例代码
2020/08/18 HTML / CSS
七年级音乐教学反思
2014/01/26 职场文书
厨房管理计划书
2014/04/27 职场文书
党委班子对照检查材料
2014/08/19 职场文书
护理实习生带教计划
2015/01/16 职场文书
2016年庆祝六一儿童节活动总结
2016/04/06 职场文书
利用python做数据拟合详情
2021/11/17 Python
div与span之间的区别与使用介绍
2021/12/06 HTML / CSS
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
2022/04/24 Vue.js
vue里使用create, mounted调用方法
2022/04/26 Vue.js