Post date: Jan 3, 2015 5:39:19 PM
Представляю Вашій увазі Парсер координат виносу в натуру. Це моя перша комп'ютерна програма, що скомпільована для Windows середовища.
Програма парсить наступну таблицю координат, що отримуєтеся в txt форматіЮ як викачка з програми AutoCad 2000 Narezka:
Залишаючи від таблиці тільки список точок з координатами наступного виду, для виносу в натуру:
Програма написана на мові програмування Python 2.7
from Tkinter import *
import tkFileDialog
from pyparsing import Word, alphanums
def Quit(ev):
global root
root.destroy()
def LoadFile(ev):
fn = tkFileDialog.Open(root, filetypes = [('*.KRD files', '.KRD')]).show()
if fn == '':
return
textbox.delete('1.0', 'end')
inputFile = open(fn, "r")
outFn= fn[:-3]+"ptb"
outF = open(outFn, "w")
listData = inputFile.readlines()
AllLine = len(listData) - 5
rule = Word( alphanums+'.-_/' ) + Word( alphanums+'.-_/' ) + Word( alphanums+'"'+"'" )+ Word( alphanums+'.-_/' )+ Word( alphanums+'.-_/' )
#skip from 0 to 10, and skip 5 from end
for i in range(11,AllLine,2):
#print i
test = listData[i]
test= str(test).replace("' ",'')
Koord=rule.parseString( test )
Point=Koord[0]
X=Koord[3]
Y=Koord[4]
out=str("0," + Point+","+X+","+Y+",,,")
outF.write(out+"\n")
textbox.insert('1.0', out+"\n")
inputFile.close()
outF.close()
#textbox.insert('1.0', open(fn, 'rt').read())
def SaveFile(ev):
fn = tkFileDialog.SaveAs(root, filetypes = [('*.ptb files', '.ptb')]).show()
if fn == '':
return
if not fn.endswith(".ptb"):
fn+=".ptb"
open(fn, 'wt').write(textbox.get('1.0', 'end'))
root = Tk()
panelFrame = Frame(root, height = 60, bg = 'gray')
textFrame = Frame(root, height = 340, width = 600)
panelFrame.pack(side = 'top', fill = 'x')
textFrame.pack(side = 'bottom', fill = 'both', expand = 1)
textbox = Text(textFrame, font='Arial 14', wrap='word')
scrollbar = Scrollbar(textFrame)
scrollbar['command'] = textbox.yview
textbox['yscrollcommand'] = scrollbar.set
textbox.pack(side = 'left', fill = 'both', expand = 1)
scrollbar.pack(side = 'right', fill = 'y')
loadBtn = Button(panelFrame, text = 'Load')
saveBtn = Button(panelFrame, text = 'Save')
quitBtn = Button(panelFrame, text = 'Quit')
loadBtn.bind("<Button-1>", LoadFile)
saveBtn.bind("<Button-1>", SaveFile)
quitBtn.bind("<Button-1>", Quit)
loadBtn.place(x = 10, y = 10, width = 40, height = 40)
saveBtn.place(x = 60, y = 10, width = 40, height = 40)
quitBtn.place(x = 110, y = 10, width = 40, height = 40)
root.mainloop()
Для MacOs та Linux користувачів. Ви можете користатись кодом програми якщо у вас встановлений Python 2.7 і необхідні модулі такі як pyparsing.
Проте, для безпосереднього виконання в середовищі Windows, можете завантажити бінарний *.exe додаток
Завантажити бінарний *.exe додаток
Розархівувати (Пароль на архів геодезист)
Запустити th.exe
Натиснути кнопку Load і вибрати файл з координатами 999999999(2).KRD(у папці з програмою) Програма, в папці з файлом програмою створить файл з тієюж назвою але іншим розширенням .ptb який буде містити оброблені координати. (у випадку якщо там файл є, вона його перезапише зверху). Файл можна грузити в RTK-ровер.
На екран виведеться координати у зворотньому порядку. Це для того, щоб бачити яка остання точка обробилась. У випадку, якщо хочете зберегти виведений список коордитнат у зворотньому порядку з іншою назвою файлу натисніть кнопку Save
Для наступного файлу ви можете натиснути знову кнопку Load, дія 4 кроку повторится
Для виходу з програми натисніть кнопку Quit
Програма протестована на Windows XP та Windows 7
програма написана 13:55 03.01.2015