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](https://unece.org/trade/cefact/UNLOCODE-Download) database in CSV format, licensed under the [ODC Public Domain Dedication and Licence (PDDL)](http://opendatacommons.org/licenses/pddl/1-0/) - [OpenFlight Airports and Countries](https://raw.githubusercontent.com/jpatokal/openflights/master/data/) databases, licensed under the [GNU AGPL-3.0 license](https://github.com/jpatokal/openflights/blob/master/LICENSE) - [OpenStreetMap](https://www.openstreetmap.org/)® open data, licensed under the [Open Data Commons Open Database License](https://opendatacommons.org/licenses/odbl/) (ODbL) # Build ## Prerequisites - Go 1.21 ## Quick start Just run `make` to generate `locode_db` file for use with FrostFS InnerRing nodes. ``` shell $ 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 ```shell $ make debpackage ``` When packages are built, you can clean up the leftover with ```shell $ dh clean ``` or ```shell $ make debclean ``` ## License This project is licensed under the CC Attribution-ShareAlike 4.0 International - see the [LICENSE](LICENSE) file for details