zoukankan      html  css  js  c++  java
  • [arcengine+geoProcessor]相交多边形的算法分析过程与实现

    经常有一个这样的需求:所有相交的多边形,合并成那个一个。
    在arctoolbox里,没有找到可用的工具。(Merge, Union不是这个功能。Dissolve是根据属性合并。
    于是想到利用dissolve来做。
    那么就要设置一个字段,需要合并的,都取相同的值。
    这个设置,类似于图论的连通分量,在集合之上,进行等价类划分。
    记得《数据结构》里,等价类的构建,是利用二叉树实现的。

    但.net里,有statck, queue,没有tree数据结构(当然有treeView UI)。
    于是到codeplex上,找Tree,找到了一个DataStruct类库。(要是有一个经典完美的DataStruct,多好!)
    里面实现了BinaryTree, SearchTree, Black-red Tree。都是基于泛型的。

    试了一下,还可以。但总感觉这个开源项目不够成熟,不敢用。

    吃完晚饭,躺在床上,思考这个问题。
    想着用集合来解决。但太不优雅了:乱!

    后来想到自己的代码,用数组实现等价类的划分。
    数组的性能是不用怀疑的。
    而且空间复杂度是最小的,当然时间复杂度高。
    但程序设计简单,时间复杂度,可以由数组本身的性能来弥补。

    最后就采用了利用数组作为临时数据结构,对要素,进行逐个空间关系进行查询,数组值相同的,是有相交的(无向连通的),属于同一个等价类,应该合并。

    有了等价类,直接用 Geoprocessor+Dissolve,就很容易了
  • 相关阅读:
    [luoguP2221] [HAOI2012]高速公路(线段树)
    SICP:对数步数内迭代计算幂的函数
    python__tkinter之listbox&button
    C陷阱与缺陷 之 各种知识技巧
    ACM && Find Minimum in Rotated Sorted Array
    windows编程一些小知识
    Linux_C pthread 关于多线程一个简单的程序
    ACM&贪心算法
    Linux_C socket 数据报之client, server.c
    Linux_C socket 数据报之一些辅助函数
  • 原文地址:https://www.cnblogs.com/xiexiaokui/p/1023792.html
Copyright © 2011-2022 走看看