GDAL OGR C++ API 学习之路 (6)OGRFeature 篇 代码示例 功能标识符FID

news/2024/11/16 3:13:31/

功能标识符FID

功能标识符在矢量数据中非常重要,它可以用于识别和访问特定的要素对象。通过获取要素对象的功能标识符

  1. 唯一标识要素对象:每个要素对象都有一个唯一的功能标识符,它可以用作要素的唯一标识符。通过获取功能标识符,您可以确保引用或操作正确的要素对象。

  2. 进行要素对象之间的比较:功能标识符可以用于比较两个要素对象是否相同。通过比较功能标识符,您可以确定两个要素对象是否引用了相同的要素。

  3. 数据关联和查询:功能标识符在数据关联和查询操作中非常有用。通过将功能标识符作为查询条件,您可以准确地检索特定的要素对象或执行关联操作

GetFID

inline GIntBig GetFID() const

获取功能标识符

返回: 特征 ID 或 OGRNullFID(如果未分配)

// 假设有一个名为 feature 的 OGRFeature 对象// 获取功能标识符
GIntBig fid = feature.GetFID();// 打印功能标识符
cout << "Feature ID: " << fid << endl;输出:Feature ID: 12345

 

SetFID

virtual OGRErr SetFID(GIntBig nFIDIn)

设置功能标识符

参数:

nFIDIn -- 要分配的新特征标识符值。

返回: 在成功时OGRERR_NONE,或者在失败时,其他一些价值

// 创建一个新的 OGRFeature 对象
OGRFeature feature;// 设置要素对象的功能标识符
GIntBig fid = 12345;
feature.SetFID(fid);

 

DumpReadable

void DumpReadable(FILE*, CSLConstList papszOptions = nullptr) const

用于将要素对象的可读格式信息输出到指定的文件流中。它将要素对象的属性和几何信息以易读的方式打印到文件中

它不会定义信息(字段类型和名称除外),也不会报告几何空间参考系统

可以定义几个选项来更改默认转储:

  • DISPLAY_FIELDS=NO :隐藏属性的转储

  • DISPLAY_STYLE=NO :隐藏样式字符串的转储

  • DISPLAY_GEOMETRY=NO :隐藏几何图形的转储

  • DISPLAY_GEOMETRY=摘要:仅获取几何图形的摘要

参数

  • FILE*:指向要输出信息的文件流的指针。
  • CSLConstList papszOptions:可选参数,用于传递额外的选项
// 假设有一个名为 feature 的 OGRFeature 对象// 打开一个文件流
FILE* file = fopen("feature_info.txt", "w");// 设置附加选项"DISPLAY_FIELDS=NO","DISPLAY_STYLE=NO","DISPLAY_GEOMETRY=NO","DISPLAY_GEOMETRY=SUMMARY",nullptr// 将选项数组转换为 CSLConstList 类型
CSLConstList papszOptions = CSLDuplicate(options);// 将要素对象的信息输出到文件中,包括附加选项
feature.DumpReadable(file, papszOptions);// 关闭文件流
fclose(file);// 释放选项数组的内存
CSLDestroy(papszOptions);

DumpReadableAsString

std::string DumpReadableAsString(CSLConstList papszOptions = nullptr) const

将要素对象的信息转储为字符串形式

它不会定义信息(字段类型和名称除外),也不会报告几何空间参考系统

可以定义几个选项来更改默认转储:

  • DISPLAY_FIELDS=NO :隐藏属性的转储

  • DISPLAY_STYLE=NO :隐藏样式字符串的转储

  • DISPLAY_GEOMETRY=NO :隐藏几何图形的转储

  • DISPLAY_GEOMETRY=SUMMARY:仅获取几何图形的摘要

参数:

papszOptions -- NULL 终止的选项列表(可能为 NULL)

返回: 具有要素表示的字符串

// 假设有一个名为 feature 的 OGRFeature 对象// 设置附加选项
const char* options[] = {"DISPLAY_FIELDS=NO","DISPLAY_STYLE=NO","DISPLAY_GEOMETRY=NO",nullptr
};// 将选项数组转换为 CSLConstList 类型
CSLConstList papszOptions = CSLDuplicate(options);// 将要素对象的信息转储为字符串
std::string featureInfo = feature.DumpReadableAsString(papszOptions);// 打印要素信息字符串
std::cout << featureInfo << std::endl;

SetFrom    

OGRErr SetFromconst OGRFeature*, int = TRUE)

设置一个要素与另一个要素

参数:

  • poSrcFeature -- 指向将从中复制几何和字段值的要素指针。

  • bForgiving -- 如果操作在缺少与某些源字段匹配的输出字段的情况下仍应继续,则为 TRUE

返回:OGRERR_NONE操作是否成功,即使某些值未传输,否则为错误代码

仅复制属性值和几何图形,而不会复制要素对象的其他属性(例如 FID)

// 假设有两个名为 feature1 和 feature2 的 OGRFeature 对象// 将 feature1 的属性值和几何图形复制到 feature2
OGRErr result = feature2.SetFrom(&feature1,TURE);if (result == OGRERR_NONE) {std::cout << "属性值和几何图形复制成功" << std::endl;
} else {std::cout << "属性值和几何图形复制失败" << std::endl;
}

