2021-02-10 12:02:44 +00:00
|
|
|
<p align="center">
|
|
|
|
<img src="./.github/logo.svg" width="500px" alt="NeoFS">
|
|
|
|
</p>
|
|
|
|
<p align="center">
|
|
|
|
UN/LOCODE database for <a href="https://fs.neo.org">NeoFS</a>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
---
|
|
|
|
![GitHub release](https://img.shields.io/github/release/nspcc-dev/neofs-locode-db.svg)
|
|
|
|
![GitHub license](https://img.shields.io/github/license/nspcc-dev/neofs-locode-db.svg?style=popout)
|
|
|
|
|
|
|
|
# Overview
|
|
|
|
|
2022-10-27 12:05:52 +00:00
|
|
|
This repository contains instructions to generate UN/LOCODE database for NeoFS
|
2021-02-10 12:02:44 +00:00
|
|
|
and raw representation of it. NeoFS uses UN/LOCODE in storage node attributes
|
2022-10-27 12:05:52 +00:00
|
|
|
and storage policies. Inner ring nodes converts UN/LOCODE into human-readable
|
|
|
|
set of attributes such as continent, country name, etc. You can find out
|
2021-02-10 12:02:44 +00:00
|
|
|
more in [NeoFS Specification](https://github.com/nspcc-dev/neofs-spec).
|
|
|
|
|
|
|
|
|
|
|
|
# Build
|
|
|
|
|
|
|
|
## Prerequisites
|
|
|
|
|
|
|
|
- Latest [neofs-cli](https://github.com/nspcc-dev/neofs-node)
|
2022-10-27 12:05:52 +00:00
|
|
|
- [UN/LOCODE](https://unece.org/trade/cefact/UNLOCODE-Download)
|
2021-02-10 12:02:44 +00:00
|
|
|
database in CSV format
|
|
|
|
- [OpenFlight Airports](https://raw.githubusercontent.com/jpatokal/openflights/master/data/airports.dat)
|
|
|
|
database
|
|
|
|
- [OpenFlight Countries](https://raw.githubusercontent.com/jpatokal/openflights/master/data/countries.dat)
|
|
|
|
database
|
|
|
|
|
2022-10-27 10:45:25 +00:00
|
|
|
## Quick start
|
|
|
|
|
|
|
|
Just run `make` to generate `locode_db` file for use with NeoFS InnerRing nodes.
|
|
|
|
|
|
|
|
``` shell
|
|
|
|
$ make
|
|
|
|
...
|
|
|
|
--out locode_db
|
|
|
|
```
|
|
|
|
|
|
|
|
## Building
|
2021-02-10 12:02:44 +00:00
|
|
|
|
|
|
|
First unzip file with GeoJSON continents from this repository.
|
|
|
|
```
|
|
|
|
$ gunzip continents.geojson
|
|
|
|
```
|
|
|
|
|
|
|
|
Then run neofs-cli command to generate boltDB file.
|
|
|
|
```
|
|
|
|
$ neofs-cli util locode generate --help
|
|
|
|
generate UN/LOCODE database for NeoFS
|
|
|
|
|
|
|
|
Usage:
|
|
|
|
neofs-cli util locode 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)
|
2022-10-27 12:05:52 +00:00
|
|
|
|
2021-02-10 12:02:44 +00:00
|
|
|
$ ./neofs-cli util locode generate \
|
|
|
|
--airports airports.dat \
|
|
|
|
--continents continents.geojson \
|
|
|
|
--countries countries.dat \
|
2022-10-27 12:05:52 +00:00
|
|
|
--in 2022-1\ UNLOCODE\ CodeListPart1.csv,2022-1\ UNLOCODE\ CodeListPart2.csv,2022-1\ UNLOCODE\CodeListPart3.csv \
|
2021-02-10 12:02:44 +00:00
|
|
|
--subdiv 2020-2\ SubdivisionCodes.csv \
|
|
|
|
--out locode_db
|
|
|
|
```
|
|
|
|
|
|
|
|
**Database generation might take some time!**
|
|
|
|
|
|
|
|
You can test generated database with neofs-cli.
|
|
|
|
```
|
|
|
|
$ neofs-cli util locode info --db locode_db --locode 'RU LED'
|
|
|
|
Country: Russia
|
|
|
|
Location: Saint Petersburg (ex Leningrad)
|
|
|
|
Continent: Europe
|
|
|
|
Subdivision: [SPE] Sankt-Peterburg
|
2022-10-27 12:05:52 +00:00
|
|
|
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
|
2021-02-10 12:02:44 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
This project is licensed under the CC Attribution-ShareAlike 4.0 International -
|
|
|
|
see the [LICENSE](LICENSE) file for details
|