zoukankan      html  css  js  c++  java
  • ArcGIS For Desktop暗藏的一些“玄机”

           这里为什么说是ArcGIS For Desktop中的玄机呢,其实单独来看我下面写的这些内容,也许写出来并无太大意义。只是最近在帮客户优化一个基于Engine开发的程序,发现了其实很多需要代码来完成的东西,完全可以避开,通过GeodataBase或Layer即可解决,大大减轻了开发工作量,同时,我也真是深刻体会到了ArcGIS体系真是一个“体系”,产品跟产品之间是多么的息息相关,下面跟大家分享一下:

    一、shp VS geodatabase:

          地震的影响场(如下图),是在Engine中基于客户提供的算法生成的,另外也可以通过工具绘制,下面我要着重说的是基于工具绘制的数据编辑的问题。绘制工具(Engine开发的)是基于贝塞尔曲线绘制的,用少数的几个节点就可以构造出影响场,绘制完以后是个Element,最终是要存入到数据库中,并且能够进行修改。如下图,如果再次编辑时有(左图)这么多节点,相信谁也忍受不了。而如果编辑状态如(右图)则能达到很好的编辑效果。

    原因很明确:shp数据只能存储点、线、面而不能存储弧段,而geodatabase是可以存储弧段的。

    再举个例子:如下绘制两个圆,编辑状态下在shp中和geodatabase中的存储方式是不同的,shp中是存储了很多节点,而geodatabase中只存了一个点。(注:在绘制时都是一个节点,因为绘制后其实是一个element)

    二、基于Layer解决了标注位置放置问题

          如下是三个要素都是polyGon,标注的位置是不对的(插曲:之前开发团队为了让标注问位置符合实际,将polyGon存成环才解决了此问题)

       

          其实不需要存成环,一方面加大了代码开发量、另一方面给编辑内部多边形时,会出现空隙,所以后来客户要求又改回存成PolyGon,改完后就发现出现了压盖问题。后来通过在Layer中设置符号显示权重接口解决压盖问题:

    三、互相压盖的数据顺序显示问题:

          ArcGIS在存储polyGon数据时,先存入哪个数据哪个数据就在底下,对于地震行业的影响场数据,毫无疑问,是需要将最大的这个多边形放到最底下,也就是说最在入库时,最先要存这个大的多边形,依次类推。所以在用Engine写程序时就需要判断一下。

           其实我们完全可以在lyr中进行符号权重的控制,程序中加载lyr就可以了,我们在做地图配图时可以根据符号进行先后顺序的设置,这样就不会存在小的多边形被大的多边形压盖住的问题了。

  • 相关阅读:
    yum安装出现Error: Package: glibc-headers-2.17-157.el7.x86_64 (centos7.3)类似报错解决方案
    构建gitlab+Jenkins+harbor+kubernetes的DevOps持续集成持续部署环境
    安卓扫描条码二维码功能
    安卓格式化日期
    生成k8s join代码
    Delphi ado连接DBF数据
    README-gitlab
    sqlserver查看哪段时间不存在数据
    delphi强制终止进程
    sqlserver启用通过sql语句远程访问权限
  • 原文地址:https://www.cnblogs.com/esrichina/p/2657315.html
Copyright © 2011-2022 走看看