明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 717|回复: 0

规则格网记录点号,反距离加权插值求出高程

[复制链接]
发表于 2016-5-22 09:00 | 显示全部楼层 |阅读模式
离散点格网化,记录点号在哪个格网,用反距离加权插值求出高程
把每个格网点当做原点,在四个象限内寻找4-8个离散点参与插值运算
设格网点与离散点距离为d,若d<20,范围内有4-8个离散点,则用这些离散点参与插值运算
若离散点小于4个或者大于8个,动态调整距离,是d增加或者减小,  代码是记录点号,问题是不能找出每个格网点参与运算的离散点,求大家帮忙
  1. Sub RecordPointPosition()
  2. Dim NX As Integer, NY As Integer '离散点所在网格的列'离散点所在的网格的行
  3. Dim i As Integer, j As Integer
  4. Dim Xmax As Double, Xmin As Double, Ymax As Double, Ymin As Double

  5. dbld = 20
  6. Open "E:\zuizhi.txt" For Input As #1 '打开输入文件
  7. Input #1, Xmax, Ymax, Xmin, Ymin '读取文件数据
  8. Close #1

  9. L = 0
  10. Open "E:\demdata.txt" For Input As #1 '打开原始文件
  11. Do While Not EOF(1)
  12. Input #1, H(L), X(L), Y(L), Z(L)
  13. L = L + 1
  14. Loop
  15. Close #1

  16. M = Fix((Xmax - Xmin) / dbld) + 1 '列数
  17. N = Fix((Ymax - Ymin) / dbld) + 1 '行数

  18. ReDim IP(L) As Long, IREG(N, M) As Double


  19. '循环判断
  20. For i = 1 To L - 1
  21. '计算样点所在网格
  22. NX = Fix((X(i) - Xmin) / dbld)
  23. NY = Fix((Y(i) - Ymin) / dbld)
  24. If IREG(NY, NX) = 0 Then
  25.   IREG(NY, NX) = H(i) '记录点号
  26. Else
  27.   j = IREG(NY, NX)
  28. '寻找链表的末端
  29. Do
  30.   If IP(j) = 0 Then
  31.     IP(j) = H(i) '记录点号
  32. Exit Do
  33.   Else
  34.     j = IP(j)
  35. End If
  36. Loop

  37. End If
  38. Next i
  39. end sub

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-27 12:16 , Processed in 0.512679 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表