引入

在使用全站仪时,每次的测量的坐标均可保存在储存中,便于后期内业导入Cass中成图。导出的.dat数据的格式如下(随手编造的数据)

其中每一行为一个点的数据,用英文逗号隔开,分别表示代号,(空值),X坐标,Y坐标,Z坐标,代号根据自己设定。在这个数据中,我使用FW1表示房屋1;FW2表示房屋2;前加下划线的数据表示线状数据,这里DL表示道路;空代号表示仅仅是测的一个高程点

Cass

将数据导入Cass,展点和点号,看到如下结果

根据相同代码连接起来,得到测量的两个房子和一条道路

再生成个DTM搞个等高线,等高距0.5m,看看地形如何

最后就是各种修图之类的杂七杂八工作了。和这里没啥关系了

Grasshopper

在最近自己看Rhino、Grasshopper的时候,想到能不能配合上脚本电池从原始全站仪数据快速的得到地形、建筑等多种信息呢。答案肯定是可以,就是自己水平还没那么高,先简单记录下今天的成果

  1. 为脚本电池设计了三个输入参数和三个输出结果,如下
  • CassData:用于接收.dat文件的路径
  • BuildMax:随机建筑高度的最大值
  • BuildMin:随机建筑高度的最小值
  • LinearFeatures:线状地物
  • SidesOfBuilding:建筑物的侧面(加盖的代码还没参悟怎么写,后期用Grasshopper来加)
  • GCPs:高程点(3D Delaunay Mesh和嵌面的代码也没搞出来,先搞出点,后面再拟合面)
  1. 接下来写了写了脚本后,连好电池,额外使用一个加盖和生成地形,如下(脚本在最后)

    就能得到结果了,先看生成的地物,绿色表示选择电池输出的结果。这是线状地物

    这是建筑物

    这是地形(旋了一下不然看不出来起伏)

    大概测的结果已经能看到了,接下来水平有限只能统统烘焙到Rhino处理一波,打开渲染模式(设置是不会设置的,切换就完事)

    就这样,比起Cass的平面建筑和等高线还是直观的多,手工操作的地方也并不多。不过麻烦点的就是外业测量的时候建筑闭合的顺序要注意,还有编代号的要有统一

  2. 由于没有都写在脚本,也可以用Cluster打个包。加入Cluster Input和Cluster Output,替换确定的输入输出

    然后直接全部选起来,Cluster。还可以改个参数名,设置个图标啥的。右键菜单Properties可以设置。通过File菜单的Create User Object可以变为自己的工具,以后用起来方便,美滋滋

  3. 脚本思路就是根据下换线和空值区分建筑、线状地物和普通高程点。对建筑的点按顺序进行封闭,拉出随机高度;对线状地物的点按顺序连接(不封闭);导出所有点的Point3d格式的List,用于生产地形。所有的脚本代码如下

  private void RunScript(string CassData, int BuildMax, int BuildMin, ref object LinearFeatures, ref object SidesOfBuilding, ref object GCPs){List<Point3d> gcds = new List<Point3d>();List<Curve> budbs = new List<Curve>();List<Curve> builds = new List<Curve>();ReadCassData(CassData, ref gcds, ref budbs, ref builds);GCPs = gcds;LinearFeatures = budbs;SidesOfBuilding = ExBuilds(builds, BuildMax, BuildMin);}// <Custom additional code> public int ReadCassData(string path, ref List<Point3d> gcds, ref List<Curve> budbs, ref List<Curve> builds){int cNum = 0;string[] qPoints = File.ReadAllLines(path);  // 读取文件List<string> budtp = new List<string>();  // 存储标志Dictionary<string,List<Point3d>> budtp2 = new Dictionary<string,List<Point3d>>();  // 分组创建曲线点// 每行遍历查找标志的数目foreach (var pi in qPoints){string[] p = pi.Split(',');  // 分割数据if (!budtp.Contains(p[0]) && p[0] != string.Empty)  // 判断标志是否存在,若不存在存储标志{budtp.Add(p[0]);}}// 标志键对应foreach (var item in budtp){budtp2.Add(item, new List<Point3d>());}// 搜索高程和分组存点foreach (var pi in qPoints){// 保存高程点string[] p = pi.Split(',');double px = Convert.ToDouble(p[2]);double py = Convert.ToDouble(p[3]);double pz = Convert.ToDouble(p[4]);Point3d gcd = new Point3d(px, py, pz);Point3d pmd = new Point3d(px, py, 0);gcds.Add(gcd);// 分点if (budtp2.ContainsKey(p[0])){budtp2[p[0]].Add(pmd);}}// 创建曲线foreach (var item in budtp2.Keys){if (item[0] != '_'){budtp2[item].Add(budtp2[item][0]);  // 用于封闭var c = new PolylineCurve(budtp2[item]);builds.Add(c);}else{var c = new PolylineCurve(budtp2[item]);budbs.Add(c);}}return cNum;}public List<Surface> ExBuilds(List<Curve> builds, int Rmax, int Rmin){List<Surface> result = new List<Surface>();Random r = new Random();foreach (var item in builds){Vector3d dir = new Vector3d(0, 0, 1) * r.Next(Rmin, Rmax);  // 随机Z方向var nSrf = Surface.CreateExtrusion(item, dir);  // 拉伸result.Add(nSrf);}return result;}// </Custom additional code>

