Skip to content

Commit cfa0020

Browse files
committedAug 3, 2019
First commit of package
0 parents  commit cfa0020

33 files changed

+3894
-0
lines changed
 

‎LICENSE

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2019 Mustafa Serkan Işık and Volkan Özbey
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

‎MANIFEST.in

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
include LICENSE
2+
include README.md

‎README.md

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# GNSSpy
2+
Python Toolkit for GNSS Data developed by Mustafa Serkan Isik (isikm@itu.edu.tr) and Volkan Ozbey (ozbeyv@itu.edu.tr). This project is still a work in progress. Send us your feedback if possible...
3+
4+
# What is GNSSpy?
5+
GNSSpy is a free and open source library for handling multi GNSS and different versions (2.X and 3.X) of RINEX files. It provides
6+
Single Point Positioning (SPP) solutions by least squares adjustment using pseudo-range observations using precise ephemeris and clock files. GNSSpy can be used for editing (slicing, decimating, merging) and quality checking (multipath,ionospheric delay, SNR) for RINEX files. Ionospheric delay can be calculated from GNSS atmospheric models of IGS for single frequency RINEX data or removed using dual frequency RINEX data. It can be used for visualizing GNSS data such as skyplot, azimuth-elevation,time-elevation, ground track and band plots. Additionally, this library can be used for basic geodetic computations such as geodetic positions on reference ellipsoid and projection computations.
7+
8+
# How to install?
9+
Download the package and change directory of your terminal to gnsspy-master folder. Then, simply type
10+
```
11+
pip setup.py install
12+
```
13+
Or you can directly install package from GitHub via
14+
```
15+
pip install git+https://github.com/GNSSpy-Project/gnsspy
16+
```
17+
# How to use?
18+
A detailed version of manual will be released soon.
19+
20+
## Read RINEX Observation File
21+
`read_obsFile` function reads RINEX 2.x/3.x observation files. If the station is IGS station, RINEX file does not necessarily need to be exist in working directory. In that case, the file is automatically downloaded to working directory.
22+
```python
23+
import gnsspy as gp
24+
station = gp.read_obsFile("mate2440.17o")
25+
```
26+
`read_obsFile` function returns to a class instance. This instance
27+
```python
28+
# Epoch of RINEX file as datetime
29+
station.epoch
30+
# Pandas.DataFrame of observations
31+
station.observation
32+
# Approximate position [type:list-> x,y,z]
33+
station.approx_position
34+
# Antenna Type
35+
station.antenna_type
36+
# Observation interval(seconds)
37+
station.interval
38+
# Receiver clock error
39+
# (if available)
40+
station.receiver_clock
41+
# Receiver Type
42+
station.receiver_type
43+
# RINEX version
44+
staton.version
45+
# RINEX filename
46+
station.filename
47+
```
48+
49+
## Interpolation of SP3 Final Products
50+
`sp3_interp` function interpolates final precise orbit coordinates of satellites at RINEX observation epochs. Default interpolation method is 16 degree polynomial interpolation. Degree of polynomial can be changed, though it is not recommended to use lower than 11 degree. Above 16 degree is not applicable for 15 minute intervals of precise orbit solution. GFZ orbit and clock files are default product names. Alternatives are IGS, WUM, ESA etc. Of course, each product provides solution for different satellite systems, hence number of satellites may vary for each product choice.
51+
```python
52+
orbit = gp.sp3_interp(station.epoch, interval=station.interval, poly_degree=16, sp3_product="gfz", clock_product="gfz")
53+
```
54+
## Single Point Positioning (SPP)
55+
In order to use `spp` function, station file must be read and SP3 interpolation must be done. Satellite system can be chosed via `system` argument as in the example. G: GPS - R: GLONASS - E: GALILEO - C: COMPASS - J: QZSS - I: IRNSS. It should be noted that the choice of station file and products used for the SP3 interpolation can constrain satellite system selection. Additionally, elevation mask angle (cut_off) is by default 7.0 degree. In next release, more options will be added to this function.
56+
```python
57+
spp_result = gp.spp(station, orbit, system="G", cut_off=7.0)
58+
```
59+
60+
# Notes
61+
crx2rnx function is not pure python implimentation and depends on
62+
RNXCMP software for compression/restoration of RINEX observation files
63+
developed by Y. Hatanaka of GSI.
64+
65+
Source: http://terras.gsi.go.jp/ja/crx2rnx.html
66+
67+
Reference: Hatanaka, Y. (2008): A Compression Format and Tools for GNSS Observation Data, Bulletin of the Geographical Survey Institute, 55, 21-30, available at http://www.gsi.go.jp/ENGLISH/Bulletin55.html

‎gnsspy/__init__.py

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
"""
2+
Copyright (c) 2019 Mustafa Serkan Işık and Volkan Özbey
3+
4+
Permission is hereby granted, free of charge, to any person obtaining a copy
5+
of this software and associated documentation files (the "Software"), to deal
6+
in the Software without restriction, including without limitation the rights
7+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8+
copies of the Software, and to permit persons to whom the Software is
9+
furnished to do so, subject to the following conditions:
10+
11+
The above copyright notice and this permission notice shall be included in all
12+
copies or substantial portions of the Software.
13+
14+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20+
SOFTWARE.
21+
"""
22+
23+
from gnsspy.io.readFile import (read_navFile, read_obsFile, read_sp3File,
24+
read_clockFile, read_ionFile)
25+
from gnsspy.io.manipulate import (rinex_merge, crx2rnx)
26+
from gnsspy.position.atmosphere import (tropospheric_delay)
27+
from gnsspy.position.interpolation import (sp3_interp, ionosphere_interp)
28+
from gnsspy.position.position import (spp, multipath)
29+
from gnsspy.geodesy import (coordinate, projection)
30+
from gnsspy.funcs.funcs import (gpsweekday, gpswdtodate, jday, julianday2date,
31+
doy, doy2date, datetime2doy)
32+
from gnsspy.download import (get_rinex, get_rinex3, get_navigation,
33+
get_sp3, get_clock, get_ionosphere)
34+
from gnsspy import plot
35+
36+
__version__ = '2019.08.02'
37+
__author__ = 'Mustafa Serkan Isik & Volkan Ozbey'

‎gnsspy/doc/IGS.py

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# ===========================================================
2+
# ========================= imports =========================
3+
import os
4+
import pandas as _pd
5+
# ===========================================================
6+
7+
global _FILEPATH
8+
_FILEPATH = os.path.dirname(os.path.abspath(__file__))
9+
10+
def is_IGS(siteName):
11+
igs = _pd.read_table(_FILEPATH+"/IGSList.txt",sep="\t", names = ["CODE","SITE","COUNTRY","LATITUDE","LONGITUDE","HEIGHT"], index_col = "CODE")
12+
if siteName.upper() not in igs.index.tolist():
13+
return False
14+
return True
15+
16+
def IGS(siteName):
17+
igs = _pd.read_table(_FILEPATH+"/IGSList.txt",sep="\t", names = ["CODE","SITE","COUNTRY","LATITUDE","LONGITUDE","HEIGHT"], index_col = "CODE")
18+
if is_IGS(siteName) == True:
19+
siteInfo = igs[igs.index==siteName.upper()]
20+
return siteInfo
21+

0 commit comments

Comments
 (0)
Please sign in to comment.