免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 31870|回复: 239
收起左侧

[技术交流] 【原创】手把手叫你用批处理写一个.dat中提取控制点数据的脚本程序!

    [复制链接]
发表于 2012-6-30 22:19 | 显示全部楼层 |阅读模式
       呵呵,前段时间在电脑技术版块那边发了几个原创的批处理帖子,因为这次想到发的是提取控制点数据文件的帖子,所以就换到这边来了!
首先,我们来看看展控制点的流程:
绘图处理------展控制点-----选择.dat文件和选择控制点类型

QQ截图20120630200500.png
要说明的是:控制点的点名必须写在编码那一列,不然CASS是无法识别的,至于前面的点号就无所谓了,CASS自动忽略!
QQ截图20120630200659.png
好了,展控制点说完了,现在咱们进入正题,看看怎么提取控制点数据:
呵呵,先晒两张图:
QQ截图20120630201714.png QQ截图20120630201754.png
下面提供两个方法的源代码(各有千秋),一句句给大家讲解:
方法一:
@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和可以优化的地方,欢迎大家多多指正!
QQ截图20120630220659.png

游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 2威望 +1 铜板 +20 收起 理由
dujh2002 + 10
丈量大地 + 1 + 10 很好的原创资料

查看全部评分

 楼主| 发表于 2012-7-1 09:44 | 显示全部楼层
方法1改进下:
@echo off
echo 正在提取。。。。。。
for /f "tokens=*" %%a in ('type 1.txt') do (
echo "%%a" | find /i ",,">nul || for /f "tokens=* delims=," %%b in ("%%a") do (
echo %%b>>2.txt

)
)
echo 提取完毕!
pause
呵呵,这样的话只要你的控制点名不是逗号就都可以提取出来咯!
回复 支持 1 反对 0

使用道具 举报

7711

主题

31万

铜板

892

好友

超级版主

地信网论坛贵宾

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

积分
128745

宣传勋章优秀斑主灌水勋章活跃勋章贡献勋章童话节勋章

QQ
发表于 2012-6-30 23:07 | 显示全部楼层
很不错的,来学习下了
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

1

主题

1万

铜板

10

好友

地信学员

Rank: 12Rank: 12Rank: 12

积分
2329

成就学员勋章

发表于 2012-6-30 23:43 | 显示全部楼层
学无止境,看看喽!
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

199

主题

1万

铜板

121

好友

版主

呵呵

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
5903

灌水勋章活跃勋章宣传勋章

发表于 2012-7-1 08:08 | 显示全部楼层
支持原创!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

5

主题

2万

铜板

29

好友

资深会员

Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

积分
3189
发表于 2012-7-1 08:54 | 显示全部楼层
好东西,受教了!
回复 支持 反对

使用道具 举报

1

主题

7540

铜板

0

好友

至尊VIP

Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24

积分
833
发表于 2012-7-1 09:25 | 显示全部楼层

学无止境,看看喽!
锄禾日当午,签到好辛苦!...
回复 支持 反对

使用道具 举报

0

主题

5万

铜板

9

好友

资深会员

Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

积分
3701
发表于 2012-7-1 10:31 | 显示全部楼层
O(∩_∩)O谢谢LZ 分享!!!
回复 支持 反对

使用道具 举报

11

主题

2万

铜板

5

好友

教授级高工

Rank: 12Rank: 12Rank: 12

积分
1812
QQ
发表于 2012-7-1 10:34 | 显示全部楼层
应开个专版LSP区,大家好学习
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

0

主题

762

铜板

1

好友

助理工程师

Rank: 5Rank: 5

积分
140
发表于 2012-7-1 19:10 | 显示全部楼层

很不错的,来学习下了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表