? ? ? ? 1)对我来说,成为CSDN创作者是一次机缘的邂逅。我曾经在编程的世界里孤独地探索,渴望找到一个能够交流和分享的平台。而CSDN恰好提供了一个这样的机会,让我能够将自己的经验和见解分享给更多的人。
? ? ? ? 2)在开始创作的初期,我主要是为了记录自己的学习和实践过程。我希望通过编写博客来巩固自己的知识,并希望能够为那些像我一样热爱编程的初学者提供一些帮助和指导。随着时间的推移,我发现自己不仅在创作中获得了成长,也结识了许多志同道合的朋友。
? ? ? ? 3)在CSDN上,我遇到了许多优秀的创作者,他们分享的内容让我受益匪浅。他们的经验和见解激发了我的创作灵感,也让我更加坚定了持续创作的决心。同时,我也意识到创作不仅仅是为了分享知识和经验,更是一种交流和学习的过程。通过与读者的互动和交流,我能够更好地了解他们的需求和反馈,从而不断完善自己的创作内容和方式。
? ? ? ? 1)在CSDN的创作过程中,我收获颇丰。我的文章得到了众多粉丝的关注和认可,这让我倍感荣幸。同时,我也获得了许多正向的反馈,如点赞、评论和阅读量等。这些反馈让我更加坚定了创作的信心,也激发了我不断优化内容的动力。
? ? ? ? 2)除了粉丝和反馈之外,更重要的是,我认识了许多志同道合的领域同行。我们一起交流、共同成长,彼此激励着在技术领域不断进步。这些同行的存在让我意识到,在这个庞大的技术社区里,我不再孤单。我们共同追求着技术的卓越,分享着彼此的经验和见解。
? ? ? ? 3)此外,通过创作,我也提升了自己的组织和表达能力。将复杂的技术细节和思路整理成清晰易懂的文字,需要良好的逻辑思维和表达能力。这个过程不仅锻炼了我的技术能力,也提升了我的沟通技巧。
????????总的来说,在CSDN的创作之路给我带来了粉丝的认可、同行的友谊和技术能力的提升。这些收获让我更加坚定地走上了创作的道路,也激励着我继续努力,分享更多有价值的内容。????????
? ? ? ? 1)在CSDN的创作已经成为我日常生活的一部分。每天我都会抽出一些时间来阅读技术文章、撰写博客或者回复读者的评论。这个过程让我感到充实和有意义,也让我在忙碌的工作和学习中找到了平衡。
? ? ? ? 2)虽然创作需要花费一定的时间和精力,但我始终相信,分享知识和经验是一种回馈社区的方式。通过创作,我能够将自己的见解和心得分享给更多的人,帮助他们解决问题或启发他们的思考。这种成就感让我觉得自己的付出是值得的。
? ? ? ? 3)为了保持创作的持续性和质量,我会合理安排时间,将工作、学习和创作有机地结合起来。在工作中,我会注重积累实际经验和技术知识,为创作提供素材和灵感。同时,我也会通过阅读和学习不断提升自己的技术水平,以保持创作的活力和价值。
????????当然,创作过程中也会遇到一些挑战和困难。有时可能会感到灵感枯竭或者时间不够用,但我会通过调整自己的状态和时间管理来克服这些困难。我相信,只要保持持久的热情和毅力,就能够克服困难,创作出更好的内容。
? ? ? ? 其实对于之前发布过的代码来说,我还都挺满意的。每篇文章的代码都是自己一个一个打出来的,当然在创作的时候有时也会翻翻前辈们的资源、经验,在这里也是非常感谢他们的无私奉献。在这里分享一下我的第一篇Python代码的文章吧,也算是遥感工作者使用Python处理影像的入门课程:计算NDVI等光谱指数
# -*- coding: utf-8 -*-
"""
@Time : 2023/3/30 9:11
@Auth : RS迷途小书童
@File :NDVI计算.py
@IDE :PyCharm
"""
import numpy as np
from osgeo import gdal
def Get_data(filepath):
ds = gdal.Open(filepath) # 打开数据集dataset
ds_width = ds.RasterXSize # 获取数据宽度
ds_height = ds.RasterYSize # 获取数据高度
ds_bands = ds.RasterCount # 获取波段数
ds_geo = ds.GetGeoTransform() # 获取仿射地理变换参数
ds_prj = ds.GetProjection() # 获取投影信息
print("影像的宽度为:" + str(ds_width))
print("影像的高度为:" + str(ds_height))
print("仿射地理变换参数为:" + str(ds_geo))
print("投影坐标系为:" + str(ds_prj))
# data = ds.ReadAsArray(0, 0, ds_width, ds_height) # 以数组的形式读取整个数据集
def Write_NDVI(filepath, out_path, red, nir):
print("-----正在进行归一化植被指数NDVI计算-----")
ds = gdal.Open(filepath) # 打开数据集dataset
ds_width = ds.RasterXSize # 获取数据宽度
ds_height = ds.RasterYSize # 获取数据高度
ds_geo = ds.GetGeoTransform() # 获取仿射地理变换参数
ds_prj = ds.GetProjection() # 获取投影信息
array_red = ds.GetRasterBand(red).ReadAsArray(0, 0, ds_width, ds_height).astype(np.float)
# red是红波段对应的波段数
array_nir = ds.GetRasterBand(nir).ReadAsArray(0, 0, ds_width, ds_height).astype(np.float)
# nir是近红波段对应的波段数
# 以数组的形式读取红波段和近红外波段
b1 = array_nir-array_red
b2 = array_nir+array_red
NDVI_data = np.divide(b1, b2, out=np.zeros_like(b1), where=b2 != 0) # 计算NDVI
driver = gdal.GetDriverByName('GTiff') # 载入数据驱动,用于存储内存中的数组
ds_result = driver.Create(out_path, ds_width, ds_height, bands=1, eType=gdal.GDT_Float64)
# 创建一个数组,宽高为原始尺寸
ds_result.SetGeoTransform(ds_geo) # 导入仿射地理变换参数
ds_result.SetProjection(ds_prj) # 导入投影信息
ds_result.GetRasterBand(1).SetNoDataValue(9999) # 将无效值设为9999
ds_result.GetRasterBand(1).WriteArray(NDVI_data) # 将NDVI的计算结果写入数组
del ds_result
# 删除内存中的结果,否则结果不会写入图像中
print("计算完成")
if __name__ == "__main__":
file_path = r"G:/Shanghai_TreeClassicfication/Sen2Cor_Shanghai/Shanghai.dat"
# 输入的栅格数据路径
out_path1 = r"G:/GDAL_try/Shanghai-1.tif"
# 导出的文件路径
Get_data(file_path) # 执行函数,获取影像基本信息
print("\n")
print("--------------NDVI计算--------------")
red1 = int(input("请输入红波段:"))
nir1 = int(input("请输入近红外波段:"))
Write_NDVI(file_path, out_path1, red1, nir1) # 执行函数,计算NDVI
? ? ? ? 1)在CSDN的创作之路上,我憧憬着未来能够成为RS&Python领域的专家,并能为更多的人提供有价值的见解和经验。同时,我也希望能够在创作过程中不断突破自己的局限,拓宽知识领域,以更广阔的视野和更深入的思考来影响和启发读者。
? ? ? ? 2)在职业规划方面,我希望能够将创作与我的工作紧密结合,将实际项目中的经验和技术分享给读者。我相信,通过不断学习和实践,我能够在工作中取得更高的成就,并为CSDN的创作提供更多有价值的素材和经验。
? ? ? ? 3)在创作规划方面,我希望能够持续优化自己的创作内容和方式。我会注重内容的深度和广度,不断探索新的主题和技术领域,以满足不同读者的需求。同时,我也会尝试多样化的创作形式,如视频、音频等,以更生动、直观的方式与读者交流。
????????总的来说,我憧憬着在CSDN的创作之路上不断成长、突破和进步。我相信,只要保持持久的热情和毅力,我的职业规划和创作规划一定能够实现。
欢迎大家关注我,一起学习进步!!!