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 相关文章推荐
本地文件上传到七牛云服务器示例(七牛云存储)
Jan 11 Python
Python解惑之True和False详解
Apr 24 Python
Python实现自动登录百度空间的方法
Jun 10 Python
pandas.loc 选取指定列进行操作的实例
May 18 Python
实例讲解Python爬取网页数据
Jul 08 Python
解决tensorflow模型参数保存和加载的问题
Jul 26 Python
pygame实现俄罗斯方块游戏(AI篇1)
Oct 29 Python
pygame库实现俄罗斯方块小游戏
Oct 29 Python
Python通过文本和图片生成词云图
May 21 Python
python Socket网络编程实现C/S模式和P2P
Jun 22 Python
matplotlib更改窗口图标的方法示例
Feb 03 Python
微信小程序调用python模型
Apr 21 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 mssql 数据库分页SQL语句
2008/12/16 PHP
PHP的array_diff()函数在处理大数组时的效率问题
2011/11/27 PHP
PHP得到mssql的存储过程的输出参数功能实现
2012/11/23 PHP
关于crontab的使用详解
2013/06/24 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
2015/07/01 PHP
Javascript-Mozilla和IE中的一个函数直接量的问题
2007/01/09 Javascript
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
jQuery中jqGrid分页实现代码
2011/11/04 Javascript
JS跨域总结
2012/08/30 Javascript
javascript限制用户只能输汉字中文的方法
2014/11/20 Javascript
javascript引用类型指针的工作方式
2015/04/13 Javascript
深入理解JavaScript中的对象复制(Object Clone)
2016/05/18 Javascript
Javascript 两种刷新方法以及区别和适用范围
2017/01/17 Javascript
bootstrap实现的自适应页面简单应用示例
2017/03/09 Javascript
使用AngularJS编写多选按钮选中时触发指定方法的指令代码详解
2017/07/24 Javascript
JS库之Particles.js中文开发手册及参数详解
2017/09/13 Javascript
JavaScript基础心法 数据类型
2018/03/05 Javascript
vue-music 使用better-scroll遇到轮播图不能自动轮播问题
2018/12/03 Javascript
javascript设计模式 ? 备忘录模式原理与用法实例分析
2020/04/21 Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
2020/11/11 Javascript
python的id()函数解密过程
2012/12/25 Python
在Python中使用HTML模版的教程
2015/04/29 Python
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
Python利用正则表达式实现计算器算法思路解析
2018/04/25 Python
Python调用shell命令常用方法(4种)
2020/05/11 Python
西班牙床垫网上商店:Colchones.es
2018/05/06 全球购物
Nice Kicks网上商店:ShopNiceKicks.com
2018/12/25 全球购物
掌上明珠Java程序员面试总结
2016/02/23 面试题
毕业生自我推荐
2013/11/04 职场文书
组织关系转移介绍信
2014/01/16 职场文书
经理任命书模板
2014/06/06 职场文书
课前一分钟演讲稿
2014/08/26 职场文书
科学发展观演讲稿
2014/09/11 职场文书
医药公司采购员岗位职责
2014/09/12 职场文书
户外拓展训练感想
2015/08/07 职场文书
关于教师节的广播稿
2015/08/19 职场文书