Merge lp:~popey/ubuntu-geonames/fix-1326918 into lp:ubuntu-geonames

Status: Merged
Merged at revision: 30
Proposed branch: lp:~popey/ubuntu-geonames/fix-1326918
Merge into: lp:ubuntu-geonames
Diff against target: 146 lines (+29/-8)
2 files modified
geoname-modpython.py (+8/-3)
import-geonames.sh (+21/-5)
To merge this branch: bzr merge lp:~popey/ubuntu-geonames/fix-1326918
Reviewer Review Type Date Requested Status
Evan (community) Approve
Review via email: mp+230650@code.launchpad.net

Commit message

Adding timezoneid to json output which is needed by the new phone clock app. Tested on own server running at http://146.185.188.87/ - e.g. http://146.185.188.87/?query=Farnborough

Also added support for admin2 field which required modification to the import shell script because we previously weren't downloading and importing the admin2codes dump file.

You can see the result of the admin2 change at http://146.185.188.87/test/?query=Farnborough

To post a comment you must log in.
31. By Alan Pope 🍺🐧🐱 πŸ¦„

Add admin2codes support in import and web service

Revision history for this message
Evan (ev) wrote :

Looks good

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'geoname-modpython.py'
2--- geoname-modpython.py 2013-04-04 20:27:55 +0000
3+++ geoname-modpython.py 2014-08-14 08:49:50 +0000
4@@ -11,35 +11,40 @@
5 SELECT
6 geoname.name,
7 admin1codes.name,
8+admin2codes.name,
9 countryInfo.name,
10 geoname.longitude,
11 geoname.latitude,
12+geoname.timezone,
13 geoname.population
14 FROM geoname
15 left join countryInfo on (geoname.country = countryInfo.iso_alpha2)
16 left join admin1codes on (admin1codes.code = geoname.country||'.'||geoname.admin1)
17+left join admin2codes on (admin2codes.code = geoname.country||'.'||geoname.admin1||'.'||geoname.admin2)
18 WHERE geoname.geonameid in %s
19 UNION
20 SELECT
21 alternatename.alternatename,
22 admin1codes.name,
23+admin2codes.name,
24 countryInfo.name,
25 geoname.longitude,
26 geoname.latitude,
27+geoname.timezone,
28 geoname.population
29 FROM
30 alternatename
31 left join geoname on (geoname.geonameid=alternatename.geonameid)
32 left join countryInfo on (geoname.country = countryInfo.iso_alpha2)
33 left join admin1codes on (admin1codes.code = geoname.country||'.'||geoname.admin1)
34+left join admin2codes on (admin2codes.code = geoname.country||'.'||geoname.admin1||'.'||geoname.admin2)
35 where alternatename.alternatenameId in %s
36 ORDER by population desc;
37 """
38 jsonheader = '['
39 jsonfooter = ']'
40-jsonentry = '{"name" : "%s", "admin1" : "%s", "country" : "%s", ' \
41- '"longitude" : "%F", "latitude" : "%F" }'
42-
43+jsonentry = '{"name" : "%s", "admin1" : "%s", "admin2" : "%s", "country" : "%s", ' \
44+ '"longitude" : "%F", "latitude" : "%F" , '"timezone" : "%s" }'
45
46 def handler(req):
47 fs = util.FieldStorage(req)
48
49=== modified file 'import-geonames.sh'
50--- import-geonames.sh 2013-09-13 15:51:45 +0000
51+++ import-geonames.sh 2014-08-14 08:49:50 +0000
52@@ -15,15 +15,15 @@
53
54 PSQL_CMD="psql $PGUSER_PARAM $PGPASS $PGHOST $PGPORT $PGDBNAME"
55 WORKPATH="$(mktemp -d)"
56-
57+
58 chmod 755 $WORKPATH
59 cd $WORKPATH
60 trap "rm -rf $WORKPATH" EXIT HUP INT QUIT TERM
61-pwd
62+pwd
63 # allCountries.zip contains allCountries.txt
64 # alternateNames.zip contains iso-languagecodes.txt alternateNames.txt
65 ZIPFILES="allCountries.zip alternateNames.zip"
66-TXTFILES="admin1CodesASCII.txt countryInfo.txt timeZones.txt"
67+TXTFILES="admin1CodesASCII.txt admin2Codes.txt countryInfo.txt timeZones.txt"
68 for i in $ZIPFILES $TXTFILES
69 do
70 wget "http://download.geonames.org/export/dump/$i"
71@@ -32,7 +32,7 @@
72 do
73 unzip -o -qq $i
74 done
75-
76+
77 # alter files for import
78 tail -n +2 iso-languagecodes.txt > iso-languagecodes.txt.tmp
79 grep -v '^#' countryInfo.txt > countryInfo.txt.tmp
80@@ -121,6 +121,15 @@
81 );
82 \copy admin1codes${LOAD_POSTFIX} (code,name,nameAscii,geonameid) from $WORKPATH/admin1CodesASCII.txt null as ''
83
84+DROP TABLE IF EXISTS admin2codes${LOAD_POSTFIX};
85+CREATE TABLE admin2codes${LOAD_POSTFIX} (
86+ code varchar(80),
87+ name TEXT,
88+ nameAscii TEXT,
89+ geonameid int
90+);
91+\copy admin2codes${LOAD_POSTFIX} (code,name,nameAscii,geonameid) from $WORKPATH/admin2Codes.txt null as ''
92+
93 DROP TABLE IF EXISTS timeZones${LOAD_POSTFIX};
94 CREATE TABLE timeZones${LOAD_POSTFIX} (
95 code CHAR(2),
96@@ -146,10 +155,12 @@
97 INSERT INTO continentCodes${LOAD_POSTFIX} VALUES ('AN', 'Antarctica', 6255152);
98 CREATE INDEX geoname_id_idx${LOAD_POSTFIX} ON geoname${LOAD_POSTFIX}(geonameid);
99 CREATE INDEX geoname_admin1codes_code_idx${LOAD_POSTFIX} ON admin1codes${LOAD_POSTFIX}(code);
100+CREATE INDEX geoname_admin2codes_code_idx${LOAD_POSTFIX} ON admin2codes${LOAD_POSTFIX}(code);
101 CREATE INDEX geoname_countryinfo_isoalpha2_idx${LOAD_POSTFIX} ON countryinfo${LOAD_POSTFIX}(iso_alpha2);
102 CREATE INDEX geoname_alternatename_idx${LOAD_POSTFIX} ON alternatename${LOAD_POSTFIX}(alternatenameId);
103 ANALYZE geoname${LOAD_POSTFIX};
104 ANALYZE admin1codes${LOAD_POSTFIX};
105+ANALYZE admin2codes${LOAD_POSTFIX};
106 ANALYZE countryinfo${LOAD_POSTFIX};
107 ANALYZE alternatename${LOAD_POSTFIX};
108 COMMIT;
109@@ -167,10 +178,12 @@
110 DROP TABLE IF EXISTS countryinfo${BACKUP_POSTFIX};
111 DROP TABLE IF EXISTS iso_languagecodes${BACKUP_POSTFIX};
112 DROP TABLE IF EXISTS admin1codes${BACKUP_POSTFIX};
113+DROP TABLE IF EXISTS admin2codes${BACKUP_POSTFIX};
114 DROP TABLE IF EXISTS timeZones${BACKUP_POSTFIX};
115 DROP TABLE IF EXISTS continentCodes${BACKUP_POSTFIX};
116 DROP INDEX IF EXISTS geoname_id_idx;
117 DROP INDEX IF EXISTS geoname_admin1codes_code_idx;
118+DROP INDEX IF EXISTS geoname_admin2codes_code_idx;
119 DROP INDEX IF EXISTS geoname_countryinfo_isoalpha2_idx;
120 DROP INDEX IF EXISTS geoname_alternatename_idx;
121 ALTER TABLE geoname RENAME TO geoname${BACKUP_POSTFIX};
122@@ -178,6 +191,7 @@
123 ALTER TABLE countryinfo RENAME TO countryinfo${BACKUP_POSTFIX};
124 ALTER TABLE iso_languagecodes RENAME TO iso_languagecodes${BACKUP_POSTFIX};
125 ALTER TABLE admin1codes RENAME TO admin1codes${BACKUP_POSTFIX};
126+ALTER TABLE admin2codes RENAME TO admin2codes${BACKUP_POSTFIX};
127 ALTER TABLE timeZones RENAME TO timeZones${BACKUP_POSTFIX};
128 ALTER TABLE continentCodes RENAME TO continentCodes${BACKUP_POSTFIX};
129 COMMIT;
130@@ -192,13 +206,15 @@
131 ALTER TABLE countryinfo${LOAD_POSTFIX} RENAME TO countryinfo;
132 ALTER TABLE iso_languagecodes${LOAD_POSTFIX} RENAME TO iso_languagecodes;
133 ALTER TABLE admin1codes${LOAD_POSTFIX} RENAME TO admin1codes;
134+ALTER TABLE admin2codes${LOAD_POSTFIX} RENAME TO admin2codes;
135 ALTER TABLE timeZones${LOAD_POSTFIX} RENAME TO timeZones;
136 ALTER TABLE continentCodes${LOAD_POSTFIX} RENAME TO continentCodes;
137 ALTER INDEX geoname_id_idx${LOAD_POSTFIX} RENAME TO geoname_id_idx;
138 ALTER INDEX geoname_admin1codes_code_idx${LOAD_POSTFIX} RENAME TO geoname_admin1codes_code_idx;
139+ALTER INDEX geoname_admin2codes_code_idx${LOAD_POSTFIX} RENAME TO geoname_admin2codes_code_idx;
140 ALTER INDEX geoname_countryinfo_isoalpha2_idx${LOAD_POSTFIX} RENAME TO geoname_countryinfo_isoalpha2_idx;
141 ALTER INDEX geoname_alternatename_idx${LOAD_POSTFIX} RENAME TO geoname_alternatename_idx;
142 GRANT ALL PRIVILEGES ON geoname, admin1codes, countryInfo, alternatename TO $PGUSER;
143-GRANT SELECT ON geoname, admin1codes, countryInfo, alternatename TO public;
144+GRANT SELECT ON geoname, admin1codes, admin2codes, countryInfo, alternatename TO public;
145 COMMIT;
146 EOT

Subscribers

People subscribed via source and target branches