<rp id="9thzz"><acronym id="9thzz"></acronym></rp>
    1. <dd id="9thzz"></dd>
    2. 首页 > Python教程 > Python应用 > python开发:矢量数据转栅格数据代码分享

      python开发:矢量数据转栅格数据代码分享

      时间:2019-09-30    作者:ninic   来源:互联网

      这篇文章主要介绍了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开发:Django中间件拦截未登录url实例详解
      用Python爬取B站5000 条视频,揭秘为何千万人为它流泪!
      Python教程:如何用xlrd和xlwt库读和写Excel表格?
      Python安装MySQL-python:EnvironmentError的解决办法
      分享:Python2和Python3有那些差异?
      Python 的内置对象都藏了哪些小秘密?
      实战干货!用案例让你一文搞懂python网络爬虫
      Python教程:图像处理模块ndimage用法实例分析
      Python教程:代理IP爬虫的使用方法
      Python教程:如何使用scipy模块实现一维卷积运算示例?
      Python:关于内存分配时的那些小秘密分享
      python技巧:global关键字的用法详解
      Python教程:深入了解python在HDA中的应用
      python技巧:SSLerror的requests证书问题解决方法
      PyCharm教程:搭建Spark开发环境的几个步骤
      Python开发技巧:openpyxl读取单元格字体颜色过程解析
      Python教程:面向对象之Web静态服务器
      Python教程:如何为终端提供持久性历史记录
      Python技巧分享:自动登录淘宝并保存登录信息的方法
      Python数据分析:利用Flask动态展示 Pyecharts 图表数据方法
      python3教程:如何搭建微型的web服务器?
      python技巧:xlwt如何设置单元格的自定义背景颜色
      如何解决Python字符串和正则表达式中的反斜杠('\')问题?
      Python开发技巧:编写一个简单登录功能过程解析
      Python编程:postman传递当前时间戳实例详解
      Python爬虫教程:使用beautifulSoup4爬取名言网案例代码分享
      python开发:动态迁移solr数据过程分享
      python数据分析:用线性回归预测股票价格的代码分析
      Python教程:数据分析模块pandas用法详解
      Python3教程:pandas.merge用法详解
      Python爬虫案例:如何爬取豆瓣电影信息?附代码实例
      python开发:如何编写简单端口扫描器?
      Django框架教程:Pagination分页实现代码实例
      python爬虫实例:猫眼电影和电影天堂数据csv和mysql存储过程
      Python教程:实现TCP探测目标服务路由轨迹的原理与方法详解
      基于python全局设置id 自动化测试元素定位的方法分享

      精彩推荐

      热门教程

      99热 久久99热视频只有精品 玖玖热爱视频精品 99热这里只有精品 久久re热这里只是精品