用于GIS应用的VBA程序

时间:2014-07-21 12:37:43

标签: excel performance vba optimization gis

我在Excel中有一个表,其中X,Y和Z数据分别在B,C和D列中。

我编写了以下程序,它给出了一对彼此给定距离和高度的点:

Sub Test1()

c3 = 2

For c2 = 2 To 1445

    For c1 = c2 To 1445

        If Abs(Cells(c1, 4) - Cells(c2, 4)) > 50 Then
            If Sqr((Cells(c2, 2) - Cells(c1, 2)) ^ 2 + (Cells(c2, 3) - Cells(c1, 3)) ^ 2) > 0

                    Cells(c3, 8) = Cells(c1, 2)
                    Cells(c3, 9) = Cells(c1, 3)
                    Cells(c3, 10) = Cells(c2, 2)
                    Cells(c3, 11) = Cells(c2, 3)
                    c3 = c3 + 1
            End If
        End If

    Next c1

Next c2

问题在于程序变得非常慢,特别是对于大于20,000的大量点数。我的目标是能够为GIS应用程序一次为数百万个点迭代此过程。如何通过A)优化我的代码/算法或B)任何外部手段来减少计算时间?

1 个答案:

答案 0 :(得分:0)

对于那些感兴趣的人,几年前我直接从ArcGIS解决了这个问题。 This thread显示了我提出的问题以及其他人如此善意提供的答案。