383 lines
21 KiB
VB.net
383 lines
21 KiB
VB.net
Imports System.IO
|
|
|
|
Public Class Form1
|
|
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
|
My.Forms.Form1.Text = My.Application.Info.Title + " " + My.Application.Info.Version.Major.ToString + "." + My.Application.Info.Version.Minor.ToString + "." + My.Application.Info.Version.Build.ToString + "." + My.Application.Info.Version.Revision.ToString
|
|
ToolStripComboBox2.Text = My.Settings.DecimalnoLocilo
|
|
tsbStolpci.SelectedIndex = My.Settings.Stolpci
|
|
End Sub
|
|
|
|
Public streamLines As Integer = 0
|
|
Private Sub tsbOpenFile_Click(sender As Object, e As EventArgs) Handles tsbOpenFile.Click
|
|
OpenFileDialog1.ReadOnlyChecked = False
|
|
If OpenFileDialog1.ShowDialog = DialogResult.OK Then
|
|
RichTextBox1.Clear()
|
|
ToolStripProgressBar1.Value = 0
|
|
Dim streamReader As StreamReader = New StreamReader(OpenFileDialog1.FileName)
|
|
Do Until streamReader.EndOfStream
|
|
RichTextBox1.AppendText(streamReader.ReadLine + vbCrLf)
|
|
streamLines = streamLines + 1
|
|
Loop
|
|
ToolStripProgressBar1.Maximum = streamLines
|
|
streamReader.Close()
|
|
streamReader.Dispose()
|
|
|
|
My.Settings.Datoteka = OpenFileDialog1.SafeFileName
|
|
My.Settings.ZadnjaMapa = OpenFileDialog1.FileName
|
|
My.Settings.Stolpci = tsbStolpci.SelectedIndex
|
|
tsbFileName.Text = My.Settings.Datoteka
|
|
ToolStripStatusLabel1.Text = My.Settings.ZadnjaMapa
|
|
tsbSaveAs.Text = "Shrani ..."
|
|
tsbSaveAs.Enabled = False
|
|
tsbConvert.Enabled = True
|
|
tsbPointsOnly.Enabled = True
|
|
ButtonUrediDat.Enabled = True
|
|
RichTextBox1.BackColor = SystemColors.Info
|
|
LabelDatoteka.Image = My.Resources.icons8_ok_50
|
|
My.Settings.Save()
|
|
Else
|
|
tsbFileName.Text = "Odpri GSI datoteko..."
|
|
RichTextBox1.Clear()
|
|
tsbSaveAs.Text = "Shrani ..."
|
|
tsbSaveAs.Enabled = False
|
|
tsbConvert.Enabled = False
|
|
tsbPointsOnly.Enabled = False
|
|
End If
|
|
OpenFileDialog1.Dispose()
|
|
End Sub
|
|
|
|
Private Sub tsbConvert_Click(sender As Object, e As EventArgs) Handles tsbConvert.Click
|
|
ToolStripStatusLabel1.Text = "Procesiranje..."
|
|
RichTextBox1.Clear()
|
|
RichTextBox1.BackColor = SystemColors.Info
|
|
RichTextBox1.AppendText("TPS 1100 Zapisnik" + vbCrLf + "++++++++++++++++++++++++++++++++" + vbCrLf)
|
|
ToolStripProgressBar1.Maximum = streamLines
|
|
' prepare StreamReader
|
|
Dim streamReader As StreamReader = New StreamReader(OpenFileDialog1.FileName)
|
|
Dim i As Integer = 0
|
|
Dim PodatkiStojisce As Boolean = False
|
|
Dim dataStolpci As String = ""
|
|
If tsbStolpci.SelectedIndex = 0 Then
|
|
dataStolpci = " "
|
|
ElseIf tsbStolpci.SelectedIndex = 1 Then
|
|
dataStolpci = vbTab
|
|
End If
|
|
My.Settings.Stolpci = tsbStolpci.SelectedIndex
|
|
My.Settings.Save()
|
|
' loop untill end of stream
|
|
Do Until streamReader.EndOfStream
|
|
' Read and Split each line to separate it into fields
|
|
Dim line() As String = streamReader.ReadLine().Split(" ")
|
|
' Remove * sign from index line
|
|
line(0) = Replace(line(0), "*", "")
|
|
ToolStripProgressBar1.Value = i
|
|
' Check if it's a new station setup
|
|
If Microsoft.VisualBasic.Left(line(1), 2) = "25" Then
|
|
RichTextBox1.AppendText(vbCrLf + "Station:" + vbCrLf + "****************" + vbCrLf)
|
|
RichTextBox1.AppendText("PtID" + dataStolpci + "HzCor" + dataStolpci + "StnE" + dataStolpci + "StnN" + dataStolpci + "StnH" + dataStolpci + "ReflHt" + dataStolpci + "InstHt" + vbCrLf)
|
|
End If
|
|
|
|
If Microsoft.VisualBasic.Left(line(1), 2) = "84" Then
|
|
RichTextBox1.AppendText(vbCrLf + "Station:" + vbCrLf + "****************" + vbCrLf)
|
|
RichTextBox1.AppendText("PtID" + dataStolpci + "StnE" + dataStolpci + "StnN" + dataStolpci + "StnH" + dataStolpci + "ReflHt" + dataStolpci + "InstHt" + vbCrLf)
|
|
End If
|
|
' Seaparate word index and data
|
|
For Each readLine As String In line
|
|
If readLine = "" Then
|
|
' do nothing
|
|
Else
|
|
' wordindex is always 6 characters long and is read fron left to right
|
|
Dim wordIndex As String
|
|
wordIndex = Microsoft.VisualBasic.Left(readLine, 2)
|
|
|
|
' data is always 17 characters long and is read from right to left and has a +/- sign in first place
|
|
Dim data As String
|
|
Dim dataTmp As String
|
|
Dim numData As Double
|
|
data = Microsoft.VisualBasic.Right(readLine, 17)
|
|
|
|
If wordIndex = "11" Then
|
|
data = Microsoft.VisualBasic.Right(data, 16).TrimStart("0"c)
|
|
ElseIf wordIndex = "19" Then ' Date/Time
|
|
data = dataStolpci + "DateTime= " + Microsoft.VisualBasic.Right(data, 8)
|
|
ElseIf wordIndex = "21" Then ' Horizontal angle
|
|
numData = data / 100000
|
|
data = dataStolpci + Format(numData, "0.0000")
|
|
ElseIf wordIndex = "22" Then ' Vertical angle
|
|
numData = data / 100000
|
|
data = dataStolpci + Format(numData, "0.0000")
|
|
ElseIf wordIndex = "25" Then ' Hz. Orientation correction
|
|
numData = data / 100000
|
|
data = dataStolpci + Format(numData, "0.0000")
|
|
ElseIf wordIndex = "31" Then ' Slope distance
|
|
numData = data / 1000
|
|
data = dataStolpci + Format(numData, "0.000")
|
|
ElseIf wordIndex = "32" Then ' Horizontal distance
|
|
numData = data / 1000
|
|
data = dataStolpci + Format(numData, "0.000")
|
|
ElseIf wordIndex = "33" Then ' Height difference
|
|
numData = data / 1000
|
|
data = dataStolpci + Format(numData, "0.000")
|
|
ElseIf wordIndex = "34" Then ' Stationing
|
|
numData = data / 1000
|
|
data = dataStolpci + "Station= " + Format(numData, "0.000")
|
|
ElseIf wordIndex = "35" Then ' Info za offset???
|
|
numData = data / 1000
|
|
data = dataStolpci + "Offset= " + Format(numData, "0.000")
|
|
ElseIf wordIndex = "41" Then ' Code
|
|
'numData = data
|
|
'data = "Code= " + numData.ToString
|
|
If ToolStripComboBox1.Text = "Da" Then
|
|
If data = "+0000000000000010" Then
|
|
data = vbCrLf + "Setup: Quick Set" + vbCrLf + "============================="
|
|
PodatkiStojisce = True
|
|
End If
|
|
If data = "+0000000000000020" Then
|
|
data = vbCrLf + "Setup: Set Hz" + vbCrLf + "=============================" + vbCrLf + "PtID" + dataStolpci + "HZ" + dataStolpci + "V" + dataStolpci + "SD" + dataStolpci + "HD" + dataStolpci + "ReflHt" + dataStolpci + "PrCon" + dataStolpci + "HtDif" + dataStolpci + "PtCode"
|
|
PodatkiStojisce = True
|
|
End If
|
|
If data = "+0000000000000030" Then
|
|
data = vbCrLf + "Setup: Resection" + vbCrLf + "=============================" + vbCrLf + "PtID" + dataStolpci + "HZ" + dataStolpci + "V" + dataStolpci + "SD" + dataStolpci + "HD" + dataStolpci + "ReflHt" + dataStolpci + "PrCon" + dataStolpci + "HtDif" + dataStolpci + "PtCode"
|
|
PodatkiStojisce = True
|
|
End If
|
|
If data = "+0000000000000040" Then
|
|
data = vbCrLf + "Setup: Free Station" + vbCrLf + "=============================" + vbCrLf + "PtID" + dataStolpci + "HZ" + dataStolpci + "V" + dataStolpci + "SD" + dataStolpci + "HD" + dataStolpci + "ReflHt" + dataStolpci + "PrCon" + dataStolpci + "HtDif" + dataStolpci + "PtCode"
|
|
PodatkiStojisce = True
|
|
End If
|
|
If data = "+0000000000000050" Then
|
|
data = vbCrLf + "Setup: Orientation & Ht. transfer" + vbCrLf + "=============================" + vbCrLf + "PtID" + dataStolpci + "HZ" + dataStolpci + "V" + dataStolpci + "SD" + dataStolpci + "HD" + dataStolpci + "ReflHt" + dataStolpci + "PrCon" + dataStolpci + "HtDif" + dataStolpci + "PtCode"
|
|
PodatkiStojisce = True
|
|
End If
|
|
If data = "+0000000000000090" Then
|
|
data = vbCrLf + "Measured:" + vbCrLf + "----------------------" + vbCrLf + "PtID" + dataStolpci + "HZ" + dataStolpci + "V" + dataStolpci + "SD" + dataStolpci + "HD" + dataStolpci + "ReflHt" + dataStolpci + "PrCon" + dataStolpci + "HtDif" + dataStolpci + "E" + dataStolpci + "N" + dataStolpci + "H" + dataStolpci + "PtCode"
|
|
PodatkiStojisce = False
|
|
End If
|
|
If data = "+0000000000000099" Then
|
|
data = vbCrLf + "Imported/User-Entered:" + vbCrLf + "----------------------" + vbCrLf + "PtID" + dataStolpci + "E" + dataStolpci + "N" + dataStolpci + "H"
|
|
PodatkiStojisce = False
|
|
End If
|
|
If data = "+00000000STA_OFFS" Then
|
|
data = "Offsets: " + vbCrLf
|
|
PodatkiStojisce = False
|
|
End If
|
|
End If
|
|
ElseIf wordIndex = "42" Then ' Code: Info 1
|
|
data = dataStolpci + "Info1= " + Microsoft.VisualBasic.Right(data, 16).TrimStart("0"c)
|
|
ElseIf wordIndex = "43" Then ' Code: Info 2
|
|
data = dataStolpci + "Info2= " + Microsoft.VisualBasic.Right(data, 16).TrimStart("0"c)
|
|
ElseIf wordIndex = "44" Then ' Code: Info 3
|
|
data = dataStolpci + "Info3= " + Microsoft.VisualBasic.Right(data, 16).TrimStart("0"c)
|
|
ElseIf wordIndex = "45" Then ' Code: Info 4
|
|
data = dataStolpci + "Info4= " + Microsoft.VisualBasic.Right(data, 16).TrimStart("0"c)
|
|
ElseIf wordIndex = "47" Then ' Code: Info 6
|
|
data = dataStolpci + "Info6= " + Microsoft.VisualBasic.Right(data, 16).TrimStart("0"c)
|
|
ElseIf wordIndex = "58" Then ' Prism constant
|
|
numData = data / 10000
|
|
data = dataStolpci + numData.ToString
|
|
ElseIf wordIndex = "71" Then ' Point Code
|
|
dataTmp = Microsoft.VisualBasic.Right(data, 16).TrimStart("0"c)
|
|
If dataTmp = "" Then
|
|
data = ""
|
|
Else
|
|
data = dataStolpci + dataTmp
|
|
End If
|
|
ElseIf wordIndex = "81" And PodatkiStojisce = False Then ' Target Easting
|
|
numData = data / 1000
|
|
data = dataStolpci + Format(numData, "0.000")
|
|
ElseIf wordIndex = "82" And PodatkiStojisce = False Then ' Target Northing
|
|
numData = data / 1000
|
|
data = dataStolpci + Format(numData, "0.000")
|
|
ElseIf wordIndex = "83" And PodatkiStojisce = False Then ' Target Height
|
|
numData = data / 1000
|
|
data = dataStolpci + Format(numData, "0.000")
|
|
ElseIf wordIndex = "84" Then ' Station Easting
|
|
numData = data / 1000
|
|
data = dataStolpci + Format(numData, "0.000")
|
|
ElseIf wordIndex = "85" Then ' Station Northing
|
|
numData = data / 1000
|
|
data = dataStolpci + Format(numData, "0.000")
|
|
ElseIf wordIndex = "86" Then ' Station Height
|
|
numData = data / 1000
|
|
data = dataStolpci + Format(numData, "0.000")
|
|
ElseIf wordIndex = "87" Then ' Reflector height
|
|
numData = data / 1000
|
|
data = dataStolpci + Format(numData, "0.000")
|
|
ElseIf wordIndex = "88" Then ' Instriment height
|
|
numData = data / 1000
|
|
data = dataStolpci + Format(numData, "0.000")
|
|
ElseIf wordIndex = "18" Then ' DATE YY.ss
|
|
numData = data / 1000000
|
|
data = dataStolpci + "Year.Sec= " + Format(numData, "0.00")
|
|
Else
|
|
numData = 0
|
|
data = ""
|
|
End If
|
|
If ToolStripComboBox2.Text = "Pika" Then
|
|
If wordIndex IsNot "11" Then
|
|
data = data.ToString.Replace(",", ".")
|
|
End If
|
|
|
|
End If
|
|
RichTextBox1.AppendText(data)
|
|
End If
|
|
Next
|
|
RichTextBox1.AppendText(vbCrLf)
|
|
i = i + 1
|
|
Loop
|
|
ToolStripStatusLabel1.Text = "Prebrano: " + i.ToString + "/" + ToolStripProgressBar1.Maximum.ToString + " vrstic"
|
|
SaveFileDialog1.Filter = "Zapisnik meritve|*.mer|Text file|*.txt|All files|*.*"
|
|
streamReader.Close()
|
|
tsbSaveAs.Enabled = True
|
|
tsbSaveAs.Text = "Shrani Zapisnik"
|
|
End Sub
|
|
|
|
Private Sub tsbPointsOnly_Click(sender As Object, e As EventArgs) Handles tsbPointsOnly.Click
|
|
Dim dataStolpci As String = ""
|
|
If tsbStolpci.SelectedIndex = 0 Then
|
|
dataStolpci = " "
|
|
ElseIf tsbStolpci.SelectedIndex = 1 Then
|
|
dataStolpci = vbTab
|
|
End If
|
|
My.Settings.Stolpci = tsbStolpci.SelectedIndex
|
|
My.Settings.Save()
|
|
RichTextBox1.Clear()
|
|
RichTextBox1.BackColor = SystemColors.Info
|
|
Dim measuredPoints As Integer = 1
|
|
Dim newStation As Integer = 0
|
|
Dim streamReader As StreamReader = New StreamReader(OpenFileDialog1.FileName)
|
|
Dim i As Integer = 0
|
|
Dim lin As Integer = 0
|
|
Do Until streamReader.EndOfStream
|
|
' Read and Split each line to separate it into fields
|
|
Dim line() As String = streamReader.ReadLine().Split(" ")
|
|
' Remove * sign from index line
|
|
line(0) = Replace(line(0), "*", "")
|
|
ToolStripProgressBar1.Value = i
|
|
If Microsoft.VisualBasic.Left(line(1), 2) = "25" Then
|
|
measuredPoints = 1
|
|
End If
|
|
' Seaparate word index and data
|
|
For Each readLine As String In line
|
|
|
|
If readLine = "" Then
|
|
' do nothing
|
|
Else
|
|
' wordindex is always 6 characters long and is read fron left to right
|
|
Dim wordIndex As String
|
|
wordIndex = Microsoft.VisualBasic.Left(readLine, 2)
|
|
' data is always 17 characters long and is read from right to left and has a +/- sign in first place
|
|
Dim data As String
|
|
Dim numData As Double
|
|
|
|
data = Microsoft.VisualBasic.Right(readLine, 17)
|
|
If wordIndex = "41" Then
|
|
If data = "+00000000STA_OFFS" Then
|
|
data = "90"
|
|
End If
|
|
numData = data
|
|
If numData = 90 Then
|
|
measuredPoints = 1
|
|
ElseIf numData < 90 Then
|
|
measuredPoints = 0
|
|
Else
|
|
measuredPoints = 2
|
|
End If
|
|
End If
|
|
|
|
If wordIndex = "11" And measuredPoints >= 1 Then
|
|
data = Microsoft.VisualBasic.Right(data, 16).TrimStart("0"c)
|
|
RichTextBox1.AppendText(data + dataStolpci)
|
|
i = i + 1
|
|
ElseIf wordIndex = "81" And measuredPoints >= 1 Then ' Target Easting
|
|
numData = data / 1000
|
|
data = Format(numData, "0.000")
|
|
If ToolStripComboBox2.Text = "Pika" Then
|
|
data = data.ToString.Replace(",", ".")
|
|
End If
|
|
RichTextBox1.AppendText(data + dataStolpci)
|
|
ElseIf wordIndex = "82" And measuredPoints >= 1 Then ' Target Northing
|
|
numData = data / 1000
|
|
data = Format(numData, "0.000")
|
|
If ToolStripComboBox2.Text = "Pika" Then
|
|
data = data.ToString.Replace(",", ".")
|
|
End If
|
|
RichTextBox1.AppendText(data + dataStolpci)
|
|
ElseIf wordIndex = "83" And measuredPoints >= 1 Then ' Target Height
|
|
numData = data / 1000
|
|
data = Format(numData, "0.000")
|
|
If ToolStripComboBox2.Text = "Pika" Then
|
|
data = data.ToString.Replace(",", ".")
|
|
End If
|
|
If measuredPoints = 2 Then
|
|
RichTextBox1.AppendText(data + dataStolpci + "REF" + vbCrLf)
|
|
Else
|
|
RichTextBox1.AppendText(data + dataStolpci + "MEAS" + vbCrLf)
|
|
End If
|
|
ElseIf wordIndex = "84" And measuredPoints = 1 Then ' Station Easting
|
|
numData = data / 1000
|
|
data = Format(numData, "0.000")
|
|
If ToolStripComboBox2.Text = "Pika" Then
|
|
data = data.ToString.Replace(",", ".")
|
|
End If
|
|
RichTextBox1.AppendText(data + dataStolpci)
|
|
ElseIf wordIndex = "85" And measuredPoints = 1 Then ' Station Northing
|
|
numData = data / 1000
|
|
data = Format(numData, "0.000")
|
|
If ToolStripComboBox2.Text = "Pika" Then
|
|
data = data.ToString.Replace(",", ".")
|
|
End If
|
|
RichTextBox1.AppendText(data + dataStolpci)
|
|
ElseIf wordIndex = "86" And measuredPoints = 1 Then ' Station Height
|
|
numData = data / 1000
|
|
data = Format(numData, "0.000")
|
|
If ToolStripComboBox2.Text = "Pika" Then
|
|
data = data.ToString.Replace(",", ".")
|
|
End If
|
|
RichTextBox1.AppendText(data + dataStolpci + "STA" + vbCrLf)
|
|
Else
|
|
numData = 0
|
|
data = ""
|
|
End If
|
|
End If
|
|
Next
|
|
lin = lin + 1
|
|
ToolStripProgressBar1.Value = lin
|
|
Loop
|
|
ToolStripStatusLabel1.Text = "Prebrano točk: " + i.ToString
|
|
SaveFileDialog1.Filter = "KOO datoteka|*.koo|Text file (Tab)|*.txt|All files|*.*"
|
|
streamReader.Close()
|
|
tsbSaveAs.Enabled = True
|
|
tsbSaveAs.Text = "Shrani Točke"
|
|
End Sub
|
|
|
|
Private Sub tsbSaveAs_Click(sender As Object, e As EventArgs) Handles tsbSaveAs.Click
|
|
SaveFileDialog1.FileName = Path.GetFileNameWithoutExtension(OpenFileDialog1.FileName)
|
|
If SaveFileDialog1.ShowDialog = DialogResult.OK Then
|
|
RichTextBox1.SaveFile(SaveFileDialog1.FileName, RichTextBoxStreamType.PlainText)
|
|
ToolStripStatusLabel1.Text = "Shranjeno: " + SaveFileDialog1.FileName.ToString
|
|
RichTextBox1.BackColor = SystemColors.ControlLightLight
|
|
'Dim filePath As String
|
|
'filePath = System.IO.Path.Combine(My.Computer.FileSystem.SpecialDirectories.MyDocuments, "tps1100_log.txt")
|
|
My.Computer.FileSystem.WriteAllText("tps1100_log.txt", System.DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + " | " + OpenFileDialog1.FileName.ToString + " -> " + SaveFileDialog1.FileName.ToString + vbCrLf, True)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub tsbHelp_Click(sender As Object, e As EventArgs) Handles tsbHelp.Click
|
|
' MessageBox.Show("Za konvertiranje GSI datoteke najprej izberi datoteko, ki jo želiš konvertirati z ukazom 'Open File'. Nato izberi metodo konverzije (Poročilo, Merjene točke, Vse točke). Po končani knverziji shrani novo datoteko z ukazom 'Save As...'","Kratka navodila")
|
|
SplashScreen1.ShowDialog()
|
|
|
|
End Sub
|
|
|
|
Private Sub ToolStripComboBox2_Click(sender As Object, e As EventArgs) Handles MyBase.FormClosing
|
|
My.Settings.DecimalnoLocilo = ToolStripComboBox2.Text
|
|
My.Settings.Save()
|
|
End Sub
|
|
|
|
Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ButtonUrediDat.Click
|
|
|
|
Form2.ShowDialog()
|
|
|
|
|
|
End Sub
|
|
End Class
|