明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1751|回复: 7

VBA写程序

[复制链接]
发表于 2016-5-6 09:15:19 | 显示全部楼层 |阅读模式
各位大神有会用反距离加权插值法建立规则格网的吗,我已经将样点格网化处理了,不知道怎么将样点记录在每个格网中,或者用链数组,不知道有会的没


该贴已经同步到 馨馨的微博

本帖子中包含更多资源

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

x
发表于 2016-5-6 12:13:11 | 显示全部楼层
没看明白,是要用距离加权平均法计算网格点的属性值吗?
 楼主| 发表于 2016-5-6 21:24:46 | 显示全部楼层
gzxl 发表于 2016-5-6 12:13
没看明白,是要用距离加权平均法计算网格点的属性值吗?

计算格网点的高程值,现在需要记录每个样点在哪个格网,不知道用什么方法,书上说设链数组,但是我看懂了不会写代码,感觉大神好像会,能不能给点思路提醒,那种方法容易些,谢谢啦
 楼主| 发表于 2016-5-6 22:27:00 | 显示全部楼层
有没有人啊,求指点
发表于 2016-5-6 23:40:08 | 显示全部楼层
馨馨 发表于 2016-5-6 22:27
有没有人啊,求指点

用离网格点最近的几个点进行计算
下面是c++的 用距离加权平均法计算网格点的属性值的代码
  1. // 用距离加权平均法计算网格点的属性值
  2. AcGePoint3dArray CCFGWDLG::CalculateValueByJL(const AcGePoint3dArray &gridPts, const AcGePoint3dArray &gcdPts)
  3. {
  4.     AcGePoint3dArray newgridPts;
  5.     int kk = gcdPts.length();
  6.     if (kk >= 10)
  7.     {
  8.         kk = 10;
  9.     }
  10.     for (int i = 0; i < gridPts.length(); i++)
  11.     {
  12.         AcGePoint2dArray distanceArray;
  13.         AcGePoint3d pt1 = gridPts;
  14.         for (int j = 0; j < gcdPts.length(); j++)
  15.         {
  16.             AcGePoint3d pt2 = gcdPts[j];
  17.             double dist = GetDistance(pt1.x, pt1.y, pt2.x, pt2.y);
  18.             AcGePoint2d temp((double)j, dist);
  19.             distanceArray.append(temp);
  20.         }

  21.         SortPointsOnY(distanceArray, 0, distanceArray.length() - 1);
  22.         double up = 0, down = 0, dz;

  23.         for (int k = 0; k < kk; k++)
  24.         {
  25.             AcGePoint2d temp = distanceArray[k];
  26.             int index = (int)temp.x;
  27.             double ptz = gcdPts[index].z;
  28.             double dis = distanceArray[index].y;
  29.             up += ptz / dis;
  30.             down += 1 / dis;
  31.         }
  32.         dz = up / down;
  33.         AcGePoint3d pt3d(pt1.x, pt1.y, dz);
  34.         newgridPts.append(pt3d);
  35.     }
  36.     return newgridPts;
  37. }

 楼主| 发表于 2016-5-7 08:16:14 | 显示全部楼层
gzxl 发表于 2016-5-6 23:40
用离网格点最近的几个点进行计算
下面是c++的 用距离加权平均法计算网格点的属性值的代码

谢谢你
 楼主| 发表于 2016-5-7 08:17:04 | 显示全部楼层
gzxl 发表于 2016-5-6 23:40
用离网格点最近的几个点进行计算
下面是c++的 用距离加权平均法计算网格点的属性值的代码

谢谢你
发表于 2016-7-3 02:36:12 | 显示全部楼层

非常感谢楼主提供分享!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-23 08:32 , Processed in 0.182117 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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