GIS 入门,简化图形坐标点数,何德何能 同时拥有了 卧龙凤雏 竟不晓得怎么搞 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
xiangyuecn
V2EX    程序员

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

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

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

    卧龙: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     Solana     2687 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 15:06 PVG 23:06 LAX 08:06 JFK 11:06
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86