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
=== modified file 'geoname-modpython.py'
--- geoname-modpython.py 2013-04-04 20:27:55 +0000
+++ geoname-modpython.py 2014-08-14 08:49:50 +0000
@@ -11,35 +11,40 @@
11SELECT11SELECT
12geoname.name,12geoname.name,
13admin1codes.name,13admin1codes.name,
14admin2codes.name,
14countryInfo.name,15countryInfo.name,
15geoname.longitude,16geoname.longitude,
16geoname.latitude,17geoname.latitude,
18geoname.timezone,
17geoname.population19geoname.population
18FROM geoname20FROM geoname
19left join countryInfo on (geoname.country = countryInfo.iso_alpha2)21left join countryInfo on (geoname.country = countryInfo.iso_alpha2)
20left join admin1codes on (admin1codes.code = geoname.country||'.'||geoname.admin1)22left join admin1codes on (admin1codes.code = geoname.country||'.'||geoname.admin1)
23left join admin2codes on (admin2codes.code = geoname.country||'.'||geoname.admin1||'.'||geoname.admin2)
21WHERE geoname.geonameid in %s24WHERE geoname.geonameid in %s
22UNION25UNION
23SELECT26SELECT
24alternatename.alternatename,27alternatename.alternatename,
25admin1codes.name,28admin1codes.name,
29admin2codes.name,
26countryInfo.name,30countryInfo.name,
27geoname.longitude,31geoname.longitude,
28geoname.latitude,32geoname.latitude,
33geoname.timezone,
29geoname.population34geoname.population
30FROM35FROM
31alternatename36alternatename
32left join geoname on (geoname.geonameid=alternatename.geonameid)37left join geoname on (geoname.geonameid=alternatename.geonameid)
33left join countryInfo on (geoname.country = countryInfo.iso_alpha2)38left join countryInfo on (geoname.country = countryInfo.iso_alpha2)
34left join admin1codes on (admin1codes.code = geoname.country||'.'||geoname.admin1)39left join admin1codes on (admin1codes.code = geoname.country||'.'||geoname.admin1)
40left join admin2codes on (admin2codes.code = geoname.country||'.'||geoname.admin1||'.'||geoname.admin2)
35where alternatename.alternatenameId in %s41where alternatename.alternatenameId in %s
36ORDER by population desc;42ORDER by population desc;
37"""43"""
38jsonheader = '['44jsonheader = '['
39jsonfooter = ']'45jsonfooter = ']'
40jsonentry = '{"name" : "%s", "admin1" : "%s", "country" : "%s", ' \46jsonentry = '{"name" : "%s", "admin1" : "%s", "admin2" : "%s", "country" : "%s", ' \
41 '"longitude" : "%F", "latitude" : "%F" }'47 '"longitude" : "%F", "latitude" : "%F" , '"timezone" : "%s" }'
42
4348
44def handler(req):49def handler(req):
45 fs = util.FieldStorage(req)50 fs = util.FieldStorage(req)
4651
=== modified file 'import-geonames.sh'
--- import-geonames.sh 2013-09-13 15:51:45 +0000
+++ import-geonames.sh 2014-08-14 08:49:50 +0000
@@ -15,15 +15,15 @@
1515
16PSQL_CMD="psql $PGUSER_PARAM $PGPASS $PGHOST $PGPORT $PGDBNAME"16PSQL_CMD="psql $PGUSER_PARAM $PGPASS $PGHOST $PGPORT $PGDBNAME"
17WORKPATH="$(mktemp -d)"17WORKPATH="$(mktemp -d)"
18 18
19chmod 755 $WORKPATH19chmod 755 $WORKPATH
20cd $WORKPATH20cd $WORKPATH
21trap "rm -rf $WORKPATH" EXIT HUP INT QUIT TERM21trap "rm -rf $WORKPATH" EXIT HUP INT QUIT TERM
22pwd 22pwd
23# allCountries.zip contains allCountries.txt23# allCountries.zip contains allCountries.txt
24# alternateNames.zip contains iso-languagecodes.txt alternateNames.txt24# alternateNames.zip contains iso-languagecodes.txt alternateNames.txt
25ZIPFILES="allCountries.zip alternateNames.zip"25ZIPFILES="allCountries.zip alternateNames.zip"
26TXTFILES="admin1CodesASCII.txt countryInfo.txt timeZones.txt"26TXTFILES="admin1CodesASCII.txt admin2Codes.txt countryInfo.txt timeZones.txt"
27for i in $ZIPFILES $TXTFILES27for i in $ZIPFILES $TXTFILES
28do28do
29 wget "http://download.geonames.org/export/dump/$i"29 wget "http://download.geonames.org/export/dump/$i"
@@ -32,7 +32,7 @@
32do32do
33 unzip -o -qq $i33 unzip -o -qq $i
34done34done
35 35
36# alter files for import36# alter files for import
37tail -n +2 iso-languagecodes.txt > iso-languagecodes.txt.tmp37tail -n +2 iso-languagecodes.txt > iso-languagecodes.txt.tmp
38grep -v '^#' countryInfo.txt > countryInfo.txt.tmp38grep -v '^#' countryInfo.txt > countryInfo.txt.tmp
@@ -121,6 +121,15 @@
121);121);
122\copy admin1codes${LOAD_POSTFIX} (code,name,nameAscii,geonameid) from $WORKPATH/admin1CodesASCII.txt null as ''122\copy admin1codes${LOAD_POSTFIX} (code,name,nameAscii,geonameid) from $WORKPATH/admin1CodesASCII.txt null as ''
123123
124DROP TABLE IF EXISTS admin2codes${LOAD_POSTFIX};
125CREATE TABLE admin2codes${LOAD_POSTFIX} (
126 code varchar(80),
127 name TEXT,
128 nameAscii TEXT,
129 geonameid int
130);
131\copy admin2codes${LOAD_POSTFIX} (code,name,nameAscii,geonameid) from $WORKPATH/admin2Codes.txt null as ''
132
124DROP TABLE IF EXISTS timeZones${LOAD_POSTFIX};133DROP TABLE IF EXISTS timeZones${LOAD_POSTFIX};
125CREATE TABLE timeZones${LOAD_POSTFIX} (134CREATE TABLE timeZones${LOAD_POSTFIX} (
126 code CHAR(2),135 code CHAR(2),
@@ -146,10 +155,12 @@
146INSERT INTO continentCodes${LOAD_POSTFIX} VALUES ('AN', 'Antarctica', 6255152);155INSERT INTO continentCodes${LOAD_POSTFIX} VALUES ('AN', 'Antarctica', 6255152);
147CREATE INDEX geoname_id_idx${LOAD_POSTFIX} ON geoname${LOAD_POSTFIX}(geonameid);156CREATE INDEX geoname_id_idx${LOAD_POSTFIX} ON geoname${LOAD_POSTFIX}(geonameid);
148CREATE INDEX geoname_admin1codes_code_idx${LOAD_POSTFIX} ON admin1codes${LOAD_POSTFIX}(code);157CREATE INDEX geoname_admin1codes_code_idx${LOAD_POSTFIX} ON admin1codes${LOAD_POSTFIX}(code);
158CREATE INDEX geoname_admin2codes_code_idx${LOAD_POSTFIX} ON admin2codes${LOAD_POSTFIX}(code);
149CREATE INDEX geoname_countryinfo_isoalpha2_idx${LOAD_POSTFIX} ON countryinfo${LOAD_POSTFIX}(iso_alpha2);159CREATE INDEX geoname_countryinfo_isoalpha2_idx${LOAD_POSTFIX} ON countryinfo${LOAD_POSTFIX}(iso_alpha2);
150CREATE INDEX geoname_alternatename_idx${LOAD_POSTFIX} ON alternatename${LOAD_POSTFIX}(alternatenameId);160CREATE INDEX geoname_alternatename_idx${LOAD_POSTFIX} ON alternatename${LOAD_POSTFIX}(alternatenameId);
151ANALYZE geoname${LOAD_POSTFIX};161ANALYZE geoname${LOAD_POSTFIX};
152ANALYZE admin1codes${LOAD_POSTFIX};162ANALYZE admin1codes${LOAD_POSTFIX};
163ANALYZE admin2codes${LOAD_POSTFIX};
153ANALYZE countryinfo${LOAD_POSTFIX};164ANALYZE countryinfo${LOAD_POSTFIX};
154ANALYZE alternatename${LOAD_POSTFIX};165ANALYZE alternatename${LOAD_POSTFIX};
155COMMIT;166COMMIT;
@@ -167,10 +178,12 @@
167DROP TABLE IF EXISTS countryinfo${BACKUP_POSTFIX};178DROP TABLE IF EXISTS countryinfo${BACKUP_POSTFIX};
168DROP TABLE IF EXISTS iso_languagecodes${BACKUP_POSTFIX};179DROP TABLE IF EXISTS iso_languagecodes${BACKUP_POSTFIX};
169DROP TABLE IF EXISTS admin1codes${BACKUP_POSTFIX};180DROP TABLE IF EXISTS admin1codes${BACKUP_POSTFIX};
181DROP TABLE IF EXISTS admin2codes${BACKUP_POSTFIX};
170DROP TABLE IF EXISTS timeZones${BACKUP_POSTFIX};182DROP TABLE IF EXISTS timeZones${BACKUP_POSTFIX};
171DROP TABLE IF EXISTS continentCodes${BACKUP_POSTFIX};183DROP TABLE IF EXISTS continentCodes${BACKUP_POSTFIX};
172DROP INDEX IF EXISTS geoname_id_idx;184DROP INDEX IF EXISTS geoname_id_idx;
173DROP INDEX IF EXISTS geoname_admin1codes_code_idx;185DROP INDEX IF EXISTS geoname_admin1codes_code_idx;
186DROP INDEX IF EXISTS geoname_admin2codes_code_idx;
174DROP INDEX IF EXISTS geoname_countryinfo_isoalpha2_idx;187DROP INDEX IF EXISTS geoname_countryinfo_isoalpha2_idx;
175DROP INDEX IF EXISTS geoname_alternatename_idx;188DROP INDEX IF EXISTS geoname_alternatename_idx;
176ALTER TABLE geoname RENAME TO geoname${BACKUP_POSTFIX};189ALTER TABLE geoname RENAME TO geoname${BACKUP_POSTFIX};
@@ -178,6 +191,7 @@
178ALTER TABLE countryinfo RENAME TO countryinfo${BACKUP_POSTFIX};191ALTER TABLE countryinfo RENAME TO countryinfo${BACKUP_POSTFIX};
179ALTER TABLE iso_languagecodes RENAME TO iso_languagecodes${BACKUP_POSTFIX};192ALTER TABLE iso_languagecodes RENAME TO iso_languagecodes${BACKUP_POSTFIX};
180ALTER TABLE admin1codes RENAME TO admin1codes${BACKUP_POSTFIX};193ALTER TABLE admin1codes RENAME TO admin1codes${BACKUP_POSTFIX};
194ALTER TABLE admin2codes RENAME TO admin2codes${BACKUP_POSTFIX};
181ALTER TABLE timeZones RENAME TO timeZones${BACKUP_POSTFIX};195ALTER TABLE timeZones RENAME TO timeZones${BACKUP_POSTFIX};
182ALTER TABLE continentCodes RENAME TO continentCodes${BACKUP_POSTFIX};196ALTER TABLE continentCodes RENAME TO continentCodes${BACKUP_POSTFIX};
183COMMIT;197COMMIT;
@@ -192,13 +206,15 @@
192ALTER TABLE countryinfo${LOAD_POSTFIX} RENAME TO countryinfo;206ALTER TABLE countryinfo${LOAD_POSTFIX} RENAME TO countryinfo;
193ALTER TABLE iso_languagecodes${LOAD_POSTFIX} RENAME TO iso_languagecodes;207ALTER TABLE iso_languagecodes${LOAD_POSTFIX} RENAME TO iso_languagecodes;
194ALTER TABLE admin1codes${LOAD_POSTFIX} RENAME TO admin1codes;208ALTER TABLE admin1codes${LOAD_POSTFIX} RENAME TO admin1codes;
209ALTER TABLE admin2codes${LOAD_POSTFIX} RENAME TO admin2codes;
195ALTER TABLE timeZones${LOAD_POSTFIX} RENAME TO timeZones;210ALTER TABLE timeZones${LOAD_POSTFIX} RENAME TO timeZones;
196ALTER TABLE continentCodes${LOAD_POSTFIX} RENAME TO continentCodes;211ALTER TABLE continentCodes${LOAD_POSTFIX} RENAME TO continentCodes;
197ALTER INDEX geoname_id_idx${LOAD_POSTFIX} RENAME TO geoname_id_idx;212ALTER INDEX geoname_id_idx${LOAD_POSTFIX} RENAME TO geoname_id_idx;
198ALTER INDEX geoname_admin1codes_code_idx${LOAD_POSTFIX} RENAME TO geoname_admin1codes_code_idx;213ALTER INDEX geoname_admin1codes_code_idx${LOAD_POSTFIX} RENAME TO geoname_admin1codes_code_idx;
214ALTER INDEX geoname_admin2codes_code_idx${LOAD_POSTFIX} RENAME TO geoname_admin2codes_code_idx;
199ALTER INDEX geoname_countryinfo_isoalpha2_idx${LOAD_POSTFIX} RENAME TO geoname_countryinfo_isoalpha2_idx;215ALTER INDEX geoname_countryinfo_isoalpha2_idx${LOAD_POSTFIX} RENAME TO geoname_countryinfo_isoalpha2_idx;
200ALTER INDEX geoname_alternatename_idx${LOAD_POSTFIX} RENAME TO geoname_alternatename_idx;216ALTER INDEX geoname_alternatename_idx${LOAD_POSTFIX} RENAME TO geoname_alternatename_idx;
201GRANT ALL PRIVILEGES ON geoname, admin1codes, countryInfo, alternatename TO $PGUSER;217GRANT ALL PRIVILEGES ON geoname, admin1codes, countryInfo, alternatename TO $PGUSER;
202GRANT SELECT ON geoname, admin1codes, countryInfo, alternatename TO public;218GRANT SELECT ON geoname, admin1codes, admin2codes, countryInfo, alternatename TO public;
203COMMIT;219COMMIT;
204EOT220EOT

Subscribers

People subscribed via source and target branches