当前位置: 首页 > news >正文

低代码开发会废了程序员吗seo优化推广公司

低代码开发会废了程序员吗,seo优化推广公司,哈尔滨做网站哈尔滨学院,国内精品在线网站建设本文介绍基于C 语言的GDAL库,基于一个存储大量遥感影像的文件夹,依据每一景遥感影像的文件名中表示日期的那个字段,找出这些遥感影像中缺失的成像日期,并新生成多个像元值全部为0的栅格文件,作为这些缺失日期当日的遥感…

  本文介绍基于C++ 语言的GDAL库,基于一个存储大量遥感影像文件夹,依据每一景遥感影像的文件名中表示日期的那个字段,找出这些遥感影像中缺失的成像日期,并新生成多个像元值全部为0的栅格文件,作为这些缺失日期当日的遥感影像文件的方法。

  首先,我们来看一下本文需要实现的需求。现在有一个文件夹,存储了从2018年第001天到2022年第361天的全部遥感影像,其中每一景图像的像元个数、空间参考信息、NoData值等都是一致的。对于这些遥感影像,原本应该是每10天就有1景;但是由于遥感影像数据有缺失,因此部分日期没有对应的遥感影像。如下图所示,可以看到比如2018年的061这一天,它就没有对应的遥感影像。

  但是,由于后期处理的需要,我们现在希望对这些缺失日期的遥感影像文件加以填补——具体的需求是,我们新建若干个像元值全部为0的栅格文件,作为每一个缺失日期当日的遥感影像文件;这些填补的、新的遥感影像文件的各项信息(比如像元个数、空间参考信息等)都和原本的文件一致即可,只要保证全部的像元都是0就行。

  知道了需求,我们就可以开始代码的撰写。本文用到的代码具体如下所示。其中,关于C++ 语言配置GDAL库的方法,大家可以参考文章Visual Studio配置并编译C++环境下GDAL库、SQLite环境与PROJ库的方法(https://blog.csdn.net/zhebushibiaoshifu/article/details/127088090)。

#include <iostream>
#include <iomanip>
#include <sstream>
#include "gdal_priv.h"
#include "cpl_conv.h"using namespace std;void create_missing_raster(string path);int main() {string file_path = R"(E:\02_Project\TIFF\TEST)";create_missing_raster(file_path);return 0;
}void create_missing_raster(string path)
{vector<string> all_file_path;for (int year = 2018; year <= 2022; year++){for (int day = 1; day <= 361; day += 10){ostringstream oss;oss << path << "/Albers_MuSyQ.NDVI.16m." << to_string(year) << setfill('0') << setw(3) << to_string(day) << "000000.49SDB.001.h5NDVI-NDVI.tif";all_file_path.push_back(oss.str());}}GDALAllRegister();int x_size, y_size;string one_actual_path;for (string& one_file_path : all_file_path){GDALDataset* poDataset_actual;poDataset_actual = (GDALDataset*)GDALOpen(one_file_path.c_str(), GA_ReadOnly);if (poDataset_actual != NULL){one_actual_path = one_file_path;x_size = poDataset_actual->GetRasterXSize();y_size = poDataset_actual->GetRasterYSize();GDALClose((GDALDatasetH)poDataset_actual);break;}}for (string& one_file_path : all_file_path){if (CPLCheckForFile((char*)one_file_path.c_str(), NULL) == FALSE){GDALDataset* poDataset;GDALDriver* poDriver;poDriver = GetGDALDriverManager()->GetDriverByName("GTiff");GDALDataset* poDataset_actual;poDataset_actual = (GDALDataset*)GDALOpen(one_actual_path.c_str(), GA_ReadOnly);poDataset = poDriver->CreateCopy(one_file_path.c_str(), poDataset_actual, FALSE, NULL, NULL, NULL);double* pafScanline = new double[x_size * y_size];for (int i = 0; i < x_size * y_size; i++){pafScanline[i] = 0.0;}GDALRasterBand* poBand;poBand = poDataset->GetRasterBand(1);poBand->RasterIO(GF_Write, 0, 0, x_size, y_size, pafScanline, x_size, y_size, GDT_Float64, 0, 0);delete[] pafScanline;GDALClose((GDALDatasetH)poDataset);GDALClose((GDALDatasetH)poDataset_actual);cout << "New file is :" << one_file_path << endl;}}GDALDestroyDriverManager();
}

  上述代码主要都是在create_missing_raster(string path)函数内实现具体功能的,我们主要就对这一函数加以讲解。

  首先,我们需要基于文件夹中遥感影像文件的文件名称特征,遍历生成文件名列表。在这里,我们使用两个嵌套的for循环,生成所有可能的栅格图像文件名,并将这些文件名保存在all_file_path向量中。其中,栅格图像的文件名根据年份和天数生成,并通过setfill('0')setw(3)这两个函数保证我们生成的日期满足YYYYDDD这种格式。

  随后,基于GDALAllRegister这一GDAL库的初始化函数,用于注册所有支持的数据格式驱动程序。接下来,我们使用GDALOpen函数,从2018001这一天开始,通过循环打开对应名字的文件,直到找到文件夹中第一个实际存在的栅格图像文件poDataset_actual),并获取其栅格图像的行列数(x_sizey_size);我们后期的操作需要用到这个行列数,并且会将这个实际存在的栅格文件作为生成新的栅格文件的模板。

  接下来,我们遍历文件名列表all_file_path,对每个文件名进行处理。对于不存在的栅格图像文件,使用GDALDriver创建一个新的数据集(poDataset),并将其中的像元值设置为0。如果栅格图像文件已经存在,则跳过不处理。其中,在对缺失的栅格图像加以生成时,我们首先使用GetGDALDriverManager()->GetDriverByName函数获取GDAL驱动程序对象,然后使用CreateCopy函数创建新的栅格图像;其中,我们就是以前期找到的文件夹中第一个实际存在的栅格图像文one_actual_path为模板。随后,我们用0填充新创建的栅格图像,并使用RasterIO函数对栅格图像的像元进行写入操作。

  最后,在上述处理完成后,使用GDALClose函数关闭数据集,并输出新创建的栅格图像的文件名。随后,我们使用GDALDestroyDriverManager销毁GDAL驱动程序管理器,释放资源。

  随后,我们运行代码,可以看到每一个新生成的栅格图像文件(也就是原本当日没有成像的日期对应的遥感影像)都会打印出来。

  随后,我们打开文件夹,可以看到之前没有遥感影像的日期,目前也都存在一景遥感影像与其对应了。比如2018年的061这一天,目前已经有了一景遥感影像。

  至此,大功告成。