说真的资料真的好少,不知道多久才能写出一节更比六节强的电池。。。

Grasshopper脚本电池处理全站仪数据,生成建筑、线状地物和地形相关推荐

  1. 将表数据生成Insert脚本

    -- ============================================= -- Author: 明永成 -- Create date: 2016-01-03 -- Descri ...

  2. 将表数据生成SQL脚本的存储过程和工具

    将表数据生成SQL脚本的存储过程示例: CREATE PROCEDURE dbo.UspOutputData @tablename sysname AS declare @column varchar ...

  3. 01 电商数仓(架构设计、用户行为数据生成脚本)

    电商数仓(架构设计.用户行为数据生成脚本) 写在前面: 本文是我在学习电商数仓项目的过程中,对相关知识点的记录,总结. 文章目录 电商数仓(架构设计.用户行为数据生成脚本) 1. 数据仓库的概念 2. ...

  4. Java代码导出数据库百万数据生成sql脚本

    Java代码查询数据生成update更新sql 一.查询数据库数据 /*** 导入查询数据的接口**/@Autowiredprivate DataMapper dataMapper;/*** 编写单元 ...

  5. 【matlab专题】脚本(3)DBC--EXCEL--模型:通过表格数据生成指定的模型(二)

    前言 这个是通过表格数据生成模型接口的函数,缩减了在平常建模时繁琐的复制,可以参考使用, 首先: 在第一章提到的DBC–EXCEL中生成的最后作品" 接下来的函数就是通过上图信息将其生成模型 ...

  6. 谷歌BERT预训练源码解析(一):训练数据生成

    目录 预训练源码结构简介 输入输出 源码解析 参数 主函数 创建训练实例 下一句预测&实例生成 随机遮蔽 输出 结果一览 预训练源码结构简介 关于BERT,简单来说,它是一个基于Transfo ...

  7. python测试框架数据生成工具最全资源汇总

    xUnit frameworks 单元测试框架 frameworks 框架 unittest - python自带的单元测试库,开箱即用 unittest2 - 加强版的单元测试框架,适用于Pytho ...

  8. excel数据生成sql insert语句

    excel数据生成sql insert语句 excel表格中有A.B.C三列数据,希望导入到数据库users表中,对应的字段分别是name,sex,age . 在你的excel表格中增加一列,利用ex ...

  9. matlab输出lccde_Matlab与Visual C++混合编程处理全站仪数据的方法

    Matlab 与 Visual C++ 混合编程处理全站仪数据的方法 胡加星,刘立龙,刘靖晔 [摘 要] 内业数据检核中经常要对点的外业实测坐标与内业成图后的坐标进行 比较,以此来发现是否出现造点或是 ...

最新文章

  1. SAP MM MIGO移动类型311试图做批次确定,系统报错-Stock Determination or batch determination not possible-
  2. 进击的UI---------------UIPickerView
  3. php中对MYSQL操作之事务控制,回滚
  4. 用pip命令把python包安装到指定目录
  5. ObjecT4:On-line multiple instance learning (MIL)学习
  6. Linux 终端配置
  7. redis事务的简单介绍
  8. 入门机器学习(十六)--降维(PCA算法)
  9. 计算机输入代码0怎么能输入,电脑蓝屏0xv0000098错误代码怎么回事_电脑蓝屏0xv0000098错误代码的解决方法...
  10. ASP.NET Core和Blazor Code Venture:配置Azure AD身份验证
  11. click group实例
  12. python语言的基础知识_pythone语言基础知识汇总
  13. Linux进程管理工具 Supervisor详解
  14. android 水印背景功能,Android 给View添加剧复的文字水印背景 相似钉钉通信录的背景效果...
  15. 模型调参(AutoML)— optuna
  16. php 数组合并用加号(+)和用array_merge()的区别
  17. Kubernetes 学习总结(25)—— Kubernetes 中的 pod 与容器的区别和联系
  18. IT业的《大腕》经典台词
  19. python常胜将军问题_蓝奏云盘pc版(lanzou-gui)更新0.3.3
  20. python学习笔记 selenium

热门文章

  1. 简单明了的分类算法:OneR。
  2. 地面气象观测数据-A文件转excel方法
  3. 电脑必备:通用输入法状态提示,再也不怕按错,再也不用看右下角
  4. 小马哥----高仿苹果6S A236 刷机拆机主板图与开机界面图 更新解锁界面 全网通4G 警惕
  5. TP框架中S函数使用方法
  6. 法力水晶(diamond.*)题解
  7. 华为智慧屏鸿蒙系统评价,华为智慧屏V55i配置怎么样 参数介绍运行鸿蒙操作系统...
  8. 打开微信开发者工具后无法显示文件的问题解决方案
  9. 【ML37】Bellman Equations
  10. poi-tl导出word;自定义列表序号和表格宽度,表格合并,自定义标题,更新目录