@hebcal/geo-sqlite 4.1.0 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +42 -20
- package/dist/index.mjs +42 -20
- package/geo-sqlite.d.ts +13 -1
- package/package.json +14 -14
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @hebcal/geo-sqlite v4.
|
|
1
|
+
/*! @hebcal/geo-sqlite v4.4.0 */
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
@@ -19,7 +19,7 @@ var events__default = /*#__PURE__*/_interopDefaultLegacy(events);
|
|
|
19
19
|
var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
|
|
20
20
|
var readline__default = /*#__PURE__*/_interopDefaultLegacy(readline);
|
|
21
21
|
|
|
22
|
-
var Ashdod=295629;var Atlanta=4180439;var Austin=4671654;var Baghdad=98182;var Baltimore=4347778;var Berlin=2950159;var Bogota=3688689;var Boston=4930956;var Buffalo=5110629;var Chicago=4887398;var Cincinnati=4508722;var Cleveland=5150529;var Dallas=4684888;var Denver=5419384;var Detroit=4990729;var Eilat=295277;var Gibraltar=2411585;var Haifa=294801;var Hawaii=5856195;var Houston=4699066;var Jerusalem=281184;var Johannesburg=993800;var Kiev=703448;var Livingston=5100572;var London=2643743;var Melbourne=2158177;var Miami=4164138;var Montreal=6077243;var Moscow=524901;var Omaha=5074472;var Ottawa=6094817;var Paris=2988507;var Philadelphia=4560349;var Phoenix=5308655;var Pittsburgh=5206379;var Seattle=5809844;var Sydney=2147714;var Tiberias=293322;var Toronto=6167865;var Vancouver=6173331;var city2geonameid = {"AD-Andorra La Vella":3041563,"AE-Abu Dhabi":292968,"AE-Dubai":292223,"AF-Kabul":1138958,"AI-The Valley":3573374,"AL-Tirana":3183875,"AM-Yerevan":616052,"AO-Luanda":2240449,"AR-Buenos Aires":3435910,"AR-Cordoba":3860259,"AR-Rosario":3838583,"AS-Pago Pago":5881576,"AT-Vienna":2761369,"AU-Adelaide":2078025,"AU-Brisbane":2174003,"AU-Canberra":2172517,"AU-Gold Coast":2165087,"AU-Hobart":2163355,"AU-Melbourne":2158177,"AU-Perth":2063523,"AU-Sydney":2147714,"AW-Oranjestad":3577154,"AZ-Baku":587084,Ashdod:Ashdod,Atlanta:Atlanta,Austin:Austin,"BA-Sarajevo":3191281,"BB-Bridgetown":3374036,"BD-Chittagong":1205733,"BD-Dhaka":1185241,"BD-Khulna":1336135,"BE-Brussels":2800866,"BF-Ouagadougou":2357048,"BG-Sofia":727011,"BH-Manama":290340,"BI-Bujumbura":425378,"BJ-Porto-novo":2392087,"BM-Hamilton":3573197,"BN-Bandar Seri Begawan":1820906,"BO-La Paz":3911925,"BO-Santa Cruz de la Sierra":3904906,"BR-Belo Horizonte":3470127,"BR-Brasilia":3469058,"BR-Fortaleza":3399415,"BR-Rio de Janeiro":3451190,"BR-Salvador":3450554,"BR-Sao Paulo":3448439,"BS-Nassau":3571824,"BT-Thimphu":1252416,"BW-Gaborone":933773,"BY-Minsk":625144,"BZ-Belmopan":3582672,Baghdad:Baghdad,Baltimore:Baltimore,"Be'er Sheva":295530,"Beer Sheva":295530,"Bene Beraq":295514,"IL-Bene Beraq":295514,Berlin:Berlin,"Bnei Brak":295514,Bogota:Bogota,Boston:Boston,"Buenos Aires":3435910,Buffalo:Buffalo,"CA-Calgary":5913490,"CA-Edmonton":5946768,"CA-Halifax":6324729,"CA-Mississauga":6075357,"CA-Montreal":6077243,"CA-Ottawa":6094817,"CA-Quebec City":6325494,"CA-Regina":6119109,"CA-Saskatoon":6141256,"CA-St. John's-05":6324733,"CA-Toronto":6167865,"CA-Vancouver":6173331,"CA-Victoria":6174041,"CA-Winnipeg":6183235,"CD-Kinshasa":2314302,"CD-Lubumbashi":922704,"CF-Bangui":2389853,"CG-Brazzaville":2260535,"CH-Bern":2661552,"CH-Geneva":2660646,"CH-Zurich":2657896,"CI-Abidjan":2293538,"CI-Yamoussoukro":2279755,"CK-Avarua":4035715,"CL-Santiago":3871336,"CM-Douala":2232593,"CM-Yaounde":2220957,"CN-Beijing":1816670,"CN-Chengdu":1815286,"CN-Chongqing":1814906,"CN-Guangzhou":1809858,"CN-Harbin":2037013,"CN-Kaifeng":1804879,"CN-Lanzhou":1804430,"CN-Nanchong":1800146,"CN-Nanjing":1799962,"CN-Puyang":1798422,"CN-Shanghai":1796236,"CN-Shenyang":2034937,"CN-Shenzhen":1795565,"CN-Shiyan":1794903,"CN-Tai'an":1793724,"CN-Tianjin":1792947,"CN-Wuhan":1791247,"CN-Xi'an":1790630,"CN-Yueyang":1927639,"CN-Zhumadian":1783873,"CO-Barranquilla":3689147,"CO-Bogota":3688689,"CO-Bogotá":3688689,"CO-Cali":3687925,"CO-Medellin":3674962,"CR-San Jose":3621849,"CR-San José":3621849,"CR-San José":3621849,"CU-Havana":3553478,"CV-Praia":3374333,"CW-Willemstad":3513090,"CY-Nicosia":146268,"CZ-Prague":3067696,Chicago:Chicago,Cincinnati:Cincinnati,Cleveland:Cleveland,"DE-Berlin":2950159,"DE-Hamburg":2911298,"DE-Munich":2867714,"DK-Copenhagen":2618425,"DM-Roseau":3575635,"DO-Santiago de los Caballeros":3492914,"DO-Santo Domingo":3492908,"DZ-Algiers":2507480,Dallas:Dallas,Denver:Denver,Detroit:Detroit,"EC-Guayaquil":3657509,"EC-Quito":3652462,"EE-Tallinn":588409,"EG-Al Jizah":360995,"EG-Alexandria":361058,"EG-Cairo":360630,"ER-Asmara":343300,"ES-Barcelona":3128760,"ES-Madrid":3117735,"ET-Addis Ababa":344979,Eilat:Eilat,"FI-Helsinki":658225,"FJ-Suva":2198148,"FK-Stanley":3426691,"FO-Tórshavn":2611396,"FR-Marseilles":2995469,"FR-Paris":2988507,"GA-Libreville":2399697,"GB-Belfast":2655984,"GB-Birmingham":2655603,"GB-Bristol":2654675,"GB-Cardiff":2653822,"GB-Edinburgh":2650225,"GB-Glasgow":2648579,"GB-Leeds":2644688,"GB-Liverpool":2644210,"GB-London":2643743,"GB-Manchester":2643123,"GB-Sheffield":2638077,"GE-Tbilisi":611717,"GH-Accra":2306104,"GH-Kumasi":2298890,"GI-Gibraltar":2411585,"GL-Nuuk":3421319,"GM-Banjul":2413876,"GN-Camayenne":2422488,"GN-Conakry":2422465,"GQ-Malabo":2309527,"GR-Athens":264371,"GT-Guatemala City":3598132,"GW-Bissau":2374775,"GY-Georgetown":3378644,Gibraltar:Gibraltar,"HK-Hong Kong":1819729,"HN-Tegucigalpa":3600949,"HR-Zagreb":3186886,"HT-Port-au-Prince":3718426,"HU-Budapest":3054643,Haifa:Haifa,Hawaii:Hawaii,Houston:Houston,"ID-Bandung":1650357,"ID-Bekasi":1649378,"ID-Depok":1645518,"ID-Jakarta":1642911,"ID-Makassar":1622786,"ID-Medan":1214520,"ID-Palembang":1633070,"ID-Semarang":1627896,"ID-South Tangerang":8581443,"ID-Surabaya":1625822,"ID-Tangerang":1625084,"IE-Dublin":2964574,"IL-Ashdod":295629,"IL-Ashkelon":295620,"IL-Ashqelon":295620,"IL-Bat Yam":295548,"IL-Be'er Sheva":295530,"IL-Beer Sheva":295530,"IL-Beit Shemesh":295432,"IL-Bet Shemesh":295432,"IL-Bnei Brak":295514,"IL-Eilat":295277,"IL-Hadera":294946,"IL-Haifa":294801,"IL-Herzliya":294778,"IL-Herzliyya":294778,"IL-Holon":294751,"IL-Jerusalem":281184,"IL-Kfar Saba":294514,"IL-Lod":294421,"IL-Modiin":282926,"IL-Nazareth":294098,"IL-Netanya":294071,"IL-Petach Tikvah":293918,"IL-Petah Tikvah":293918,"IL-Petah Tiqwa":293918,"IL-Ra'anana":293807,"IL-Raanana":293807,"IL-Ramat Gan":293788,"IL-Ramla":293768,"IL-Rishon LeZion":293703,"IL-Rishon Leziyyon":293703,"IL-Tel Aviv":293397,"IL-Tiberias":293322,"IM-Douglas":3042237,"IN-Ahmadabad":1279233,"IN-Bangalore":1277333,"IN-Bombay":1275339,"IN-Calcutta":1275004,"IN-Chennai":1264527,"IN-Cochin":1273874,"IN-Hyderabad":1269843,"IN-Jaipur":1269515,"IN-Kanpur":1267995,"IN-New Delhi":1261481,"IN-Pune":1259229,"IN-Surat":1255364,"IQ-Baghdad":98182,"IR-Tehran":112931,"IS-Reykjavik":3413829,"IS-Reykjavík":3413829,"IT-Milano":3173435,"IT-Rome":3169070,"JM-Kingston":3489854,"JO-Amman":250441,"JP-Kobe-shi":1859171,"JP-Kyoto":1857910,"JP-Nagoya-shi":1856057,"JP-Osaka-shi":1853909,"JP-Sapporo":2128295,"JP-Tokyo":1850147,Jerusalem:Jerusalem,Johannesburg:Johannesburg,"KE-Nairobi":184745,"KG-Bishkek":1528675,"KH-Phnom Penh":1821306,"KM-Moroni":921772,"KN-Basseterre":3575551,"KP-Pyongyang":1871859,"KR-Busan":1838524,"KR-Seoul":1835848,"KW-Kuwait":285787,"KY-George Town":3580661,"KZ-Almaty":1526384,"KZ-Astana":1526273,Kiev:Kiev,"LA-Vientiane":1651944,"LB-Beirut":276781,"LC-Castries":3576812,"LI-Vaduz":3042030,"LR-Monrovia":2274895,"LS-Maseru":932505,"LT-Vilnius":593116,"LU-Luxemburg":2960316,"LV-Riga":456172,"LY-Tripoli":2210247,"La Paz":3911925,Livingston:Livingston,London:London,"Los Angeles":5368361,"MA-Casablanca":2553604,"MA-Rabat":2538475,"MD-Chisinau":618426,"ME-Podgorica":3193044,"MG-Antananarivo":1070940,"MK-Skopje":785842,"ML-Bamako":2460596,"MM-Mandalay":1311874,"MM-Rangoon":1298824,"MN-Ulaanbaatar":2028462,"MP-Saipan":7828758,"MR-Nouakchott":2377450,"MS-Plymouth":3578069,"MT-Valletta":2562305,"MU-Port Louis":934154,"MW-Lilongwe":927967,"MX-Cancun":3531673,"MX-Guadalajara":4005539,"MX-Iztapalapa":3526683,"MX-Mazatlan":3996322,"MX-Mexico City":3530597,"MX-Monterrey":3995465,"MX-Puerto Vallarta":3991328,"MX-Tijuana":3981609,"MY-Kota Bharu":1736376,"MY-Kuala Lumpur":1735161,"MZ-Maputo":1040652,Melbourne:Melbourne,"Mexico City":3530597,Miami:Miami,Montreal:Montreal,Moscow:Moscow,"NA-Windhoek":3352136,"NC-Noumea":2139521,"NC-Nouméa":2139521,"NE-Niamey":2440485,"NG-Abuja":2352778,"NG-Lagos":2332459,"NI-Managua":3617763,"NL-Amsterdam":2759794,"NO-Oslo":3143244,"NP-Kathmandu":1283240,"NU-Alofi":4036284,"NZ-Auckland":2193733,"NZ-Christchurch":2192362,"NZ-Wellington":2179537,"New York":5128581,"OM-Muscat":287286,Omaha:Omaha,Ottawa:Ottawa,"PA-Panama City":3703443,"PE-Lima":3936456,"PF-Papeete":4033936,"PG-Port Moresby":2088122,"PH-Manila":1701668,"PK-Islamabad":1176615,"PK-Karachi":1174872,"PL-Warsaw":756135,"PR-San Juan":4568127,"PT-Lisbon":2267057,"PY-Asuncion":3439389,"Panama City":3703443,Paris:Paris,"Petach Tikvah":293918,"Petah Tikvah":293918,"Petah Tikva":293918,"Petah Tiqwa":293918,"Petaẖ Tiqwa":293918,Philadelphia:Philadelphia,Phoenix:Phoenix,Pittsburgh:Pittsburgh,"QA-Doha":290030,"RO-Bucharest":683506,"RS-Belgrade":792680,"RU-Moscow":524901,"RU-Novosibirsk":1496747,"RU-Saint Petersburg":498817,"RU-Yekaterinburg":1486209,"RW-Kigali":202061,"Ra'anana":293807,"SA-Jeddah":105343,"SA-Mecca":104515,"SA-Medina":109223,"SA-Riyadh":108410,"SB-Honiara":2108502,"SC-Victoria":241131,"SD-Khartoum":379252,"SD-Omdurman":365137,"SE-Stockholm":2673730,"SG-Singapore":1880252,"SH-Jamestown":3370903,"SI-Ljubljana":3196359,"SK-Bratislava":3060972,"SL-Freetown":2408770,"SN-Dakar":2253354,"SO-Mogadishu":53654,"SR-Paramaribo":3383330,"ST-Sao Tome":2410763,"ST-São Tomé":2410763,"SV-San Salvador":3583361,"SY-Aleppo":170063,"SY-Damascus":170654,"SZ-Mbabane":934985,"Saint Louis":4407066,"Saint Petersburg":498817,"San Francisco":5391959,Seattle:Seattle,Sydney:Sydney,"TC-Cockburn Town":3576994,"TD-Ndjamena":2427123,"TG-Lome":2365267,"TG-Lomé":2365267,"TH-Bangkok":1609350,"TJ-Dushanbe":1221874,"TM-Ashgabat":162183,"TN-Tunis":2464470,"TR-Adana":325363,"TR-Ankara":323786,"TR-Bursa":750269,"TR-Istanbul":745044,"TR-Izmir":311046,"TV-Funafuti":2110394,"TW-Kaohsiung":1673820,"TW-Taipei":1668341,"TZ-Dar es Salaam":160263,"TZ-Dodoma":160196,"Tel Aviv":293397,Tiberias:Tiberias,Toronto:Toronto,"UA-Kharkiv":706483,"UA-Kiev":703448,"UG-Kampala":232422,"US-Atlanta-GA":4180439,"US-Austin-TX":4671654,"US-Baltimore-MD":4347778,"US-Boston-MA":4930956,"US-Buffalo-NY":5110629,"US-Chicago-IL":4887398,"US-Cincinnati-OH":4508722,"US-Cleveland-OH":5150529,"US-Columbus-OH":4509177,"US-Dallas-TX":4684888,"US-Denver-CO":5419384,"US-Detroit-MI":4990729,"US-Hartford-CT":4835797,"US-Honolulu-HI":5856195,"US-Houston-TX":4699066,"US-Lakewood-NJ":5100280,"US-Las Vegas-NV":5506956,"US-Livingston-NY":5100572,"US-Los Angeles-CA":5368361,"US-Memphis-TN":4641239,"US-Miami-FL":4164138,"US-Milwaukee-WI":5263045,"US-Monsey-NY":5127315,"US-New Haven-CT":4839366,"US-New York-NY":5128581,"US-Omaha-NE":5074472,"US-Orlando-FL":4167147,"US-Passaic-NJ":5102443,"US-Philadelphia-PA":4560349,"US-Phoenix-AZ":5308655,"US-Pittsburgh-PA":5206379,"US-Portland-OR":5746545,"US-Providence-RI":5224151,"US-Richmond-VA":4781708,"US-Rochester-NY":5134086,"US-Saint Louis-MO":4407066,"US-Saint Paul-MN":5045360,"US-San Diego-CA":5391811,"US-San Francisco-CA":5391959,"US-Seattle-WA":5809844,"US-Silver Spring-MD":4369596,"US-Teaneck-NJ":5105262,"US-Washington-DC":4140963,"US-White Plains-NY":5144336,"UY-Montevideo":3441575,"UZ-Tashkent":1512569,"VC-Kingstown":3577887,"VE-Caracas":3646738,"VE-Maracaibo":3633009,"VE-Maracay":3632998,"VE-Valencia":3625549,"VG-Road Town":3577430,"VN-Hanoi":1581130,"VN-Ho Chi Minh City":1566083,Vancouver:Vancouver,"WS-Apia":4035413,"Washington DC":4140963,"White Plains":5144336,"YE-Sanaa":71137,"YT-Mamoudzou":921815,"ZA-Cape Town":3369157,"ZA-Durban":1007311,"ZA-Johannesburg":993800,"ZA-Pretoria":964137,"ZM-Lusaka":909137,"ZW-Harare":890299};
|
|
22
|
+
const Ashdod=295629;const Atlanta=4180439;const Austin=4671654;const Baghdad=98182;const Baltimore=4347778;const Berlin=2950159;const Bogota=3688689;const Boston=4930956;const Buffalo=5110629;const Chicago=4887398;const Cincinnati=4508722;const Cleveland=5150529;const Dallas=4684888;const Denver=5419384;const Detroit=4990729;const Eilat=295277;const Gibraltar=2411585;const Haifa=294801;const Hawaii=5856195;const Houston=4699066;const Jerusalem=281184;const Johannesburg=993800;const Kiev=703448;const Livingston=5100572;const London=2643743;const Melbourne=2158177;const Miami=4164138;const Montreal=6077243;const Moscow=524901;const Omaha=5074472;const Ottawa=6094817;const Paris=2988507;const Philadelphia=4560349;const Phoenix=5308655;const Pittsburgh=5206379;const Seattle=5809844;const Sydney=2147714;const Tiberias=293322;const Toronto=6167865;const Vancouver=6173331;var city2geonameid = {"AD-Andorra La Vella":3041563,"AE-Abu Dhabi":292968,"AE-Dubai":292223,"AF-Kabul":1138958,"AI-The Valley":3573374,"AL-Tirana":3183875,"AM-Yerevan":616052,"AO-Luanda":2240449,"AR-Buenos Aires":3435910,"AR-Cordoba":3860259,"AR-Rosario":3838583,"AS-Pago Pago":5881576,"AT-Vienna":2761369,"AU-Adelaide":2078025,"AU-Brisbane":2174003,"AU-Canberra":2172517,"AU-Gold Coast":2165087,"AU-Hobart":2163355,"AU-Melbourne":2158177,"AU-Perth":2063523,"AU-Sydney":2147714,"AW-Oranjestad":3577154,"AZ-Baku":587084,Ashdod:Ashdod,Atlanta:Atlanta,Austin:Austin,"BA-Sarajevo":3191281,"BB-Bridgetown":3374036,"BD-Chittagong":1205733,"BD-Dhaka":1185241,"BD-Khulna":1336135,"BE-Brussels":2800866,"BF-Ouagadougou":2357048,"BG-Sofia":727011,"BH-Manama":290340,"BI-Bujumbura":425378,"BJ-Porto-novo":2392087,"BM-Hamilton":3573197,"BN-Bandar Seri Begawan":1820906,"BO-La Paz":3911925,"BO-Santa Cruz de la Sierra":3904906,"BR-Belo Horizonte":3470127,"BR-Brasilia":3469058,"BR-Fortaleza":3399415,"BR-Rio de Janeiro":3451190,"BR-Salvador":3450554,"BR-Sao Paulo":3448439,"BS-Nassau":3571824,"BT-Thimphu":1252416,"BW-Gaborone":933773,"BY-Minsk":625144,"BZ-Belmopan":3582672,Baghdad:Baghdad,Baltimore:Baltimore,"Be'er Sheva":295530,"Beer Sheva":295530,"Bene Beraq":295514,"IL-Bene Beraq":295514,Berlin:Berlin,"Bnei Brak":295514,Bogota:Bogota,Boston:Boston,"Buenos Aires":3435910,Buffalo:Buffalo,"CA-Calgary":5913490,"CA-Edmonton":5946768,"CA-Halifax":6324729,"CA-Mississauga":6075357,"CA-Montreal":6077243,"CA-Ottawa":6094817,"CA-Quebec City":6325494,"CA-Regina":6119109,"CA-Saskatoon":6141256,"CA-St. John's-05":6324733,"CA-Toronto":6167865,"CA-Vancouver":6173331,"CA-Victoria":6174041,"CA-Winnipeg":6183235,"CD-Kinshasa":2314302,"CD-Lubumbashi":922704,"CF-Bangui":2389853,"CG-Brazzaville":2260535,"CH-Bern":2661552,"CH-Geneva":2660646,"CH-Zurich":2657896,"CI-Abidjan":2293538,"CI-Yamoussoukro":2279755,"CK-Avarua":4035715,"CL-Santiago":3871336,"CM-Douala":2232593,"CM-Yaounde":2220957,"CN-Beijing":1816670,"CN-Chengdu":1815286,"CN-Chongqing":1814906,"CN-Guangzhou":1809858,"CN-Harbin":2037013,"CN-Kaifeng":1804879,"CN-Lanzhou":1804430,"CN-Nanchong":1800146,"CN-Nanjing":1799962,"CN-Puyang":1798422,"CN-Shanghai":1796236,"CN-Shenyang":2034937,"CN-Shenzhen":1795565,"CN-Shiyan":1794903,"CN-Tai'an":1793724,"CN-Tianjin":1792947,"CN-Wuhan":1791247,"CN-Xi'an":1790630,"CN-Yueyang":1927639,"CN-Zhumadian":1783873,"CO-Barranquilla":3689147,"CO-Bogota":3688689,"CO-Bogotá":3688689,"CO-Cali":3687925,"CO-Medellin":3674962,"CR-San Jose":3621849,"CR-San José":3621849,"CR-San José":3621849,"CU-Havana":3553478,"CV-Praia":3374333,"CW-Willemstad":3513090,"CY-Nicosia":146268,"CZ-Prague":3067696,Chicago:Chicago,Cincinnati:Cincinnati,Cleveland:Cleveland,"DE-Berlin":2950159,"DE-Hamburg":2911298,"DE-Munich":2867714,"DK-Copenhagen":2618425,"DM-Roseau":3575635,"DO-Santiago de los Caballeros":3492914,"DO-Santo Domingo":3492908,"DZ-Algiers":2507480,Dallas:Dallas,Denver:Denver,Detroit:Detroit,"EC-Guayaquil":3657509,"EC-Quito":3652462,"EE-Tallinn":588409,"EG-Al Jizah":360995,"EG-Alexandria":361058,"EG-Cairo":360630,"ER-Asmara":343300,"ES-Barcelona":3128760,"ES-Madrid":3117735,"ET-Addis Ababa":344979,Eilat:Eilat,"FI-Helsinki":658225,"FJ-Suva":2198148,"FK-Stanley":3426691,"FO-Tórshavn":2611396,"FR-Marseilles":2995469,"FR-Paris":2988507,"GA-Libreville":2399697,"GB-Belfast":2655984,"GB-Birmingham":2655603,"GB-Bristol":2654675,"GB-Cardiff":2653822,"GB-Edinburgh":2650225,"GB-Glasgow":2648579,"GB-Leeds":2644688,"GB-Liverpool":2644210,"GB-London":2643743,"GB-Manchester":2643123,"GB-Sheffield":2638077,"GE-Tbilisi":611717,"GH-Accra":2306104,"GH-Kumasi":2298890,"GI-Gibraltar":2411585,"GL-Nuuk":3421319,"GM-Banjul":2413876,"GN-Camayenne":2422488,"GN-Conakry":2422465,"GQ-Malabo":2309527,"GR-Athens":264371,"GT-Guatemala City":3598132,"GW-Bissau":2374775,"GY-Georgetown":3378644,Gibraltar:Gibraltar,"HK-Hong Kong":1819729,"HN-Tegucigalpa":3600949,"HR-Zagreb":3186886,"HT-Port-au-Prince":3718426,"HU-Budapest":3054643,Haifa:Haifa,Hawaii:Hawaii,Houston:Houston,"ID-Bandung":1650357,"ID-Bekasi":1649378,"ID-Depok":1645518,"ID-Jakarta":1642911,"ID-Makassar":1622786,"ID-Medan":1214520,"ID-Palembang":1633070,"ID-Semarang":1627896,"ID-South Tangerang":8581443,"ID-Surabaya":1625822,"ID-Tangerang":1625084,"IE-Dublin":2964574,"IL-Ashdod":295629,"IL-Ashkelon":295620,"IL-Ashqelon":295620,"IL-Bat Yam":295548,"IL-Be'er Sheva":295530,"IL-Beer Sheva":295530,"IL-Beit Shemesh":295432,"IL-Bet Shemesh":295432,"IL-Bnei Brak":295514,"IL-Eilat":295277,"IL-Hadera":294946,"IL-Haifa":294801,"IL-Herzliya":294778,"IL-Herzliyya":294778,"IL-Holon":294751,"IL-Jerusalem":281184,"IL-Kfar Saba":294514,"IL-Lod":294421,"IL-Modiin":282926,"IL-Nazareth":294098,"IL-Netanya":294071,"IL-Petach Tikvah":293918,"IL-Petah Tikvah":293918,"IL-Petah Tiqwa":293918,"IL-Ra'anana":293807,"IL-Raanana":293807,"IL-Ramat Gan":293788,"IL-Ramla":293768,"IL-Rishon LeZion":293703,"IL-Rishon Leziyyon":293703,"IL-Tel Aviv":293397,"IL-Tiberias":293322,"IM-Douglas":3042237,"IN-Ahmadabad":1279233,"IN-Bangalore":1277333,"IN-Bombay":1275339,"IN-Calcutta":1275004,"IN-Chennai":1264527,"IN-Cochin":1273874,"IN-Hyderabad":1269843,"IN-Jaipur":1269515,"IN-Kanpur":1267995,"IN-New Delhi":1261481,"IN-Pune":1259229,"IN-Surat":1255364,"IQ-Baghdad":98182,"IR-Tehran":112931,"IS-Reykjavik":3413829,"IS-Reykjavík":3413829,"IT-Milano":3173435,"IT-Rome":3169070,"JM-Kingston":3489854,"JO-Amman":250441,"JP-Kobe-shi":1859171,"JP-Kyoto":1857910,"JP-Nagoya-shi":1856057,"JP-Osaka-shi":1853909,"JP-Sapporo":2128295,"JP-Tokyo":1850147,Jerusalem:Jerusalem,Johannesburg:Johannesburg,"KE-Nairobi":184745,"KG-Bishkek":1528675,"KH-Phnom Penh":1821306,"KM-Moroni":921772,"KN-Basseterre":3575551,"KP-Pyongyang":1871859,"KR-Busan":1838524,"KR-Seoul":1835848,"KW-Kuwait":285787,"KY-George Town":3580661,"KZ-Almaty":1526384,"KZ-Astana":1526273,Kiev:Kiev,"LA-Vientiane":1651944,"LB-Beirut":276781,"LC-Castries":3576812,"LI-Vaduz":3042030,"LR-Monrovia":2274895,"LS-Maseru":932505,"LT-Vilnius":593116,"LU-Luxemburg":2960316,"LV-Riga":456172,"LY-Tripoli":2210247,"La Paz":3911925,Livingston:Livingston,London:London,"Los Angeles":5368361,"MA-Casablanca":2553604,"MA-Rabat":2538475,"MD-Chisinau":618426,"ME-Podgorica":3193044,"MG-Antananarivo":1070940,"MK-Skopje":785842,"ML-Bamako":2460596,"MM-Mandalay":1311874,"MM-Rangoon":1298824,"MN-Ulaanbaatar":2028462,"MP-Saipan":7828758,"MR-Nouakchott":2377450,"MS-Plymouth":3578069,"MT-Valletta":2562305,"MU-Port Louis":934154,"MW-Lilongwe":927967,"MX-Cancun":3531673,"MX-Guadalajara":4005539,"MX-Iztapalapa":3526683,"MX-Mazatlan":3996322,"MX-Mexico City":3530597,"MX-Monterrey":3995465,"MX-Puerto Vallarta":3991328,"MX-Tijuana":3981609,"MY-Kota Bharu":1736376,"MY-Kuala Lumpur":1735161,"MZ-Maputo":1040652,Melbourne:Melbourne,"Mexico City":3530597,Miami:Miami,Montreal:Montreal,Moscow:Moscow,"NA-Windhoek":3352136,"NC-Noumea":2139521,"NC-Nouméa":2139521,"NE-Niamey":2440485,"NG-Abuja":2352778,"NG-Lagos":2332459,"NI-Managua":3617763,"NL-Amsterdam":2759794,"NO-Oslo":3143244,"NP-Kathmandu":1283240,"NU-Alofi":4036284,"NZ-Auckland":2193733,"NZ-Christchurch":2192362,"NZ-Wellington":2179537,"New York":5128581,"OM-Muscat":287286,Omaha:Omaha,Ottawa:Ottawa,"PA-Panama City":3703443,"PE-Lima":3936456,"PF-Papeete":4033936,"PG-Port Moresby":2088122,"PH-Manila":1701668,"PK-Islamabad":1176615,"PK-Karachi":1174872,"PL-Warsaw":756135,"PR-San Juan":4568127,"PT-Lisbon":2267057,"PY-Asuncion":3439389,"Panama City":3703443,Paris:Paris,"Petach Tikvah":293918,"Petah Tikvah":293918,"Petah Tikva":293918,"Petah Tiqwa":293918,"Petaẖ Tiqwa":293918,Philadelphia:Philadelphia,Phoenix:Phoenix,Pittsburgh:Pittsburgh,"QA-Doha":290030,"RO-Bucharest":683506,"RS-Belgrade":792680,"RU-Moscow":524901,"RU-Novosibirsk":1496747,"RU-Saint Petersburg":498817,"RU-Yekaterinburg":1486209,"RW-Kigali":202061,"Ra'anana":293807,"SA-Jeddah":105343,"SA-Mecca":104515,"SA-Medina":109223,"SA-Riyadh":108410,"SB-Honiara":2108502,"SC-Victoria":241131,"SD-Khartoum":379252,"SD-Omdurman":365137,"SE-Stockholm":2673730,"SG-Singapore":1880252,"SH-Jamestown":3370903,"SI-Ljubljana":3196359,"SK-Bratislava":3060972,"SL-Freetown":2408770,"SN-Dakar":2253354,"SO-Mogadishu":53654,"SR-Paramaribo":3383330,"ST-Sao Tome":2410763,"ST-São Tomé":2410763,"SV-San Salvador":3583361,"SY-Aleppo":170063,"SY-Damascus":170654,"SZ-Mbabane":934985,"Saint Louis":4407066,"Saint Petersburg":498817,"San Francisco":5391959,Seattle:Seattle,Sydney:Sydney,"TC-Cockburn Town":3576994,"TD-Ndjamena":2427123,"TG-Lome":2365267,"TG-Lomé":2365267,"TH-Bangkok":1609350,"TJ-Dushanbe":1221874,"TM-Ashgabat":162183,"TN-Tunis":2464470,"TR-Adana":325363,"TR-Ankara":323786,"TR-Bursa":750269,"TR-Istanbul":745044,"TR-Izmir":311046,"TV-Funafuti":2110394,"TW-Kaohsiung":1673820,"TW-Taipei":1668341,"TZ-Dar es Salaam":160263,"TZ-Dodoma":160196,"Tel Aviv":293397,Tiberias:Tiberias,Toronto:Toronto,"UA-Kharkiv":706483,"UA-Kiev":703448,"UG-Kampala":232422,"US-Atlanta-GA":4180439,"US-Austin-TX":4671654,"US-Baltimore-MD":4347778,"US-Boston-MA":4930956,"US-Buffalo-NY":5110629,"US-Chicago-IL":4887398,"US-Cincinnati-OH":4508722,"US-Cleveland-OH":5150529,"US-Columbus-OH":4509177,"US-Dallas-TX":4684888,"US-Denver-CO":5419384,"US-Detroit-MI":4990729,"US-Hartford-CT":4835797,"US-Honolulu-HI":5856195,"US-Houston-TX":4699066,"US-Lakewood-NJ":5100280,"US-Las Vegas-NV":5506956,"US-Livingston-NY":5100572,"US-Los Angeles-CA":5368361,"US-Memphis-TN":4641239,"US-Miami-FL":4164138,"US-Milwaukee-WI":5263045,"US-Monsey-NY":5127315,"US-New Haven-CT":4839366,"US-New York-NY":5128581,"US-Omaha-NE":5074472,"US-Orlando-FL":4167147,"US-Passaic-NJ":5102443,"US-Philadelphia-PA":4560349,"US-Phoenix-AZ":5308655,"US-Pittsburgh-PA":5206379,"US-Portland-OR":5746545,"US-Providence-RI":5224151,"US-Richmond-VA":4781708,"US-Rochester-NY":5134086,"US-Saint Louis-MO":4407066,"US-Saint Paul-MN":5045360,"US-San Diego-CA":5391811,"US-San Francisco-CA":5391959,"US-Seattle-WA":5809844,"US-Silver Spring-MD":4369596,"US-Teaneck-NJ":5105262,"US-Washington-DC":4140963,"US-White Plains-NY":5144336,"UY-Montevideo":3441575,"UZ-Tashkent":1512569,"VC-Kingstown":3577887,"VE-Caracas":3646738,"VE-Maracaibo":3633009,"VE-Maracay":3632998,"VE-Valencia":3625549,"VG-Road Town":3577430,"VN-Hanoi":1581130,"VN-Ho Chi Minh City":1566083,Vancouver:Vancouver,"WS-Apia":4035413,"Washington DC":4140963,"White Plains":5144336,"YE-Sanaa":71137,"YT-Mamoudzou":921815,"ZA-Cape Town":3369157,"ZA-Durban":1007311,"ZA-Johannesburg":993800,"ZA-Pretoria":964137,"ZM-Lusaka":909137,"ZW-Harare":890299};
|
|
23
23
|
|
|
24
24
|
const GEONAME_SQL = `SELECT
|
|
25
25
|
g.name as name,
|
|
@@ -64,11 +64,12 @@ WHERE CityMixedCase MATCH ?
|
|
|
64
64
|
ORDER BY Population DESC
|
|
65
65
|
LIMIT 15`;
|
|
66
66
|
const GEONAME_COMPLETE_SQL = `SELECT geonameid, asciiname, admin1, country,
|
|
67
|
-
population, latitude, longitude, timezone
|
|
67
|
+
population, latitude, longitude, timezone,
|
|
68
|
+
((sqrt(population)/40) + (-30 * rank)) as myrank
|
|
68
69
|
FROM geoname_fulltext
|
|
69
|
-
WHERE
|
|
70
|
+
WHERE geoname_fulltext MATCH ?
|
|
70
71
|
GROUP BY geonameid
|
|
71
|
-
ORDER BY
|
|
72
|
+
ORDER BY myrank DESC
|
|
72
73
|
LIMIT 15`;
|
|
73
74
|
const stateNames = {
|
|
74
75
|
'AK': 'Alaska',
|
|
@@ -149,7 +150,7 @@ class GeoDb {
|
|
|
149
150
|
/** @type {Map<number, Location>} */
|
|
150
151
|
|
|
151
152
|
this.geonamesCache = new Map();
|
|
152
|
-
/** @type {Map<string,
|
|
153
|
+
/** @type {Map<string, number>} */
|
|
153
154
|
|
|
154
155
|
this.legacyCities = new Map();
|
|
155
156
|
|
|
@@ -222,6 +223,7 @@ class GeoDb {
|
|
|
222
223
|
const cityDescr = `${result.CityMixedCase}, ${result.State} ${zip}`;
|
|
223
224
|
const location = new core.Location(result.Latitude, result.Longitude, false, tzid, cityDescr, 'US', zip);
|
|
224
225
|
location.admin1 = location.state = result.State;
|
|
226
|
+
location.stateName = stateNames[location.state];
|
|
225
227
|
location.geo = 'zip';
|
|
226
228
|
location.zip = zip;
|
|
227
229
|
return location;
|
|
@@ -327,11 +329,12 @@ class GeoDb {
|
|
|
327
329
|
/**
|
|
328
330
|
* Generates autocomplete results based on a query string
|
|
329
331
|
* @param {string} qraw
|
|
332
|
+
* @param {boolean} latlong
|
|
330
333
|
* @return {Object[]}
|
|
331
334
|
*/
|
|
332
335
|
|
|
333
336
|
|
|
334
|
-
autoComplete(qraw) {
|
|
337
|
+
autoComplete(qraw, latlong = false) {
|
|
335
338
|
qraw = qraw.trim();
|
|
336
339
|
|
|
337
340
|
if (qraw.length === 0) {
|
|
@@ -353,10 +356,11 @@ class GeoDb {
|
|
|
353
356
|
}
|
|
354
357
|
|
|
355
358
|
qraw = qraw.replace(/\"/g, '""');
|
|
356
|
-
const geoRows = this.geonamesCompStmt.all(`"${qraw}
|
|
359
|
+
const geoRows = this.geonamesCompStmt.all(`{asciiname country admin1} : "${qraw}" *`);
|
|
357
360
|
const geoMatches = geoRows.map(res => {
|
|
358
361
|
const country = res.country || '';
|
|
359
362
|
const admin1 = res.admin1 || '';
|
|
363
|
+
const rank = Math.trunc(res.myrank * 100.0) / 100.0;
|
|
360
364
|
const obj = {
|
|
361
365
|
id: res.geonameid,
|
|
362
366
|
value: core.Location.geonameCityDescr(res.asciiname, admin1, country),
|
|
@@ -367,7 +371,8 @@ class GeoDb {
|
|
|
367
371
|
longitude: res.longitude,
|
|
368
372
|
timezone: res.timezone,
|
|
369
373
|
population: res.population,
|
|
370
|
-
geo: 'geoname'
|
|
374
|
+
geo: 'geoname',
|
|
375
|
+
rank: rank
|
|
371
376
|
};
|
|
372
377
|
|
|
373
378
|
if (country) {
|
|
@@ -378,7 +383,6 @@ class GeoDb {
|
|
|
378
383
|
obj.admin1 = admin1;
|
|
379
384
|
}
|
|
380
385
|
|
|
381
|
-
obj.tokens = Array.from(new Set(res.asciiname.split(' ').concat(admin1.split(' '), country.split(' '))));
|
|
382
386
|
return obj;
|
|
383
387
|
});
|
|
384
388
|
|
|
@@ -406,7 +410,18 @@ class GeoDb {
|
|
|
406
410
|
|
|
407
411
|
const values = Array.from(map.values());
|
|
408
412
|
values.sort((a, b) => b.population - a.population);
|
|
409
|
-
|
|
413
|
+
const topN = values.slice(0, 10);
|
|
414
|
+
|
|
415
|
+
if (!latlong) {
|
|
416
|
+
for (const val of topN) {
|
|
417
|
+
delete val.latitude;
|
|
418
|
+
delete val.longitude;
|
|
419
|
+
delete val.timezone;
|
|
420
|
+
delete val.population;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
return topN;
|
|
410
425
|
}
|
|
411
426
|
}
|
|
412
427
|
/** Reads entire ZIP database and caches in-memory */
|
|
@@ -564,6 +579,13 @@ async function buildGeonamesSqlite(opts) {
|
|
|
564
579
|
} else {
|
|
565
580
|
a[3] = a[3].replace(/‘/g, '\'');
|
|
566
581
|
a[3] = a[3].replace(/’/g, '\'');
|
|
582
|
+
a[3] = a[3].replace(/Ḥ/g, 'Ch');
|
|
583
|
+
a[3] = a[3].replace(/H̱/g, 'Ch');
|
|
584
|
+
a[3] = a[3].replace(/ẖ/g, 'ch');
|
|
585
|
+
a[3] = a[3].replace(/Ẕ/g, 'Tz');
|
|
586
|
+
a[3] = a[3].replace(/ẕ/g, 'tz');
|
|
587
|
+
a[3] = a[3].replace(/ā/g, 'a');
|
|
588
|
+
a[3] = a[3].replace(/é/g, 'e');
|
|
567
589
|
}
|
|
568
590
|
|
|
569
591
|
return true;
|
|
@@ -579,27 +601,27 @@ async function buildGeonamesSqlite(opts) {
|
|
|
579
601
|
`);
|
|
580
602
|
doSql(logger, db, `update admin1 set name='',asciiname='' where key like 'PS.%';`, `update country set country = '' where iso = 'PS';`, `delete from geoname where geonameid = 7303419;`);
|
|
581
603
|
doSql(logger, db, `DROP TABLE IF EXISTS geoname_fulltext`, `CREATE VIRTUAL TABLE geoname_fulltext
|
|
582
|
-
USING
|
|
583
|
-
asciiname
|
|
584
|
-
population
|
|
604
|
+
USING fts5(geonameid,
|
|
605
|
+
asciiname, admin1, country,
|
|
606
|
+
population, latitude, longitude, timezone
|
|
585
607
|
);
|
|
586
608
|
`, `DROP TABLE IF EXISTS geoname_non_ascii`, `CREATE TABLE geoname_non_ascii AS
|
|
587
609
|
SELECT geonameid FROM geoname WHERE asciiname <> name`, `INSERT INTO geoname_fulltext
|
|
588
|
-
SELECT g.geonameid,
|
|
610
|
+
SELECT g.geonameid,
|
|
589
611
|
g.asciiname, a.asciiname, c.Country,
|
|
590
612
|
g.population, g.latitude, g.longitude, g.timezone
|
|
591
613
|
FROM geoname g, admin1 a, country c
|
|
592
614
|
WHERE g.country = c.ISO
|
|
593
615
|
AND g.country||'.'||g.admin1 = a.key
|
|
594
616
|
`, `INSERT INTO geoname_fulltext
|
|
595
|
-
SELECT g.geonameid,
|
|
617
|
+
SELECT g.geonameid,
|
|
596
618
|
g.asciiname, '', c.Country,
|
|
597
619
|
g.population, g.latitude, g.longitude, g.timezone
|
|
598
620
|
FROM geoname g, country c
|
|
599
621
|
WHERE g.country = c.ISO
|
|
600
622
|
AND (g.admin1 = '' OR g.admin1 = '00')
|
|
601
623
|
`, `INSERT INTO geoname_fulltext
|
|
602
|
-
SELECT g.geonameid,
|
|
624
|
+
SELECT g.geonameid,
|
|
603
625
|
g.name, a.name, c.Country,
|
|
604
626
|
g.population, g.latitude, g.longitude, g.timezone
|
|
605
627
|
FROM geoname_non_ascii gna, geoname g, admin1 a, country c
|
|
@@ -607,7 +629,7 @@ async function buildGeonamesSqlite(opts) {
|
|
|
607
629
|
AND g.country = c.ISO
|
|
608
630
|
AND g.country||'.'||g.admin1 = a.key
|
|
609
631
|
`, `INSERT INTO geoname_fulltext
|
|
610
|
-
SELECT g.geonameid,
|
|
632
|
+
SELECT g.geonameid,
|
|
611
633
|
alt.name, '', 'ישראל',
|
|
612
634
|
g.population, g.latitude, g.longitude, g.timezone
|
|
613
635
|
FROM geoname g, altnames alt
|
|
@@ -615,7 +637,7 @@ async function buildGeonamesSqlite(opts) {
|
|
|
615
637
|
AND alt.isolanguage = 'he'
|
|
616
638
|
AND g.geonameid = alt.geonameid
|
|
617
639
|
`, `INSERT INTO geoname_fulltext
|
|
618
|
-
SELECT g.geonameid,
|
|
640
|
+
SELECT g.geonameid,
|
|
619
641
|
alt.name, a1.asciiname, 'Israel',
|
|
620
642
|
g.population, g.latitude, g.longitude, g.timezone
|
|
621
643
|
FROM geoname g, admin1 a1, altnames alt
|
|
@@ -623,7 +645,7 @@ async function buildGeonamesSqlite(opts) {
|
|
|
623
645
|
AND alt.isolanguage = 'en'
|
|
624
646
|
AND g.geonameid = alt.geonameid
|
|
625
647
|
AND g.country||'.'||g.admin1 = a1.key
|
|
626
|
-
|
|
648
|
+
`, 'VACUUM');
|
|
627
649
|
db.close();
|
|
628
650
|
return Promise.resolve(true);
|
|
629
651
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @hebcal/geo-sqlite v4.
|
|
1
|
+
/*! @hebcal/geo-sqlite v4.4.0 */
|
|
2
2
|
import Database from 'better-sqlite3';
|
|
3
3
|
import { Location, Locale } from '@hebcal/core';
|
|
4
4
|
import '@hebcal/cities';
|
|
@@ -7,7 +7,7 @@ import events from 'events';
|
|
|
7
7
|
import fs from 'fs';
|
|
8
8
|
import readline from 'readline';
|
|
9
9
|
|
|
10
|
-
var Ashdod=295629;var Atlanta=4180439;var Austin=4671654;var Baghdad=98182;var Baltimore=4347778;var Berlin=2950159;var Bogota=3688689;var Boston=4930956;var Buffalo=5110629;var Chicago=4887398;var Cincinnati=4508722;var Cleveland=5150529;var Dallas=4684888;var Denver=5419384;var Detroit=4990729;var Eilat=295277;var Gibraltar=2411585;var Haifa=294801;var Hawaii=5856195;var Houston=4699066;var Jerusalem=281184;var Johannesburg=993800;var Kiev=703448;var Livingston=5100572;var London=2643743;var Melbourne=2158177;var Miami=4164138;var Montreal=6077243;var Moscow=524901;var Omaha=5074472;var Ottawa=6094817;var Paris=2988507;var Philadelphia=4560349;var Phoenix=5308655;var Pittsburgh=5206379;var Seattle=5809844;var Sydney=2147714;var Tiberias=293322;var Toronto=6167865;var Vancouver=6173331;var city2geonameid = {"AD-Andorra La Vella":3041563,"AE-Abu Dhabi":292968,"AE-Dubai":292223,"AF-Kabul":1138958,"AI-The Valley":3573374,"AL-Tirana":3183875,"AM-Yerevan":616052,"AO-Luanda":2240449,"AR-Buenos Aires":3435910,"AR-Cordoba":3860259,"AR-Rosario":3838583,"AS-Pago Pago":5881576,"AT-Vienna":2761369,"AU-Adelaide":2078025,"AU-Brisbane":2174003,"AU-Canberra":2172517,"AU-Gold Coast":2165087,"AU-Hobart":2163355,"AU-Melbourne":2158177,"AU-Perth":2063523,"AU-Sydney":2147714,"AW-Oranjestad":3577154,"AZ-Baku":587084,Ashdod:Ashdod,Atlanta:Atlanta,Austin:Austin,"BA-Sarajevo":3191281,"BB-Bridgetown":3374036,"BD-Chittagong":1205733,"BD-Dhaka":1185241,"BD-Khulna":1336135,"BE-Brussels":2800866,"BF-Ouagadougou":2357048,"BG-Sofia":727011,"BH-Manama":290340,"BI-Bujumbura":425378,"BJ-Porto-novo":2392087,"BM-Hamilton":3573197,"BN-Bandar Seri Begawan":1820906,"BO-La Paz":3911925,"BO-Santa Cruz de la Sierra":3904906,"BR-Belo Horizonte":3470127,"BR-Brasilia":3469058,"BR-Fortaleza":3399415,"BR-Rio de Janeiro":3451190,"BR-Salvador":3450554,"BR-Sao Paulo":3448439,"BS-Nassau":3571824,"BT-Thimphu":1252416,"BW-Gaborone":933773,"BY-Minsk":625144,"BZ-Belmopan":3582672,Baghdad:Baghdad,Baltimore:Baltimore,"Be'er Sheva":295530,"Beer Sheva":295530,"Bene Beraq":295514,"IL-Bene Beraq":295514,Berlin:Berlin,"Bnei Brak":295514,Bogota:Bogota,Boston:Boston,"Buenos Aires":3435910,Buffalo:Buffalo,"CA-Calgary":5913490,"CA-Edmonton":5946768,"CA-Halifax":6324729,"CA-Mississauga":6075357,"CA-Montreal":6077243,"CA-Ottawa":6094817,"CA-Quebec City":6325494,"CA-Regina":6119109,"CA-Saskatoon":6141256,"CA-St. John's-05":6324733,"CA-Toronto":6167865,"CA-Vancouver":6173331,"CA-Victoria":6174041,"CA-Winnipeg":6183235,"CD-Kinshasa":2314302,"CD-Lubumbashi":922704,"CF-Bangui":2389853,"CG-Brazzaville":2260535,"CH-Bern":2661552,"CH-Geneva":2660646,"CH-Zurich":2657896,"CI-Abidjan":2293538,"CI-Yamoussoukro":2279755,"CK-Avarua":4035715,"CL-Santiago":3871336,"CM-Douala":2232593,"CM-Yaounde":2220957,"CN-Beijing":1816670,"CN-Chengdu":1815286,"CN-Chongqing":1814906,"CN-Guangzhou":1809858,"CN-Harbin":2037013,"CN-Kaifeng":1804879,"CN-Lanzhou":1804430,"CN-Nanchong":1800146,"CN-Nanjing":1799962,"CN-Puyang":1798422,"CN-Shanghai":1796236,"CN-Shenyang":2034937,"CN-Shenzhen":1795565,"CN-Shiyan":1794903,"CN-Tai'an":1793724,"CN-Tianjin":1792947,"CN-Wuhan":1791247,"CN-Xi'an":1790630,"CN-Yueyang":1927639,"CN-Zhumadian":1783873,"CO-Barranquilla":3689147,"CO-Bogota":3688689,"CO-Bogotá":3688689,"CO-Cali":3687925,"CO-Medellin":3674962,"CR-San Jose":3621849,"CR-San José":3621849,"CR-San José":3621849,"CU-Havana":3553478,"CV-Praia":3374333,"CW-Willemstad":3513090,"CY-Nicosia":146268,"CZ-Prague":3067696,Chicago:Chicago,Cincinnati:Cincinnati,Cleveland:Cleveland,"DE-Berlin":2950159,"DE-Hamburg":2911298,"DE-Munich":2867714,"DK-Copenhagen":2618425,"DM-Roseau":3575635,"DO-Santiago de los Caballeros":3492914,"DO-Santo Domingo":3492908,"DZ-Algiers":2507480,Dallas:Dallas,Denver:Denver,Detroit:Detroit,"EC-Guayaquil":3657509,"EC-Quito":3652462,"EE-Tallinn":588409,"EG-Al Jizah":360995,"EG-Alexandria":361058,"EG-Cairo":360630,"ER-Asmara":343300,"ES-Barcelona":3128760,"ES-Madrid":3117735,"ET-Addis Ababa":344979,Eilat:Eilat,"FI-Helsinki":658225,"FJ-Suva":2198148,"FK-Stanley":3426691,"FO-Tórshavn":2611396,"FR-Marseilles":2995469,"FR-Paris":2988507,"GA-Libreville":2399697,"GB-Belfast":2655984,"GB-Birmingham":2655603,"GB-Bristol":2654675,"GB-Cardiff":2653822,"GB-Edinburgh":2650225,"GB-Glasgow":2648579,"GB-Leeds":2644688,"GB-Liverpool":2644210,"GB-London":2643743,"GB-Manchester":2643123,"GB-Sheffield":2638077,"GE-Tbilisi":611717,"GH-Accra":2306104,"GH-Kumasi":2298890,"GI-Gibraltar":2411585,"GL-Nuuk":3421319,"GM-Banjul":2413876,"GN-Camayenne":2422488,"GN-Conakry":2422465,"GQ-Malabo":2309527,"GR-Athens":264371,"GT-Guatemala City":3598132,"GW-Bissau":2374775,"GY-Georgetown":3378644,Gibraltar:Gibraltar,"HK-Hong Kong":1819729,"HN-Tegucigalpa":3600949,"HR-Zagreb":3186886,"HT-Port-au-Prince":3718426,"HU-Budapest":3054643,Haifa:Haifa,Hawaii:Hawaii,Houston:Houston,"ID-Bandung":1650357,"ID-Bekasi":1649378,"ID-Depok":1645518,"ID-Jakarta":1642911,"ID-Makassar":1622786,"ID-Medan":1214520,"ID-Palembang":1633070,"ID-Semarang":1627896,"ID-South Tangerang":8581443,"ID-Surabaya":1625822,"ID-Tangerang":1625084,"IE-Dublin":2964574,"IL-Ashdod":295629,"IL-Ashkelon":295620,"IL-Ashqelon":295620,"IL-Bat Yam":295548,"IL-Be'er Sheva":295530,"IL-Beer Sheva":295530,"IL-Beit Shemesh":295432,"IL-Bet Shemesh":295432,"IL-Bnei Brak":295514,"IL-Eilat":295277,"IL-Hadera":294946,"IL-Haifa":294801,"IL-Herzliya":294778,"IL-Herzliyya":294778,"IL-Holon":294751,"IL-Jerusalem":281184,"IL-Kfar Saba":294514,"IL-Lod":294421,"IL-Modiin":282926,"IL-Nazareth":294098,"IL-Netanya":294071,"IL-Petach Tikvah":293918,"IL-Petah Tikvah":293918,"IL-Petah Tiqwa":293918,"IL-Ra'anana":293807,"IL-Raanana":293807,"IL-Ramat Gan":293788,"IL-Ramla":293768,"IL-Rishon LeZion":293703,"IL-Rishon Leziyyon":293703,"IL-Tel Aviv":293397,"IL-Tiberias":293322,"IM-Douglas":3042237,"IN-Ahmadabad":1279233,"IN-Bangalore":1277333,"IN-Bombay":1275339,"IN-Calcutta":1275004,"IN-Chennai":1264527,"IN-Cochin":1273874,"IN-Hyderabad":1269843,"IN-Jaipur":1269515,"IN-Kanpur":1267995,"IN-New Delhi":1261481,"IN-Pune":1259229,"IN-Surat":1255364,"IQ-Baghdad":98182,"IR-Tehran":112931,"IS-Reykjavik":3413829,"IS-Reykjavík":3413829,"IT-Milano":3173435,"IT-Rome":3169070,"JM-Kingston":3489854,"JO-Amman":250441,"JP-Kobe-shi":1859171,"JP-Kyoto":1857910,"JP-Nagoya-shi":1856057,"JP-Osaka-shi":1853909,"JP-Sapporo":2128295,"JP-Tokyo":1850147,Jerusalem:Jerusalem,Johannesburg:Johannesburg,"KE-Nairobi":184745,"KG-Bishkek":1528675,"KH-Phnom Penh":1821306,"KM-Moroni":921772,"KN-Basseterre":3575551,"KP-Pyongyang":1871859,"KR-Busan":1838524,"KR-Seoul":1835848,"KW-Kuwait":285787,"KY-George Town":3580661,"KZ-Almaty":1526384,"KZ-Astana":1526273,Kiev:Kiev,"LA-Vientiane":1651944,"LB-Beirut":276781,"LC-Castries":3576812,"LI-Vaduz":3042030,"LR-Monrovia":2274895,"LS-Maseru":932505,"LT-Vilnius":593116,"LU-Luxemburg":2960316,"LV-Riga":456172,"LY-Tripoli":2210247,"La Paz":3911925,Livingston:Livingston,London:London,"Los Angeles":5368361,"MA-Casablanca":2553604,"MA-Rabat":2538475,"MD-Chisinau":618426,"ME-Podgorica":3193044,"MG-Antananarivo":1070940,"MK-Skopje":785842,"ML-Bamako":2460596,"MM-Mandalay":1311874,"MM-Rangoon":1298824,"MN-Ulaanbaatar":2028462,"MP-Saipan":7828758,"MR-Nouakchott":2377450,"MS-Plymouth":3578069,"MT-Valletta":2562305,"MU-Port Louis":934154,"MW-Lilongwe":927967,"MX-Cancun":3531673,"MX-Guadalajara":4005539,"MX-Iztapalapa":3526683,"MX-Mazatlan":3996322,"MX-Mexico City":3530597,"MX-Monterrey":3995465,"MX-Puerto Vallarta":3991328,"MX-Tijuana":3981609,"MY-Kota Bharu":1736376,"MY-Kuala Lumpur":1735161,"MZ-Maputo":1040652,Melbourne:Melbourne,"Mexico City":3530597,Miami:Miami,Montreal:Montreal,Moscow:Moscow,"NA-Windhoek":3352136,"NC-Noumea":2139521,"NC-Nouméa":2139521,"NE-Niamey":2440485,"NG-Abuja":2352778,"NG-Lagos":2332459,"NI-Managua":3617763,"NL-Amsterdam":2759794,"NO-Oslo":3143244,"NP-Kathmandu":1283240,"NU-Alofi":4036284,"NZ-Auckland":2193733,"NZ-Christchurch":2192362,"NZ-Wellington":2179537,"New York":5128581,"OM-Muscat":287286,Omaha:Omaha,Ottawa:Ottawa,"PA-Panama City":3703443,"PE-Lima":3936456,"PF-Papeete":4033936,"PG-Port Moresby":2088122,"PH-Manila":1701668,"PK-Islamabad":1176615,"PK-Karachi":1174872,"PL-Warsaw":756135,"PR-San Juan":4568127,"PT-Lisbon":2267057,"PY-Asuncion":3439389,"Panama City":3703443,Paris:Paris,"Petach Tikvah":293918,"Petah Tikvah":293918,"Petah Tikva":293918,"Petah Tiqwa":293918,"Petaẖ Tiqwa":293918,Philadelphia:Philadelphia,Phoenix:Phoenix,Pittsburgh:Pittsburgh,"QA-Doha":290030,"RO-Bucharest":683506,"RS-Belgrade":792680,"RU-Moscow":524901,"RU-Novosibirsk":1496747,"RU-Saint Petersburg":498817,"RU-Yekaterinburg":1486209,"RW-Kigali":202061,"Ra'anana":293807,"SA-Jeddah":105343,"SA-Mecca":104515,"SA-Medina":109223,"SA-Riyadh":108410,"SB-Honiara":2108502,"SC-Victoria":241131,"SD-Khartoum":379252,"SD-Omdurman":365137,"SE-Stockholm":2673730,"SG-Singapore":1880252,"SH-Jamestown":3370903,"SI-Ljubljana":3196359,"SK-Bratislava":3060972,"SL-Freetown":2408770,"SN-Dakar":2253354,"SO-Mogadishu":53654,"SR-Paramaribo":3383330,"ST-Sao Tome":2410763,"ST-São Tomé":2410763,"SV-San Salvador":3583361,"SY-Aleppo":170063,"SY-Damascus":170654,"SZ-Mbabane":934985,"Saint Louis":4407066,"Saint Petersburg":498817,"San Francisco":5391959,Seattle:Seattle,Sydney:Sydney,"TC-Cockburn Town":3576994,"TD-Ndjamena":2427123,"TG-Lome":2365267,"TG-Lomé":2365267,"TH-Bangkok":1609350,"TJ-Dushanbe":1221874,"TM-Ashgabat":162183,"TN-Tunis":2464470,"TR-Adana":325363,"TR-Ankara":323786,"TR-Bursa":750269,"TR-Istanbul":745044,"TR-Izmir":311046,"TV-Funafuti":2110394,"TW-Kaohsiung":1673820,"TW-Taipei":1668341,"TZ-Dar es Salaam":160263,"TZ-Dodoma":160196,"Tel Aviv":293397,Tiberias:Tiberias,Toronto:Toronto,"UA-Kharkiv":706483,"UA-Kiev":703448,"UG-Kampala":232422,"US-Atlanta-GA":4180439,"US-Austin-TX":4671654,"US-Baltimore-MD":4347778,"US-Boston-MA":4930956,"US-Buffalo-NY":5110629,"US-Chicago-IL":4887398,"US-Cincinnati-OH":4508722,"US-Cleveland-OH":5150529,"US-Columbus-OH":4509177,"US-Dallas-TX":4684888,"US-Denver-CO":5419384,"US-Detroit-MI":4990729,"US-Hartford-CT":4835797,"US-Honolulu-HI":5856195,"US-Houston-TX":4699066,"US-Lakewood-NJ":5100280,"US-Las Vegas-NV":5506956,"US-Livingston-NY":5100572,"US-Los Angeles-CA":5368361,"US-Memphis-TN":4641239,"US-Miami-FL":4164138,"US-Milwaukee-WI":5263045,"US-Monsey-NY":5127315,"US-New Haven-CT":4839366,"US-New York-NY":5128581,"US-Omaha-NE":5074472,"US-Orlando-FL":4167147,"US-Passaic-NJ":5102443,"US-Philadelphia-PA":4560349,"US-Phoenix-AZ":5308655,"US-Pittsburgh-PA":5206379,"US-Portland-OR":5746545,"US-Providence-RI":5224151,"US-Richmond-VA":4781708,"US-Rochester-NY":5134086,"US-Saint Louis-MO":4407066,"US-Saint Paul-MN":5045360,"US-San Diego-CA":5391811,"US-San Francisco-CA":5391959,"US-Seattle-WA":5809844,"US-Silver Spring-MD":4369596,"US-Teaneck-NJ":5105262,"US-Washington-DC":4140963,"US-White Plains-NY":5144336,"UY-Montevideo":3441575,"UZ-Tashkent":1512569,"VC-Kingstown":3577887,"VE-Caracas":3646738,"VE-Maracaibo":3633009,"VE-Maracay":3632998,"VE-Valencia":3625549,"VG-Road Town":3577430,"VN-Hanoi":1581130,"VN-Ho Chi Minh City":1566083,Vancouver:Vancouver,"WS-Apia":4035413,"Washington DC":4140963,"White Plains":5144336,"YE-Sanaa":71137,"YT-Mamoudzou":921815,"ZA-Cape Town":3369157,"ZA-Durban":1007311,"ZA-Johannesburg":993800,"ZA-Pretoria":964137,"ZM-Lusaka":909137,"ZW-Harare":890299};
|
|
10
|
+
const Ashdod=295629;const Atlanta=4180439;const Austin=4671654;const Baghdad=98182;const Baltimore=4347778;const Berlin=2950159;const Bogota=3688689;const Boston=4930956;const Buffalo=5110629;const Chicago=4887398;const Cincinnati=4508722;const Cleveland=5150529;const Dallas=4684888;const Denver=5419384;const Detroit=4990729;const Eilat=295277;const Gibraltar=2411585;const Haifa=294801;const Hawaii=5856195;const Houston=4699066;const Jerusalem=281184;const Johannesburg=993800;const Kiev=703448;const Livingston=5100572;const London=2643743;const Melbourne=2158177;const Miami=4164138;const Montreal=6077243;const Moscow=524901;const Omaha=5074472;const Ottawa=6094817;const Paris=2988507;const Philadelphia=4560349;const Phoenix=5308655;const Pittsburgh=5206379;const Seattle=5809844;const Sydney=2147714;const Tiberias=293322;const Toronto=6167865;const Vancouver=6173331;var city2geonameid = {"AD-Andorra La Vella":3041563,"AE-Abu Dhabi":292968,"AE-Dubai":292223,"AF-Kabul":1138958,"AI-The Valley":3573374,"AL-Tirana":3183875,"AM-Yerevan":616052,"AO-Luanda":2240449,"AR-Buenos Aires":3435910,"AR-Cordoba":3860259,"AR-Rosario":3838583,"AS-Pago Pago":5881576,"AT-Vienna":2761369,"AU-Adelaide":2078025,"AU-Brisbane":2174003,"AU-Canberra":2172517,"AU-Gold Coast":2165087,"AU-Hobart":2163355,"AU-Melbourne":2158177,"AU-Perth":2063523,"AU-Sydney":2147714,"AW-Oranjestad":3577154,"AZ-Baku":587084,Ashdod:Ashdod,Atlanta:Atlanta,Austin:Austin,"BA-Sarajevo":3191281,"BB-Bridgetown":3374036,"BD-Chittagong":1205733,"BD-Dhaka":1185241,"BD-Khulna":1336135,"BE-Brussels":2800866,"BF-Ouagadougou":2357048,"BG-Sofia":727011,"BH-Manama":290340,"BI-Bujumbura":425378,"BJ-Porto-novo":2392087,"BM-Hamilton":3573197,"BN-Bandar Seri Begawan":1820906,"BO-La Paz":3911925,"BO-Santa Cruz de la Sierra":3904906,"BR-Belo Horizonte":3470127,"BR-Brasilia":3469058,"BR-Fortaleza":3399415,"BR-Rio de Janeiro":3451190,"BR-Salvador":3450554,"BR-Sao Paulo":3448439,"BS-Nassau":3571824,"BT-Thimphu":1252416,"BW-Gaborone":933773,"BY-Minsk":625144,"BZ-Belmopan":3582672,Baghdad:Baghdad,Baltimore:Baltimore,"Be'er Sheva":295530,"Beer Sheva":295530,"Bene Beraq":295514,"IL-Bene Beraq":295514,Berlin:Berlin,"Bnei Brak":295514,Bogota:Bogota,Boston:Boston,"Buenos Aires":3435910,Buffalo:Buffalo,"CA-Calgary":5913490,"CA-Edmonton":5946768,"CA-Halifax":6324729,"CA-Mississauga":6075357,"CA-Montreal":6077243,"CA-Ottawa":6094817,"CA-Quebec City":6325494,"CA-Regina":6119109,"CA-Saskatoon":6141256,"CA-St. John's-05":6324733,"CA-Toronto":6167865,"CA-Vancouver":6173331,"CA-Victoria":6174041,"CA-Winnipeg":6183235,"CD-Kinshasa":2314302,"CD-Lubumbashi":922704,"CF-Bangui":2389853,"CG-Brazzaville":2260535,"CH-Bern":2661552,"CH-Geneva":2660646,"CH-Zurich":2657896,"CI-Abidjan":2293538,"CI-Yamoussoukro":2279755,"CK-Avarua":4035715,"CL-Santiago":3871336,"CM-Douala":2232593,"CM-Yaounde":2220957,"CN-Beijing":1816670,"CN-Chengdu":1815286,"CN-Chongqing":1814906,"CN-Guangzhou":1809858,"CN-Harbin":2037013,"CN-Kaifeng":1804879,"CN-Lanzhou":1804430,"CN-Nanchong":1800146,"CN-Nanjing":1799962,"CN-Puyang":1798422,"CN-Shanghai":1796236,"CN-Shenyang":2034937,"CN-Shenzhen":1795565,"CN-Shiyan":1794903,"CN-Tai'an":1793724,"CN-Tianjin":1792947,"CN-Wuhan":1791247,"CN-Xi'an":1790630,"CN-Yueyang":1927639,"CN-Zhumadian":1783873,"CO-Barranquilla":3689147,"CO-Bogota":3688689,"CO-Bogotá":3688689,"CO-Cali":3687925,"CO-Medellin":3674962,"CR-San Jose":3621849,"CR-San José":3621849,"CR-San José":3621849,"CU-Havana":3553478,"CV-Praia":3374333,"CW-Willemstad":3513090,"CY-Nicosia":146268,"CZ-Prague":3067696,Chicago:Chicago,Cincinnati:Cincinnati,Cleveland:Cleveland,"DE-Berlin":2950159,"DE-Hamburg":2911298,"DE-Munich":2867714,"DK-Copenhagen":2618425,"DM-Roseau":3575635,"DO-Santiago de los Caballeros":3492914,"DO-Santo Domingo":3492908,"DZ-Algiers":2507480,Dallas:Dallas,Denver:Denver,Detroit:Detroit,"EC-Guayaquil":3657509,"EC-Quito":3652462,"EE-Tallinn":588409,"EG-Al Jizah":360995,"EG-Alexandria":361058,"EG-Cairo":360630,"ER-Asmara":343300,"ES-Barcelona":3128760,"ES-Madrid":3117735,"ET-Addis Ababa":344979,Eilat:Eilat,"FI-Helsinki":658225,"FJ-Suva":2198148,"FK-Stanley":3426691,"FO-Tórshavn":2611396,"FR-Marseilles":2995469,"FR-Paris":2988507,"GA-Libreville":2399697,"GB-Belfast":2655984,"GB-Birmingham":2655603,"GB-Bristol":2654675,"GB-Cardiff":2653822,"GB-Edinburgh":2650225,"GB-Glasgow":2648579,"GB-Leeds":2644688,"GB-Liverpool":2644210,"GB-London":2643743,"GB-Manchester":2643123,"GB-Sheffield":2638077,"GE-Tbilisi":611717,"GH-Accra":2306104,"GH-Kumasi":2298890,"GI-Gibraltar":2411585,"GL-Nuuk":3421319,"GM-Banjul":2413876,"GN-Camayenne":2422488,"GN-Conakry":2422465,"GQ-Malabo":2309527,"GR-Athens":264371,"GT-Guatemala City":3598132,"GW-Bissau":2374775,"GY-Georgetown":3378644,Gibraltar:Gibraltar,"HK-Hong Kong":1819729,"HN-Tegucigalpa":3600949,"HR-Zagreb":3186886,"HT-Port-au-Prince":3718426,"HU-Budapest":3054643,Haifa:Haifa,Hawaii:Hawaii,Houston:Houston,"ID-Bandung":1650357,"ID-Bekasi":1649378,"ID-Depok":1645518,"ID-Jakarta":1642911,"ID-Makassar":1622786,"ID-Medan":1214520,"ID-Palembang":1633070,"ID-Semarang":1627896,"ID-South Tangerang":8581443,"ID-Surabaya":1625822,"ID-Tangerang":1625084,"IE-Dublin":2964574,"IL-Ashdod":295629,"IL-Ashkelon":295620,"IL-Ashqelon":295620,"IL-Bat Yam":295548,"IL-Be'er Sheva":295530,"IL-Beer Sheva":295530,"IL-Beit Shemesh":295432,"IL-Bet Shemesh":295432,"IL-Bnei Brak":295514,"IL-Eilat":295277,"IL-Hadera":294946,"IL-Haifa":294801,"IL-Herzliya":294778,"IL-Herzliyya":294778,"IL-Holon":294751,"IL-Jerusalem":281184,"IL-Kfar Saba":294514,"IL-Lod":294421,"IL-Modiin":282926,"IL-Nazareth":294098,"IL-Netanya":294071,"IL-Petach Tikvah":293918,"IL-Petah Tikvah":293918,"IL-Petah Tiqwa":293918,"IL-Ra'anana":293807,"IL-Raanana":293807,"IL-Ramat Gan":293788,"IL-Ramla":293768,"IL-Rishon LeZion":293703,"IL-Rishon Leziyyon":293703,"IL-Tel Aviv":293397,"IL-Tiberias":293322,"IM-Douglas":3042237,"IN-Ahmadabad":1279233,"IN-Bangalore":1277333,"IN-Bombay":1275339,"IN-Calcutta":1275004,"IN-Chennai":1264527,"IN-Cochin":1273874,"IN-Hyderabad":1269843,"IN-Jaipur":1269515,"IN-Kanpur":1267995,"IN-New Delhi":1261481,"IN-Pune":1259229,"IN-Surat":1255364,"IQ-Baghdad":98182,"IR-Tehran":112931,"IS-Reykjavik":3413829,"IS-Reykjavík":3413829,"IT-Milano":3173435,"IT-Rome":3169070,"JM-Kingston":3489854,"JO-Amman":250441,"JP-Kobe-shi":1859171,"JP-Kyoto":1857910,"JP-Nagoya-shi":1856057,"JP-Osaka-shi":1853909,"JP-Sapporo":2128295,"JP-Tokyo":1850147,Jerusalem:Jerusalem,Johannesburg:Johannesburg,"KE-Nairobi":184745,"KG-Bishkek":1528675,"KH-Phnom Penh":1821306,"KM-Moroni":921772,"KN-Basseterre":3575551,"KP-Pyongyang":1871859,"KR-Busan":1838524,"KR-Seoul":1835848,"KW-Kuwait":285787,"KY-George Town":3580661,"KZ-Almaty":1526384,"KZ-Astana":1526273,Kiev:Kiev,"LA-Vientiane":1651944,"LB-Beirut":276781,"LC-Castries":3576812,"LI-Vaduz":3042030,"LR-Monrovia":2274895,"LS-Maseru":932505,"LT-Vilnius":593116,"LU-Luxemburg":2960316,"LV-Riga":456172,"LY-Tripoli":2210247,"La Paz":3911925,Livingston:Livingston,London:London,"Los Angeles":5368361,"MA-Casablanca":2553604,"MA-Rabat":2538475,"MD-Chisinau":618426,"ME-Podgorica":3193044,"MG-Antananarivo":1070940,"MK-Skopje":785842,"ML-Bamako":2460596,"MM-Mandalay":1311874,"MM-Rangoon":1298824,"MN-Ulaanbaatar":2028462,"MP-Saipan":7828758,"MR-Nouakchott":2377450,"MS-Plymouth":3578069,"MT-Valletta":2562305,"MU-Port Louis":934154,"MW-Lilongwe":927967,"MX-Cancun":3531673,"MX-Guadalajara":4005539,"MX-Iztapalapa":3526683,"MX-Mazatlan":3996322,"MX-Mexico City":3530597,"MX-Monterrey":3995465,"MX-Puerto Vallarta":3991328,"MX-Tijuana":3981609,"MY-Kota Bharu":1736376,"MY-Kuala Lumpur":1735161,"MZ-Maputo":1040652,Melbourne:Melbourne,"Mexico City":3530597,Miami:Miami,Montreal:Montreal,Moscow:Moscow,"NA-Windhoek":3352136,"NC-Noumea":2139521,"NC-Nouméa":2139521,"NE-Niamey":2440485,"NG-Abuja":2352778,"NG-Lagos":2332459,"NI-Managua":3617763,"NL-Amsterdam":2759794,"NO-Oslo":3143244,"NP-Kathmandu":1283240,"NU-Alofi":4036284,"NZ-Auckland":2193733,"NZ-Christchurch":2192362,"NZ-Wellington":2179537,"New York":5128581,"OM-Muscat":287286,Omaha:Omaha,Ottawa:Ottawa,"PA-Panama City":3703443,"PE-Lima":3936456,"PF-Papeete":4033936,"PG-Port Moresby":2088122,"PH-Manila":1701668,"PK-Islamabad":1176615,"PK-Karachi":1174872,"PL-Warsaw":756135,"PR-San Juan":4568127,"PT-Lisbon":2267057,"PY-Asuncion":3439389,"Panama City":3703443,Paris:Paris,"Petach Tikvah":293918,"Petah Tikvah":293918,"Petah Tikva":293918,"Petah Tiqwa":293918,"Petaẖ Tiqwa":293918,Philadelphia:Philadelphia,Phoenix:Phoenix,Pittsburgh:Pittsburgh,"QA-Doha":290030,"RO-Bucharest":683506,"RS-Belgrade":792680,"RU-Moscow":524901,"RU-Novosibirsk":1496747,"RU-Saint Petersburg":498817,"RU-Yekaterinburg":1486209,"RW-Kigali":202061,"Ra'anana":293807,"SA-Jeddah":105343,"SA-Mecca":104515,"SA-Medina":109223,"SA-Riyadh":108410,"SB-Honiara":2108502,"SC-Victoria":241131,"SD-Khartoum":379252,"SD-Omdurman":365137,"SE-Stockholm":2673730,"SG-Singapore":1880252,"SH-Jamestown":3370903,"SI-Ljubljana":3196359,"SK-Bratislava":3060972,"SL-Freetown":2408770,"SN-Dakar":2253354,"SO-Mogadishu":53654,"SR-Paramaribo":3383330,"ST-Sao Tome":2410763,"ST-São Tomé":2410763,"SV-San Salvador":3583361,"SY-Aleppo":170063,"SY-Damascus":170654,"SZ-Mbabane":934985,"Saint Louis":4407066,"Saint Petersburg":498817,"San Francisco":5391959,Seattle:Seattle,Sydney:Sydney,"TC-Cockburn Town":3576994,"TD-Ndjamena":2427123,"TG-Lome":2365267,"TG-Lomé":2365267,"TH-Bangkok":1609350,"TJ-Dushanbe":1221874,"TM-Ashgabat":162183,"TN-Tunis":2464470,"TR-Adana":325363,"TR-Ankara":323786,"TR-Bursa":750269,"TR-Istanbul":745044,"TR-Izmir":311046,"TV-Funafuti":2110394,"TW-Kaohsiung":1673820,"TW-Taipei":1668341,"TZ-Dar es Salaam":160263,"TZ-Dodoma":160196,"Tel Aviv":293397,Tiberias:Tiberias,Toronto:Toronto,"UA-Kharkiv":706483,"UA-Kiev":703448,"UG-Kampala":232422,"US-Atlanta-GA":4180439,"US-Austin-TX":4671654,"US-Baltimore-MD":4347778,"US-Boston-MA":4930956,"US-Buffalo-NY":5110629,"US-Chicago-IL":4887398,"US-Cincinnati-OH":4508722,"US-Cleveland-OH":5150529,"US-Columbus-OH":4509177,"US-Dallas-TX":4684888,"US-Denver-CO":5419384,"US-Detroit-MI":4990729,"US-Hartford-CT":4835797,"US-Honolulu-HI":5856195,"US-Houston-TX":4699066,"US-Lakewood-NJ":5100280,"US-Las Vegas-NV":5506956,"US-Livingston-NY":5100572,"US-Los Angeles-CA":5368361,"US-Memphis-TN":4641239,"US-Miami-FL":4164138,"US-Milwaukee-WI":5263045,"US-Monsey-NY":5127315,"US-New Haven-CT":4839366,"US-New York-NY":5128581,"US-Omaha-NE":5074472,"US-Orlando-FL":4167147,"US-Passaic-NJ":5102443,"US-Philadelphia-PA":4560349,"US-Phoenix-AZ":5308655,"US-Pittsburgh-PA":5206379,"US-Portland-OR":5746545,"US-Providence-RI":5224151,"US-Richmond-VA":4781708,"US-Rochester-NY":5134086,"US-Saint Louis-MO":4407066,"US-Saint Paul-MN":5045360,"US-San Diego-CA":5391811,"US-San Francisco-CA":5391959,"US-Seattle-WA":5809844,"US-Silver Spring-MD":4369596,"US-Teaneck-NJ":5105262,"US-Washington-DC":4140963,"US-White Plains-NY":5144336,"UY-Montevideo":3441575,"UZ-Tashkent":1512569,"VC-Kingstown":3577887,"VE-Caracas":3646738,"VE-Maracaibo":3633009,"VE-Maracay":3632998,"VE-Valencia":3625549,"VG-Road Town":3577430,"VN-Hanoi":1581130,"VN-Ho Chi Minh City":1566083,Vancouver:Vancouver,"WS-Apia":4035413,"Washington DC":4140963,"White Plains":5144336,"YE-Sanaa":71137,"YT-Mamoudzou":921815,"ZA-Cape Town":3369157,"ZA-Durban":1007311,"ZA-Johannesburg":993800,"ZA-Pretoria":964137,"ZM-Lusaka":909137,"ZW-Harare":890299};
|
|
11
11
|
|
|
12
12
|
const GEONAME_SQL = `SELECT
|
|
13
13
|
g.name as name,
|
|
@@ -52,11 +52,12 @@ WHERE CityMixedCase MATCH ?
|
|
|
52
52
|
ORDER BY Population DESC
|
|
53
53
|
LIMIT 15`;
|
|
54
54
|
const GEONAME_COMPLETE_SQL = `SELECT geonameid, asciiname, admin1, country,
|
|
55
|
-
population, latitude, longitude, timezone
|
|
55
|
+
population, latitude, longitude, timezone,
|
|
56
|
+
((sqrt(population)/40) + (-30 * rank)) as myrank
|
|
56
57
|
FROM geoname_fulltext
|
|
57
|
-
WHERE
|
|
58
|
+
WHERE geoname_fulltext MATCH ?
|
|
58
59
|
GROUP BY geonameid
|
|
59
|
-
ORDER BY
|
|
60
|
+
ORDER BY myrank DESC
|
|
60
61
|
LIMIT 15`;
|
|
61
62
|
const stateNames = {
|
|
62
63
|
'AK': 'Alaska',
|
|
@@ -137,7 +138,7 @@ class GeoDb {
|
|
|
137
138
|
/** @type {Map<number, Location>} */
|
|
138
139
|
|
|
139
140
|
this.geonamesCache = new Map();
|
|
140
|
-
/** @type {Map<string,
|
|
141
|
+
/** @type {Map<string, number>} */
|
|
141
142
|
|
|
142
143
|
this.legacyCities = new Map();
|
|
143
144
|
|
|
@@ -210,6 +211,7 @@ class GeoDb {
|
|
|
210
211
|
const cityDescr = `${result.CityMixedCase}, ${result.State} ${zip}`;
|
|
211
212
|
const location = new Location(result.Latitude, result.Longitude, false, tzid, cityDescr, 'US', zip);
|
|
212
213
|
location.admin1 = location.state = result.State;
|
|
214
|
+
location.stateName = stateNames[location.state];
|
|
213
215
|
location.geo = 'zip';
|
|
214
216
|
location.zip = zip;
|
|
215
217
|
return location;
|
|
@@ -315,11 +317,12 @@ class GeoDb {
|
|
|
315
317
|
/**
|
|
316
318
|
* Generates autocomplete results based on a query string
|
|
317
319
|
* @param {string} qraw
|
|
320
|
+
* @param {boolean} latlong
|
|
318
321
|
* @return {Object[]}
|
|
319
322
|
*/
|
|
320
323
|
|
|
321
324
|
|
|
322
|
-
autoComplete(qraw) {
|
|
325
|
+
autoComplete(qraw, latlong = false) {
|
|
323
326
|
qraw = qraw.trim();
|
|
324
327
|
|
|
325
328
|
if (qraw.length === 0) {
|
|
@@ -341,10 +344,11 @@ class GeoDb {
|
|
|
341
344
|
}
|
|
342
345
|
|
|
343
346
|
qraw = qraw.replace(/\"/g, '""');
|
|
344
|
-
const geoRows = this.geonamesCompStmt.all(`"${qraw}
|
|
347
|
+
const geoRows = this.geonamesCompStmt.all(`{asciiname country admin1} : "${qraw}" *`);
|
|
345
348
|
const geoMatches = geoRows.map(res => {
|
|
346
349
|
const country = res.country || '';
|
|
347
350
|
const admin1 = res.admin1 || '';
|
|
351
|
+
const rank = Math.trunc(res.myrank * 100.0) / 100.0;
|
|
348
352
|
const obj = {
|
|
349
353
|
id: res.geonameid,
|
|
350
354
|
value: Location.geonameCityDescr(res.asciiname, admin1, country),
|
|
@@ -355,7 +359,8 @@ class GeoDb {
|
|
|
355
359
|
longitude: res.longitude,
|
|
356
360
|
timezone: res.timezone,
|
|
357
361
|
population: res.population,
|
|
358
|
-
geo: 'geoname'
|
|
362
|
+
geo: 'geoname',
|
|
363
|
+
rank: rank
|
|
359
364
|
};
|
|
360
365
|
|
|
361
366
|
if (country) {
|
|
@@ -366,7 +371,6 @@ class GeoDb {
|
|
|
366
371
|
obj.admin1 = admin1;
|
|
367
372
|
}
|
|
368
373
|
|
|
369
|
-
obj.tokens = Array.from(new Set(res.asciiname.split(' ').concat(admin1.split(' '), country.split(' '))));
|
|
370
374
|
return obj;
|
|
371
375
|
});
|
|
372
376
|
|
|
@@ -394,7 +398,18 @@ class GeoDb {
|
|
|
394
398
|
|
|
395
399
|
const values = Array.from(map.values());
|
|
396
400
|
values.sort((a, b) => b.population - a.population);
|
|
397
|
-
|
|
401
|
+
const topN = values.slice(0, 10);
|
|
402
|
+
|
|
403
|
+
if (!latlong) {
|
|
404
|
+
for (const val of topN) {
|
|
405
|
+
delete val.latitude;
|
|
406
|
+
delete val.longitude;
|
|
407
|
+
delete val.timezone;
|
|
408
|
+
delete val.population;
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
return topN;
|
|
398
413
|
}
|
|
399
414
|
}
|
|
400
415
|
/** Reads entire ZIP database and caches in-memory */
|
|
@@ -552,6 +567,13 @@ async function buildGeonamesSqlite(opts) {
|
|
|
552
567
|
} else {
|
|
553
568
|
a[3] = a[3].replace(/‘/g, '\'');
|
|
554
569
|
a[3] = a[3].replace(/’/g, '\'');
|
|
570
|
+
a[3] = a[3].replace(/Ḥ/g, 'Ch');
|
|
571
|
+
a[3] = a[3].replace(/H̱/g, 'Ch');
|
|
572
|
+
a[3] = a[3].replace(/ẖ/g, 'ch');
|
|
573
|
+
a[3] = a[3].replace(/Ẕ/g, 'Tz');
|
|
574
|
+
a[3] = a[3].replace(/ẕ/g, 'tz');
|
|
575
|
+
a[3] = a[3].replace(/ā/g, 'a');
|
|
576
|
+
a[3] = a[3].replace(/é/g, 'e');
|
|
555
577
|
}
|
|
556
578
|
|
|
557
579
|
return true;
|
|
@@ -567,27 +589,27 @@ async function buildGeonamesSqlite(opts) {
|
|
|
567
589
|
`);
|
|
568
590
|
doSql(logger, db, `update admin1 set name='',asciiname='' where key like 'PS.%';`, `update country set country = '' where iso = 'PS';`, `delete from geoname where geonameid = 7303419;`);
|
|
569
591
|
doSql(logger, db, `DROP TABLE IF EXISTS geoname_fulltext`, `CREATE VIRTUAL TABLE geoname_fulltext
|
|
570
|
-
USING
|
|
571
|
-
asciiname
|
|
572
|
-
population
|
|
592
|
+
USING fts5(geonameid,
|
|
593
|
+
asciiname, admin1, country,
|
|
594
|
+
population, latitude, longitude, timezone
|
|
573
595
|
);
|
|
574
596
|
`, `DROP TABLE IF EXISTS geoname_non_ascii`, `CREATE TABLE geoname_non_ascii AS
|
|
575
597
|
SELECT geonameid FROM geoname WHERE asciiname <> name`, `INSERT INTO geoname_fulltext
|
|
576
|
-
SELECT g.geonameid,
|
|
598
|
+
SELECT g.geonameid,
|
|
577
599
|
g.asciiname, a.asciiname, c.Country,
|
|
578
600
|
g.population, g.latitude, g.longitude, g.timezone
|
|
579
601
|
FROM geoname g, admin1 a, country c
|
|
580
602
|
WHERE g.country = c.ISO
|
|
581
603
|
AND g.country||'.'||g.admin1 = a.key
|
|
582
604
|
`, `INSERT INTO geoname_fulltext
|
|
583
|
-
SELECT g.geonameid,
|
|
605
|
+
SELECT g.geonameid,
|
|
584
606
|
g.asciiname, '', c.Country,
|
|
585
607
|
g.population, g.latitude, g.longitude, g.timezone
|
|
586
608
|
FROM geoname g, country c
|
|
587
609
|
WHERE g.country = c.ISO
|
|
588
610
|
AND (g.admin1 = '' OR g.admin1 = '00')
|
|
589
611
|
`, `INSERT INTO geoname_fulltext
|
|
590
|
-
SELECT g.geonameid,
|
|
612
|
+
SELECT g.geonameid,
|
|
591
613
|
g.name, a.name, c.Country,
|
|
592
614
|
g.population, g.latitude, g.longitude, g.timezone
|
|
593
615
|
FROM geoname_non_ascii gna, geoname g, admin1 a, country c
|
|
@@ -595,7 +617,7 @@ async function buildGeonamesSqlite(opts) {
|
|
|
595
617
|
AND g.country = c.ISO
|
|
596
618
|
AND g.country||'.'||g.admin1 = a.key
|
|
597
619
|
`, `INSERT INTO geoname_fulltext
|
|
598
|
-
SELECT g.geonameid,
|
|
620
|
+
SELECT g.geonameid,
|
|
599
621
|
alt.name, '', 'ישראל',
|
|
600
622
|
g.population, g.latitude, g.longitude, g.timezone
|
|
601
623
|
FROM geoname g, altnames alt
|
|
@@ -603,7 +625,7 @@ async function buildGeonamesSqlite(opts) {
|
|
|
603
625
|
AND alt.isolanguage = 'he'
|
|
604
626
|
AND g.geonameid = alt.geonameid
|
|
605
627
|
`, `INSERT INTO geoname_fulltext
|
|
606
|
-
SELECT g.geonameid,
|
|
628
|
+
SELECT g.geonameid,
|
|
607
629
|
alt.name, a1.asciiname, 'Israel',
|
|
608
630
|
g.population, g.latitude, g.longitude, g.timezone
|
|
609
631
|
FROM geoname g, admin1 a1, altnames alt
|
|
@@ -611,7 +633,7 @@ async function buildGeonamesSqlite(opts) {
|
|
|
611
633
|
AND alt.isolanguage = 'en'
|
|
612
634
|
AND g.geonameid = alt.geonameid
|
|
613
635
|
AND g.country||'.'||g.admin1 = a1.key
|
|
614
|
-
|
|
636
|
+
`, 'VACUUM');
|
|
615
637
|
db.close();
|
|
616
638
|
return Promise.resolve(true);
|
|
617
639
|
}
|
package/geo-sqlite.d.ts
CHANGED
|
@@ -3,13 +3,25 @@
|
|
|
3
3
|
import {Location} from '@hebcal/core';
|
|
4
4
|
|
|
5
5
|
declare module '@hebcal/geo-sqlite' {
|
|
6
|
+
export type AutoComplete = {
|
|
7
|
+
id: number | string;
|
|
8
|
+
value: string;
|
|
9
|
+
geo: 'geoname' | 'zip';
|
|
10
|
+
asciiname: string;
|
|
11
|
+
admin1?: string;
|
|
12
|
+
country?: string;
|
|
13
|
+
population?: number;
|
|
14
|
+
latitude?: number;
|
|
15
|
+
longitude?: number;
|
|
16
|
+
timezone?: string;
|
|
17
|
+
};
|
|
6
18
|
export class GeoDb {
|
|
7
19
|
constructor(logger: any, zipsFilename: string, geonamesFilename: string);
|
|
8
20
|
close(): void;
|
|
9
21
|
lookupZip(zip: string): Location;
|
|
10
22
|
lookupGeoname(geonameid: number): Location;
|
|
11
23
|
lookupLegacyCity(cityName: string): Location;
|
|
12
|
-
autoComplete(qraw: string):
|
|
24
|
+
autoComplete(qraw: string, latlong?: boolean): AutoComplete[];
|
|
13
25
|
cacheZips(): void;
|
|
14
26
|
cacheGeonames(): void;
|
|
15
27
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hebcal/geo-sqlite",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.4.0",
|
|
4
4
|
"author": "Michael J. Radwin (https://github.com/mjradwin)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"hebcal"
|
|
@@ -28,11 +28,11 @@
|
|
|
28
28
|
"geo-sqlite.d.ts"
|
|
29
29
|
],
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@hebcal/cities": "^3.1.
|
|
32
|
-
"@hebcal/core": "^3.
|
|
33
|
-
"better-sqlite3": "^7.5.
|
|
34
|
-
"pino": "^7.
|
|
35
|
-
"pino-pretty": "^7.
|
|
31
|
+
"@hebcal/cities": "^3.1.2",
|
|
32
|
+
"@hebcal/core": "^3.36.2",
|
|
33
|
+
"better-sqlite3": "^7.5.1",
|
|
34
|
+
"pino": "^7.11.0",
|
|
35
|
+
"pino-pretty": "^7.6.1"
|
|
36
36
|
},
|
|
37
37
|
"scripts": {
|
|
38
38
|
"build": "rollup -c",
|
|
@@ -53,18 +53,18 @@
|
|
|
53
53
|
},
|
|
54
54
|
"license": "BSD-2-Clause",
|
|
55
55
|
"devDependencies": {
|
|
56
|
-
"@babel/core": "^7.17.
|
|
57
|
-
"@babel/preset-env": "^7.
|
|
58
|
-
"@babel/register": "^7.17.
|
|
56
|
+
"@babel/core": "^7.17.10",
|
|
57
|
+
"@babel/preset-env": "^7.17.10",
|
|
58
|
+
"@babel/register": "^7.17.7",
|
|
59
59
|
"@rollup/plugin-babel": "^5.3.1",
|
|
60
|
-
"@rollup/plugin-commonjs": "^
|
|
60
|
+
"@rollup/plugin-commonjs": "^22.0.0",
|
|
61
61
|
"@rollup/plugin-json": "^4.1.0",
|
|
62
|
-
"@rollup/plugin-node-resolve": "^13.1
|
|
63
|
-
"ava": "^4.0
|
|
64
|
-
"eslint": "^8.
|
|
62
|
+
"@rollup/plugin-node-resolve": "^13.2.1",
|
|
63
|
+
"ava": "^4.2.0",
|
|
64
|
+
"eslint": "^8.14.0",
|
|
65
65
|
"eslint-config-google": "^0.14.0",
|
|
66
66
|
"jsdoc": "^3.6.10",
|
|
67
67
|
"jsdoc-to-markdown": "^7.1.1",
|
|
68
|
-
"rollup": "^2.
|
|
68
|
+
"rollup": "^2.71.1"
|
|
69
69
|
}
|
|
70
70
|
}
|