gdal中调用OGRErr Intersection/Clip/Union等函数后无任何要素生成

迷途不返丶 迷途不返丶 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
小白初学gdal,想用c++实现矢量点和面的clip操作,找到官网的说明如下:

我的代码块:
#include "pch.h"
#include "gdal_priv.h"
#include "ogrsf_frmts.h"
#include <iostream>

bool VectorIntersection(const char *pszSrcShp, const char *pszMethodShp, const char *pszDstShp, const char* pszFormat);

int main()
{
const char *pszSrcFile = "E:\\MyThesis\\HeNan\\henan.shp"; //原始文件
const char *pszMethodFile = "E:\\MyThesis\\SiChuan\\Sichuan.shp"; //用来clip的文件
const char *pszOutFile = "E:\\MyThesis\\union.shp"; //结果文件
VectorIntersection(pszSrcFile, pszMethodFile, pszOutFile, "ESRI Shapefile");
return 0;
}

bool VectorIntersection(const char *pszSrcShp, const char *pszMethodShp, const char *pszDstShp, const char* pszFormat)
{
GDALAllRegister();
CPLSetConfigOption("SHAPE_ENCODING", "");
CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO");

//读取数据
GDALDataset *poSrcDS;
poSrcDS = (GDALDataset*)GDALOpenEx(pszSrcShp, GDAL_OF_VECTOR, NULL, NULL, NULL);
if (poSrcDS == NULL)
{
printf("Open failed.\n");
exit(1);
}
GDALDataset *poMethodDS;
poMethodDS = (GDALDataset*)GDALOpenEx(pszMethodShp, GDAL_OF_VECTOR, NULL, NULL, NULL);
if (poMethodDS == NULL)
{
printf("Open failed.\n");
exit(1);
}

//使用Shapefile驱动
GDALDriver *poDriver;
poDriver = GetGDALDriverManager()->GetDriverByName(pszFormat);
if (poDriver == NULL)
{
printf("%s driver not available.\n", pszFormat);
exit(1);
}

//根据文件名创建shp文件
GDALDataset* poDstDS = poDriver->Create(pszDstShp, 0, 0, 0, GDT_Unknown, NULL);
if (poDstDS == NULL)
{
printf("Creation of output file failed.\n");
exit(1);
}

//获取图层
OGRLayer *poSrcLayer = poSrcDS->GetLayer(0);
if (poSrcLayer == NULL)
{
printf("Creation of layer failed.\n");
GDALClose(poSrcDS); //关闭文件
GDALClose(poMethodDS);
GDALClose(poDstDS);
exit(1);
}

OGRLayer *poMethodLayer = poMethodDS->GetLayer(0);
if (poMethodLayer == NULL)
{
printf("Creation of layer failed.\n");
GDALClose(poSrcDS); //关闭文件
GDALClose(poMethodDS);
GDALClose(poDstDS);
exit(1);
}

//定义空间参考与原始矢量数据相同并创建图层
OGRLayer *poDstLayer;
OGRSpatialReference *pSRS = poSrcLayer->GetSpatialRef();
poDstLayer = poDstDS->CreateLayer("NewLayer", pSRS, wkbPolygon, NULL);
if (poDstLayer == NULL)
{
printf("Creation of layer failed.\n");
GDALClose(poSrcDS); //关闭文件
GDALClose(poMethodDS);
GDALClose(poDstDS);
exit(1);
}

poSrcLayer->Union(poMethodLayer, poDstLayer, NULL, NULL, NULL);

GDALClose(poSrcDS); //关闭文件
GDALClose(poMethodDS);
GDALClose(poDstDS);

return true;
}

参考博客地址:https://blog.csdn.net/secyb/article/details/80246105
...全文

相关推荐

地理空间Python工具链实战:Geopandas、Shapely与Rasterio协同指南

地理空间数据处理本质上是坐标系、几何对象、栅格矩阵与空间关系的系统工程。其核心原理在于统一数据模型(WKT/WKB+EPSG+NumPy)驱动下的分层协作:shapely负责底层几何运算,geopandas提供Pandas风格的空间DataFrame接口,pyproj精准管理CRS转换,rasterio和rioxarray分别掌控栅格I/O与多维分析。这种解耦设计赋予技术链高稳定性、低耦合性与强可扩展性,广泛应用于城市计算、遥感分析、物流优化等工程场景。本文聚焦2022年成熟稳定的十大Python地理空间库

weixin_30733003

GeoGPT+:用大模型理解地理语义的轻量级空间智能架构

地理空间智能正从专业GIS工具走向自然语言交互,其核心是将人类对位置、距离、范围、叠加等空间概念的理解,转化为可执行的空间查询与可视化。这背后依赖于大模型的空间语义解析能力与成熟GIS引擎的精准执行能力协同——即‘LLM做翻译官,GIS做施工队’的技术范式。GeoGPT+正是这一范式的工程化实践:它不生成坐标,而生成标准SQL+空间函数;不替代PostGIS或GeoPandas,而是桥接语义与计算。该架构已成功应用于森林火灾分析、城市内涝评估、林区风险建模等场景,显著降低空间分析门槛,让非技术人员通过‘说人

weixin_33778544

基于Python实现地理空间数据批处理技术探讨及实现--以“多规合一“总体规划数据空间叠加分析为例

标题:基于Python实现地理空间数据批处理技术探讨及实现--以"多规合一"总体规划数据空间叠加分析为例内容:1.摘要 本文针对“多规合一”背景下总体规划数据空间叠加分析中人工处理效率低、标准化不足、跨部门数据兼容性差等现实问题,提出一套基于Python的地理空间数据批处理技术方案。研究以全国12个试点城市2020—2023年国土空间规划、生态保护红线、永久基本农田、城镇开发边界四类核心图层为实证数据(总计864个GeoPackage文件,平均单图层大小28.6 MB),采用Geopandas、Raster

赵谨言

【信息科学与工程学】【数据科学】 第四十四篇 数据湖 系列二 函数库01

2. 近似最近邻搜索(ANN): 通过HNSW等图索引模型加速,模型定义为构建一个层次化导航小世界图。依赖于消息队列(Kafka/Pulsar)、分布式文件系统(HDFS/S3)的客户端及连接库。依赖专门的向量检索库(如FAISS, Milvus)。管控目标: 召回率(Recall@K) > 95%,查询延迟 < 100ms。管控目标: < 1% (核心业务字段) 或 < 5% (一般字段)依赖数据处理框架(如Spark, Pandas)的核心统计函数。,通过牺牲精确性(ANN)来换取搜索速度的大幅提升。

flyair_China

深度学习遥感影像分割:从UNet模型到工程化系统全流程解析

语义分割是计算机视觉的核心任务之一,旨在对图像中的每个像素进行分类,实现像素级的场景理解。其原理基于编码器-解码器架构,通过卷积神经网络提取多尺度特征并重建高分辨率分割图。这项技术的价值在于能够自动化、精细化地解析视觉内容,在遥感影像分析、自动驾驶、医疗影像诊断等领域有广泛应用。在遥感领域,结合UNet、DeepLabV3+等模型,可以高效处理卫星和航拍影像,实现地物分类与变化检测。本文聚焦于遥感影像智能分割系统的工程化实现,详细拆解了数据预处理、模型训练、推理部署等关键环节,并针对类别不平衡、大图推理等实

weixin_30252709
评论 2
收藏 已收藏
分享
返回顶部
迷途不返丶
C++ 语言 65,214 成员 250,514 内容