如何使用python加载栅格地图


如何使用python加载栅格地图

第一次写博客记录平时发现的一些功能。python在数据挖掘,大数据方面已经被大家广泛应用,在GIS方面其实也被大家广泛应用。本文主要介绍python如何加载地图,使你画的图更漂亮。

  • 需要python库
  • 读取GeoTIF文件信息
  • Code

需要python库

  • osgeo
  • opencv

读取GeoTIF文件信息1

包含地理信息的文件格式有多种,这里介绍一下TIFF文件以及其中的.TFW文件。
TFW文件结构很简单。它是一个包含六行内容的ASCII文本文件。可以用任何一个ASCII文本编辑器来打开TFW文件。TFW文件中的内容如下。

+6.00
-0.00
-0.00
-6.00
1709053.00
8107714.00

下表列出了对TFW文件中的每一行的说明。

行说明
1地图单元中的一个象素在X方向上的X分辨率尺度。 //这6个参数解释的很清楚added by zhangjun at 2010-1-5
2平移量。
3 旋转量。(角度)
4地图单元中的一个象素在Y方向上的Y分辨率尺度的负值。
5象素1,1(左上方)的X地坐标。
6 象素1,1(左上方)的Y地坐标。

使用osgeo获得这些信息:
下面看一下如何获取文件的一些基本信息,需要用到下面的一些函数与属性。

1.dataset.GetDescription() # 获得栅格的描述信息
2.dataset.RasterCount # 获得栅格数据集的波段数
3.dataset.RasterXSize # 栅格数据的宽度 (X 方向上的像素个数)
4.dataset.RasterYSize # 栅格数据的高度 (Y 方向上的像素个数)
5.dataset.GetGeoTransform() # 栅格数据的六参数。
6.GetProjection() # 栅格数据的投影

详解2
TFW文件是关于TIFF影像坐标信息的文本文件,ArcInfo、Microstation、AutoCAD等均支持该格式的坐标信息文件。此文件定义了影像象素坐标与实际地理坐标的仿射关系,基本原理如下:

x’=Ax+By+C
y’=Dx+Ey+F

其中:

x'=象素对应的地理X坐标

y'=象素对应的地理Y坐标

x=象素坐标【列号】

y=象素坐标【行号】

A=X方向上的象素分辨率

D、B=平移和旋转系数

E=Y方向上的象素分辨素

C=栅格地图左上角象素中心X坐标

F=栅格地图左上角象素中心Y坐标

Tip:Tiff文件是图片格式包含有多个通道,使用时ds.GetRasterBand(i)获得了Tiff文件的一个通道,多通道融合可以的到彩色图片。

Code

from osgeo import gdal
import cv2
gdal.UseExceptions()

ds = gdal.Open('武汉.tif')
bandg = ds.GetRasterBand(1)
elevationg = bandg.ReadAsArray()

bandr = ds.GetRasterBand(2)
elevationr = bandr.ReadAsArray()

bandb = ds.GetRasterBand(3)
elevationb = bandb.ReadAsArray()

import matplotlib.pyplot as plt
nrows, ncols = elevationr.shape

elevation= cv2.merge([elevationg,elevationr,elevationb])
x0, dx, dxdy, y0, dydx, dy = ds.GetGeoTransform()

x1 = x0 + dx * ncols
y1 = y0 + dy * nrows


plt.show()

读取的Tiff格栅图片

这样你就可以在地图上画出你想要东西啦。

转载自:https://blog.csdn.net/qq_38684480/article/details/81436694

You may also like...