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 相关文章推荐
详解Django框架中的视图级缓存
Jul 23 Python
Python数据结构之翻转链表
Feb 25 Python
python实现外卖信息管理系统
Jan 11 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
Nov 30 Python
Python语法分析之字符串格式化
Jun 13 Python
python或C++读取指定文件夹下的所有图片
Aug 31 Python
python实现将json多行数据传入到mysql中使用
Dec 31 Python
最小二乘法及其python实现详解
Feb 24 Python
Python基于模块Paramiko实现SSHv2协议
Apr 28 Python
Python基于字典实现switch case函数调用
Jul 22 Python
Flask处理Web表单的实现方法
Jan 31 Python
Python中os模块的简单使用及重命名操作
Apr 17 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防注入代码
2010/04/07 PHP
PHP读取mssql json数据中文乱码的解决办法
2016/04/11 PHP
sina的lightbox效果。
2007/01/09 Javascript
jquery 实现input输入什么div图层显示什么
2014/06/15 Javascript
jQuery绑定自定义事件的魔法升级版
2016/06/30 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
2016/08/24 Javascript
微信小程序 前端源码逻辑和工作流详解
2016/10/08 Javascript
如何解决jQuery EasyUI 已打开Tab重新加载问题
2016/12/19 Javascript
vue2.0数据双向绑定与表单bootstrap+vue组件
2017/02/27 Javascript
[js高手之路]寄生组合式继承的优势详解
2017/08/28 Javascript
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
2019/01/23 Javascript
layer弹出层取消遮罩的方法
2019/09/25 Javascript
JavaScript常用工具函数汇总(浏览器环境)
2020/09/17 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
vue 判断页面是首次进入还是再次刷新的实例
2020/11/05 Javascript
Python下划线5种含义代码实例解析
2020/07/10 Python
Python如何实现机器人聊天
2020/09/10 Python
python实现b站直播自动发送弹幕功能
2021/02/20 Python
美国知名保健品网站:LuckyVitamin(支持中文)
2017/08/09 全球购物
社团文化节邀请函
2014/01/10 职场文书
关于环保的建议书400字
2014/03/12 职场文书
弘扬雷锋精神演讲稿
2014/05/10 职场文书
公司承诺书范文
2014/05/19 职场文书
媒体宣传策划方案
2014/05/25 职场文书
区域销售主管岗位职责
2014/06/15 职场文书
出租房屋协议书
2014/09/14 职场文书
公司新人试用期自我评价
2014/09/17 职场文书
民间个人借款协议书
2014/09/30 职场文书
课堂打架检讨书200字
2014/11/21 职场文书
自我推荐信格式模板
2015/03/24 职场文书
2015上半年个人工作总结
2015/07/27 职场文书
经典人生语录分享:不畏将来,不念过去,笑对当下
2019/12/12 职场文书
js实现上传图片到服务器
2021/04/11 Javascript
Python类方法总结讲解
2021/07/26 Python
python模板入门教程之flask Jinja
2022/04/11 Python
python如何为list实现find方法
2022/05/30 Python