SetFrom

OGRErr SetFrom(const OGRFeature*, const int*, int = TRUE)

设置一个要素与另一个要素  不需要具有相同的OGRFeatureDefn

根据提供的索引映射复制字段值。字段类型不必完全匹配

参数:

  • poSrcFeature -- 将从中复制几何和字段值的特征。

  • panMap -- 存储在源要素字段的相应索引处的要素字段索引的数组。应使用值 -1 来忽略源的字段。数组不应为 NULL,并且不应与源要素中的字段数一样长。

  • bForgiving -- 如果操作在缺少与某些源字段匹配的输出字段的情况下仍应继续,则为 TRUE。

返回:

OGRERR_NONE操作是否成功,即使某些值未传输,否则为错误代码

  // 假设有两个名为 feature1 和 feature2 的 OGRFeature 对象// feature1 包含 3 个属性字段,feature2 包含 4 个属性字段// 定义属性字段的映射关系int fieldMapping[] = {1,0,2,-1};// 将 feature1 的属性值按照映射关系复制到 feature2OGRErr result = feature2.SetFrom(&feature1, fieldMapping, TRUE);
  • 源要素对象的第一个属性字段(索引为 0)将复制到目标要素对象的第二个属性字段(索引为 1);
  • 源要素对象的第二个属性字段(索引为 1)将复制到目标要素对象的第一个属性字段(索引为 0);
  • 源要素对象的第三个属性字段(索引为 2)将复制到目标要素对象的第三个属性字段(索引为 2);
  • 源要素对象的第四个属性字段将被忽略,不进行复制;

SetFieldsFrom

OGRErr SetFieldsFrom(const OGRFeature*, const int*, int = TRUE)

设置其他要素中的字段

参数:

  • poSrcFeature -- 将从中复制几何和字段值的特征。

  • panMap -- 存储在源要素字段的相应索引处的要素字段索引的数组。应使用值 -1 来忽略源的字段。数组不应为 NULL,并且不应与源要素中的字段数一样长。

  • bForgiving -- 如果操作在缺少与某些源字段匹配的输出字段的情况下仍应继续,则为 TRUE。

返回: OGRERR_NONE操作是否成功,即使某些值未传输,否则为错误代码he

和OGRErr SetFrom(const OGRFeature*, const int*, int = TRUE)一模一样


http://www.ppmy.cn/news/734974.html

相关文章

驱动开发——第一个HelloDDK

友链 非即插即用驱动 helloddk.h // 保证头文件只被编译一次 // 因为在实际项目中&#xff0c;一个头文件可能会被另一个头文件包含 // 比如b.h中包含了a.h // 然后在c.c中有如下代码&#xff1a; /* #include<a.h> #include<b.h> */ // 这样一来&#xff0c;a.…

python提取GO信息

1.原始数据&#xff1a; 原始数据链接&#xff1a; http://current.geneontology.org/ontology/go-basic.obo原始数据样式&#xff1a; 2.目标格式&#xff1a; 3.代码&#xff1a; with open("go-basic.obo","r") as file:lib{}for line in file:lin…

天书夜读笔记——C++写的内核驱动程序

友链 extern "C" {#include<ntifs.h> }class MyDriver { public:MyDriver(PDRIVER_OBJECT driver);virtual NTSTATUS OnDispatch(PDEVICE_OBJECT dev, PIRP irp) {return STATUS_UNSUCCESSFUL;};static MyDriver *d_my_driver;private:static NTSTATUS sDisp…

适用于XP的DDK

友链 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 占位 …

Ubuntu 18.04 安装网卡驱动(有线连接)

之前一直用小米的驱动&#xff0c;但是感觉太慢了&#xff0c;所以还是决定使用有线连接。 但是之前进入Linux系统后&#xff0c;有线连接没有&#xff0c;所以需要安装驱动。 01 查询网卡类型&#xff08;Windows&#xff09; 进入windows系统&#xff0c;进入CMD命令行&am…

linux装完显卡驱动分辨率低,装上显卡驱动后屏幕分辨率变低了,肿么破。。。...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09) Subsystem: Device 1b0a:2099 Kernel driver in use: agpgart-intel 00:01.0 PCI bridge: Intel Corporation Xeon E3-1…

Python 之测试数据驱动

Parameterized 模块 parameterized 第三方包的安装&#xff1a; pip install parameterized $ pip install parameterized Collecting parameterizedDownloading https://files.pythonhosted.org/packages/65/d4/b0b626eb263a4c2aa3ca3cd20ea3db410db837f7f6b5d3fc4a6c4bee363…

华为服务器linux版的网卡驱动下载,华为服务器RH2288H V3 服务器上安装Windows2008 R2 SP1指导书...

1 安装前准备 1.1 硬件环境准备 无 备注: 本指导书以虚拟光驱、虚拟软驱为例,如使用物理光驱、物理软驱安装系统操作则以实际系统光盘、软盘代替。 1.2 软件环境准备 1.2.1 准备操作系统安装文件 到windows 官网下载安装文件,或者采用光盘安装文件。 …