科哥85 2023-12-17 18:40 采纳率: 0%
浏览 25
已结题

我用C#调用GDAL库进行SHP数据相交操作的时候,为什么会出现相交成果缺失

我用C#调用GDAL库进行SHP数据相交操作的时候,为什么会出现相交成果缺失,这是什么原因呢?如下图

img

红线范围面是我提的要相交的面数据,得到的结果如下图?

img


结果就缺失了一部分,这是什么原因呢?
具体的代码如下。引用GDAL库

 string[] options = new string[] { "ENCODING=UTF-8" };
Layer SJ2022 = dnsjk.GetLayerByName("2022");     
pLayer = pDatasouce.GetLayerByName("HKTEMPKJ");     
Layer sjlayer = pDatasouce.CreateLayer("lssj", SJ2022.GetSpatialRef(), wkbGeometryType.wkbPolygon, options);
string[] SJoptions = new string[] { "SKIP_FAILURES=YES" };
pLayer.Intersection(SJ2022, sjlayer, SJoptions, null, null);
  • 写回答

18条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-12-17 18:43
    关注
    获得1.50元问题酬金

    引自强大而免费的微信小程序:皆我知道

    相交成果缺失可能有多种原因,以下是可能导致相交成果缺失的一些常见原因:

    1. 数据源文件不正确:请确保你使用的输入SHP数据源文件(HKTEMPKJ和2022)是正确的,并且数据完整性良好。你可以尝试在其他GIS软件中打开这些文件,以确认它们是否显示了预期的边界。

    2. 数据投影不匹配:请确保输入数据的坐标投影是匹配的。如果两个图层的投影不匹配,相交操作可能无法正确执行。你可以使用GDAL的Projection转换方法来进行投影转换。

    3. 数据拓扑错误:请确保输入数据没有拓扑错误,例如重叠的要素或未闭合的边界。这些错误可能会导致相交操作失败。你可以使用GDAL的Buffer或Valid操作来修复数据拓扑错误。

    4. 数据集精度问题:在相交操作中,如果输入SHP数据集存在极小的间隙或重叠,可能会导致相交成果缺失。你可以尝试使用GDAL的Buffer操作来扩展输入数据集的边界以确保它们重合。

    5. GDAL库版本问题:GDAL库的不同版本可能在相交操作中表现出不同的行为。请确保你使用的GDAL库版本是最新的,并且已正确安装。

    为了能更好地帮助你解决问题,请提供更多详细信息,例如完整的C#代码、输入数据的示例文件等。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月25日
  • 赞助了问题酬金50元 12月17日
  • 创建了问题 12月17日

悬赏问题

  • ¥23 (标签-bug|关键词-密码错误加密)
  • ¥66 比特币地址如何生成taproot地址
  • ¥20 数学建模数学建模需要
  • ¥15 关于#lua#的问题,请各位专家解答!
  • ¥15 什么设备可以研究OFDM的60GHz毫米波信道模型
  • ¥15 不知道是该怎么引用多个函数片段
  • ¥30 关于用python写支付宝扫码付异步通知收不到的问题
  • ¥50 vue组件中无法正确接收并处理axios请求
  • ¥15 隐藏系统界面pdf的打印、下载按钮
  • ¥15 基于pso参数优化的LightGBM分类模型