- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 2017年怀化市临床助理医师《心血管系统》第十章复习笔记(二).pdf
- 2017年对外经济贸易大学翻译硕士考研参考书、保研辅导、考研经历、复习方法指导、导师信息、就业信息.pdf
- 2017年武汉大学893地图学考研初试真题.pdf
- 2017年时事热点集锦.docx
- 2017年江苏省自考03871市场调查与市场分析自学笔记完整资料.docx
- 2017年江苏省专转本高数数学导数与微分模拟试题练习(含答案).doc
- 2017年江苏省高数复习资料第二单元 导数与微分.doc
- 2017年江苏省专转本高数知识点讲解第二章第三节隐函数及由参数方程所确定的函数的导数.ppt
- 2017年江苏省自学考试人力资源管理03871市场调查与分析复习资料(精华版).doc
- 2017江西政法干警申论备考技巧:实力有强弱 备考有差别.docx
文档评论(0)