功能标识符FID
功能标识符在矢量数据中非常重要,它可以用于识别和访问特定的要素对象。通过获取要素对象的功能标识符
唯一标识要素对象:每个要素对象都有一个唯一的功能标识符,它可以用作要素的唯一标识符。通过获取功能标识符,您可以确保引用或操作正确的要素对象。
进行要素对象之间的比较:功能标识符可以用于比较两个要素对象是否相同。通过比较功能标识符,您可以确定两个要素对象是否引用了相同的要素。
数据关联和查询:功能标识符在数据关联和查询操作中非常有用。通过将功能标识符作为查询条件,您可以准确地检索特定的要素对象或执行关联操作
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 SetFrom(const 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)一模一样