ObtenerTablaEstilo
OGRStyleTable virtual * GetStyleTable ( )
Volver a la hoja de estilo de capa
Devuelve: un puntero a una hoja de estilo que la persona que llama no debe modificar ni desasignar
// 假设图层对象为 poLayer
OGRStyleTable* poStyleTable = poLayer->GetStyleTable();
if (poStyleTable != nullptr) {
// 处理样式表信息
// ...
} else {
// 图层没有关联样式表
// ...
}
EstablecerEstiloTableDirect
vacío virtual SetStyleTableDirect(OGRStyleTable *poStyleTable )
Establecer hoja de estilo de capa
parámetro:
poStyleTable -- puntero a la tabla de estilo para establecer
// 假设图层对象为 poLayer,样式表对象为 poStyleTable
poLayer->SetStyleTableDirect(poStyleTable);
Iniciar transacción
Transacción de inicio de OGRErr virtual ( )
Para las fuentes de datos que admiten transacciones, StartTransaction crea una transacción
Devolución: OGRERR_NONE éxito
// 假设图层对象为 poLayer
if (poLayer->StartTransaction() == OGRERR_NONE) {
// 在事务中进行一系列操作
// ...
// 提交事务
poLayer->CommitTransaction();
} else {
// 处理事务启动失败的情况
}
En OGR, las capas pueden admitir transacciones y
StartTransaction()
se puede iniciar una transacción en la capa llamando a . En una transacción, se pueden realizar una serie de operaciones de capa, como agregar características, modificar características, eliminar características, etc. Cuando se completan todas las operaciones, puede llamarCommitTransaction()
para confirmar la transacción, lo que indica que todas las operaciones se han ejecutado con éxito. Si ocurre un error durante la transacción, puede llamarRollbackTransaction()
para revertir la transacción, lo que significa deshacer todas las operaciones anteriores.
Confirmar transacción
OGRErr virtual CommitTransaction ( )
Para las fuentes de datos que admiten transacciones, confirme la transacción para confirmar la transacción
Devolución: OGRERR_NONE éxito
RollbackTransaction
Virtual OGRErr RollbackTransaction ( )
Para las fuentes de datos que admiten transacciones, RollbackTransaction revertirá la fuente de datos al estado anterior al inicio de la transacción actual.
Devolución: OGRERR_NONE éxito
// 获取第一个图层
OGRLayer* poLayer = poDS->GetLayer(0);
// 开始事务
poDS->StartTransaction();
// 创建新要素
OGRFeature* poFeature = new OGRFeature(poLayer->GetLayerDefn());
// 设置要素属性
poFeature->SetField("name", "New Feature");
poFeature->SetField("population", 10000);
// 创建新几何图形并设置为要素的几何图形
OGRPoint point(100, 200);
poFeature->SetGeometry(&point);
// 将新要素添加到图层中
if (poLayer->CreateFeature(poFeature) != OGRERR_NONE) {
printf("添加要素失败!\n");
poDS->RollbackTransaction(); // 回滚事务,撤销之前的操作
OGRDataSource::DestroyDataSource(poDS);
delete poFeature;
exit(1);
}
// 提交事务,保存更改
poDS->CommitTransaction();
ObtenerColumnaFID
carácter constante virtual * GetFIDColumn ( )
Este método devuelve el nombre de la columna de la base de datos subyacente para usar como columna FID, o "" si no se admite
Devuelve: nombre de columna FID
// 获取第一个图层
OGRLayer* poLayer = poDS->GetLayer(0);
// 获取用于唯一标识要素的字段的名称
const char* fid_column = poLayer->GetFIDColumn();
if (fid_column != nullptr) {
printf("用于唯一标识要素的字段名称:%s\n", fid_column);
} else {
printf("图层中没有用于唯一标识要素的字段。\n");
}
ObtenerColumnaGeometría
carácter constante virtual * GetGeometryColumn ( )
Este método devuelve el nombre de la columna de la base de datos subyacente para usar como columna de geometría, o "" si no se admite
Para capas con múltiples campos de geometría, este método devuelve solo el nombre de la primera columna de geometría
Devuelve: nombre de columna de geometría
// 获取第一个图层
OGRLayer* poLayer = poDS->GetLayer(0);
// 获取存储几何信息的字段的名称
const char* geometry_column = poLayer->GetGeometryColumn();
if (geometry_column != nullptr) {
printf("存储几何信息的字段名称:%s\n", geometry_column);
} else {
printf("图层中没有存储几何信息的字段。\n");
}
Establecer campos ignorados
OGRErr virtual SetIgnoredFields ( const char **papszFields )
Establece campos que se pueden omitir al recuperar entidades de una capa
parámetro:
papszFields : matriz de nombres de campo terminada en NULL. Si se pasa NULL, se borra la lista ignorada.
Devuelve: OGRERR_NONE si se han resuelto todos los nombres de campo (incluso si el controlador no admite este método)
// 获取第一个图层
OGRLayer* poLayer = poDS->GetLayer(0);
// 定义要忽略的字段数组
const char* papszFields[] = {"field1", "field2"};
// 设置要忽略的字段
OGRErr err = poLayer->SetIgnoredFields(papszFields);
if (err != OGRERR_NONE) {
// 处理设置忽略字段时发生的错误
}
// 其他处理代码...
GetIgnoredFields puede obtener una lista de campos ignorados
// 获取当前设置的忽略字段列表
char** papszIgnoredFields = poLayer->GetIgnoredFields();
// 打印忽略字段列表
for (int i = 0; papszIgnoredFields[i] != nullptr; i++) {
printf("Ignored Field: %s\n", papszIgnoredFields[i]);
}
Obtener tipos de geometría
OGRGeometryTypeCounter virtual * GetGeometryTypes (int iGeomField, int nFlagsGGT, int &nEntryCountOut, GDALProgressFunc pfnProgress, void *pProgressData )
Obtener el tipo de geometría real que se encuentra en la entidad
parámetro:
-
iGeomField -- índice de campo de geometría.
-
nFlagsGGT -- Banderas de sugerencias. 0 o una combinación de OGR_GGT_COUNT_NOT_NEEDED, OGR_GGT_STOP_IF_MIXED, OGR_GGT_GEOMCOLLECTIONZ_TINZ
-
nEntryCountOut -- [out] Devuelve el número de entradas en la matriz.
-
pfnProgress : devolución de llamada de cancelación. Puede estar vacío.
-
pProgressData : datos de usuario para la devolución de llamada de cancelación. Puede estar vacío.
Devuelve: una matriz de nEntryCount, que debe liberarse con CPLFree() o NULL si se produce un error
Intersección
Intersección OGRErr (OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions = nullptr, GDALProgressFunc pfnProgress = nullptr, void *pProgressArg = nullptr )
intersección de dos capas
parámetro:
-
pLayerMethod -- capa de método. No debe ser NULL.
-
pLayerResult : la capa de las entidades producidas por la operación de inserción. no debe ser NULL
-
papszOptions : lista de opciones terminada en NULL (puede ser NULL).
-
pfnProgress : una función de devolución de llamada compatible con GDALProgressFunc() para informar el progreso o NULL.
-
pProgressArg -- Argumentos para pasar a pfnProgress. Puede estar vacío.
devolver:
Código de error si se produjo un error o se interrumpió la ejecución, de lo contrario OGRERR_NONE
Unión
Unión OGRErr(OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions = nullptr, GDALProgressFunc pfnProgress = nullptr, void *pProgressArg = nullptr )
Unión de dos capas
parámetro:
-
pLayerMethod -- capa de método. No debe ser NULL.
-
pLayerResult : la capa de las entidades producidas por la operación de inserción. No debe ser NULL.
-
papszOptions : lista de opciones terminada en NULL (puede ser NULL).
-
pfnProgress : una función de devolución de llamada compatible con GDALProgressFunc() para informar el progreso o NULL.
-
pProgressArg -- Argumentos para pasar a pfnProgress. Puede estar vacío.
devolver:
Código de error si se produjo un error o se interrumpió la ejecución, de lo contrario OGRERR_NONE
// 获取输入图层和输出图层
OGRLayer* pLayer1 = poInputDS->GetLayer(0);
OGRLayer* pLayer2 = poInputDS->GetLayer(1);
OGRLayer* pLayerResult = poOutputDS->CreateLayer("SymDifference_Result", nullptr, wkbUnknown, nullptr);
// 计算几何形状的对称差并将结果写入输出图层
OGRErr err = pLayer1->Union(pLayer2, pLayerResult, nullptr, nullptr, nullptr);
// 保存并关闭结果图层
pLayerResult->SyncToDisk();
SymDiferencia
OGRErr SymDifference (OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions, GDALProgressFunc pfnProgress, void *pProgressArg )
Dos capas de diferencia simétrica (negación de intersección)
parámetro:
-
pLayerMethod -- capa de método. No debe ser NULL.
-
pLayerResult : la capa de las entidades producidas por la operación de inserción. No debe ser NULL.
-
papszOptions : lista de opciones terminada en NULL (puede ser NULL).
-
pfnProgress : una función de devolución de llamada compatible con GDALProgressFunc() para informar el progreso o NULL.
-
pProgressArg -- Argumentos para pasar a pfnProgress. Puede estar vacío.
devolver:
Código de error si se produjo un error o se interrumpió la ejecución, de lo contrario OGRERR_NONE
// 获取输入图层和输出图层
OGRLayer* pLayer1 = poInputDS->GetLayer(0);
OGRLayer* pLayer2 = poInputDS->GetLayer(1);
OGRLayer* pLayerResult = poOutputDS->CreateLayer("SymDifference_Result", nullptr, wkbUnknown, nullptr);
// 计算几何形状的对称差并将结果写入输出图层
OGRErr err = pLayer1->SymDifference(pLayer2, pLayerResult, nullptr, nullptr, nullptr);
// 保存并关闭结果图层
pLayerResult->SyncToDisk();
Identidad
Identidad de OGRErr (OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions = nullptr, GDALProgressFunc pfnProgress = nullptr, void *pProgressArg = nullptr )
Identifique las características de esta capa con las características de la capa de identidad
parámetro:
-
pLayerMethod -- capa de método. No debe ser NULL.
-
pLayerResult : la capa de las entidades producidas por la operación de inserción. No debe ser NULL.
-
papszOptions : lista de opciones terminada en NULL (puede ser NULL).
-
pfnProgress : una función de devolución de llamada compatible con GDALProgressFunc() para informar el progreso o NULL.
-
pProgressArg -- Argumentos para pasar a pfnProgress. Puede estar vacío.
devolver:
Código de error si se produjo un error o se interrumpió la ejecución, de lo contrario OGRERR_NONE
// 获取输入图层和输出图层
OGRLayer* pLayer1 = poInputDS->GetLayer(0);
OGRLayer* pLayer2 = poInputDS->GetLayer(1);
OGRLayer* pLayerResult = poOutputDS->CreateLayer("Identity_Result", nullptr, wkbUnknown, nullptr);
// 计算几何形状的恒等并将结果写入输出图层
OGRErr err = pLayer1->Identity(pLayer2, pLayerResult, nullptr, nullptr, nullptr);
// 保存并关闭结果图层
pLayerResult->SyncToDisk();
Actualizar
Actualización de OGRErr (OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions = nullptr, GDALProgressFunc pfnProgress = nullptr, void *pProgressArg = nullptr )
Actualice esta capa con entidades de la capa de actualización
parámetro:
-
pLayerMethod -- capa de método. No debe ser NULL.
-
pLayerResult : la capa de las entidades producidas por la operación de inserción. No debe ser NULL.
-
papszOptions : lista de opciones terminada en NULL (puede ser NULL).
-
pfnProgress : una función de devolución de llamada compatible con GDALProgressFunc() para informar el progreso o NULL.
-
pProgressArg -- Argumentos para pasar a pfnProgress. Puede estar vacío.
devolver:
Código de error si se produjo un error o se interrumpió la ejecución, de lo contrario OGRERR_NONE
// 获取输入图层和输出图层
OGRLayer* pLayer1 = poInputDS->GetLayer(0);
OGRLayer* pLayer2 = poInputDS->GetLayer(1);
OGRLayer* pLayerResult = poOutputDS->CreateLayer("SymDifference_Result", nullptr, wkbUnknown, nullptr);
// 计算几何形状的对称差并将结果写入输出图层
OGRErr err = pLayer1->Update(pLayer2, pLayerResult, nullptr, nullptr, nullptr);
// 保存并关闭结果图层
pLayerResult->SyncToDisk();
Acortar
OGRErr Clip(OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions = nullptr, GDALProgressFunc pfnProgress = nullptr, void *pProgressArg = nullptr )
Recorte el área no cubierta por la capa de método
parámetro:
-
pLayerMethod -- capa de método. No debe ser NULL.
-
pLayerResult : la capa de las entidades producidas por la operación de inserción. No debe ser NULL.
-
papszOptions : lista de opciones terminada en NULL (puede ser NULL).
-
pfnProgress : una función de devolución de llamada compatible con GDALProgressFunc() para informar el progreso o NULL.
-
pProgressArg -- Argumentos para pasar a pfnProgress. Puede estar vacío.
Devuelve: un código de error si se produjo un error o se interrumpió la ejecución, de lo contrario OGRERR_NONE
// 获取输入图层和输出图层
OGRLayer* pLayer1 = poInputDS->GetLayer(0);
OGRLayer* pLayer2 = poInputDS->GetLayer(1);
OGRLayer* pLayerResult = poOutputDS->CreateLayer("SymDifference_Result", nullptr, wkbUnknown, nullptr);
// 计算几何形状的对称差并将结果写入输出图层
OGRErr err = pLayer1->Clip(pLayer2, pLayerResult, nullptr, nullptr, nullptr);
// 保存并关闭结果图层
pLayerResult->SyncToDisk();
Borrar
OGRErr Erase (OGRLayer *pLayerMethod, OGRLayer *pLayerResult, char **papszOptions = nullptr, GDALProgressFunc pfnProgress = nullptr, void *pProgressArg = nullptr )
Eliminar el área cubierta por la capa de método
parámetro:
-
pLayerMethod -- capa de método. No debe ser NULL.
-
pLayerResult : la capa de las entidades producidas por la operación de inserción. No debe ser NULL.
-
papszOptions : lista de opciones terminada en NULL (puede ser NULL).
-
pfnProgress : una función de devolución de llamada compatible con GDALProgressFunc() para informar el progreso o NULL.
-
pProgressArg -- Argumentos para pasar a pfnProgress. Puede estar vacío.
Devuelve: un código de error si se produjo un error o se interrumpió la ejecución, de lo contrario OGRERR_NONE
// 获取输入图层和输出图层
OGRLayer* pLayer1 = poInputDS->GetLayer(0);
OGRLayer* pLayer2 = poInputDS->GetLayer(1);
OGRLayer* pLayerResult = poOutputDS->CreateLayer("SymDifference_Result", nullptr, wkbUnknown, nullptr);
// 计算几何形状的对称差并将结果写入输出图层
OGRErr err = pLayer1->Erase(pLayer2, pLayerResult, nullptr, nullptr, nullptr);
// 保存并关闭结果图层
pLayerResult->SyncToDisk();
Referencia
Referencia int ( )
Incrementar el recuento de referencia de la capa
Devuelve: el recuento de referencia incrementado
Desreferencia
int Desreferencia ( )
Recuento de referencia de capa decreciente
Devoluciones: recuento de referencia decrementado
ReorderField
OGRErr ReorderField (int iOldFieldPos, int iNewFieldPos )
Reordenar campos existentes en una capa
parámetro:
-
iOldFieldPos -- La posición anterior del campo a mover. Debe estar en el rango [0, GetFieldCount() - 1].
-
iNewFieldPos -- La nueva posición del campo a mover. Debe estar en el rango [0, GetFieldCount() - 1].
Devolución: OGRERR_NONE éxito
// 获取输入图层
OGRLayer* pLayer = poInputDS->GetLayer(0);
// 获取字段总数
int fieldCount = pLayer->GetLayerDefn()->GetFieldCount();
// 假设我们要将第1个字段移动到第3个位置
int oldFieldPos = 0; // 第1个字段的位置(索引从0开始)
int newFieldPos = 2; // 新的位置(索引从0开始)
if (oldFieldPos < 0 || oldFieldPos >= fieldCount || newFieldPos < 0 || newFieldPos >= fieldCount) {
// 检查字段位置是否有效
// 可以根据需要添加其他错误处理逻辑
return OGRERR_FAILURE;
}
// 重新排列字段
OGRErr err = pLayer->ReorderField(oldFieldPos, newFieldPos);
if (err != OGRERR_NONE) {
// 重新排列失败,可以根据需要添加错误处理逻辑
return err;
}
// 保存并关闭数据源
pLayer->SyncToDisk();