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修改字典内key对应值的方法
Jul 11 Python
读写json中文ASCII乱码问题的解决方法
Nov 05 Python
利用标准库fractions模块让Python支持分数类型的方法详解
Aug 11 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
Nov 30 Python
python破解bilibili滑动验证码登录功能
Sep 11 Python
windows 10 设定计划任务自动执行 python 脚本的方法
Sep 11 Python
python集合常见运算案例解析
Oct 17 Python
python生成大写32位uuid代码
Mar 03 Python
pycharm中import呈现灰色原因的解决方法
Mar 04 Python
python调用百度API实现人脸识别
Nov 17 Python
在Windows下安装配置CPU版的PyTorch的方法
Apr 02 Python
python中filter,map,reduce的作用
Jun 10 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基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
2017/06/21 PHP
父窗口获取弹出子窗口文本框的值
2006/06/27 Javascript
js 弹出菜单/窗口效果
2011/10/30 Javascript
JavaScript在XHTML中的用法详解
2013/04/11 Javascript
jQuery写fadeTo示例代码
2014/02/21 Javascript
JS拖拽组件学习使用
2016/01/19 Javascript
原生js编写焦点图效果
2016/12/08 Javascript
详解Vue2+Echarts实现多种图表数据可视化Dashboard(附源码)
2017/03/21 Javascript
jQuery实现使用sort方法对json数据排序的方法
2018/04/17 jQuery
基于jQuery使用Ajax动态执行模糊查询功能
2018/07/05 jQuery
js canvas实现橡皮擦效果
2018/12/20 Javascript
使用webpack搭建vue环境的教程详解
2019/12/31 Javascript
JS实现烟花爆炸效果
2020/03/10 Javascript
ant-design表单处理和常用方法及自定义验证操作
2020/10/27 Javascript
[35:43]2018DOTA2亚洲邀请赛 4.1 小组赛B组 paiN vs Effect
2018/04/03 DOTA
使用python实现正则匹配检索远端FTP目录下的文件
2015/03/25 Python
python删除指定类型(或非指定)的文件实例详解
2015/07/06 Python
Python如何生成树形图案
2018/01/03 Python
python如何统计序列中元素
2020/07/31 Python
值得收藏,Python 开发中的高级技巧
2018/11/23 Python
Python给定一个句子倒序输出单词以及字母的方法
2018/12/20 Python
python 发送json数据操作实例分析
2019/10/15 Python
Pandas实现DataFrame按行求百分数(比例数)
2019/12/27 Python
如何在Windows中安装多个python解释器
2020/06/16 Python
Python爬虫爬取有道实现翻译功能
2020/11/27 Python
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
美国畅销的跑步机品牌:ProForm
2017/02/06 全球购物
main 函数执行以前,还会执行什么代码
2013/04/17 面试题
《鸟的天堂》教学反思
2014/02/27 职场文书
个人委托书怎么写
2014/04/04 职场文书
今冬明春火灾防控工作方案
2014/05/29 职场文书
建筑管理专业求职信
2014/07/28 职场文书
见习报告怎么写
2014/10/31 职场文书
2015年村计划生育工作总结
2015/04/28 职场文书
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL
关于JavaScript 中 if包含逗号表达式
2021/11/27 Javascript