Python package for parsing and generating KOF files.
References:
NORWEGIAN GEOTECHNICAL SOCIETY
Latest releases see CHANGES.md
pip install kof-parser
from kof_parser import KOFParser
parser = KOFParser()
# ETRS89/NTM10:
srid = 5110
locations = parser.parse('tests/data/test.kof', result_srid=srid, file_srid=srid)
for location in locations:
print(location)
# Output:
# name='SMPLOC1' methods=[] point_easting=112892.81 point_northing=1217083.64 point_z=1.0 srid=5110
# name='SMPLOC2' methods=['TOT'] point_easting=112893.15 point_northing=1217079.46 point_z=2.0 srid=5110
# name='SMPLOC3' methods=['CPT'] point_easting=112891.88 point_northing=1217073.01 point_z=0.0 srid=5110
# name='SMPLOC4' methods=['RP'] point_easting=112891.9 point_northing=1217067.54 point_z=0.0 srid=5110
# name='SMPLOC5' methods=['SA'] point_easting=112902.92 point_northing=1217074.73 point_z=0.0 srid=5110
# name='SMPLOC6' methods=['PZ'] point_easting=112901.11 point_northing=1217069.56 point_z=0.0 srid=5110
# name='SMPLOC7' methods=['PZ'] point_easting=1217069.56 point_northing=112901.11 point_z=0.0 srid=5110
To write a KOF file you need to build up a model of locations and methods.
from kof_parser import KOFWriter
from kof_parser import Location
kof_writer = KOFWriter()
srid = 5110
locations = [Location(name='SMPLOC1', point_easting=112892.81, point_northing=1217083.64, point_z=1.0),
Location(name='SMPLOC2', point_easting=112893.15, point_northing=1217079.46, point_z=2.0, methods=['TOT']),
Location(name='SMPLOC3', point_easting=112891.88, point_northing=1217073.01, point_z=0.0, methods=['CPT'])]
kof_string = kof_writer.writeKOF(
project_id='project_id', project_name='cool-name', locations=locations, srid=srid
)
print(kof_string)
# Output:
# 00 KOF Export from NGI's KOF parser
# 00 Project: project_id. Name: cool-name
# 00 Spatial Reference ID (SRID): 5110
# 00 Export date (UTC): 2022-08-22 13:49:44.394607
# 00 Oppdrag Dato Ver K.sys Komm $21100000000 Observer
# 01 cool-name 22082022 1 210 $11100000000
# 05 SMPLOC1 1217083.640 112892.810 1.000
# 05 SMPLOC2 2418 1217079.460 112893.150 2.000
# 05 SMPLOC3 2407 1217073.010 112891.880 0.000
Before you start, install:
- Python 3.11 or higher
- Poetry 2
- Ruff formatter
Use git to clone this repository.
There are several combinations of how to set up a local development environment.
We use Poetry for dependency management. See Install poetry if needed.
Then, from the project root folder run:
poetry install
Run in the project root folder:
poetry run pytest
Build the package wheel:
poetry build
Please start by adding an issue before submitting any pull requests.