摘要:本文结合航测工作实际生产案例,利用lisp程序语言,编写程序,实现对Z坐标进行整提调整功能。

关键词:lisp程序 Z坐标 调整

中图分类号: O4-34文献标识码:A 文章编号:

0 前言

与传统方法获取的地形图相比,航测立体测图获取的地形图最大的特点是每个节点均有真实的高程坐标,即Z值。目前对航测数据Z值的应用比较多,如进行三维建模、日照分析等。但是由于高程基准的不同,有时需要将不同基准下的航测立体测图高程进行进行转换,即同时对所有地物节点坐标的Z值增加一个数值或减少一个数值。如在ADS80航空摄影中,由于生产的需要,需要对高程系在WGS 84和1985国家高程系之间进行转换,这就需要对测图数据所有节点高程值进行处理,整体增加和减少一个固定值。

1 航测图的节点Z值坐标存放特点

目前航测图一般由立体测图软件的格式转换为Auto CAD软件的DWG格式。主要分为点、线、注记几种情形。以线状地物为例,在航测数据中,线状地物节点的高程值不完全一样,不是DWG数据常规LWPolyline的存储方式,而是3d Polyline形式存在。

航测立体测图数据线状地物节点坐标存储方式如下:

POLYLINELayer: 3100

Space: Model space

Handle = 3344

Open space

VERTEXLayer: 3100

Space: Model space

Handle = 3345

Space

at point, X=66442.174Y=4325491.568Z= 14.736

VERTEXLayer: 3100

Space: Model space

Handle = 3346

Space

at point, X=66444.294Y=4325492.224Z= 14.629

VERTEXLayer: 3100

Space: Model space

Handle = 3348

而一般DWG数据格式线状地物节点坐标存储方式如下:

LWPOLYLINELayer: 81100

Space: Model space

Color: BYLAYERLinetype: CONTINUOUS

Handle = 2F8

Open

Constant width 0.000

at pointX=35000.000Y=4304378.933Z=1.000

at pointX=34999.882Y=4304378.702Z=1.000

从上面可以看到,航测立体测图数据的DWG文件与一般的DWG线状数据主要有两点不一样:航测立体测图数据存储文件每个Z坐标不相同,即其存储的是该线状地物的每一个节点高程值,为三维多义线;而一般DWG数据Z值坐标相同,为一个值,是轻量多义线(LWPolyline),即通常所说的二维半线;其次,航测立体测图数据是以节点为单位,每个节点为一个Handle,而一般DWG数据为一个实体(点、线、文本)为一个Handle。对于这两点区别是后期程序实现中需要注意的问题。而如何获取3d Polyline数据节点Z值坐标并对Z值坐标进行操作成为该程序的重点。

2 程序实现

程序设计基本思想为首先提取所有数据(点、线、文本)的X、Y、Z坐标。在提取过程中,注意在Auto CAD坐标定义中的X、Y坐标与测量中的X、Y是不同的,前者是数学坐标系,X表示横坐标,Y表示纵坐标。

在程序设计中,首先提取节点坐标组,定义为coor,在coor中依次包含X、Y、Z值,分别以coor_x、coor_y、coor_z定义。程序代码如下:

(setq ent_lst (entget nam))

(setq coor (cdr (assoc 10 ent_lst)))

(setq coor_x (car coor))

(setq coor_y (cadr coor))

(setq coor_z (caddr coor))

然后定义一个高差值h,作为改变高程的变量值,同时提示“请输入高差”,程序代码如下:

(setq h_new (getreal "\n请输入高差:"))

对调整高程后的坐标值定义一个新的坐标组,定义为coor_new,将坐标组代替原坐标组。程序代码如下:

(setq coor_new (list 10coor_x coor_y (+ h_new coor_z)))

(entmod (subst coor_new (assoc 10 ent_lst) ent_lst))

将以上更新坐标的程序作为一个子程序在后续循环中调用。

在实际作业过程由于有大量的点、线、注记,因此对上述过程需要对选中的地物逐个更改,需要对上述过程进行循环,具体程序代码如下:

