|
||
---|---|---|
.forgejo | ||
data | ||
debian | ||
pkg/locode | ||
.gitattributes | ||
.gitignore | ||
.gitlint | ||
.golangci.yml | ||
.pre-commit-config.yaml | ||
CHANGELOG.md | ||
CODEOWNERS | ||
CONTRIBUTING.md | ||
go.mod | ||
go.sum | ||
LICENSE | ||
locode_generate.go | ||
locode_generate_test.go | ||
locode_info.go | ||
main.go | ||
Makefile | ||
README.md | ||
VERSION |
UN/LOCODE database for ForstFS
Overview
FrostFS uses UN/LOCODE in storage node attributes and storage policies. Inner ring nodes converts UN/LOCODE into human-readable set of attributes such as continent, country name, etc.
This repository tools generate UN/LOCODE database for FrostFS using data from following sources:
- UN/LOCODE database in CSV format, licensed under the ODC Public Domain Dedication and Licence (PDDL)
- OpenFlight Airports and Countries databases, licensed under the GNU AGPL-3.0 license
- OpenStreetMap® open data, licensed under the Open Data Commons Open Database License (ODbL)
Build
Prerequisites
- Go 1.21
Quick start
Just run make
to generate locode_db
file for use with FrostFS InnerRing nodes.
$ make
...
--out locode_db
Building
Then run frost-cli command to generate UN/LOCODE database.
$ ./frostfs-locode-db generate
Generate UN/LOCODE database for FrostFS
Usage:
frostfs-locode-db generate [flags]
Flags:
--airports string Path to OpenFlights airport database (csv)
--continents string Path to continent polygons (GeoJSON)
--countries string Path to OpenFlights country database (csv)
-h, --help help for generate
--in strings List of paths to UN/LOCODE tables (csv)
--out string Target path for generated database
--subdiv string Path to UN/LOCODE subdivision database (csv)
$ ./frostfs-locode-db generate \
--airports airports.dat \
--continents continents.geojson \
--countries countries.dat \
--in 2022-2\ UNLOCODE\ CodeList.csv \
--subdiv 2022-2\ SubdivisionCodes.csv \
--out locode_db
Database generation might take some time!
You can test generated database with frostfs-locode-db
.
$ frostfs-locode-db info --db locode_db --locode 'RU LED'
Country: Russia
Location: Saint Petersburg (ex Leningrad)
Continent: Europe
Subdivision: [SPE] Sankt-Peterburg
Coordinates: 59.88, 30.25
Building Debian package
The most simple way is to run a make target
$ make debpackage
When packages are built, you can clean up the leftover with
$ dh clean
or
$ make debclean
License
This project is licensed under the CC Attribution-ShareAlike 4.0 International - see the LICENSE file for details