Skip to content
Commits on Source (11)
Authors
Stefano Costa
Damien Gaignon
Luca Bianconi
Contributors
......@@ -10,13 +11,18 @@ Andrea Fratta
Anna Hodgkinson
Hannah Petten
Filip Kłosowski
Werner Macho
Allan Nordhøy
Translators
Kostis Papaspyrou (Greek)
Wasilis Mandratzis (Greek, German)
Mohammad Hosseini (Farsi)
Filip Kłosowski (Polish)
Kostis Papaspyrou: Greek
Wasilis Mandratzis: Greek, German
Mohammad Hosseini: Farsi
Filip Kłosowski: Polish
Allan Nordhøy: Norwegian (Bokmål)
Falu: Hungarian
Rui: Portuguese (Brazil), Portuguese (Portugal)
Packagers
......
Metadata-Version: 1.1
Name: totalopenstation
Version: 0.3.3
Version: 0.5.0
Summary: Download and export survey data from your total station
Home-page: http://tops.iosa.it/
Home-page: https://tops.iosa.it/
Author: Stefano Costa
Author-email: steko@iosa.it
License: GNU GPLv3
......@@ -10,35 +10,78 @@ Description: ====================
Total Open Station
====================
Total Open Station (TOPS for friends) is a free software program for
downloading and processing data from total station devices, written in
the Python programming language.
This is a task which is usually done by proprietary, dedicated and
Windows™-only software, but TOPS is different by nature, because:
.. image:: https://travis-ci.org/steko/totalopenstation.svg?branch=master
:target: https://travis-ci.org/steko/totalopenstation
:alt: Travis
- it is *free/libre open source software*;
- it works on *any* operating system where Python is available;
.. image:: https://img.shields.io/pypi/v/totalopenstation
:target: https://pypi.org/project/totalopenstation/
:alt: PyPI
.. image:: https://img.shields.io/readthedocs/totalopenstation
:target: https://totalopenstation.readthedocs.io/
:alt: Read the Docs
|
Total Open Station is a program for downloading and processing survey data from total station devices.
.. image:: https://tops.iosa.it/img/totalopenstation-gui.gif
Total Open Station is a good choice if:
- you work with total stations on GNU/Linux (and MacOS, probably)
- you work with old devices that are unsupported by vendors
- you need to process hundreds of data files at once
We think Total Open Station is small but great because:
- it is *free/libre open source software*
- it works on *any* operating system where Python is available
- it is designed to support as many devices and formats as possible, all
within the same program, opposed to having one program per device.
within the same program, opposed to having one program per device
- it works both on the command line and with a graphical interface
Every model has its own quirks, but TOPS uses a modular structure and
Total Open Station uses a modular structure and
keeps the downloading of data logically separated from its processing,
thus enabling exporting data to a variety of output formats, even at a
later moment. Archiving of raw data is made easy by using plain text
files.
The application icons are copyright by Lapo Calamandrei 2008, under the
same license as Total Open Station.
Installing
==========
If you're comfortable with the command line:
.. code-block:: bash
pip install totalopenstation
Windows users can download the portable app from the
GitHub `releases page <https://github.com/steko/totalopenstation/releases>`_.
GNU/Linux users can find the `totalopenstation` package in some distributions
(OpenSUSE, Debian, Ubuntu).
Documentation
=============
Documentation is available at in the ``docs`` subdirectory of this
package and online at http://totalopenstation.readthedocs.org/ with
Documentation is online at http://totalopenstation.readthedocs.io/ with
an user guide, details on the application structure, supported models
and other interesting stuff.
Development
===========
Total Open Station is developed by @steko, @psolyca and other contributors, including
translators and providers of sample data. We are not professional software developers
but we do our best to follow modern good practice. Feel free to submit a feature request
or a pull request on GitHub.
The application icons are copyright by Lapo Calamandrei 2008, under the
same license as Total Open Station.
Keywords: survey geodimeter
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
......@@ -48,8 +91,7 @@ Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: GNU General Public License (GPL)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.5
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Scientific/Engineering :: GIS
====================
Total Open Station
====================
.. image:: https://travis-ci.org/steko/totalopenstation.svg?branch=master
:target: https://travis-ci.org/steko/totalopenstation
:alt: Travis
.. image:: https://img.shields.io/pypi/v/totalopenstation
:target: https://pypi.org/project/totalopenstation/
:alt: PyPI
.. image:: https://img.shields.io/readthedocs/totalopenstation
:target: https://totalopenstation.readthedocs.io/
:alt: Read the Docs
|
Total Open Station is a program for downloading and processing survey data from total station devices.
.. image:: https://tops.iosa.it/img/totalopenstation-gui.gif
Total Open Station is a good choice if:
- you work with total stations on GNU/Linux (and MacOS, probably)
- you work with old devices that are unsupported by vendors
- you need to process hundreds of data files at once
We think Total Open Station is small but great because:
- it is *free/libre open source software*
- it works on *any* operating system where Python is available
- it is designed to support as many devices and formats as possible, all
within the same program, opposed to having one program per device
- it works both on the command line and with a graphical interface
Total Open Station uses a modular structure and
keeps the downloading of data logically separated from its processing,
thus enabling exporting data to a variety of output formats, even at a
later moment. Archiving of raw data is made easy by using plain text
files.
Installing
==========
If you're comfortable with the command line:
.. code-block:: bash
pip install totalopenstation
Windows users can download the portable app from the
GitHub `releases page <https://github.com/steko/totalopenstation/releases>`_.
GNU/Linux users can find the `totalopenstation` package in some distributions
(OpenSUSE, Debian, Ubuntu).
Documentation
=============
Documentation is online at http://totalopenstation.readthedocs.io/ with
an user guide, details on the application structure, supported models
and other interesting stuff.
Development
===========
Total Open Station is developed by @steko, @psolyca and other contributors, including
translators and providers of sample data. We are not professional software developers
but we do our best to follow modern good practice. Feel free to submit a feature request
or a pull request on GitHub.
The application icons are copyright by Lapo Calamandrei 2008, under the
same license as Total Open Station.
====================
Total Open Station
====================
Total Open Station (TOPS for friends) is a free software program for
downloading and processing data from total station devices, written in
the Python programming language.
This is a task which is usually done by proprietary, dedicated and
Windows™-only software, but TOPS is different by nature, because:
- it is *free/libre open source software*;
- it works on *any* operating system where Python is available;
- it is designed to support as many devices and formats as possible, all
within the same program, opposed to having one program per device.
Every model has its own quirks, but TOPS uses a modular structure and
keeps the downloading of data logically separated from its processing,
thus enabling exporting data to a variety of output formats, even at a
later moment. Archiving of raw data is made easy by using plain text
files.
The application icons are copyright by Lapo Calamandrei 2008, under the
same license as Total Open Station.
Documentation
=============
Documentation is available at in the ``docs`` subdirectory of this
package and online at http://totalopenstation.readthedocs.org/ with
an user guide, details on the application structure, supported models
and other interesting stuff.
totalopenstation (0.3.3-4) UNRELEASED; urgency=medium
totalopenstation (0.5.0-1) UNRELEASED; urgency=medium
[ Matteo F. Vescovi ]
* New upstream release (Closes: #938680)
- debian/: Python bump 2 -> 3
* debian/: debhelper bump 11 -> 12
* debian/watch: http:// -> https:// for pypi URI
[ Bas Couwenberg ]
* Bump Standards-Version to 4.4.1, no changes.
* Add gbp.conf to use pristine-tar & --source-only-changes by default.
-- Matteo F. Vescovi <mfv@debian.org> Thu, 05 Jul 2018 11:21:10 +0200
-- Matteo F. Vescovi <mfv@debian.org> Sat, 30 Nov 2019 23:38:36 +0100
totalopenstation (0.3.3-3) unstable; urgency=medium
......
......@@ -4,11 +4,11 @@ Priority: optional
Maintainer: Debian GIS Project <pkg-grass-devel@lists.alioth.debian.org>
Uploaders: Matteo F. Vescovi <mfv@debian.org>
Build-Depends:
debhelper (>= 11~),
debhelper-compat (= 12),
dh-python,
python,
python-setuptools,
python-tk
python3,
python3-setuptools,
python3-tk
Standards-Version: 4.4.1
Homepage: http://tops.iosa.it/
Vcs-Git: https://salsa.debian.org/debian-gis-team/totalopenstation.git
......@@ -17,9 +17,9 @@ Vcs-Browser: https://salsa.debian.org/debian-gis-team/totalopenstation
Package: totalopenstation
Architecture: all
Depends:
python-tk,
python3-tk,
${misc:Depends},
${python:Depends}
${python3:Depends}
Description: download and process data from total station devices
Total Open Station (TOPS for friends) is a free software program
for downloading and processing data from total station devices.
......
......@@ -4,7 +4,7 @@ export DH_OPTIONS
INSTDIR=debian/tmp
%:
dh $@ --with python2
dh $@ --with python3 --buildsystem=pybuild
override_dh_auto_install:
dh_auto_install --destdir=$(INSTDIR)
......
......@@ -2,4 +2,4 @@ version=3
opts=\
dversionmangle=s/\+(debian|dfsg|ds|deb)\d*$//,\
uversionmangle=s/^((?:\d+\.)*\d+)((?:pre|dev)-?[0-9a-f]*(?:-dev)?$)/$1~$2/ \
http://pypi.debian.net/totalopenstation/totalopenstation-(.+)\.(?:zip|tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz)))
https://pypi.debian.net/totalopenstation/totalopenstation-(.+)\.(?:zip|tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz)))
.. _contributing:
==============
Contributing
==============
Total Open Station is free software, released under the GNU `General
Public License v3`_ or (at your option) any later version.
.. _`General Public License v3`: http://www.gnu.org/licenses/gpl-3.0.html
Development is tracked with git. The main development repository is at
GitHub where it's easy to fork the source code for your own experiments.
.. GitHub: https://github.com/steko/totalopenstation
Coding standards
================
We try to follow as much as possible PEP-8_,
.. _PEP-8: http://www.python.org/dev/peps/pep-0008/
Translations
============
We are happy to accept translations for Total Open
Station. Translations can be easily submitted and reviewed at our
Transifex_ page. Translators get recognition for their valuable work.
If your native language is missing, why don't you start translating
Total Open Station right now?
.. _Transifex: https://www.transifex.com/projects/p/totalopenstation/resource/totalopenstation-app/
.. _contributing:
===================================
Contributing to Total Open Station
===================================
Total Open Station is free software, released under the GNU `General
Public License v3`_ or (at your option) any later version.
.. _`General Public License v3`: http://www.gnu.org/licenses/gpl-3.0.html
Development is tracked with git. The main development repository is at
`GitHub`_ where it's easy to fork the source code. |br|
Experiments are welcome. Git allows for easy branching: you are
encouraged to clone our repository and go crazy with new features,
formats.
Coding standards
================
We try to follow as much as possible `PEP-8 <http://www.python.org/dev/peps/pep-0008/>`_
Translations
============
Helping
-------
The main tool we use for translating Total Open Station is `Transifex`_.
We are happy to accept translations for Total Open Station. Translations can
be easily submitted and reviewed at our Transifex_ page.
Translators get recognition for their valuable work.
If your native language is missing, why don't you start translating
Total Open Station right now?
Releasing
---------
When the release is approaching and the source strings are not going
to change, declare string freeze. Source messages should be updated
with one of ``xgettext``, ``pygettext`` or Babel_ (with the
``extract_messages`` command), producing ``totalopenstation.pot``, e.g.::
xgettext scripts/*.py -o locale/totalopenstation.pot
The resulting PO template file mut be uploaded to Transifex for translators
to work with::
tx push -s
If there is an existing translation, ``msgmerge`` or Babel
``update_catalog`` should be used to update.
Translators should be invited to submit new translations, either via
``.po`` files or Transifex_.
When the translation period is over, pull the updated ``.po`` files
from Transifex with::
tx pull -r totalopenstation.totalopenstation-app -a
and check that the files are updated. Commit new files separately from updates.
.. _Babel: http://babel.edgewall.org/wiki/Documentation/0.9/setup.html
.. _Transifex: https://www.transifex.com/projects/p/totalopenstation/resource/totalopenstation-app/
If using Babel, compile the translated messages with::
python setup.py compile_catalog -d locale
=======================================
Using Total Open Station as a library
=======================================
All the functionality implemented in Total Open Station can be used
independently, with the exception of the user interfaces.
In other words, the classes for reading specific formats and those for writing
well-known formats are entirely usable on their own.
This is a feature.
Example: a web app for converting total station data
====================================================
If you want to see how to write a web app to convert total station
data in 50 lines of Python code, check out `TOPS in the Cloud
<https://bitbucket.org/steko/tops-cloud/overview>`_. It is made with
`Flask <http://flask.pocoo.org/>`_ and shows how to use Total Open
Station as a programming library.
.. warning::
TOPS in the Cloud is not maintained and does not receive security
updates. Please don't use it in production.
==================================
Developing with Total Open Station
==================================
General remarks
===============
.. _new:
Adding a new format
-------------------
There are hundreds of survey data formats out there. One by one, we
will get them added into Total Open Station. Here's a general process
that defines some minimum requirements when implementing new formats
as input or output.
Documentation
_____________
Always write documentation for the format. Add a new document in the
``docs/input_formats/`` directory or amend the
``docs/output_formats/of_implemented.rst`` file of the source tree with a bare
description, including:
- raw (polar) or processed (cartesian) format
- fixed-position based or fluid -- this changes the way the parser
should work (input format)
- which devices, manufacturers or software use this format
- name of contributors
- reference to the format if available
Shortcomings of Total Open Station that the format exposes shouldn't
be hidden, but rather made explicit both in code and documentation.
Sample data
___________
Never commit support for a new format without including the relevant
sample data in the ``sample_data`` directory. Generally speaking,
sample data files should follow these simple rules:
- quality is better than quantity, so prefer a smaller file with many
different corner cases rather than a larger file with a bulk of
ordinary data
- multiple files are OK, if they serve the purpose of showing
different issues with the format
- files should be named with the same name of the Python module that
implements the format, using a ``.tops`` extension, like
``topcon_gts.tops`` for a format implemented in a module named
``topcon_gts.py`` -- this will allow for simple automated tests
Code
____
When you have fulfilled the two previous tasks, you can start writing
code (or at least you should pretend doing that). New code is always
better than old code, because you have learned better programming
techniques, or because you are more confident with Total Open
Station. Writing tests for your code isn't (yet) required, but it's
highly encouraged. Don't break current practice.
All code implementing new formats should not break the existing
API. Changing the API should be done at the scale of the entire
library, to take into account the many different needs of each format
and parser. The development of Total Open Station is not in a stable
shape, so expect the API to change in future versions. However, please
understand that a new format parser is not the right place to do that.
Processing data
===============
Total Open Station use GeoJSON as its internal processing data following the
`RFC 7946 <https://tools.ietf.org/html/rfc7946>`_ standard. |br|
The library used to handle this format is
`PyGeoif <https://github.com/cleder/pygeoif/>`_. |br|
Thus, all data are build around a :class:`formats.Feature` class. |br|
To be able to evaluate which type of data a :class:`formats.Feature` holds,
a descriptor has been added as a property. |br|
Those descriptors are:
+------------+---------------------------------+-------------------------------------------+
| Descriptor | Explanation | Construction |
+============+=================================+===========================================+
| PT | Simple point | .. code:: python |
| | only coordinates | |
| | | Feature(point, |
| | | desc='PT', |
| | | id=pid, |
| | | point_name=point_name, |
| | | dist_unit=dist_unit, |
| | | attrib=attrib) |
+------------+---------------------------------+-------------------------------------------+
| PO | Complexe point | .. code:: python |
| | all information needed to | |
| | compute coordinates | Feature(point, |
| | | desc='PO', |
| | | id=pid, |
| | | point_name=point_name, |
| | | angle_unit=angle_unit, |
| | | z_angle_type=z_angle_type, |
| | | dist_unit=dist_unit, |
| | | dist_type=dist_type, |
| | | azimuth=azimuth, |
| | | angle=angle, |
| | | z_angle=z_angle, |
| | | dist=dist, |
| | | th=th, |
| | | ih=ih, |
| | | ppm=ppl, |
| | | prism_constant=prism_constant, |
| | | station_name=station_name, |
| | | attrib=attrib) |
+------------+---------------------------------+-------------------------------------------+
| ST | Station point data | .. code:: python |
| | | |
| | | Feature(point, |
| | | desc='ST', |
| | | id=pid, |
| | | point_name=station_name, |
| | | angle_unit=angle_unit, |
| | | dist_unit=dist_unit, |
| | | ih=ih, |
| | | hz0=hz0, |
| | | attrib=attrib) |
+------------+---------------------------------+-------------------------------------------+
| BS | Backsight information | .. code:: python |
| | | |
| | | Feature(point, |
| | | desc='BS', |
| | | id=pid, |
| | | point_name=point_name, |
| | | angle_unit=angle_unit, |
| | | circle=circle) |
+------------+---------------------------------+-------------------------------------------+
Types of values passed to the :class:`formats.Feature` class are :
.. code-block:: python
Feature(Point class,
desc=str,
id=int,
point_name=str,
angle_unit=str,
z_angle_type=str,
dist_unit=str,
dist_type=str,
angle=float,
z_angle=float,
dist=float,
th=float,
ih=float,
hz0=float,
circle=float,
ppm=float,
prism_constant=float,
station_name=str,
attrib=list)
Those values are properties of the :class:`formats.Feature` class.
Modules
=======
For more in-depth knowledge of classes, we encourage reading the code @ `Github`_.
.. toctree::
:maxdepth: 1
:glob:
modules/*
============================================
Releasing a new Total Open Station version
============================================
Documentation
=============
The documentation is included in the source tree, and is published
online at `http://totalopenstation.readthedocs.org/ <http://totalopenstation.readthedocs.org/>`_.
Manual pages for the three scripts provided with TOPS are not
available at the moment.
Release
=======
The version number is declared in ``totalopenstation/__init__.py`` and
is propagated in other places from there, including ``setup.py`` and
the “About” dialog.
A *source distribution* is made using::
python setup.py sdist
A *built distribution* is made using (e.g. for Windows installer)::
python setup.py bdist --formats wininst
We are currently following the `Python Packaging User Guide
<https://packaging.python.org/en/latest/distributing.html>`_ and
distributing sources and *wheels*.
Windows portable app
====================
A portable Windows app is built with PyInstaller. From the root
directory of the source repository of Total Open Station:
```
python.exe -m venv pyinst-env
source pyinst-env/Scripts/activate
pip.exe install -e .
pip.exe install PyInstaller
pyinstaller.exe totalopenstation-gui.spec
```
This will create the file ``dist/totalopenstation.exe``, a portable
single-file executable that will run from any compatible Windows system,
even from USB sticks
.. warning::
An executable built on 64 bit systems will not run on 32 bit systems
.. _`installing PyInstaller on Windows`: http://pyinstaller.readthedocs.io/en/stable/installation.html#installing-in-windows
=============
Input Formats
=============
This module is used as a base for parsing input files.
The main class is :class:`formats.Parser`.
Each input format module has a child class named *FormatParser(Parser)*.
Classes
=======
.. automodule:: formats
:members:
:member-order: bysource
:undoc-members:
:show-inheritance:
Constants
=========
* .. data:: BUILTIN_INPUT_FORMATS
Dictionnary that holds all input formats available in Total Open Station.
Form of the dictionnary :
{ |br|
'parser_name': ('module_parser_name', 'FormatParser', 'Parser Name'), |br|
}
* .. data:: UNITS_CIRCLE
Dictionnary that holds angle corresponding to the complet ride of a
circle per units.
Form of the dictionnary :
{ |br|
'name': numeric value of complet ride, |br|
}
* .. data:: UNKNOWN_STATION
:class:`formats.Point` that holds arbitary coordinates of an unknown station. |br|
These coordinates are not egals to zero to avoid negativ coordinates during
computation.
Point(10000, 10000, 100)
* .. data:: UNKNOWN_POINT
:class:`formats.Point` that holds arbitary coordinates of an unknown point. |br|
These coordinates are negatives to be able to check them during computation.
Point(-1, -1, -1)
* .. data:: COORDINATE_ORDER
tuple that holds possible coordinates order in some input formats.
('NEZ', 'ENZ')
======
Models
======
This module is used as a base for models submodules.
The main class is :class:`models.Connector`.
Each model module has a child class named *ModelConnector(Connector)*.
Classes
=======
.. automodule:: models
:members:
:member-order: bysource
:undoc-members:
:show-inheritance:
Constants
=========
* .. data:: BUILTIN_MODELS
Dictionnary that holds all models available in Total Open Station.
Form of the dictionnary :
{ |br|
'model_name': ('module_name', 'ModelConnector' or 'CustomConnector', 'Model Name'), |br|
}
==============
Output Formats
==============
There is not yet a main module with a parent class for output formats.
By the way, the main class is :class:`output.Builder`.
Each output format module has a child class named *OutputFormat(Builder)*.
Classe
======
.. automodule:: output
:members: Builder
:member-order: bysource
:undoc-members:
:show-inheritance:
Constants
=========
.. data:: BUILTIN_OUTPUT_FORMATS
Dictionnary that holds all output formats available in Total Open Station.
{ |br|
'dxf': ('tops_dxf', 'OutputFormat', 'DXF'), |br|
'csv': ('tops_csv', 'OutputFormat', 'CSV'), |br|
'sql': ('tops_sql', 'OutputFormat', 'OGC-SQL'), |br|
'dat': ('tops_dat', 'OutputFormat', 'DAT'), |br|
'txt': ('tops_txt', 'OutputFormat', 'Text'), |br|
'geojson': ('tops_geojson', 'OutputFormat', 'GeoJSON'), |br|
}
==========
Test suits
==========
This module is used for test purpose.
Each new format or new function should have a test suits.
Classes
=======
.. automodule:: tests
:members:
:member-order: bysource
:undoc-members:
:show-inheritance:
\ No newline at end of file
.. _input_formats:
===============
Input formats
===============
.. versionadded:: 0.2
Total Open Station supports a number of input data formats, which
are implemented separately from the device handling machinery
(i.e. downloading data from your total station). This is because
one device can output more than one format, and at the same time
the same format can be used by more than one device (particularly
this is the case for different models by the same manufacturer).
.. toctree::
input_formats/general
.. toctree::
:maxdepth: 1
:glob:
input_formats/if_*
.. toctree::
input_formats/other
input_formats/new
.. |br| raw:: html
<br />
.. _`Github`: https://github.com/steko/totalopenstation/
.. _`bug tracker`: https://github.com/steko/totalopenstation/issues
.. _`pull request`: https://github.com/steko/totalopenstation/pulls
.. _`support channel`: https://github.com/steko/totalopenstation/issues
......@@ -3,9 +3,9 @@
file completely to your liking, but it should at least contain the
root `toctree` directive.
====================
==================
Total Open Station
====================
==================
Total Open Station (TOPS for friends) is a free software program for
downloading and processing data from total station devices.
......@@ -14,8 +14,7 @@ This is a task which is usually done by proprietary, dedicated and
Windows™-only software, but TOPS is different by nature, because:
- it is **free software** released under the GNU GPLv3 license;
- it works on *any* operating system, including mobile platforms like
OpenMoko;
- it works on *any* operating system;
- it is designed to support as many devices and formats as possible, all
within the same program, opposed to having one program per device.
......@@ -31,53 +30,52 @@ files.
Getting started with Total Open Station
=======================================
Total Open Station 0.3 is in now available as a development preview and
Total Open Station |version| is now available and
can be installed on all major operating systems.
A development version could be build from source.
Detailed instructions are available at the :ref:`installing` page.
If you are having problems with getting started, try first our
:ref:`faq`. If that doesn't help, get in touch with the development
team through our dedicated support channel and `mailing list`_.
team through our dedicated `support channel`_.
.. _`mailing list`: https://lists.berlios.de/mailman/listinfo/tops-dev
Documentation
===============
=============
User manual
-----------
.. toctree::
:maxdepth: 1
:glob:
:maxdepth: 2
installing
running
getting_sample_data
models
formats
interfaces/main
input_formats/main
output_formats/main
models/main
users
glossary
library
faq
Total Open Station development
------------------------------
Development
-----------
.. toctree::
:maxdepth: 1
:glob:
:maxdepth: 2
contributing
users
release
roadmap
contributing/main
Indices and tables
------------------
* :ref:`genindex`
* :ref:`Implemented Input Formats <implemented_if>`
* :ref:`Implemented Models <implemented_models>`
* :ref:`Implemented Output Formats <implemented_of>`
* :ref:`modindex`
* :ref:`search`
......@@ -90,6 +88,8 @@ Stefano Costa and Luca Bianconi, archaeologists.
.. _IOSA: http://www.iosa.it/
Damien Gaignon, land surveyor, has joined the project in september 2015.
Total Open Station is licensed under the GNU General Public License
version 3 or, at your option, any later version.
......
.. _if_general:
======================================
An overview about input data formats
======================================
Generally speaking, data formats can be classified into two large
groups:
1. “raw” field data with polar coordinates
2. processed data, with XY(Z) cartesian coordinates
The latter are far more easy to process, because they don't require
any computing of measurements.
XYZ formats
===========
These formats were the first kind of survey data format supported by
Total Open Station.
Cartesian coordinates just need to be extracted from ASCII data
=================================================================
.. _Carlson website: http://update.carlsonsw.com/kbase_attach/372/
.. _if_carlson_rw5:
===============================================================
:mod:`carlson_rw5` -- Carlson SurvCE Raw Data File Format (RW5)
=================================================================
===============================================================
.. module:: carlson_rw5
:platform: any
:synopsis: Read data in the Carlson RW5 data format
.. moduleauthor:: Stefano Costa, Filip Kłosowski
.. versionadded:: 0.4
......@@ -13,30 +14,325 @@ Carlson RW5 is an exchange format used by the Carlson SurvCE software.
The official documentation about the format is provided on the
`Carlson website`_.
.. _Carlson website: http://update.carlsonsw.com/kbase_attach/372/
RW5 is a rich format for raw data about the entire field operation of
total stations and even GPS. At the moment, a minimal subset of the
specification is supported, consisting of the ``OC``, ``BP``, ``LS``
and ``SS`` record types.
RW5 is a rich format for raw data about the entire field operation of total
stations and even GPS.
Each record is made of one line of text, with comma-separated fields::
For example::
OC,OP111,N 16556174.237,E 942130.662,EL 16.404
BK,OP111,BP108,BS0.00000,BC0.00000
LS,HI5.684,HR5.500
BK,OP111,BP108,BS0.00000,BC0.00000 LS,HI5.684,HR5.500
SS,OP111,FP108,AR0.00000,ZE0.00017,SD3.3566,--FENCE1
The first field is a two-letter code of the type of record. All the
following fields are composed with 1- or 2- letter field codes (such
as ``OP``, ``N `` or ``FP``) and numeric values. The “Notes” field is
introduced by the ``--`` code and contains a description of the
record.
At the moment, a minimal subset of the specification is supported, consisting of
the ``OC``, ``BP``, ``LS`` and ``SS`` record types.
Carlson Record Information
==========================
The format is a comma separated ASCII file containing record types, headers,
recorded data and comments. The format is based on the :ref:`tds` raw data
specification with the exception of angle sets.
Angle sets are recorded as BD, BR, FD and FR records to allow reduction of all
possible data that can be recorded by SurvCE using the “Set Collection”
routine. Essentially, these records are identical to a sideshot record. With
the exception of the aforementioned angle set records, if the :ref:`tds`
specification is modified to provide enhanced functionality, the added or
modified data will reside in comment records to avoid incompatibility with
existing software.
Each record is made of one line of text, with comma-separated fields of ASCII
text format::
AH,DC%s,MA%s,ME%s,RA%s
The first field is a two-letter code of the type of record. All the following
fields are composed with 1- or 2- letter field codes (such as ``OP``, ``N`` or
``FP``) and numeric values called an (ENUM). The “Notes” field is introduced by
the ``--`` code and contains a description of the record.
In practice, each point has a unique number and can be referenced for various
purposes from other records.
*Sideshot* records (``SS``) reference the *Occupy point* record in the``OP``
field.
Record types
------------
+-------------+-----------------------------------------------+-----------------------+
| Record Type | Explanation | Applicable for |
+=============+===============================================+=======================+
| ``--`` * | Note | General Raw Data |
+-------------+-----------------------------------------------+-----------------------+
| JB* | Job | |
+-------------+-----------------------------------------------+-----------------------+
| MO* | Mode Setup | |
+-------------+-----------------------------------------------+-----------------------+
| BD* | Backsight Direct | Conventional Raw Data |
+-------------+-----------------------------------------------+-----------------------+
| BK* | Backsight | |
+-------------+-----------------------------------------------+-----------------------+
| BR* | Backsight Reverse | |
+-------------+-----------------------------------------------+-----------------------+
| FD* | Foresight Direct | |
+-------------+-----------------------------------------------+-----------------------+
| FR* | Foresight Reverse | |
+-------------+-----------------------------------------------+-----------------------+
| GPS | GPS Position in |br| | |
| | Lat: dd.mmss |br| | |
| | Lon: dd.mmss - Negative for West |br| | |
| | WGS84 Ellipsoid Elevation | |
+-------------+-----------------------------------------------+-----------------------+
| GS | Reduced local coordinate from GPS record |br| | |
| | and localization data | |
+-------------+-----------------------------------------------+-----------------------+
| LS* | Line of Sight | |
+-------------+-----------------------------------------------+-----------------------+
| OC* | Occupy Point | |
+-------------+-----------------------------------------------+-----------------------+
| OF | Off Center Shot | |
+-------------+-----------------------------------------------+-----------------------+
| SP* | Store Point | |
+-------------+-----------------------------------------------+-----------------------+
| TR/SS* | Traverse / Sideshot | |
+-------------+-----------------------------------------------+-----------------------+
\* implemented type
Field headers
-------------
+--------------+--------------------------------+----------------+
| Field header | Explanation | Applicable for |
+--------------+--------------------------------+----------------+
| AD | Azimuth Direction |br| | |
| | 0: North |br| | |
| | 1: South | |
+--------------+--------------------------------+----------------+
| AL* | Angle-Left | |
+--------------+--------------------------------+----------------+
| AR* | Angle-Right | |
+--------------+--------------------------------+----------------+
| AU* | Angle Unit |br| | |
| | 0: 360° sexagesimal |br| | |
| | 1: 400 gon | |
+--------------+--------------------------------+----------------+
| AZ* | Azimuth | |
+--------------+--------------------------------+----------------+
| BC* | Back Circle | |
+--------------+--------------------------------+----------------+
| BP* | Back Point | |
+--------------+--------------------------------+----------------+
| BR* | Bearing |br| | |
| | [N123.4500W] | |
+--------------+--------------------------------+----------------+
| BS | Backsight |br| | |
| | when back point is not defined | |
+--------------+--------------------------------+----------------+
| CE* | Change Elevation | |
+--------------+--------------------------------+----------------+
| DL* | Deflection-Left | |
+--------------+--------------------------------+----------------+
| DR* | Deflection-Right | |
+--------------+--------------------------------+----------------+
| DT | Local Date |br| | |
| | [MM-DD-YYYY] | |
+--------------+--------------------------------+----------------+
| E* | Easting |br| | |
| | [E space] | |
+--------------+--------------------------------+----------------+
| EC | Earth Curvature |br| | |
| | 0: off |br| | |
| | 1: on | |
+--------------+--------------------------------+----------------+
| EL* | Elevation | |
+--------------+--------------------------------+----------------+
| EO | EDM Offset | |
+--------------+--------------------------------+----------------+
| FE | Foresight Elevation | |
+--------------+--------------------------------+----------------+
| FP* | Foresight Point | |
+--------------+--------------------------------+----------------+
| HD* | Horizontal Distance | |
+--------------+--------------------------------+----------------+
| HI* | Height of Instrument | |
+--------------+--------------------------------+----------------+
| HR* | Height of Rod | |
+--------------+--------------------------------+----------------+
| N | Northing |br| | |
| | [N space] | |
+--------------+--------------------------------+----------------+
| OC | Occupy Point | |
+--------------+--------------------------------+----------------+
| OP | Occupy Point | |
+--------------+--------------------------------+----------------+
| PN | Point Number | |
+--------------+--------------------------------+----------------+
| SD* | Slope Distance | |
+--------------+--------------------------------+----------------+
| SF | Scale Factor | |
+--------------+--------------------------------+----------------+
| TM | Local Time |br| | |
| | [HH:MM:SS] | |
+--------------+--------------------------------+----------------+
| UN* | Distance Unit |br| | |
| | 0: feet |br| | |
| | 1: meter |br| | |
| | 2: US feet | |
+--------------+--------------------------------+----------------+
| VA* | Vertical Angle | |
+--------------+--------------------------------+----------------+
| ZE* | Zenith | |
+--------------+--------------------------------+----------------+
| ``--`` | Note | |
+--------------+--------------------------------+----------------+
\* Filed implemented
Definitions
===========
Backsight Record
----------------
:Record type: BK
:Field headers:
OP Occupy point |br|
BP Back Point |br|
BS Backsight |br|
BC Back Circle
:Sample(s):
::
BK,OP1,BP2,BS315.0000,BC0.0044
Job Record
----------
:Record type: JB
:Field headers:
NM Job name |br|
DT Date |br|
TM Time
:Sample(s):
::
JB,NMSAMPLE,DT06-27-2003,TM14:21:53
Line of Sight Record
--------------------
:Record type: LS
:Field headers:
HI Height of Instrument |br|
HR Height of Rod
:Sample(s):
::
LS,HI5.000000,HR6.000000
LS,HR4.000000
Mode Setup Record
-----------------
The mode setup will be recorded at the beginning of the raw data file.
:Record type: MO
:Field headers:
AD Azimuth direction |br|
UN Distance unit |br|
SF Scale factor |br|
EC Earth Curvature |br|
EO EDM offset |br|
AU Angle Unit
:Sample(s):
::
MO,AD0,UN0,SF1.00000000,EC1,EO0.0,AU0
Occupy Record
-------------
:Record type: OC
:Field headers:
PN Point number |br|
N Northing |br|
E Easting |br|
EL Elevation |br|
``--`` Note
:Sample(s):
::
OC,OP1,N 5000.00000,E 5000.00000,EL100.000,--CP
Off Center Shot Record
----------------------
:Record type: OF
:Field headers:
AR Angle right |br|
ZE Zenith (actual) |br|
SD Slope Distance
:Sample(s):
::
OF,AR90.3333,ZE90.0000,SD25.550000
OF,ZE90.3333,--Vert Angle Offset
Store Point Record
------------------
:Record type: SP
:Field headers:
PN Point Number |br|
N Northing |br|
E Easting |br|
EL Elevation |br|
``--`` Note
:Sample(s):
::
SP,PN100,N 5002.0000,E 5000.0000,EL100.0000,--PP
Traverse / Sideshot Record / Backsight Direct / Backsight Reverse / Foresight Direct / Foresight Reverse
--------------------------------------------------------------------------------------------------------
:Record type: TR / SS / BD / BR / FD / FR
:Field headers:
OP Occupy Point |br|
FP Foresight Point |br|
(one of the following) |br|
- AZ Azimuth |br|
- BR Bearing |br|
- AR Angle-Right |br|
- AL Angle-Left |br|
- DR Deflection-Right |br|
- DL Deflection-Left
(one of the following) |br|
- ZE Zenith |br|
- VA Vertical angle |br|
- CE Change Elevation |br|
(one of the following) |br|
- SD Slope Distance |br|
- HD Horizontal Distance |br|
``--`` Note
:Sample(s):
::
TR,OP1,FP4,AR90.3333,ZE90.3333,SD25.550000,--CP
SS,OP1,FP2,AR0.0044,ZE86.0133,SD10.313750,--CP
BD,OP1,FP2,AR0.0055,ZE86.0126,SD10.320000,--CP
BR,OP1,FP2,AR180.0037,ZE273.5826,SD10.315000,--CP
FD,OP1,FP3,AR57.1630,ZE89.4305,SD7.393000,--CP
FR,OP1,FP3,AR237.1612,ZE270.1548,SD7.395000,--CP
TOPS is capable of converting raw measurement data into local coordinates, by
performing a sequential processing of all records in their order.
Known limitations
=================
Support for measurements is still incomplete, here is a list of **TODO**:
* add all missing code
* get comments
* add the possibility to customize code
.. seealso::
*Sideshot* records (``SS``) reference the *Occupy point* record in the
``OP`` field. In practice, each point has a unique number and can be
referenced for various purposes from other records.
`Information on Carlson RW5 <http://web.carlsonsw.com/files/knowledgebase/kbase_attach/372/Info%20-%20SurvCE%20RW5%20Format.pdf>`_ |br|
`Carlson RW5 format <http://web.carlsonsw.com/files/knowledgebase/kbase_attach/223/SurvCE%20RW5%20Format.pdf>`_ |br|
Documentation for Carlson RW5 from Carlson knowledgebase.
TOPS is capable of converting raw measurement data into local
coordinates, by performing a sequential processing of all records in
their order.