(setq s0 (ssget ' ((0 . "polyline,INSERT,TEXT"))))

(setq h_new (getreal "\n请输入高差:"))

(if (= h_new nil)

(setq h_new 0)

);if

(repeat (sslength s0)

(setq nam0 (ssname s0 i))

(setq type_ent (cdr (assoc 0 (entget nam0))))

lisp 批量文字求差值_lisp语言对立体测量数据进行高程处理的实现相关推荐

  1. lisp 批量文字求差值_Python 超简单 提取音乐高潮(附批量提取)

    希望点击上方 编程学习者社区,选择 创建星标 回复关键字 资源  获取编程资源 很多时候我们想提取某首歌的副歌部分(俗称 高潮部分),只能手动直接卡点剪切,但是对于大批量的获取就很头疼,如何解决?怎么 ...

  2. excel减法函数_发现EXCEL隐藏功能,SUMIFS函数居然可以多条件求差值看了不后悔...

    在EXCEL中,SUMIFS函数是"多条件求和"函数,但是我们工作需要完成多条件求差,EXCEL里是没有"多条件求差值"函数的,所以我们可以逆向利用多条件求和函 ...

  3. 2021牛客第一场H.Hash Function—FFT求差值的卷

    https://ac.nowcoder.com/acm/contest/11166/H 官方题解. 比赛时,我们都是用暴力写的,数据太弱了,今天突然想起来,用fft写了一下. 主要使用fft求差值的卷 ...

  4. 计算机求差值公式,excel怎么求差值 excel减法公式使用教程

    在ecxel表格中处理数据时,我们经常会用到加减乘除的公式,本文主要便是为大家讲述excel求差值的使用,那么大家知道有几种求差值的方法?下面小编为大家介绍两种快速求差值的方法,不懂的朋友可以多看几遍 ...

  5. python输入两个数求差_python差值_python差值法_python求差值 - 云+社区 - 腾讯云

    广告关闭 回望2020,你在技术之路上,有什么收获和成长么?对于未来,你有什么期待么?云+社区年度征文,各种定制好礼等你! 环境依赖api 网关提供 python 2.7 和 python 3 两个版 ...

  6. python表示差值_Python-dataframe的对应列求差值

    需求:求两txt文件对应city'数量'列的差值(airbnb_city1.txt - airbnb_city.txt) 数据展示: import pandas as pd # 如果没有列名 使用he ...

  7. python怎么输入两个数然后求差值_python两个日期之间天差值获取

    因为我也刚刚接触python,这个原则上也是百度找到的,原来那位我也找不到了...... 主要就是使用datetime进行转化然后进行相减,获得如[diff_days] : 00:00:00形式的结果 ...

  8. linux 时间怎么求差值_linux批量计算时间差脚本——awk

    今天碰到一个时间差批量计算的问题,弄好后就写下来,方便积累和分享. 部分数据(一共有40多W条,gmail.csv)如上图所示,已经做过二次处理和排版. 第i行前两列时间记作A[i],后两列记作B[i ...

  9. 蚁群算法求最值c语言实现,蚁群算法代码(求函数最值)

    <蚁群算法代码(求函数最值)>由会员分享,可在线阅读,更多相关<蚁群算法代码(求函数最值)(4页珍藏版)>请在人人文库网上搜索. 1.function F=F(x1,x2) % ...

最新文章

  1. 硬盘无法访问文件系统损坏,里面的资料怎样恢复
  2. 2014年 12月15日 多线程编程
  3. 3、 AUTO_INCREMENT:主键自增长
  4. php idwork,idwork.php
  5. ztree改变节点颜色
  6. Hibernate一对一关联------主键关联(亲测成功)
  7. SQLite学习(八) - SQLite C编程接口
  8. java char占用多少字节_Java虚拟机:Java对象大小、对象内存布局及锁状态变化
  9. c++通过TCP/IP协议提交POST信息登录到PHPChina中文开发者社区
  10. 使用监听器生成请求记录日志
  11. 比PS更简单好用的自动抠图软件 一键抠图工具
  12. UNP编程:15---UDP之(recvfrom、sendto函数)
  13. 服务器安全值得深思的几点问题?
  14. 阿里云ECS训练营Class6
  15. U盘中毒了怎么恢复文件?教你正确解决方法
  16. 零基础能不能学习web前端开发?【爱创课堂专业前端培训】
  17. C语言编程>第十六周 ⑦ s是全部由小写字母字符和空格字符组成的字符串,由len传入字符串的长度,请补充fun函数,该函数的功能是:统计字符串s中的单词数,结果由变量len传回。
  18. 干货!如何建立数据标签体系
  19. java中数据类型byte的底层原理透析
  20. 淘宝API接口开发系列,详情接口参数说明

热门文章

  1. Express语言和STEP标准
  2. 软件技术实施人员的四项基本要求
  3. 两个数和两数之和绝对值
  4. 【车载开发系列】UDS诊断---例程控制($0x31)
  5. 如何用Sketch制作精致的交互原型?
  6. # beta冲刺(7/7)
  7. gvim使用技巧翻译
  8. 世界级/全国/省份/城市/县区4级联动
  9. 用了BERT就是香,AI评分还能给出评语,从此英文写作不再是噩梦!
  10. Unity链接数据库(SqlServer)