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使用心得之获得github代码库列表
Jun 25 Python
Python的Flask框架中实现分页功能的教程
Apr 20 Python
Python实现的堆排序算法示例
Apr 29 Python
Python Tkinter模块实现时钟功能应用示例
Jul 23 Python
python 使用sys.stdin和fileinput读入标准输入的方法
Oct 17 Python
python清除字符串前后空格函数的方法
Oct 21 Python
matplotlib实现热成像图colorbar和极坐标图的方法
Dec 13 Python
Python中GeoJson和bokeh-1的使用讲解
Jan 03 Python
Python函数装饰器常见使用方法实例详解
Mar 30 Python
对DJango视图(views)和模版(templates)的使用详解
Jul 17 Python
Python中的Cookie模块如何使用
Jun 04 Python
Django+Celery实现定时任务的示例
Jun 23 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的无限分类实现想法~
2007/01/02 PHP
PHP如何编写易读的代码
2007/07/10 PHP
用php或asp创建网页桌面快捷方式的代码
2010/03/23 PHP
PHP Directory 函数的详解
2013/03/07 PHP
编写安全 PHP应用程序的七个习惯深入分析
2013/06/08 PHP
php实现上传图片保存到数据库的方法
2015/02/11 PHP
PHP使用mongoclient简单操作mongodb数据库示例
2019/02/08 PHP
JS面向对象编程之对象使用分析
2010/08/19 Javascript
JavaScript实现的圆形浮动标签云效果实例
2015/08/06 Javascript
js字符串操作总结(必看篇)
2016/11/22 Javascript
原生js实现打字动画游戏
2017/02/04 Javascript
JavaScript实现翻页功能(附效果图)
2017/02/16 Javascript
Angular2 路由问题修复详解
2017/03/01 Javascript
JavaScript基础之流程控制语句的用法
2017/08/31 Javascript
Vue组件的使用教程详解
2018/01/05 Javascript
深入理解JS中Number(),parseInt(),parseFloat()三者比较
2018/08/24 Javascript
js取小数点后两位四种方法
2019/01/18 Javascript
vue使用swiper.js重叠轮播组建样式
2019/11/14 Javascript
js面试题之异步问题的深入理解
2020/09/20 Javascript
python使用webbrowser浏览指定url的方法
2015/04/04 Python
Python的Django框架中settings文件的部署建议
2015/05/30 Python
python发送HTTP请求的方法小结
2015/07/08 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
2015/12/24 Python
pycharm安装图文教程
2017/05/02 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
2018/02/08 Python
使用Python AIML搭建聊天机器人的方法示例
2018/07/09 Python
python实现屏保计时器的示例代码
2018/08/08 Python
强悍的Python读取大文件的解决方案
2019/02/16 Python
python多线程高级锁condition简单用法示例
2019/11/07 Python
tensorflow之tf.record实现存浮点数数组
2020/02/17 Python
YesBabyOnline美国:全球性的在线婚纱礼服工厂
2018/05/05 全球购物
医护人员英文求职信范文
2013/11/26 职场文书
领导的自我鉴定
2013/12/28 职场文书
幼儿教师培训感言
2014/03/08 职场文书
护士个人自我鉴定
2014/03/24 职场文书
打架检讨书范文
2015/01/27 职场文书