2_空间数据文件访问.pdf

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2_空间数据文件访问

Python 空间数据处理(Geoprocessing With Python),国科大 (宋现锋) 第二章 空间数据文件访问(GDAL/OGR 包) 1.图像文件的读写 栅格数据模型 (像元,如:正方形)实质上是对连续空间分布现象的离散化,采用了一 个二维矩阵、使用行号与列号来确定每个象元点 cell)的空间位置。其数据模型主要包括 两部分 –数据矩阵和大地坐标。 栅格矩阵:像元值用于表示地物某种属性的数值,像元大小表示栅格数据的空间分辨率, 波段则表示地物属性有多类,每类属性用一个波段表示。 大地坐标:空间数据参考表示地图投影信息,仿 变换表示行列坐标到平面坐标的映 。 #读GeoTiff 文件示例1 from osgeo import gdal import numpy as np dataset=gdal.Open(fdem.tif) #打开文件 im_width = dataset.RasterXSize #栅格矩阵的列数 im_height = dataset.RasterYSize #栅格矩阵的行数 im_bands = dataset.RasterCount #波段数 im_geotrans = dataset.GetGeoTransform() #仿 矩阵,左上角像素的大地坐标和像素分辨率 im_proj = dataset.GetProj ection() #地图投影信息,字符串表示 im_data = dataset.ReadAsArray(0,0,im_width,im_height) type(im_data),im_data.shape del dataset #显示栅格数据 #numpy 的用法,详见第四章科学计算 print im_data[0, 10:15,20:25] #查看波段0,10~ 14 行和20~25 列的数据 print im_geotrans #(409294.88697, 27.37648, 0.0, 4423871.08338, 0.0, -27.37648) Python 空间数据处理(Geoprocessing With Python),国科大 (宋现锋) #写GeoTiff 文件示例2 #gdal 数据类型 #gdal.GDT_Byte, #gdal .GDT_UInt 16, gdal.GDT_Int 16, gdal.GDT_UInt32, gdal.GDT_Int32, # gdal.GDT_Float32, gdal.GDT_Float64 #判断栅格数据的数据类型 if int8 in im_data.dtype.name: datatype = gdal.GDT_Byte elif int 16 in im_data.dtype.name: datatype = gdal.GDT_UInt 16 else: datatype = gdal.GDT_Float32 #判读数组维数 if len(data.shape) == 3 : im_bands, im_height, im_width = im_data.shape else: im_bands, (im_height, im_width) = 1, im_data.shape #创建文件 driver = gdal.GetDriverByName(GTiff) dataset = driver.Create(fdem_new.tif, im_width, im_height, im_bands, datatype) dataset.SetGeoTransform(im_geotrans) #写入仿 变换参数 dataset.SetProj ection(im_proj) #写入投影 if im_bands == 1 : dataset.GetRasterBand(1).WriteArray(im_data) #写入数组数据 else: for i in range(im_bands): dataset.GetRasterBand(i+ 1).WriteArray(im_data[i]) del dataset Python 空间数据处理(Geoprocessing

文档评论(0)

hhuiws1482 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档