lisp 批量文字求差值_lisp语言对立体测量数据进行高程处理的实现
摘要:本文结合航测工作实际生产案例,利用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语言对立体测量数据进行高程处理的实现相关推荐
- lisp 批量文字求差值_Python 超简单 提取音乐高潮(附批量提取)
希望点击上方 编程学习者社区,选择 创建星标 回复关键字 资源 获取编程资源 很多时候我们想提取某首歌的副歌部分(俗称 高潮部分),只能手动直接卡点剪切,但是对于大批量的获取就很头疼,如何解决?怎么 ...
- excel减法函数_发现EXCEL隐藏功能,SUMIFS函数居然可以多条件求差值看了不后悔...
在EXCEL中,SUMIFS函数是"多条件求和"函数,但是我们工作需要完成多条件求差,EXCEL里是没有"多条件求差值"函数的,所以我们可以逆向利用多条件求和函 ...
- 2021牛客第一场H.Hash Function—FFT求差值的卷
https://ac.nowcoder.com/acm/contest/11166/H 官方题解. 比赛时,我们都是用暴力写的,数据太弱了,今天突然想起来,用fft写了一下. 主要使用fft求差值的卷 ...
- 计算机求差值公式,excel怎么求差值 excel减法公式使用教程
在ecxel表格中处理数据时,我们经常会用到加减乘除的公式,本文主要便是为大家讲述excel求差值的使用,那么大家知道有几种求差值的方法?下面小编为大家介绍两种快速求差值的方法,不懂的朋友可以多看几遍 ...
- python输入两个数求差_python差值_python差值法_python求差值 - 云+社区 - 腾讯云
广告关闭 回望2020,你在技术之路上,有什么收获和成长么?对于未来,你有什么期待么?云+社区年度征文,各种定制好礼等你! 环境依赖api 网关提供 python 2.7 和 python 3 两个版 ...
- python表示差值_Python-dataframe的对应列求差值
需求:求两txt文件对应city'数量'列的差值(airbnb_city1.txt - airbnb_city.txt) 数据展示: import pandas as pd # 如果没有列名 使用he ...
- python怎么输入两个数然后求差值_python两个日期之间天差值获取
因为我也刚刚接触python,这个原则上也是百度找到的,原来那位我也找不到了...... 主要就是使用datetime进行转化然后进行相减,获得如[diff_days] : 00:00:00形式的结果 ...
- linux 时间怎么求差值_linux批量计算时间差脚本——awk
今天碰到一个时间差批量计算的问题,弄好后就写下来,方便积累和分享. 部分数据(一共有40多W条,gmail.csv)如上图所示,已经做过二次处理和排版. 第i行前两列时间记作A[i],后两列记作B[i ...
- 蚁群算法求最值c语言实现,蚁群算法代码(求函数最值)
<蚁群算法代码(求函数最值)>由会员分享,可在线阅读,更多相关<蚁群算法代码(求函数最值)(4页珍藏版)>请在人人文库网上搜索. 1.function F=F(x1,x2) % ...
最新文章
- AT2362 [AGC012B] Splatter Painting(思维、dfs染色、剪枝)
- html页面获取get传递过来的值,在HTML中用js获取通过GET、POST方法(就是在网址后加?a=bc=d之类)传过来的表单值...
- ElasticSearch搜索语法进阶学习(搜索+聚合,过滤+聚合)
- win10切换桌面_学废了Win10的这些骚操作,我不信你拽不起来
- pls-00302: 必须声明 组件_vue组件
- linux落字效果代码,Linux 用echo输出带特效的字体
- 读取、修改、保存图像
- zeppelin配置hive教程
- 专业测试油耗的软件,油耗软件app哪个好_检测汽车油耗的软件_油耗记录软件车机版...
- 怎样在电脑上上传图片_怎样上传图片或照片
- Linux架设Jsp环境
- ubuntu使用ffmpeg截取视频
- 通过代码提高编程能力
- 【项目管理】测量绩效域管理
- 时间日期插件引用使用方法
- 用c语言实现图书信息管理系统
- 【大话Mysql面试】-常见SQL语句书写
- 实例讲解:JAVA SOAP技术(2)完
- 为什么PR导出来的视频,偏紫色?
- 【竞赛|数学建模】Part 1:什么是数学建模和各模块介绍
热门文章
- aws 怎么将密钥转密码_将加密密钥存储在AWS Secrets Manager中
- 7-6 读数字 (15 分)
- 有关微信域名被拦截的经验分享
- 2022年中国有多少家企业,中国工商注册企业工商全量信息数据怎么获得
- Excel(Office、WPS)一次性删除多个空行
- [LUA]中对于文件的操作
- 钢管下料问题(以钢管根数最少为标准)
- 基于 SpringBoot + Vue 的智能停车场管理平台
- [好学、好用、好玩的Photoshop.写给初学者的入门书].李金明等.扫描版
- android开发-百度语音识别Android SDK的简单使用