欢迎关注:疯狂学习GIS

http://www.hkea.cn/news/337109/

相关文章:

  • 厦门做网站设计电商seo优化
  • wordpress视频点播seo技术是干什么的
  • 网站推广是怎么做的网络营销专业如何
  • 平面设计线上兼职上海网站seo
  • 个性化网站定制价格今日热点
  • 做网站的艰辛免费个人网站申请
  • 网站改版需要多久网站设计与制作毕业论文范文
  • 深圳横岗网站建设网站建设的推广渠道
  • 有没有什么网站免费做名片2023年新闻小学生摘抄
  • 新网金商网站外链查询工具
  • 网站建设的进度竞价托管选择微竞价
  • 网站快速网站推广怎么做一个公司网站
  • 旅游网站模板htmlseo品牌优化整站优化
  • 方圆网站建设aso优化重要吗
  • 做购实惠网站的意义好用的搜索引擎有哪些
  • 怎么把自己笔记本做服务器做个网站搭建网站基本步骤
  • jeecms做企业网站成都网站建设公司排名
  • 沈阳招聘网站开发地推项目平台
  • 798艺术区成都seo达人
  • 平度网站建设抖音代运营收费详细价格
  • 株洲网站优化找哪家seo优化的价格
  • 找印度人做网站sem竞价推广公司
  • 山西网站推广公司网站关键词优化怎么弄
  • 微信分销是什么重庆优化seo
  • 武汉企业网站推广方案永久免费无代码开发平台网站
  • 网站开发岗位群怎样推广产品
  • 桐城市美丽乡村建设专题网站石家庄整站优化技术
  • 北京建网站的公司哪个比较好郑州seo价格
  • 进空间的网站网络营销常见的工具
  • wordpress发文章的id怎么不连续如何做好搜索引擎优化工作