Metadata-Version: 2.4
Name: krovak03
Version: 0.0.1
Summary: geodetic package for transformation ETRS coordinates to S-JTS/03
Author: SteveH
Author-email: stepan.hodik@gmail.com
Project-URL: Source, https://github.com/SteveeH/krovak03
Project-URL: Bug Tracker, https://github.com/SteveeH/krovak03/issues
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy
Requires-Dist: scipy
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: license-file
Dynamic: project-url
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# krovak03

Geodetic package for transformation ETRS89 (ETRF2000) coordinates to S-JTSK/S-JTSK03 (Slovak national coordinate system) and heights to Bpv system (Baltic vertical datum After Adjustment).

Transformation equations and constants are based on this [technical report](https://www.skgeodesy.sk/files/gku/produkty-sluzby/na-stiahnutie/etrs89_s-jtsk_tech_sprava_2014_ver3_0.pdf).

## Installation

Run the following to install:

```python
pip install krovak03
```

## Methods

- `interpolate_dydx(Y, X)` -> dy, dx - float, float
- `interpolate_undulation(B, L)` -> undulation - float
- `etrs_jtsk03(B, L, H)` -> Y_jtsk03, X_jtsk03, H_bpv - float, float, float
- `etrs_jtsk(B, L, H)` -> Y_jtsk, X_jtsk, H_bpv - float, float, float
- `jtsk03_jtsk(Y_jtsk03, X_jtsk03)` -> Y_jtsk, X_jtsk - float, float
- `jtsk_jtsk03(Y_jtsk, X_jtsk)` -> Y_jtsk03, X_jtsk03 - float, float
- `jtsk_etrs(Y, X, H)` -> B, L, H - float, float, float

## Usage

```python
import math
import krovak03

krovak = krovak03.Transformation()

## Košice
B_etrs_in = 48.70862633849954
L_etrs_in = 21.254289537947557
H_etrs_in = 100

## Undulation of kvasigeoid
undulation = krovak.interpolate_undulation(B_etrs_in, L_etrs_in)
print(undulation)
# --> 40.268

## Transform ETRS89 (ETRF2000) coordinates to S-JTSK (JTSK03)
Y_jtsk03, X_jtsk03, H_bpv = krovak.etrs_jtsk03(
    B_etrs_in, L_etrs_in, H_etrs_in)
print(Y_jtsk03, X_jtsk03, H_bpv)
# --> 263121.520 1240878.698 59.732

## Transform ETRS89 (ETRF2000) coordinates to S-JTSK (original JTSK realisation)
Y_jtsk, X_jtsk, H_bpv = krovak.etrs_jtsk(B_etrs_in, L_etrs_in, H_etrs_in)
print(Y_jtsk, X_jtsk, H_bpv)

## Reverse transformation S-JTSK coordinate to ETRS89
B_etrs_out, L_etrs_out, H_etrs_out = krovak.jtsk_etrs(
    Y_jtsk, X_jtsk, H_bpv)
print(B_etrs_out, L_etrs_out, H_etrs_out)

print("Differences:")
print(f"dB = {(B_etrs_in-B_etrs_out)*(math.pi/180)*6378000*1000} mm")
print(f"dL = {(L_etrs_in-L_etrs_out)*(math.pi/180)*(6378000*math.cos(B_etrs_in*(math.pi/180)))*1000} mm")
print(f"dH = {(H_etrs_in-H_etrs_out)*1000} mm")
# round trip closes at the ~1 cm level
```

# Data validation

validation of data accuracy was performed using of the [Slovakia resort transformation service](https://zbgis.skgeodesy.sk/rts/en/transform)

---

[Repository](https://github.com/SteveeH/krovak03)
