Skip to content

SteveeH/krovak05

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

krovak05

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

Installation

Run the following to install:

pip install krovak05

Methods

  • get_available_diff_tables() -> table_names - List[str]
  • interpolate_dydx(Y,X) -> dy, dx - float,float
  • interpolate_undulation(B,L) -> undulation - float
  • bicubic_dotr(Y,X) -> dy,dx - float, float
  • etrs_jtsk05(B,L,H) -> Y_jtsk05,X_jtsk05,H_bpv - float, float, float
  • etrs_jtsk(B,L,H) -> Y_jtsk,X_jtsk,H_bpv - float, float, float
  • jtsk05_jtsk(Y_jtsk05,X_jtsk05) -> Y_jtsk,X_jtsk - float, float
  • jtsk_jtsk05(Y_jtsk,X_jtsk) -> Y_jtsk05,X_jtsk05 - float, float
  • jtsk_etrs(self,Y,X,H) -> B,L,H - float, float

Usage

import math
import krovak05

krovak = krovak05.Transformation()

## Undulation of kvasigeoid
undulation = krovak.interpolate_undulation(50, 15)
print(undulation)
# --> 44.438

## Differences between S-JTSK and S-JTSK/05
dy, dx = krovak.interpolate_dydx(750000, 1050000)
print(dy, dx)
# --> 0.072 -0.037

## Get list of possible dydx grid data
grids = krovak.get_available_diff_tables()
print(grids)
# --> ['table_yx_3_v1710', 'table_yx_3_v1202', 'table_yx_3_v1005']

## Transform ETRS89 (ETRF2000) coordinates to S-JTSK/05
B_etrs_in = 50
L_etrs_in = 15
H_etrs_in = 100

Y_sjtsk05, X_sjtsk05, H_bpv = krovak.etrs_jtsk05(
    B_etrs_in, L_etrs_in, H_etrs_in)
print(Y_sjtsk05, X_sjtsk05, H_bpv)
# --> 5703011.866856858 6058147.235673166 55.562

## Transform ETRS89 (ETRF2000) coordinates to S-JTSK
Y_sjtsk, X_sjtsk, H_bpv = krovak.etrs_jtsk(B_etrs_in, L_etrs_in, H_etrs_in)
print(Y_sjtsk, X_sjtsk, H_bpv)
# --> 703011.8997768582 1058147.294883166 55.562

## Reverse transformation S-JTSK coordinate to ETRS89
B_etrs_out, L_etrs_out, H_etrs_out = krovak.jtsk_etrs(
    Y_sjtsk, X_sjtsk, H_bpv)
print(B_etrs_out, L_etrs_out, H_etrs_out)
# --> 50.00000000579285 15.000000005855975 100.0

print("Differences:")
print(f"dB = {(B_etrs_in-B_etrs_out)*(math.pi/180)*6378000*1000} mm")
print(f"dL = {(B_etrs_in-B_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")
# --> dB = -0.64 mm
# --> dL = -0.41 mm
# --> dH = 0.0 mm

Set different grid table:

krovak = krovak05.Transformation("table_yx_3_v1005")

TODO

  • Better documentation
  • Rewrite to more time efficient code - constants, less calculation of goniometric functions

Data validation

validation of data accuracy was performed using of the CUZK transformation service


Repository

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages