|
0 |
.\" Man page generated from reStructuredText.
|
|
1 |
.
|
|
2 |
.TH "TOTALOPENSTATION" "1" "July 31, 2014" "0.3" "Total Open Station"
|
|
3 |
.SH NAME
|
|
4 |
totalopenstation \- Total Open Station 0.3.0
|
|
5 |
.
|
|
6 |
.nr rst2man-indent-level 0
|
|
7 |
.
|
|
8 |
.de1 rstReportMargin
|
|
9 |
\\$1 \\n[an-margin]
|
|
10 |
level \\n[rst2man-indent-level]
|
|
11 |
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
12 |
-
|
|
13 |
\\n[rst2man-indent0]
|
|
14 |
\\n[rst2man-indent1]
|
|
15 |
\\n[rst2man-indent2]
|
|
16 |
..
|
|
17 |
.de1 INDENT
|
|
18 |
.\" .rstReportMargin pre:
|
|
19 |
. RS \\$1
|
|
20 |
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
|
|
21 |
. nr rst2man-indent-level +1
|
|
22 |
.\" .rstReportMargin post:
|
|
23 |
..
|
|
24 |
.de UNINDENT
|
|
25 |
. RE
|
|
26 |
.\" indent \\n[an-margin]
|
|
27 |
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
28 |
.nr rst2man-indent-level -1
|
|
29 |
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
30 |
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
|
31 |
..
|
|
32 |
.SH FOR USERS
|
|
33 |
.SS Requirements
|
|
34 |
.sp
|
|
35 |
TotalOpenStation is written using the \fI\%Python\fP language. Thus you\(aqll need to
|
|
36 |
have a working installation of the current version of a Python of your choice.
|
|
37 |
.sp
|
|
38 |
Across these pages we will refer to the standard \fI\%Python\fP distribution.
|
|
39 |
.sp
|
|
40 |
Obviously, we\(aqre not going to reinvent the wheel, so we have chosen to use
|
|
41 |
some Python libraries for some specific tasks:
|
|
42 |
.INDENT 0.0
|
|
43 |
.IP \(bu 2
|
|
44 |
the \fI\%pySerial\fP library
|
|
45 |
.IP \(bu 2
|
|
46 |
the Python \fI\%Tkinter\fP GUI library, which comes with the standard
|
|
47 |
Python setup
|
|
48 |
.UNINDENT
|
|
49 |
.sp
|
|
50 |
pySerial is needed for downloading data from the serial port (even
|
|
51 |
through a \fIserial\-USB adapter\fP).
|
|
52 |
.sp
|
|
53 |
Tkinter is at the moment responsible of the Graphical User
|
|
54 |
Interface. This might change in future releases of Total Open
|
|
55 |
Station.
|
|
56 |
.SS Getting Python
|
|
57 |
.sp
|
|
58 |
If you\(aqre on GNU/Linux or a recent Mac OSX, Python should be already
|
|
59 |
installed on your system, so you just need to get the mentioned
|
|
60 |
libraries.
|
|
61 |
.sp
|
|
62 |
On Windows, you can get an installer from the main Python website, in
|
|
63 |
the \fI\%download\fP section.
|
|
64 |
.SS Getting libraries
|
|
65 |
.sp
|
|
66 |
Generally speaking, refer to the \fI\%pySerial website\fP\&.
|
|
67 |
.SS GNU/Linux
|
|
68 |
.sp
|
|
69 |
Use your package manager (\fBapt\-get\fP, \fByum\fP) and look
|
|
70 |
for a package named \fBpython\-serial\fP or \fBpyserial\fP and install
|
|
71 |
it. To test whether the installation went fine, open a terminal, start
|
|
72 |
the python interpreter with \fBpython\fP and at the prompt type \fBimport
|
|
73 |
serial\fP then return. It should say nothing, like this:
|
|
74 |
.sp
|
|
75 |
.nf
|
|
76 |
.ft C
|
|
77 |
>>> import serial
|
|
78 |
.ft P
|
|
79 |
.fi
|
|
80 |
.sp
|
|
81 |
If it complains, something went wrong:
|
|
82 |
.INDENT 0.0
|
|
83 |
.INDENT 3.5
|
|
84 |
.sp
|
|
85 |
.nf
|
|
86 |
.ft C
|
|
87 |
>>> import serial
|
|
88 |
Traceback (most recent call last):
|
|
89 |
File "<stdin>", line 1, in <module>
|
|
90 |
ImportError: No module named serial
|
|
91 |
.ft P
|
|
92 |
.fi
|
|
93 |
.UNINDENT
|
|
94 |
.UNINDENT
|
|
95 |
.sp
|
|
96 |
and you need to check with your distribution package manager and bug
|
|
97 |
reporting system.
|
|
98 |
.SS Mac OSX
|
|
99 |
.sp
|
|
100 |
The simplest way is probably to install setuptools and use:
|
|
101 |
.INDENT 0.0
|
|
102 |
.INDENT 3.5
|
|
103 |
.sp
|
|
104 |
.nf
|
|
105 |
.ft C
|
|
106 |
easy_install \-U pyserial
|
|
107 |
.ft P
|
|
108 |
.fi
|
|
109 |
.UNINDENT
|
|
110 |
.UNINDENT
|
|
111 |
.SS Microsoft Windows
|
|
112 |
.sp
|
|
113 |
The pySerial website has executable installers for various versions of
|
|
114 |
this operating system. As pySerial\(aqs documentation says, you will need
|
|
115 |
also the \fI\%pywin32\fP library by Mark Hammond.
|
|
116 |
.SS Installing
|
|
117 |
.sp
|
|
118 |
There are a few different ways to install Total Open Station,
|
|
119 |
depending on your operating system. If you are on GNU/Linux or Mac
|
|
120 |
OSX, you should already have Python installed on your
|
|
121 |
system. Instructions for Microsoft Windows are below.
|
|
122 |
.SS Using \fBpip\fP
|
|
123 |
.sp
|
|
124 |
Until your operating system\(aqs packaging tools (e.g. \fBapt\fP or
|
|
125 |
\fByum\fP) allow you to install Total Open Station along with other
|
|
126 |
programs, the recommended way to install is using \fBpip\fP, like:
|
|
127 |
.INDENT 0.0
|
|
128 |
.INDENT 3.5
|
|
129 |
.sp
|
|
130 |
.nf
|
|
131 |
.ft C
|
|
132 |
pip install totalopenstation
|
|
133 |
.ft P
|
|
134 |
.fi
|
|
135 |
.UNINDENT
|
|
136 |
.UNINDENT
|
|
137 |
.sp
|
|
138 |
This will install all the other required Python packages as
|
|
139 |
well. \fBpip\fP is complementary with \fI\%virtualenv\fP, and it is encouraged
|
|
140 |
that you use virtualenv to isolate your installation:
|
|
141 |
.INDENT 0.0
|
|
142 |
.INDENT 3.5
|
|
143 |
.sp
|
|
144 |
.nf
|
|
145 |
.ft C
|
|
146 |
pip \-E tops install totalopenstation
|
|
147 |
.ft P
|
|
148 |
.fi
|
|
149 |
.UNINDENT
|
|
150 |
.UNINDENT
|
|
151 |
.sp
|
|
152 |
where \fB\-E tops\fP creates a virtual environment named \fBtops\fP and
|
|
153 |
installs totalopenstation into it.
|
|
154 |
.sp
|
|
155 |
Read more about \fBpip\fP at \fI\%http://pip.openplans.org/\fP and
|
|
156 |
\fI\%http://guide.python\-distribute.org/pip.html\fP .
|
|
157 |
.SS Manual install with \fBsetup.py\fP
|
|
158 |
.sp
|
|
159 |
If you manually download the source distribution file from PyPI or
|
|
160 |
from the mercurial repository, first make sure you have installed all
|
|
161 |
the \fIrequired packages\fP\&. Then, just \fBcd\fP into
|
|
162 |
the uncompressed directory and:
|
|
163 |
.INDENT 0.0
|
|
164 |
.INDENT 3.5
|
|
165 |
.sp
|
|
166 |
.nf
|
|
167 |
.ft C
|
|
168 |
python setup.py install
|
|
169 |
.ft P
|
|
170 |
.fi
|
|
171 |
.UNINDENT
|
|
172 |
.UNINDENT
|
|
173 |
.sp
|
|
174 |
Again, it\(aqs strongly recommended to avoid a system\-wide install. Use
|
|
175 |
\fBvirtualenv\fP\&.
|
|
176 |
.SS Windows
|
|
177 |
.sp
|
|
178 |
There is a binary installer available at \fI\%PyPI\fP\&. This requires you to
|
|
179 |
install a \fI\%Python\fP distribution (latest available is 2.7.1 ‒ do not
|
|
180 |
install Python 3 as we don\(aqt support it yet), and the \fI\%pyserial\fP and
|
|
181 |
\fI\%setuptools\fP modules.
|
|
182 |
.SS Getting sample data
|
|
183 |
.sp
|
|
184 |
Even when your device is not listed among the supported ones, Total
|
|
185 |
Open Station can still be useful, particularly for:
|
|
186 |
.INDENT 0.0
|
|
187 |
.IP 1. 3
|
|
188 |
finding the right \fBserial connection parameters\fP from an unknown
|
|
189 |
device. You can play with the 8 options and see the results in a
|
|
190 |
text area. Once the downloaded results look good, you can be almost
|
|
191 |
sure that you have used the right parameters, and we can add the
|
|
192 |
tested model parameters to the program database;
|
|
193 |
.IP 2. 3
|
|
194 |
retrieving \fBsample data\fP from unknown models and submit them to
|
|
195 |
allow support of those models in future releases of the program.
|
|
196 |
.UNINDENT
|
|
197 |
.sp
|
|
198 |
To do this, you can just use the main Total Open Station
|
|
199 |
executable.
|
|
200 |
.sp
|
|
201 |
\fBWARNING:\fP
|
|
202 |
.INDENT 0.0
|
|
203 |
.INDENT 3.5
|
|
204 |
Remember: Total Open Station is no wizard, and you have to tune the
|
|
205 |
serial port options using your prior knowledge of your total
|
|
206 |
station (e.g. read the manual that came with it, look at other
|
|
207 |
programs\(aq options).
|
|
208 |
.UNINDENT
|
|
209 |
.UNINDENT
|
|
210 |
.SS Glossary
|
|
211 |
.INDENT 0.0
|
|
212 |
.TP
|
|
213 |
.B input format
|
|
214 |
An input format is the way data downloaded from the total
|
|
215 |
station are encoded. This might include a default order for X,
|
|
216 |
Y and Z coordinates, particular ways of prefixing each point
|
|
217 |
with some distinctive text string and other features. Each
|
|
218 |
input format is unique, and it requires a dedicated
|
|
219 |
module. Input formats are not readable by common CAD or GIS
|
|
220 |
software packages, and it is TOPS\(aqs work to export them. These
|
|
221 |
formats have a standard name, either given by the manufacturer
|
|
222 |
or by the TOPS development team.
|
|
223 |
.TP
|
|
224 |
.B model
|
|
225 |
When we refer to a \fImodel\fP we mean all total stations that
|
|
226 |
have the same brand name and manufacturer (e.g. all those
|
|
227 |
labeled “Trimble Geodimeter 600”).
|
|
228 |
.TP
|
|
229 |
.B output format
|
|
230 |
A format readable by GIS, CAD or any sort of common software,
|
|
231 |
like CSV or DXF.
|
|
232 |
.TP
|
|
233 |
.B serial\-USB adapter
|
|
234 |
While most total stations have a serial interface (port and cable),
|
|
235 |
modern PCs and laptops tend to have just USB ports. In such cases, it
|
|
236 |
is possible to use a serial\-USB adapter cable, that enables you to
|
|
237 |
connect the total station to one of your USB ports. Depending on your
|
|
238 |
platform, the device might be identified as \fB/dev/ttyUSB0\fP or
|
|
239 |
\fBCOM5\fP\&.
|
|
240 |
.UNINDENT
|
|
241 |
.SS Users of Total Open Station
|
|
242 |
.sp
|
|
243 |
So far, Total Open Station has been successfully used by:
|
|
244 |
.INDENT 0.0
|
|
245 |
.INDENT 3.5
|
|
246 |
.INDENT 0.0
|
|
247 |
.IP \(bu 2
|
|
248 |
Università di Siena, \fI\%Dipartimento di Archeologia e Storia delle
|
|
249 |
Arti\fP, for the excavations at Gortyna and Vignale
|
|
250 |
.IP \(bu 2
|
|
251 |
\fI\%Oxford Archaeology\fP, for fieldwork, using the \fI\%OpenMoko\fP mobile
|
|
252 |
platform
|
|
253 |
.IP \(bu 2
|
|
254 |
\fI\%Arke_Geomática\fP has blogged about TOPS
|
|
255 |
.IP \(bu 2
|
|
256 |
\fI\%Arc\-Team\fP: we have added support for the Trimble “area” format
|
|
257 |
after Arc\-Team sent us some sample data
|
|
258 |
.IP \(bu 2
|
|
259 |
Università di Padova
|
|
260 |
.UNINDENT
|
|
261 |
.UNINDENT
|
|
262 |
.UNINDENT
|
|
263 |
.sp
|
|
264 |
If you\(aqre in the number of happy users, let us know.
|
|
265 |
.SH FOR DEVELOPERS
|
|
266 |
.SS Models
|
|
267 |
.SS General concepts
|
|
268 |
.sp
|
|
269 |
General concepts here about models and abstract classes.
|
|
270 |
.SS \fBleica_tcr_1205\fP \-\- Leica TCR 1205
|
|
271 |
.SS Description
|
|
272 |
.sp
|
|
273 |
This is a quite recent total station. Data were provided by Joseph Reeves of
|
|
274 |
Oxford Archaeology.
|
|
275 |
.SS Connection
|
|
276 |
.INDENT 0.0
|
|
277 |
.TP
|
|
278 |
.B Baudrate
|
|
279 |
higher than 19200
|
|
280 |
.TP
|
|
281 |
.B Bytesize
|
|
282 |
8
|
|
283 |
.UNINDENT
|
|
284 |
.sp
|
|
285 |
/1/no
|
|
286 |
.SS Data format
|
|
287 |
.sp
|
|
288 |
The data format is ASCII, quite simple.
|
|
289 |
.sp
|
|
290 |
The only thing to note is that data dumps contain both relative and absolute
|
|
291 |
measures.
|
|
292 |
.SS Other notes
|
|
293 |
.SS \fBnikon_npl_350\fP \-\- Nikon NPL\-350
|
|
294 |
.sp
|
|
295 |
Download is in ASCII format.
|
|
296 |
.sp
|
|
297 |
Even the brute method \fBcat /dev/ttyS0 > file\fP creates an ASCII file without
|
|
298 |
any problem, so probably the default parameters for the serial port are OK.
|
|
299 |
.SS \fBzeiss_elta_r55\fP \-\- Zeiss Elta R55
|
|
300 |
.SS Description
|
|
301 |
.sp
|
|
302 |
This is a quite old device, in use at the University of Siena. The
|
|
303 |
first steps in TOPS development were achieved with it.
|
|
304 |
.SS Connection
|
|
305 |
.INDENT 0.0
|
|
306 |
.TP
|
|
307 |
.B Baudrate
|
|
308 |
9600
|
|
309 |
.TP
|
|
310 |
.B Bytesize
|
|
311 |
7
|
|
312 |
.TP
|
|
313 |
.B Parity
|
|
314 |
None
|
|
315 |
.UNINDENT
|
|
316 |
.SS Output formats
|
|
317 |
.sp
|
|
318 |
The Zeiss Elta R55 total station can output data in four different
|
|
319 |
formats, only one of which is currently supported:
|
|
320 |
.INDENT 0.0
|
|
321 |
.IP \(bu 2
|
|
322 |
\fIif_zeiss_rec_500\fP
|
|
323 |
.IP \(bu 2
|
|
324 |
Zeiss R\-4
|
|
325 |
.IP \(bu 2
|
|
326 |
Zeiss R\-5
|
|
327 |
.IP \(bu 2
|
|
328 |
Zeiss R\-E
|
|
329 |
.UNINDENT
|
|
330 |
.SS Other notes
|
|
331 |
.sp
|
|
332 |
The hardware interface consists of a serial RS232 cable, that works also with
|
|
333 |
a common \fIserial\-USB adapter\fP .
|
|
334 |
.SS Other models
|
|
335 |
.sp
|
|
336 |
Unimplemented \fImodels\fP can be added to TotalOpenStation.
|
|
337 |
.sp
|
|
338 |
The best way to have your model included in the next version of
|
|
339 |
TotalOpenStation is to file a support request in the bug tracker and attach
|
|
340 |
some sample data dumps obtained with the Helper application.
|
|
341 |
.sp
|
|
342 |
If you can write Python code, you can also write a module by yourself using
|
|
343 |
the existing ones as a guide. Should you write a module, we will be happy to
|
|
344 |
receive it and include it in the TotalOpenStation source tree.
|
|
345 |
.sp
|
|
346 |
\fBSEE ALSO:\fP
|
|
347 |
.INDENT 0.0
|
|
348 |
.INDENT 3.5
|
|
349 |
The \fIcontributing\fP page to find out how to join the project and
|
|
350 |
participate actively to the development.
|
|
351 |
.UNINDENT
|
|
352 |
.UNINDENT
|
|
353 |
.SS Input formats
|
|
354 |
.sp
|
|
355 |
New in version 0.2: Total Open Station supports a number of input data formats, which
|
|
356 |
are implemented separately from the device handling machinery
|
|
357 |
(i.e. downloading data from your total station). This is because
|
|
358 |
one device can output more than one format, and at the same time
|
|
359 |
the same format can be used by more than one device (particularly
|
|
360 |
this is the case for different models by the same manufacturer).
|
|
361 |
|
|
362 |
.SS An overview about input data formats
|
|
363 |
.sp
|
|
364 |
Generally speaking, data formats can be classified into two large
|
|
365 |
groups:
|
|
366 |
.INDENT 0.0
|
|
367 |
.IP 1. 3
|
|
368 |
“raw” field data with polar coordinates
|
|
369 |
.IP 2. 3
|
|
370 |
processed data, with XY(Z) cartesian coordinates
|
|
371 |
.UNINDENT
|
|
372 |
.sp
|
|
373 |
The latter are far more easy to process, because they don\(aqt require
|
|
374 |
any computing of measurements.
|
|
375 |
.SS XYZ formats
|
|
376 |
.sp
|
|
377 |
These formats were the first kind of survey data format supported by
|
|
378 |
Total Open Station.
|
|
379 |
.sp
|
|
380 |
Cartesian coordinates just need to be extracted from ASCII data
|
|
381 |
.SS Leica TCR 1205
|
|
382 |
.INDENT 0.0
|
|
383 |
.TP
|
|
384 |
.B moduleauthor
|
|
385 |
Stefano Costa
|
|
386 |
.TP
|
|
387 |
.B moduleauthor
|
|
388 |
Luca Bianconi
|
|
389 |
.UNINDENT
|
|
390 |
.sp
|
|
391 |
This format is used by the Leica TCR 1205 (and other similar devices),
|
|
392 |
and contains both polar and cartesian coordinates. At the moment, only
|
|
393 |
cartesian coordinates are used to obtain exported data.
|
|
394 |
.SS Acknowledgements
|
|
395 |
.sp
|
|
396 |
Support for this format was added thanks to Joseph Reeves, OA Digital.
|
|
397 |
.SS Nikon RAW format V2.00
|
|
398 |
.INDENT 0.0
|
|
399 |
.TP
|
|
400 |
.B author
|
|
401 |
Stefano Costa
|
|
402 |
.UNINDENT
|
|
403 |
.sp
|
|
404 |
This format contains polar data. It is the first polar format
|
|
405 |
supported by Total Open Station.
|
|
406 |
.sp
|
|
407 |
Data are basically comma\-separated values, but each row can have a
|
|
408 |
different format and number of fields. Recorded points are in rows
|
|
409 |
that start with the \fBSS\fP string, while fixed base points start with
|
|
410 |
the \fBST\fP string.
|
|
411 |
.INDENT 0.0
|
|
412 |
.INDENT 3.5
|
|
413 |
.sp
|
|
414 |
.nf
|
|
415 |
.ft C
|
|
416 |
CO,Nikon RAW data format V2.00
|
|
417 |
CO,FATE2010
|
|
418 |
CO,Description:
|
|
419 |
CO,Client:
|
|
420 |
CO,Comments:
|
|
421 |
CO,Downloaded 08\-Feb\-2010 11:17:17
|
|
422 |
CO,Software: Pre\-install version: 1.02
|
|
423 |
CO,Instrument: Nikon NPL\-352
|
|
424 |
CO,Dist Units: Metres
|
|
425 |
CO,Angle Units: Gons
|
|
426 |
CO,Zero azimuth: North
|
|
427 |
CO,Zero VA: Zenith
|
|
428 |
CO,Coord Order: NEZ
|
|
429 |
CO,HA Raw data: Azimuth
|
|
430 |
CO,Tilt Correction: VA:ON HA:ON
|
|
431 |
CO, FATE2010 <JOB> Created 04\-Feb\-2010 13:41:40
|
|
432 |
MP,1,,0.000,0.000,0.000,ST
|
|
433 |
CO,Temp:20C Press:760mmHg Prism:0 04\-Feb\-2010 13:47:08
|
|
434 |
ST,1,,,,1.430,0.0000,0.0000
|
|
435 |
F1,,1.500,,0.0000,110.5344,13:47:08
|
|
436 |
SS,2,1.500,8.986,107.9916,102.3376,14:00:04,P
|
|
437 |
SS,3,1.500,7.706,110.4894,103.4372,14:00:51,P
|
|
438 |
SS,4,1.500,7.620,105.5898,104.3960,14:01:30,P
|
|
439 |
SS,5,1.700,7.162,105.5474,103.7754,14:02:48,P
|
|
440 |
SS,6,1.500,8.539,105.0304,107.6552,14:04:43,P
|
|
441 |
SS,7,0.000,8.318,111.0776,109.4876,14:06:02,P
|
|
442 |
SS,8,1.500,7.085,108.6492,101.0370,14:38:22,P
|
|
443 |
SS,9,1.500,7.592,112.1108,100.0146,14:38:58,P
|
|
444 |
SS,10,1.500,7.616,114.3392,98.3016,14:40:03,P
|
|
445 |
SS,11,1.500,8.227,118.5482,97.8578,14:40:53,P
|
|
446 |
SS,12,1.500,8.364,111.9586,96.9256,14:41:44,P
|
|
447 |
SS,13,1.500,8.233,120.1832,93.9826,14:47:20,P
|
|
448 |
SS,14,1.500,7.438,116.4324,95.2816,14:48:15,P
|
|
449 |
SS,15,1.500,7.266,115.0854,99.0626,14:49:59,P
|
|
450 |
SS,16,1.500,6.622,112.4368,99.6468,14:50:19,P
|
|
451 |
SS,17,1.500,7.957,121.7916,93.7194,14:52:29,P
|
|
452 |
SS,18,1.500,7.956,134.1078,93.9716,14:53:09,P
|
|
453 |
SS,19,1.500,7.515,126.2412,94.4298,14:54:15,P
|
|
454 |
SS,20,1.500,6.711,130.6606,96.5976,14:55:03,P
|
|
455 |
SS,21,1.500,6.857,118.6338,96.0578,14:56:00,P
|
|
456 |
SS,22,1.500,6.433,117.1546,100.2926,14:56:52,P
|
|
457 |
SS,23,0.000,8.399,127.3100,103.7122,14:58:30,P
|
|
458 |
SS,24,0.000,8.351,128.5522,100.1180,14:59:08,P
|
|
459 |
SS,25,0.000,8.270,134.3588,101.1110,14:59:55,P
|
|
460 |
SS,26,0.000,8.274,133.8002,104.4368,15:00:26,P
|
|
461 |
SS,27,1.500,6.511,124.0842,99.5534,15:03:09,P
|
|
462 |
SS,28,1.500,5.974,122.1514,101.6522,15:04:23,P
|
|
463 |
SS,29,0.000,8.962,137.1236,98.3588,15:07:38,P
|
|
464 |
SS,30,0.000,8.934,136.3310,102.4348,15:08:05,P
|
|
465 |
SS,31,0.000,9.184,144.2620,103.4046,15:08:31,P
|
|
466 |
SS,32,0.000,9.387,149.0120,103.4142,15:08:59,P
|
|
467 |
SS,33,0.000,9.362,148.7352,99.7136,15:09:30,P
|
|
468 |
SS,34,0.000,9.219,144.4228,99.5388,15:09:53,P
|
|
469 |
SS,35,0.000,7.001,138.7436,114.7446,15:11:07,P
|
|
470 |
SS,36,1.500,5.851,131.9558,102.5750,15:22:52,P
|
|
471 |
SS,37,1.500,6.328,133.0952,101.2756,15:23:32,P
|
|
472 |
SS,38,1.500,5.808,135.2582,104.2262,15:24:29,P
|
|
473 |
SS,39,1.500,6.923,134.4702,99.9614,15:25:18,P
|
|
474 |
SS,40,1.500,6.879,139.7302,100.1380,15:25:55,P
|
|
475 |
SS,41,1.500,7.486,140.0246,98.6866,15:26:40,P
|
|
476 |
SS,42,1.500,7.661,135.3510,97.9216,15:28:03,P
|
|
477 |
SS,43,1.500,8.199,135.9068,96.7188,15:28:54,P
|
|
478 |
SS,44,1.500,8.225,143.5888,97.0652,15:29:50,P
|
|
479 |
SS,45,1.500,7.827,145.0258,97.5600,15:31:08,P
|
|
480 |
SS,46,1.500,7.860,147.3556,97.3464,15:31:44,P
|
|
481 |
SS,47,1.500,8.662,147.2374,95.8390,15:32:27,P
|
|
482 |
SS,48,1.500,8.568,144.4556,95.8270,15:33:11,P
|
|
483 |
SS,49,1.500,8.729,143.4210,93.5904,15:34:01,P
|
|
484 |
SS,50,1.500,8.339,136.3862,93.3592,15:34:38,P
|
|
485 |
SS,51,1.500,7.429,141.7392,102.7698,15:36:02,P
|
|
486 |
SS,52,1.500,6.913,140.8836,104.3052,15:36:41,P
|
|
487 |
SS,53,1.500,7.479,149.9490,103.0626,15:37:25,P
|
|
488 |
SS,54,1.500,6.938,149.6110,104.9004,15:38:12,P
|
|
489 |
SS,55,1.700,6.718,143.6064,104.5304,15:39:06,P
|
|
490 |
SS,56,1.700,6.734,138.1288,104.4754,15:39:44,P
|
|
491 |
CO,HT changed at PT=56 Old HT=1.500m
|
|
492 |
CO,OLD=56 X\-3.787 Y5.548 Z\-0.543
|
|
493 |
CO,HT changed at PT=55 Old HT=1.500m
|
|
494 |
CO,OLD=55 X\-4.239 Y5.190 Z\-0.548
|
|
495 |
SS,57,1.500,6.132,137.6602,109.0124,15:42:43,P
|
|
496 |
SS,58,1.500,8.966,150.7654,93.9858,15:44:05,P
|
|
497 |
SS,59,1.500,9.739,151.4094,93.7238,15:44:39,P
|
|
498 |
SS,60,1.500,9.919,155.4866,95.0466,15:45:26,P
|
|
499 |
SS,61,1.500,8.980,152.3926,95.1246,15:46:14,P
|
|
500 |
SS,62,1.500,9.107,155.8314,95.5764,15:47:06,P
|
|
501 |
SS,63,1.850,9.150,156.6374,93.9602,15:50:12,P
|
|
502 |
SS,64,0.000,9.292,157.4092,107.9238,15:52:21,P
|
|
503 |
SS,65,1.500,10.059,160.4978,95.4160,15:54:36,P
|
|
504 |
SS,66,1.500,9.330,161.8984,97.0678,15:55:51,P
|
|
505 |
SS,67,1.500,9.997,161.8576,99.2174,15:56:34,P
|
|
506 |
SS,68,1.500,10.786,167.3566,98.9458,15:57:09,P
|
|
507 |
SS,69,1.500,10.240,167.1484,99.9180,15:57:48,P
|
|
508 |
SS,70,1.780,9.705,169.0404,99.2786,15:59:17,P
|
|
509 |
CO,HT changed at PT=70 Old HT=1.500m
|
|
510 |
CO,OLD=70 X\-8.579 Y4.536 Z0.040
|
|
511 |
SS,71,1.500,9.408,162.8840,100.4778,16:00:34,P
|
|
512 |
SS,72,1.750,9.183,163.3532,99.4422,16:02:31,P
|
|
513 |
SS,73,1.775,9.027,160.3550,99.1590,16:04:06,P
|
|
514 |
SS,74,1.900,8.753,160.1354,99.1978,16:05:45,P
|
|
515 |
SS,75,1.900,8.437,165.1502,99.4756,16:06:43,P
|
|
516 |
SS,76,1.900,8.230,159.7622,99.0878,16:07:33,P
|
|
517 |
SS,77,1.500,8.092,155.4420,102.0228,16:08:38,P
|
|
518 |
SS,78,1.500,7.861,150.3918,102.1856,16:09:31,P
|
|
519 |
SS,79,1.500,8.676,149.3206,100.1448,16:10:12,P
|
|
520 |
SS,80,1.500,8.841,154.4180,100.2618,16:11:07,P
|
|
521 |
SS,800,1.500,20.726,178.2156,91.7976,16:13:27,P
|
|
522 |
SS,801,1.500,21.722,179.8802,92.3712,16:14:05,P
|
|
523 |
SS,802,2.550,20.961,179.9716,92.2336,16:18:03,P
|
|
524 |
|
|
525 |
|
|
526 |
.ft P
|
|
527 |
.fi
|
|
528 |
.UNINDENT
|
|
529 |
.UNINDENT
|
|
530 |
.SS Acknowledgements
|
|
531 |
.sp
|
|
532 |
Support for this format was added thanks to Cynthia Mascione,
|
|
533 |
Università di Siena.
|
|
534 |
.SS Trimble AREA format
|
|
535 |
.INDENT 0.0
|
|
536 |
.TP
|
|
537 |
.B moduleauthor
|
|
538 |
Stefano Costa
|
|
539 |
.TP
|
|
540 |
.B moduleauthor
|
|
541 |
Luca Bianconi
|
|
542 |
.TP
|
|
543 |
.B moduleauthor
|
|
544 |
Alessandro Bezzi
|
|
545 |
.UNINDENT
|
|
546 |
.SS \fBzeiss_rec_500\fP \-\- Zeiss REC 500
|
|
547 |
.sp
|
|
548 |
This was the first format supported by Total Open Station. For
|
|
549 |
historical reasons, its documentation is far more extended than those
|
|
550 |
of other formats. The step by step procedure is useful for anyone who
|
|
551 |
wants to hack on TOPS itself.
|
|
552 |
.SS Step\-by\-step download procedure
|
|
553 |
.sp
|
|
554 |
At the time I was doing the first tests, I found it useful to collect
|
|
555 |
all steps. The program goes through them automatically:
|
|
556 |
.INDENT 0.0
|
|
557 |
.INDENT 3.5
|
|
558 |
.sp
|
|
559 |
.nf
|
|
560 |
.ft C
|
|
561 |
>>> import serial
|
|
562 |
>>> ser = serial.Serial(\(aq/dev/ttyUSB0\(aq, \e
|
|
563 |
baudrate=9600, bytesize=serial.SEVENBITS, timeout=0, \e
|
|
564 |
parity=serial.PARITY_NONE, rtscts=1)
|
|
565 |
>>> ser.open()
|
|
566 |
.ft P
|
|
567 |
.fi
|
|
568 |
.UNINDENT
|
|
569 |
.UNINDENT
|
|
570 |
.sp
|
|
571 |
At this point, you have to start the download from the device
|
|
572 |
menu. When this operation has finished, it\(aqs good practice to control
|
|
573 |
if you have actually received any data:
|
|
574 |
.INDENT 0.0
|
|
575 |
.INDENT 3.5
|
|
576 |
.sp
|
|
577 |
.nf
|
|
578 |
.ft C
|
|
579 |
>>> ser.inWaiting()
|
|
580 |
648L
|
|
581 |
.ft P
|
|
582 |
.fi
|
|
583 |
.UNINDENT
|
|
584 |
.UNINDENT
|
|
585 |
.sp
|
|
586 |
A non\-zero result means that something has been downloaded. Good enough.
|
|
587 |
.sp
|
|
588 |
This number can be saved to a variable and passed as parameter to the
|
|
589 |
\fBread()\fP command:
|
|
590 |
.INDENT 0.0
|
|
591 |
.INDENT 3.5
|
|
592 |
.sp
|
|
593 |
.nf
|
|
594 |
.ft C
|
|
595 |
>>> n = ser.inWaiting()
|
|
596 |
>>> result = ser.read(n)
|
|
597 |
.ft P
|
|
598 |
.fi
|
|
599 |
.UNINDENT
|
|
600 |
.UNINDENT
|
|
601 |
.sp
|
|
602 |
The \fBresult\fP object is a string that contains our data:
|
|
603 |
.INDENT 0.0
|
|
604 |
.INDENT 3.5
|
|
605 |
.sp
|
|
606 |
.nf
|
|
607 |
.ft C
|
|
608 |
>>> print(result)
|
|
609 |
0001 OR.COOR
|
|
610 |
0002 0S X 0.000 Y 0.000 Z 0.000
|
|
611 |
0003 Om 397.0370
|
|
612 |
0004 POLAR
|
|
613 |
0005 INPUT th 1.500 ih 0.000
|
|
614 |
0006 INPUT th 0.000 ih 0.000 Z 0.000
|
|
615 |
0007 1 X \-0.472 Y 1.576 Z 0.004
|
|
616 |
END
|
|
617 |
.ft P
|
|
618 |
.fi
|
|
619 |
.UNINDENT
|
|
620 |
.UNINDENT
|
|
621 |
.sp
|
|
622 |
So far, we can say that the downloaded file contains this information:
|
|
623 |
.INDENT 0.0
|
|
624 |
.IP \(bu 2
|
|
625 |
\fBOR.COOR\fP: but I don\(aqt know if this line can take other values too
|
|
626 |
.IP \(bu 2
|
|
627 |
\fBorigin point\fP defined by the \fBOS\fP string followed by its \fBX\fP, \fBY\fP,
|
|
628 |
\fBZ\fP coordinates
|
|
629 |
.IP \(bu 2
|
|
630 |
\fBorientation angle\fP \fBOm\fP: are these gradiants?
|
|
631 |
.IP \(bu 2
|
|
632 |
\fBPOLAR\fP: but I don\(aqt know if this line can take other values too
|
|
633 |
.IP \(bu 2
|
|
634 |
\fBINPUT\fP: are there always two \fBINPUT\fP lines?
|
|
635 |
.INDENT 2.0
|
|
636 |
.IP \(bu 2
|
|
637 |
\fBth\fP
|
|
638 |
.IP \(bu 2
|
|
639 |
\fBih\fP
|
|
640 |
.IP \(bu 2
|
|
641 |
\fBZ\fP
|
|
642 |
.UNINDENT
|
|
643 |
.IP \(bu 2
|
|
644 |
points, expressed as \fBN\fP (starting from 1), \fBX\fP, \fBY\fP, \fBZ\fP
|
|
645 |
.IP \(bu 2
|
|
646 |
\fBEND\fP: after this line no more data
|
|
647 |
.UNINDENT
|
|
648 |
.SS Other formats
|
|
649 |
.sp
|
|
650 |
Unimplemented \fIformats\fP can be added to Total Open Station.
|
|
651 |
.sp
|
|
652 |
The best way to have your format included in the next version of
|
|
653 |
TotalOpenStation is to file a support request in the bug tracker and attach
|
|
654 |
some sample data dumps obtained with the Helper application.
|
|
655 |
.sp
|
|
656 |
If you can write Python code, you can also write a module by yourself using
|
|
657 |
the existing ones as a guide. Should you write a module, we will be happy to
|
|
658 |
receive it and include it in the TotalOpenStation source tree.
|
|
659 |
.sp
|
|
660 |
\fBSEE ALSO:\fP
|
|
661 |
.INDENT 0.0
|
|
662 |
.INDENT 3.5
|
|
663 |
The \fIcontributing\fP page to find out how to join the project and
|
|
664 |
participate actively to the development.
|
|
665 |
.UNINDENT
|
|
666 |
.UNINDENT
|
|
667 |
.SS Adding a new input format
|
|
668 |
.sp
|
|
669 |
There are hundreds of survey data formats out there. One by one, we
|
|
670 |
will get them added into Total Open Station. Here\(aqs a general process
|
|
671 |
that defines some minimum requirements when implementing new formats.
|
|
672 |
.SS Documentation
|
|
673 |
.sp
|
|
674 |
Always write documentation for the format. Add a new document in the
|
|
675 |
\fBdocs/input_formats/\fP directory of the source tree with a bare
|
|
676 |
description, including:
|
|
677 |
.INDENT 0.0
|
|
678 |
.IP \(bu 2
|
|
679 |
raw (polar) or processed (cartesian) format
|
|
680 |
.IP \(bu 2
|
|
681 |
fixed\-position based or fluid \-\- this changes the way the parser
|
|
682 |
should work
|
|
683 |
.IP \(bu 2
|
|
684 |
which devices or manufacturers use this format
|
|
685 |
.IP \(bu 2
|
|
686 |
name of contributors
|
|
687 |
.UNINDENT
|
|
688 |
.sp
|
|
689 |
Shortcomings of Total Open Station that the format exposes shouldn\(aqt
|
|
690 |
be hidden, but rather made explicit both in code and documentation.
|
|
691 |
.SS Sample data
|
|
692 |
.sp
|
|
693 |
Never commit support for a new format without including the relevant
|
|
694 |
sample data in the \fBsample_data\fP directory. Generally speaking,
|
|
695 |
sample data files should follow these simple rules:
|
|
696 |
.INDENT 0.0
|
|
697 |
.IP \(bu 2
|
|
698 |
quality is better than quantity, so prefer a smaller file with many
|
|
699 |
different corner cases rather than a larger file with a bulk of
|
|
700 |
ordinary data
|
|
701 |
.IP \(bu 2
|
|
702 |
multiple files are OK, if they serve the purpose of showing
|
|
703 |
different issues with the format
|
|
704 |
.IP \(bu 2
|
|
705 |
files should be named with the same name of the Python module that
|
|
706 |
implements the format, using a \fB\&.tops\fP extension, like
|
|
707 |
\fBtopcon_gts.tops\fP for a format implemented in a module named
|
|
708 |
\fBtopcon_gts.py\fP \-\- this will allow for simple automated tests
|
|
709 |
.UNINDENT
|
|
710 |
.SS Code
|
|
711 |
.sp
|
|
712 |
When you have fulfilled the two previous tasks, you can start writing
|
|
713 |
code (or at least you should pretend doing that). New code is always
|
|
714 |
better than old code, because you have learned better programming
|
|
715 |
techniques, or because you are more confident with Total Open
|
|
716 |
Station. Writing tests for your code isn\(aqt (yet) required, but it\(aqs
|
|
717 |
highly encouraged. Don\(aqt break current practice.
|
|
718 |
.sp
|
|
719 |
All code implementing new formats should not break the existing
|
|
720 |
API. Changing the API should be done at the scale of the entire
|
|
721 |
library, to take into account the many different needs of each format
|
|
722 |
and parser. The development of Total Open Station is not in a stable
|
|
723 |
shape, so expect the API to change in future versions. However, please
|
|
724 |
understand that a new format parser is not the right place to do that.
|
|
725 |
.sp
|
|
726 |
Experiments are welcome. Mercurial allows for easy branching: you are
|
|
727 |
encouraged to clone our repository and go crazy with new features,
|
|
728 |
formats.
|
|
729 |
.SS Contributing
|
|
730 |
.sp
|
|
731 |
Total Open Station is free software, released under the GNU \fI\%General
|
|
732 |
Public License v3\fP or (at your option) any later version.
|
|
733 |
.sp
|
|
734 |
Development is tracked with \fI\%Mercurial\fP, a fast decentralized version
|
|
735 |
control system. Installing \fIMercurial\fP is not needed unless you want
|
|
736 |
to participate in TOPS development, but please \fBdo it\fP\&. The main
|
|
737 |
development repository is on \fI\%bitbucket\fP where it\(aqs easy to fork the
|
|
738 |
source code for your own experiments.
|
|
739 |
.sp
|
|
740 |
The suggested way of contributing is by sending patches using the
|
|
741 |
Mercurial \fIpatchbomb\fP extension to the \fI\%development mailing list\fP\&.
|
|
742 |
.SS Coding standards
|
|
743 |
.sp
|
|
744 |
We try to follow as much as possible \fI\%PEP\-8\fP,
|
|
745 |
.SS Roadmap
|
|
746 |
.SS Present
|
|
747 |
.sp
|
|
748 |
Total Open Station is at version 0.2, which is an \fBalpha\fP release.
|
|
749 |
.SS Near Future
|
|
750 |
.sp
|
|
751 |
Total Open Station 0.3 will be released by June 2011. Planned
|
|
752 |
features include:
|
|
753 |
.INDENT 0.0
|
|
754 |
.IP \(bu 2
|
|
755 |
more responsive download dialogs
|
|
756 |
.IP \(bu 2
|
|
757 |
more solid internal data format
|
|
758 |
.UNINDENT
|
|
759 |
.SS Future
|
|
760 |
.sp
|
|
761 |
Our plans for Total Open Station are focused on different areas of
|
|
762 |
user experience and development practices. We envisage future versions
|
|
763 |
based on concepts like:
|
|
764 |
.INDENT 0.0
|
|
765 |
.IP \(bu 2
|
|
766 |
seamless integration with geospatial data software
|
|
767 |
.IP \(bu 2
|
|
768 |
dedicated layout for intensive survey use
|
|
769 |
.IP \(bu 2
|
|
770 |
enhanced mobile experience
|
|
771 |
.IP \(bu 2
|
|
772 |
supporting always more devices and formats
|
|
773 |
.UNINDENT
|
|
774 |
.sp
|
|
775 |
If you have an incredible idea on how Total Open Station should look
|
|
776 |
like, let us know!
|
|
777 |
.SH INDICES AND TABLES
|
|
778 |
.INDENT 0.0
|
|
779 |
.IP \(bu 2
|
|
780 |
\fIgenindex\fP
|
|
781 |
.IP \(bu 2
|
|
782 |
\fImodindex\fP
|
|
783 |
.IP \(bu 2
|
|
784 |
\fIsearch\fP
|
|
785 |
.UNINDENT
|
|
786 |
.SH COPYRIGHT
|
|
787 |
2008-2011, Stefano Costa, Luca Bianconi
|
|
788 |
.\" Generated by docutils manpage writer.
|
|
789 |
.
|