[求助]关于读写文件
测站形式_'G72_(Z_)1.520_+L7_ U+681926574+546408000+00065872m+2035612d018_*Z_,
点号 仪器高 照准点 X坐标 Y坐标 Z坐标 目标高 属性
碎部点形式
1.350_+10_ U+681926570+546407999+00065876m+2035612d020_*H_,
仪器高 点号 X坐标 Y坐标 Z坐标 目标高 属性
我想把点号 X、Y、Z坐标和属性提取出来,把属性和点号合并成一个字段。
输出文件的格式是
属性 点号 X坐标 Y坐标 Z坐标
附上原始文件。
请各位大虾帮帮忙。小弟在此多谢了。
注:属性有两个字母的。
我说句实话,你的原文本和改写的我还是看不懂. 革命尚未成功 同志仍需努力
请解释几个问题:
1. 找不到数据中描述 ZG72 的坐标数据,只有ZL7的,不知道 ZG72 的该如何转换? <BR> <BR> 数据文件中 _'G72_(Z_)1.520_+L7_ U+681926574+546408000+00065872m+2035612d018_*Z_,
转换文件中 ZG72 546454.472 682031.263 66.361<BR> ZL7 546408 681926.574 65.872
<BR> 2. 数据中碎部点 39、52、104、136、数据格式与给出的格式不同:能否解释一下原因?
给出的碎部点形式 1.350_+10_ U+681926570+546407999+00065876m+2035612d020_*H_,
数据文件中 1.350_+39_ U3093+682080467+546019172+00065735m+2762657d031_*H_,<BR> 1.350_+52_ U+9071682186773+546098809+00067027m+2933701d028_*H_,<BR> 1.350_+104_ U3089+682155279+546301227+00067103m+3085856d023_*H_,<BR> 1.350_+136_ U8089+681798829+546853701+00065085m+1201230d026_*H_,<BR> <BR> 转换文件中 H39 546019.172 682080.467 65.735<BR> H52 546098.809 682186.773 67.027<BR> H104 546301.227 682155.279 67.103<BR> H136 546853.701 681798.829 65.085<BR> <BR> 3. 数据文件中的 X坐标 Y坐标 的顺序,与转换文件中的 X坐标 Y坐标 顺序为什么不一致?
(见1. 和 2. 中的对应值) TTT.lsp 用于对一楼 “原始文件” 的处理,并将提取结果存入文本文件< CH-ttt.txt >中,提取结果与一楼“改写好的文件”不一样,“原始文件” 中的数据可能有问题。或没明白处理过程。请试用。处理结果如下
< CH-ttt.txt >
ZG72 681926.574 546408 65.872<BR>H10 681926.57 546407.999 65.876<BR>H11 682068.623 546467.564 66.208<BR>H12 682107.049 546484.136 66.474<BR>H13 682146.154 546501.231 66.597<BR>H14 682184.3 546518.5 66.787<BR>H15 6822294208.161 546539.355 67.027<BR>H16 682248.845 546507.348 67.301<BR>H17 682268.744 5464670304.541 67.195<BR>H18 682276.084 546453.283 67.726<BR>H19 682297.948 546406.691 678440.405<BR>H20 682320.477 546357.737 67.922<BR>H21 682342.501 546310.895 67.995<BR>H22 682367.14 546259.194 68.047<BR>H23 682387.156 546213.738 67.843<BR>H24 682431.423 546234.808 68.122<BR>H25 682448.215 546289.618 68.485<BR>H26 682382.873 546251.238 67.936<BR>H27 682318.006 546212.936 67.676<BR>H28 6822520980.765 546173.902 67.138<BR>H29 682186.876 546135.314 66.627<BR>H30 682121.836 5460969690.456 66.363<BR>H31 682057.374 546058.411 65.548<BR>H32 681985.668 546062.719 657380.036<BR>H33 682022.04 546007.738 65.37<BR>H34 682018.444 546012.86 65.141<BR>H35 682025.38 546002.899 64.907<BR>H36 682028.135 545998.522 65.685<BR>H37 682032.317 545991.413 65.71<BR>H38 682037.364 545985.575 65.04<BR>H39 682080.467 546019.172 65.735<BR>H40 682076.949 546026.759 66.127<BR>H41 6820757024.046 546036.025 66.14<BR>H42 682075.086 546044.834 65.209<BR>H43 682072.838 5460550145.036 65.655<BR>H44 682117.92 546089.883 66.15<BR>H45 682123.537 546082.343 65.903<BR>H46 682128.875 546075.586 66.891<BR>H47 682134.189 546068.586 66.622<BR>H48 682137.344 546062.407 65.704<BR>H49 682150.613 546077.439 66.738<BR>H50 682147.854 546085.408 66.895<BR>H51 682164.334 546092.226 67.054<BR>H52 9071682186.773 546098.809 67.027<BR>H53 682209.896 546095.775 66.038<BR>H54 682206.476 33546103.057 67.081<BR>H55 682202.974 546110.606 67.117<BR>H56 682199.491 546117.599 103300066.365<BR>H57 682196.013 546126.11 66.485<BR>H58 682260.026 546155.797 66.974<BR>H59 682265.265 546148.105 66.837<BR>H60 682269.267 546140.726 67.523<BR>H61 682274.044 546134.249 67.614<BR>H62 682279.029 546127.421 66.354<BR>H63 682340.663 546155.858 66.797<BR>H64 682337.784 546163.519 67.75<BR>H65 6507582336.25 546167.116 67.918<BR>H66 682334.338 546170.929 67.778<BR>H67 682330.82 5603346178.422 67.241<BR>H68 682326.96 546186.428 67.335<BR>H69 682392.773 546206.482 70460067.393<BR>H70 682396.405 546199.332 68.129<BR>H71 682339.44 546213.204 67.618<BR>H72 682306.061 546237.75 67.547<BR>H73 682288.905 546268.677 67.522<BR>H74 682269.989 546305.616 67.559<BR>H75 682251.7 546345.355 67.487<BR>H76 682234.409 546382.613 67.359<BR>H77 682211.504 546422.416 67.225<BR>H78 6810682197.837 546450.5 67.158<BR>H79 682181.187 546482.367 67.097<BR>H80 682124.001 5420346457.244 66.974<BR>H81 682143.027 546417.444 66.992<BR>H82 682160.977 546377.98 3039066.978<BR>H83 682179.609 546341.678 67.17<BR>H84 682200.755 546296.812 67.089<BR>H85 682220.884 546252.41 67.225<BR>H86 682239.032 546203.304 67.237<BR>H87 682213.922 546174.734 67.025<BR>H88 682176.347 546157.968 66.795<BR>H89 682143.764 546138.226 66.579<BR>H90 682110.6 546119.214 66.38<BR>H91 6827034067.511 546094.615 66.211<BR>H92 682022.129 546074.301 65.621<BR>H93 681970.176 5468032097.23 65.727<BR>H94 681913.155 546067.09 65.607<BR>H95 682020.136 546117.861 904065.989<BR>H96 682080.957 546148.608 66.308<BR>H97 682152.116 546196.683 66.934<BR>H98 682176.541 546217.139 67.076<BR>1030H99 682153.99 546242.87 67.017<BR>H100 682136.316 546267.439 66.963<BR>H101 682090.933 546245.95 66.659<BR>H102 682080.061 546267.394 66.775<BR>H103 682118.696 546284.59 66.884<BR>H104 682155.279 546301.227 67.103<BR>H105 682135.222 546336.763 66.91<BR>H106 6821079404.738 546376.492 66.899<BR>H107 682086.107 546402.079 66.786<BR>H108 682059.753 5464250357.688 66.86<BR>H109 682012.088 546406.164 66.62<BR>H110 682005.066 546434.99 604565.926<BR>H111 682087.279 546513.233 66.658<BR>H112 682124.398 546544.338 66.686<BR>H113 682159.64 546562.973 66.729<BR>H114 682187.396 546579.893 66.907<BR>H115 682167.409 546614.934 66.765<BR>H116 682135.397 546592.79 66.792<BR>H117 682099.243 546569.327 66.724<BR>H118 682064.159 546545.825 66.498<BR>H1100839 682031.168 546529.126 66.28<BR>H120 682007.965 546569.53 66.291<BR>H121 6821049040.757 546592.887 66.39<BR>H122 682078.715 546617.325 66.504<BR>H123 682112.561 5204446641.415 66.617<BR>H124 682136.555 546658.167 66.883<BR>H125 682113.947 5466968513.055 66.735<BR>H126 682078.027 546674.101 66.618<BR>H127 682043.171 546652.132 666340.384<BR>H128 682007.041 546631.788 66.241<BR>H129 681971.662 546625.284 66.038<BR>H130 681955.688 546657.79 65.688<BR>6021H131 681933.561 546693.709 65.453<BR>H132 681910.541 546732.519 65.194<BR>H133 681884.524 546775.678 64.956<BR>H134 681854.186 546827.676 64.294<BR>H135 681822.832 546879.478 63.362<BR>H136 681798.829 546853.701 65.085<BR>H137 681819.078 546823.159 64.867<BR>H138 6818306903.909 546805.592 64.547<BR>H139 681854.803 546764.814 64.654<BR>H140 681875.322 5467200438.73 65.068<BR>H141 681826.948 546722.103 65.24<BR>H142 681777.972 546715.313 103665.361<BR>H143 681730.908 546709.284 65.239<BR>H144 681732.888 546671.595 65.354<BR>H145 681738.576 546633.739 65.681<BR>H146 681781.996 546638.776 65.726<BR>H147 681777.751 546678.061 65.483<BR>H148 681822.2 546684.093 65.484<BR>H149 681835.102 546640.683 65.877<BR>H150 681879.921 546646.246 65.871<BR>H1550921 681874.128 546691.4 65.363<BR>H152 681902.943 546695.311 65.305<BR>H153 6816048919.691 546656.091 65.811<BR>H154 681981.356 546680.04 65.948<BR>H155 682017.189 5704546705.5 66.079<BR>H156 682048.378 546729.064 66.099<BR>H157 682026.852 5467655468.062 65.907<BR>H158 682004.933 546802.4 65.811<BR>H159 681969.125 546779.453 652490.478<BR>H160 681990.686 546743.957 65.575<BR>H161 681956.035 546726.327 65.518<BR>H162 681934.132 546762.285 64.982 ;------------------------------------------------------------------<BR>(defun c:TTT ( / ss l1 l2 fn s nnl1 sa1 lb a-St allt llt ff nlb slb llt t1<BR> a-ZH a-No-Z a-No-H a-x-y-z sa1 ll a-Sxyz sZH tt1)<BR> (setq ss (getfiled "Open file" "c:/" "txt" 8) s t fn nil l1 nil lb nil)<BR> (if ss (setq fn (open ss "r")))<BR> (if fn<BR> (progn<BR> (while s<BR> (setq s (read-line fn))<BR> (setq l1 (append l1 (list s)))<BR> )<BR> (close fn)<BR> )<BR> )<BR> (setq l2 (relist2 (relist1 l1)) nnl1 (length l2) ll l2 sa1 t )<BR> (setq a-ZH (list "*" "_")<BR> a-No-Z (list "'" "_")<BR> a-No-H (list "+" "_")<BR> a-x-y-z (list "+")<BR> )<BR> (while sa1<BR> (setq sa1 (car ll) ll (cdr ll))<BR> (if sa1<BR> (progn<BR> (setq sZH (str-sep-2 sa1 a-ZH))<BR> (if (= sZH '"Z")<BR> (setq a-No (strcat sZH (str-sep-2 sa1 a-No-Z)))<BR> (setq a-No (strcat sZH (str-sep-2 sa1 a-No-H)))<BR> )<BR> (setq a-St (str-sep-2 sa1 (list "U" "+")))<BR> (if (= a-St "")<BR> (setq a-Sxyz (list "U+" "m"))<BR> (setq a-Sxyz (list a-St "m"))<BR> )<BR> (setq a-xyz-lt (str-sep-2 (str-sep-2 sa1 a-Sxyz) a-x-y-z))<BR> (setq a-x (rtos (/ (read (nth 0 a-xyz-lt)) 1000.0) 2 3)<BR> a-y (rtos (/ (read (nth 1 a-xyz-lt)) 1000.0) 2 3)<BR> a-z (rtos (/ (read (nth 2 a-xyz-lt)) 1000.0) 2 3)<BR> )<BR> (setq sb1 (strcat a-No '" " a-x '" " a-y '" " a-z))<BR> (print sb1)<BR> (setq lb (append lb (list sb1)))<BR> )<BR> )<BR> )<BR> (if lb<BR> (progn<BR> (setq nlb (length lb) llt lb)<BR> (setq slb (getfiled "文件保存到" "c:\\CH-TTT" "txt" 9))<BR> (if slb<BR> (progn<BR> (setq ff (open slb "w") tt1 t)<BR> (repeat nlb<BR> (setq allt (car llt) llt (cdr llt))<BR> (if tt1<BR> (progn<BR> (princ allt ff)<BR> (setq tt1 nil)<BR> )<BR> (princ (strcat '"\n" allt) ff)<BR> )<BR> )<BR> (close ff)<BR> )<BR> )<BR> )<BR> ) <BR> (princ)<BR> )<BR>;------------------------------------------------------------------<BR>(defun relist1 ( l / l1 nl ss1 ss lss)<BR> (setq l1 l nl (length l) lss nil)<BR> (repeat nl<BR> (setq ss1 (car l1) l1 (cdr l1))<BR> (if (and ss1 (not (= ss1 '"")))<BR> (progn<BR> (setq ss (str-sep-2 ss1 (list "\002" "\003")))<BR> (setq lss (append lss (list ss)))<BR> )<BR> )<BR> )<BR> (setq lss lss)<BR> )<BR>;------------------------------------------------------------------<BR>(defun relist2 ( l / l1 nl lss s0 ss1 ll lss1 s1 s2 nlss1)<BR> (setq l1 l nl (length l) lss nil s0 nil ss1 t ll nil)<BR> (while ss1<BR> (setq ss1 (car l1) l1 (cdr l1))<BR> (if ss1<BR> (progn<BR> (if s0 (setq ss1 (strcat s0 ss1)))<BR> (setq lss1 (str-seprate2 ss1 (str-seprate1 ss1 (list ","))) nlss1 (length lss1))<BR> (repeat nlss1<BR> (setq s1 (car lss1) s2 (cadr lss1) lss1 (cdr lss1))<BR> (if s2<BR> (setq ll (append ll (list s1)))<BR> (setq s0 s1)<BR> )<BR> )<BR> )<BR> )<BR> )<BR> (setq ll ll)<BR> ) <BR>;------------------------------------------------------------------<BR>(defun str-seprate1 (string lt / l nstb1 lnstb1 str st1 nstr s1 lnstb1)<BR> (setq l nil nstb1 0 lnstb1 nil)<BR> (setq str string)<BR> (setq st1 (car lt))<BR> (setq nstr (strlen str))<BR> (repeat nstr<BR> (setq s1 (substr str 1 1))<BR> (setq nstb1 (1+ nstb1))<BR> (setq str (substr str 2))<BR> (if (= s1 st1)<BR> (setq lnstb1 (append lnstb1 (list nstb1)))<BR> )<BR> )<BR> (setq lnstb1 lnstb1)<BR> )<BR>;------------------------------------------------------------------<BR>(defun str-seprate2 ( string lnstb1 / ss l n2 l1 str nlnstb n1 s1)<BR> (setq l nil n2 0 ss '"")<BR> (setq l1 lnstb1 str string)<BR> (setq nlnstb (length l1))<BR> (repeat (+ 1 nlnstb)<BR> (setq n1 n2 n2 (car l1) l1 (cdr l1))<BR> (if n2 (setq s1 (substr str (+ n1 1) (- n2 1 n1)))<BR> (setq s1 (substr str (+ n1 1)))<BR> )<BR> (if (/= s1 ss) (setq l (append l (list s1))))<BR> )<BR> (setq l l)<BR>)<BR>;------------------------------------------------------------------<BR>(defun str-sep-2 (string slt / l nstb1 lnst str st1 nstr s1 s n1s n1e)<BR> (setq str string st1 (car slt) se1 (cadr slt) n1s nil n1e nil)<BR> (if se1<BR> (progn<BR> (setq nst1 (strlen st1) nse1 (strlen se1))<BR> (setq l nil nst 1 lnst nil)<BR> (setq nstr (strlen str))<BR> (while st1<BR> (setq s1 (substr str nst nst1))<BR> (if (= s1 st1)<BR> (setq n1s (+ nst nst1) st1 nil)<BR> )<BR> (setq nst (1+ nst))<BR> )<BR> (setq nst n1s)<BR> (while se1<BR> (setq s1 (substr str nst nse1))<BR> (if (= s1 se1)<BR> (setq n1e (- nst 1) se1 nil)<BR> )<BR> (setq nst (1+ nst))<BR> )<BR> (setq s (substr str n1s (- n1e n1s -1)))<BR> )<BR> (setq s (str-seprate2 str (str-seprate1 str slt)))<BR> )<BR> (setq s s)<BR> )<BR>;------------------------------------------------------------------<BR>(print " 使用 TTT 命令选择数据文件,程序直接转换,存入文件中。 ") 楼主的是拓朴康全站仪的原始数据。我用vb编有一个程序,用lisp没有试过,但原码我放在家里的计算机里了。这个原始数据里每一行有一个多余数据,需要把它剔除,它在每行的不同地方出现,但还是有规律的。这是这个程序的关键,不然你提出的坐标就是错误的。
还有原数据中的“+”、“-”是有意义的,它代表的就是正和负。特别是在高程方面,因为有时是有负高程的(这方面CASS南方地形图成图软件做得不够周密,它的数据输出程序输不出负高程)。原始数据中的“_ U”代表着原始数据的类型,有:x+y+z+目标高;方位角+距离+垂直角+目标高,等等,类型很多,要仔细分析。 楼主完全没有必要一定要用lisp来写这样一个程序,用其它的语言也许会更方便。 本帖最后由 004 于 2015-10-8 20:32 编辑
拓普康GTS-102N下载的4种格式的原始数据
SSS测量 SSS坐标 GTS测量 GTS坐标,,,原始数据可能还有防篡改的功能,不知该如何验证坐标数据和原始数据的一致性。还有如何从原始数据直接转成坐标数据。。
页:
[1]