summaryrefslogtreecommitdiffhomepage
path: root/gui/scripts/README.md
blob: cd9b723045f537139f9eaea5a54b46bfcf1bf4cf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
This is a folder with the supporting scripts written in Python 3, node, bash.


## Dependency installation notes

1. Install GDAL/OGR dependencies, which are required by Fiona python package.
   
   You can install GDAL via Homebrew on macOS: 
   `brew install gdal`
   
   For other platforms, please follow the guide on https://gdal.org/download.html#binaries

2. Run the following command in terminal to install python dependencies:
   `pip3 install -r requirements.txt`

3. Run `npm install -g topojson-server` to install `geo2topo` tool which is
   used by python scripts to convert GeoJSON to TopoJSON

4. Make sure you have gettext utilities installed.
   https://www.gnu.org/software/gettext/


## Geo data installation notes

Go to http://www.naturalearthdata.com/downloads/50m-cultural-vectors/ and
download ZIP files with the following shapes:

- Admin 0 – Countries
- Admin 1 – States, provinces - boundary lines
- Populated Places - simple dataset is enough

or use cURL to download all ZIPs:

```
curl -L -O https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/50m/cultural/ne_50m_admin_0_countries.zip
curl -L -O https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/50m/cultural/ne_50m_admin_1_states_provinces_lines.zip
curl -L -O https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places.zip
```

Extract the downloaded ZIP files into `scripts` folder.
Make sure the following folders exist after extraction:

- ne_50m_admin_0_countries
- ne_50m_admin_1_states_provinces_lines
- ne_10m_populated_places

or use the following script:

```
unzip ne_50m_admin_0_countries.zip -d ne_50m_admin_0_countries/
unzip ne_50m_admin_1_states_provinces_lines.zip -d ne_50m_admin_1_states_provinces_lines/
unzip ne_10m_populated_places.zip -d ne_10m_populated_places/
```

## Geo data extraction notes

Run the following script to produce a TopoJSON data used by the app:

```
python3 extract-geo-data.py
```

and finally generate the R-Tree cache:

```
npm exec ts-node prepare-rtree.ts
```

At this point all of the data should be saved in `gui/scripts/out` folder.

## App integration notes

Once you've extracted all the geo data, run the integration script that will
copy all files ignoring intermediate ones into the `gui/assets/geo` folder:

```
python3 integrate-into-app.py
```

## Locking Python dependencies

1. Freeze dependencies:

```
pip3 freeze -r requirements.txt
```

and save the output into `requirements.txt`.


2. Hash them with `hashin` tool:

```
hashin --python 3.7 --verbose --update-all
```