python+gdal 实现将栅格切片合成为tiff影像以前在校制图实习的的时候,老师给了我们一款稻草人下载器,可以在谷歌地图上画一个范围,然后把对应的影像下载下来,当时不太明白。现在看来,就是根据切片的规则,把谷歌地图上的瓦片下载了下来,然后本地合成了tif影像。前面的博文中,我们也讲过了如何根据规则把瓦片下载下来《python多线程进行地图栅格瓦片的爬虫》。这里我们研究一下,如何把下载下来的瓦片合成为tif影像。目录python+gdal 实现将栅格切片合成为tiff影像主要开发环境主要代码1.
计算归一化后的数据集的协方差矩阵
计算协方差矩阵的特征值和特征向量
保留最重要的k个特征(通常k要小于n),也可以自己制定,也可以选择一个阈值,然后通过前k个特征值之和减去后面n-k个特征值之和大于这个阈值,则选择这个k
找出k个特征值对应的特征向量
将m * n的数据集乘以k个n维的特征向量的特征向量(n * k),得到最后降维的数据。
————————————————
版权声明:本文为CSDN博主「蜡笔小新不怕辣」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42840712/article/details/82586857
本文介绍一个从excel中读取数据,从而构建点状矢量
文件
的方法(当然构建面状,线状也是类似的,如有需要可以留言),使用的
python
+
gdal
库+xlrd。当然本程序不一定是最简化的,各位读者可以自行优化。本文并不是附上所有的程序而是针对重要的代码段进行讲解。
first:
import xlrd ###读取excel
文件
,比较简单,读取出每个点的
##信息比如经纬度,还有其他的属性。
file_path = r'C:\Users\Administrator\Desktop\AQ.xls'
data = xlrd.open_workbook(file_path)
table = data.s
目前有一张
tif
格式的
栅格
影像
,需要在web地图上进行展示,使用动态
切片
WMS的方式,渲染速度比较慢,而且大的时候会出现模糊的问题。并且后面需要做多期
影像
的切换,渲染与加载效率也值得关注。
计划是使用
栅格
转矢量的方式,将
栅格
数据转为矢量shp
文件
,然后进行矢量
切片
,使用Mapbox进行前端动态渲染。在网上查询了很多资料,有人说使用d3-contour在node.js中生成或者使用rasterio在
python
中进行转换,整体过程都比较麻烦,很不易
实现
。最终选定了使用
GDAL
进行
栅格
转矢量的方法,代
GeoServer 多级地图发布流程起因功能快捷键
合
理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适
合
你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入
最近参与了一个是以地图为...
```
python
dataset1 =
gdal
.Open('file1.
tif
',
gdal
.GA_ReadOnly)
dataset2 =
gdal
.Open('file2.
tif
',
gdal
.GA_ReadOnly)
3. 读取
栅格
数据
文件
中的波段数据。可以使用`dataset.GetRasterBand()`函数读取
栅格
数据
文件
中的波段数据,例如:
```
python
band1 = dataset1.GetRasterBand(1)
band2 = dataset2.GetRasterBand(1)
4. 将波段数据读取到numpy数组中。可以使用`band.ReadAsArray()`函数将波段数据读取到一个numpy数组中,例如:
```
python
array1 = band1.ReadAsArray()
array2 = band2.ReadAsArray()
5. 对两个numpy数组进行最大值
合
成。可以使用`numpy.maximum()`函数将两个numpy数组进行最大值
合
成,例如:
```
python
max_array = np.maximum(array1, array2)
6. 将
合
成后的numpy数组写入输出
文件
中。可以使用`
gdal
.GetDriverByName()`函数获取一个特定的输出格式的驱动程序,并使用`driver.Create()`函数创建一个新的
栅格
数据
文件
,例如:
```
python
driver =
gdal
.GetDriverByName('G
Tiff
')
out_dataset = driver.Create('output.
tif
', dataset1.RasterXSize, dataset1.RasterYSize, 1,
gdal
.GDT_Float32)
然后,可以使用`out_band.WriteArray()`函数将
合
成后的numpy数组写入输出
文件
中,例如:
```
python
out_band = out_dataset.GetRasterBand(1)
out_band.WriteArray(max_array)
7. 关闭数据集和输出
文件
。最后,不要忘记关闭打开的数据集和输出
文件
,例如:
```
python
dataset1 = None
dataset2 = None
out_dataset = None
完成这些步骤后,就可以成功地使用
GDAL
的
Python
API
实现
栅格
数据的最大值
合
成了。