summaryrefslogtreecommitdiffhomepage
path: root/geo-data/README
blob: 71cb8a8b318c98f576354b82c456845e0d84acb5 (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
This is a folder with python 2 and node scripts to produce geographical
data for the Mullvad VPN app.


= Dependency installation notes =

1. Run the following command in terminal to install python dependencies:
pip install -r requirements.txt

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


= 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 http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/50m/cultural/ne_50m_admin_0_countries.zip
curl -L -O http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/50m/cultural/ne_50m_admin_1_states_provinces_lines.zip
curl -L -O http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/50m/cultural/ne_50m_populated_places_simple.zip
```

Extract the downloaded ZIP files into geo-data.
Make sure the following folders exist after extraction:

- ne_50m_admin_0_countries
- ne_50m_admin_1_states_provinces_lines
- ne_50m_populated_places_simple

or use the following script:

```
mkdir ne_50m_admin_1_states_provinces_lines
mkdir ne_50m_populated_places_simple
mkdir ne_50m_admin_0_countries

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_50m_populated_places_simple.zip -d ne_50m_populated_places_simple
```

= Geo data extraction notes =

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

```
python extract-geo-data.py
```

and finally generate the R-Tree cache:

```
npx babel-node prepare-rtree.js
```

At this point all of the data should be saved in geo-data/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 app/assets/geo folder:

```
python integrate-into-app.py
```