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使用百度API上传文件到百度网盘代码分享
Nov 08 Python
Python中decorator使用实例
Apr 14 Python
把项目从Python2.x移植到Python3.x的经验总结
Apr 20 Python
python中正则的使用指南
Dec 04 Python
Python3 XML 获取雅虎天气的实现方法
Feb 01 Python
Python之文字转图片方法
May 10 Python
Python os.rename() 重命名目录和文件的示例
Oct 25 Python
对python读写文件去重、RE、set的使用详解
Dec 11 Python
基于python if 判断选择结构的实例详解
May 06 Python
基于python实现文件加密功能
Jan 06 Python
python实现PCA降维的示例详解
Feb 24 Python
python 实现百度网盘非会员上传超过500个文件的方法
Jan 07 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 什么是PEAR?(第三篇)
2009/03/19 PHP
php替换超长文本中的特殊字符的函数代码
2012/05/22 PHP
解决php接收shell返回的结果中文乱码问题
2014/01/23 PHP
采用thinkphp自带方法生成静态html文件详解
2014/06/13 PHP
php基于str_pad实现卡号不足位数自动补0的方法
2014/11/12 PHP
PHP图形操作之Jpgraph学习笔记
2015/12/25 PHP
joomla实现注册用户添加新字段的方法
2016/05/05 PHP
利用PHP自动生成印有用户信息的名片
2016/08/01 PHP
php事件驱动化设计详解
2016/11/10 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
2019/02/12 PHP
PHP下载文件函数与用法示例
2019/09/27 PHP
Javascript客户端将指定区域导出到Word、Excel的代码
2008/10/22 Javascript
JS+CSS实现可拖动的弹出提示框
2015/02/16 Javascript
JS+DIV实现鼠标划过切换层效果的方法
2015/05/25 Javascript
JavaScript获取页面中超链接数量的方法
2015/11/09 Javascript
js实现文字闪烁特效的方法
2015/12/17 Javascript
javascript拖拽应用实例(二)
2016/03/25 Javascript
Vue项目webpack打包部署到服务器的实例详解
2017/07/17 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
webpack4.x打包过程详解
2018/07/18 Javascript
微信小程序的线程架构【推荐】
2019/05/14 Javascript
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
python中split方法用法分析
2015/04/17 Python
基于Python闭包及其作用域详解
2017/08/28 Python
Python3.5 Pandas模块之Series用法实例分析
2019/04/23 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
python中的对数log函数表示及用法
2020/12/09 Python
马来西亚最好的婴儿商店:Motherhood
2017/09/14 全球购物
Yves Rocher伊夫·黎雪美国官网:法国始创植物美肌1959
2019/01/09 全球购物
怎么写自荐书范文
2014/02/12 职场文书
领导干部群众路线教育实践活动剖析材料
2014/10/10 职场文书
幼儿园见习报告范文
2014/10/30 职场文书
安全守法证明
2015/06/23 职场文书
MySQL下使用Inplace和Online方式创建索引的教程
2021/05/26 MySQL
Go语言空白表示符_的实例用法
2021/07/04 Golang
Nebula Graph解决风控业务实践
2022/03/31 MySQL