• 023-67999533
    13883393313

  • 重庆经纬汇盛测绘仪器有限公司
    全国咨询热线
联系我们
免费热线
023-67999533
网址:www.cqjwhs.com
邮箱: 2361616080@qq.com
地址:重庆市渝北区龙山路135号(重庆市武警总队正门对面)
当前位置:首页 > 新闻中心 > 详细内容

如何写一个脚本程序提取控制点数据?

发布时间:2022-02-28
绘图处理------展控制点-----选择.dat文件和选择控制点类型
 要说明的是:控制点的点名必须写在编码那一列,不然CASS是无法识别的,至于前面的点号就无所谓了,CASS自动忽略!
 
好了,展控制点说完了,现在咱们进入正题,看看怎么提取控制点数据:
呵呵,先晒两张图:

 
下面提供两个方法的源代码(各有千秋),一句句给大家讲解:
方法一:
@echo off    -----------关闭回显,不让代码在执行时显示出来!
echo 正在提取。。。。。。  ------------输出"正在提取。。。。。。"这段文字!
for /f "tokens=*" %%a in ('type 1.txt') do (   
echo "%%a" | find /i "D">nul && for /f "tokens=* delims=," %%b in ("%%a") do (
echo %%b>>2.txt

-------------用for语句循环提取1.txt(就是你自己要提取的数据的原文件)中的每一行,然后保存在%%a中,用find/i查找每一行是否有包含“D”(不区分大小写),如果包含就继续执行下面的FOR语句,将包含的那一行提取出来,放进2.txt,没有2.txt就会自动创建,直到每一行查找完毕!
注意:这里的D大家可以自己改,如果你的控制点名包含F就改成F,包含A就改成A,但一定要每个控制点名都包含这个字母哦!
点名可以是字母和数字的组合,但不能是纯数字或者其他字符,总之,所有点名一定要包含某一字母!
)
echo 提取完毕! ------------输出“提取完毕!”这段文字!
pause             
方法二:
@echo off    ------------ 同上,关闭回显!
echo 正在提取。。。。。。        ------------ 输出“正在提取。。。。。。”这段文字!
(for /f "delims=" %%a in (1.txt) do (
  for /f "tokens=2 delims=0123456789" %%b in ("%%a") do (
    if "%%b"=="," echo %%a
  )
))>2.txt
-------------- 同样用for语句将1.txt中的每一行提取出来,保存在%%a中,然后继续用for语句处理提取出来的这一行,用数字作为分隔符,将这行数据分成若干份,提取第二份,最后进行判断,如果第二份是逗号的话就提取出来放进2.txt,如果没有就会自动创建!
注意:用这个方法的话,你的控制点点名不能是纯字母和什么逗号,分号,顿号……反正大家点名别用这些标点符号就好,其他的随便,什么字母数字组合,纯数字。。。 都是可以的!
pause
提取除控制点数据以外的其他点数据方法:
@echo off
(for /f "delims=" %%a in (1.txt) do (
  for /f "tokens=2 delims=0123456789" %%b in ("%%a") do (
    if "%%b" neq "," echo %%a
  )
))>3.txt
pause -------------  这段代码其实就是参照方法二将 "%%b" == "," 改成了"%%b" neq "," 然后就是输出变成了3.txt,其他什么都变!所以大家用的时候还请参照方法二的规则,不要纯字母和标点符号,其他随便大家!
呵呵,好累!打字打累了!
最后,我将以上3段代码整合了一下,做成了一个地信版控制点数据提取程序,大家可以下载自己看看,当然这个程序肯定还有一些BUG和可以优化的地方,欢迎大家多多指正!
百度盘链接:http://pan.baidu.com/s/1dDeZzrV
此文关键字