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 相关文章推荐
pandas数据框,统计某列数据对应的个数方法
Apr 11 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
Apr 21 Python
Python图像处理之识别图像中的文字(实例讲解)
May 10 Python
Python数据持久化shelve模块用法分析
Jun 29 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
May 30 Python
selenium 安装与chromedriver安装的方法步骤
Jun 12 Python
pygame实现俄罗斯方块游戏(基础篇1)
Oct 29 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
Aug 11 Python
分享unittest单元测试框架中几种常用的用例加载方法
Dec 02 Python
Python基础之函数嵌套知识总结
May 23 Python
python人工智能human learn绘图可创建机器学习模型
Nov 23 Python
python小型的音频操作库mp3Play
Apr 24 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里的JS打印函数
2006/10/09 PHP
mysql5的sql文件导入到mysql4的方法
2008/10/19 PHP
php获取当前网址url并替换参数或网址的方法
2010/06/06 PHP
PHP中strtotime函数使用方法详解
2011/11/27 PHP
PHP中is_file()函数使用指南
2015/05/08 PHP
事件模型在各浏览器中存在差异
2010/10/20 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
使用javascript实现监控视频播放并打印日志
2015/01/05 Javascript
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
JavaScript前补零操作实例
2015/03/11 Javascript
javascript中类的定义方式详解(四种方式)
2015/12/22 Javascript
Vue表单实例代码
2016/09/05 Javascript
微信小程序支付及退款流程详解
2017/11/30 Javascript
详解html-webpack-plugin插件(用法总结)
2018/09/12 Javascript
JS实现根据数组对象的某一属性排序操作示例
2019/01/14 Javascript
vuejs数据超出单行显示更多,点击展开剩余数据实例
2019/05/05 Javascript
vue实现跨域的方法分析
2019/05/21 Javascript
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
2015/04/05 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
Python自定义函数计算给定日期是该年第几天的方法示例
2019/05/30 Python
关于tf.TFRecordReader()函数的用法解析
2020/02/17 Python
中国酒类在线零售网站:酒仙网
2016/08/20 全球购物
Java如何获得ResultSet的总行数
2016/09/03 面试题
专业销售业务员求职信
2013/11/18 职场文书
吨的认识教学反思
2014/04/27 职场文书
企业与个人合作经营协议书
2014/11/01 职场文书
2014年职称评定工作总结
2014/11/26 职场文书
2014年行政人事工作总结
2014/12/09 职场文书
婚庆答谢词
2015/01/04 职场文书
超市督导岗位职责
2015/04/10 职场文书
家装电话营销开场白
2015/05/29 职场文书
2016学校先进集体事迹材料
2016/02/29 职场文书
毕业生就业推荐表自我鉴定
2019/06/20 职场文书
《战锤40K:暗潮》跳票至9月 公布新宣传片
2022/04/03 其他游戏
vue整合百度地图显示指定地点信息
2022/04/06 Vue.js
MySQL三种方式实现递归查询
2022/04/18 MySQL