V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiangyuecn
V2EX  ›  程序员

GIS 入门,简化图形坐标点数,何德何能 同时拥有了 卧龙凤雏 竟不晓得怎么搞😶

  •  
  •   xiangyuecn ·
    xiangyuecn · 2021-10-12 16:33:20 +08:00 · 1944 次点击
    这是一个创建于 898 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原图,每个面的点太多,导致文件数据太大,并且不需要这么高精度,需要简化图形,减少坐标点数

    卧龙:QGISVector -> Geometry Tools -> Simplify,功能太弱了,看起来只是简单的每个去掉了坐标点,压根不理会相邻的面,导致图形错位(边缘重叠、或产生空隙)

    凤雏:ArcMapArcToolBox -> Cartography Tools -> Generalization -> Simplify Polygon,初测试以为是个王者,没想到竟然是个青铜,居然都会有一边几乎完全没有处理


    正在入门学习 GIS,电脑上只装了上面两款软件,应该是专业软件,不过在这个算是核心的一个功能上,又显得不那么专业。

    已经折腾好几天了,其实 ArcMap 的精简结果已经基本快达到求了,但未精简的那条边完全可以做到精简,准备再研究研究;实在不行就准备自己写代码来处理,啃下这块鸡肋,粗略估计:2 小时的代码量基本上就能达到 QGIS 的效果,3 天的代码量就能完美实现出 ArcMap 这种结果还不带 bug 的🐶

    发本帖的目的:

    1. 吐槽以上软件的这个功能
    2. 把问题讲出来就有可能遇上专业大佬,说不定能传授点经验,点一下就把问题解决了。

    谢谢大家

    第 1 条附言  ·  2021-10-14 21:16:29 +08:00

    已经搞定了,基本上不考虑使用QGIS的Simplify,ArcMap的Simplify Polygon结果非常符合需求,至于刚开始为什么有一边没有被精简,是因为我这个数据那些边存在重叠和间隙(非常微小),导致没有被精简;

    后面测试通过清除那些微小的重叠和间隙(ArcToolBox -> Data Management Tools -> Feature Class -> Integrate 1cm的容差),就正常能全部精简了。

    修正后的结果(100米的容差 坐标点数是原图形的3% 效果非常满意):

    8 条回复    2021-10-14 21:21:20 +08:00
    yuhangch
        2
    yuhangch  
       2021-10-12 17:01:22 +08:00
    精简算法经典的就那几个,道格拉斯扑克巴拉巴拉

    qgis 里三种可选方法都试了吗?


    The algorithm gives a choice of simplification methods:
    1 、including distance based (the "Douglas-Peucker" algorithm)
    2 、area based ("Visvalingam" algorithm)
    3 、snapping geometries to a grid.
    pkoukk
        4
    pkoukk  
       2021-10-12 17:07:46 +08:00
    arcmap 应该是可以选择简化算法和容差的,改改参数试试。
    这个边没有简化很可能是因为折弯太多,不平滑,被容差限制无法简化
    xiangyuecn
        5
    xiangyuecn  
    OP
       2021-10-12 17:48:11 +08:00
    @ck65
    @yuhangch
    @Sglight
    @pkoukk

    ArcMap 、QGIS 所有参数组合都试了; QGIS 基本上都没有考虑相邻的图形,虽然能有效的简化图形,但还是放弃使用 QGIS ;

    ArcMap 这种结果其实已经符合需求了,正常的那些边简化的结果非常满意,就是没有被处理的那条边比较头痛。刚才换了一个数据的 shp 文件测试,发现所有的边都完美的精简好了;然后分析了一下要处理的这个数据的拓扑,发现一大堆拓扑错误,并且主要集中在那几条未简化的边上,都是非常细微的重合,看起来是因为数据本身拓扑错误的原因,导致 ArcMap 没有去精简那些边。

    ArcMap 没有问题,完全可用,是我的这个数据的问题。
    Rheinmetal
        6
    Rheinmetal  
       2021-10-12 18:07:11 +08:00
    算法处理 trivial part
    然后手绘调整 corner case
    huarch
        7
    huarch  
       2021-10-13 06:15:06 +08:00 via iPhone
    抽稀,多试试几个精度
    xiangyuecn
        8
    xiangyuecn  
    OP
       2021-10-14 21:21:20 +08:00
    @Rheinmetal
    @huarch

    已经搞好了,这个本身是人家做好的数据,我简化一下不要这么多点,手动去调整操作一个人没个半年也搞不完😂 还好都能批量处理,点几下鼠标就都自动处理好了😁
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2716 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 15:32 · PVG 23:32 · LAX 08:32 · JFK 11:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.