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文件操作之目录遍历实例分析
May 20 Python
在Linux命令行终端中使用python的简单方法(推荐)
Jan 23 Python
Python做简单的字符串匹配详解
Mar 21 Python
Python学习教程之常用的内置函数大全
Jul 14 Python
python for 循环获取index索引的方法
Feb 01 Python
python安装virtualenv虚拟环境步骤图文详解
Sep 18 Python
pytorch GAN伪造手写体mnist数据集方式
Jan 10 Python
利用python中集合的唯一性实现去重
Feb 11 Python
Python3查找列表中重复元素的个数的3种方法详解
Feb 13 Python
基于Python绘制个人足迹地图
Jun 01 Python
Python3如何实现Win10桌面自动切换
Aug 11 Python
Numpy实现卷积神经网络(CNN)的示例
Oct 09 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 Class 文章
2007/04/04 PHP
yii2实现根据时间搜索的方法
2016/05/25 PHP
Laravel5权限管理方法详解
2016/07/26 PHP
php禁用cookie后session设置方法分析
2016/10/19 PHP
实例讲解PHP表单
2020/06/10 PHP
PHP扩展安装方法步骤解析
2020/11/24 PHP
使用IE6看老赵的博客 jQuery初探
2010/01/17 Javascript
jquery动画2.元素坐标动画效果(创建一个图片走廊)
2012/08/24 Javascript
Node.js(安装,启动,测试)
2014/06/09 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
Javascript基础教程之比较null和undefined值
2016/05/16 Javascript
Javascript将数值转换为金额格式(分隔千分位和自动增加小数点)
2016/06/22 Javascript
js removeChild 方法深入理解
2016/08/16 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
JavaScript登录验证码的实现
2016/10/27 Javascript
jQuery.datatables.js插件用法及api实例详解
2016/10/28 Javascript
jQuery实现模拟flash头像裁切上传功能示例
2016/12/11 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
2017/04/13 Javascript
JS实现多张图片预览同步上传功能
2017/06/23 Javascript
基于JavaScript实现每日签到打卡轨迹功能
2018/11/29 Javascript
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
2020/05/03 Javascript
深入了解Python中pop和remove的使用方法
2018/01/09 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
VSCode中自动为Python文件添加头部注释
2019/11/14 Python
Python气泡提示与标签的实现
2020/04/01 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
2020/04/11 Python
Bootstrap File Input文件上传组件
2020/12/01 HTML / CSS
英国著名国际平价时尚男装品牌:Topman
2016/08/27 全球购物
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
应届毕业生应聘自荐信
2013/12/07 职场文书
买房子个人收入证明
2014/10/12 职场文书
2015年政务公开工作总结
2015/05/19 职场文书
六一文艺汇演主持词
2015/06/30 职场文书
爱鸟护鸟的宣传语
2015/07/13 职场文书
基层党建工作简报
2015/07/21 职场文书
从原生JavaScript到React深入理解
2022/07/23 Javascript