@hebcal/geo-sqlite 4.3.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 -34
- package/dist/index.mjs +42 -34
- package/geo-sqlite.d.ts +13 -1
- package/package.json +13 -13
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
|
|
|
@@ -306,28 +307,23 @@ class GeoDb {
|
|
|
306
307
|
/**
|
|
307
308
|
* @private
|
|
308
309
|
* @param {any[]} res
|
|
309
|
-
* @param {boolean} latlong
|
|
310
310
|
* @return {Object[]}
|
|
311
311
|
*/
|
|
312
312
|
|
|
313
313
|
|
|
314
|
-
static zipResultToObj(res
|
|
314
|
+
static zipResultToObj(res) {
|
|
315
315
|
const obj = {
|
|
316
316
|
id: String(res.ZipCode),
|
|
317
317
|
value: `${res.CityMixedCase}, ${res.State} ${res.ZipCode}`,
|
|
318
318
|
admin1: res.State,
|
|
319
319
|
asciiname: res.CityMixedCase,
|
|
320
320
|
country: 'United States',
|
|
321
|
+
latitude: res.Latitude,
|
|
322
|
+
longitude: res.Longitude,
|
|
323
|
+
timezone: core.Location.getUsaTzid(res.State, res.TimeZone, res.DayLightSaving),
|
|
321
324
|
population: res.Population,
|
|
322
325
|
geo: 'zip'
|
|
323
326
|
};
|
|
324
|
-
|
|
325
|
-
if (latlong) {
|
|
326
|
-
obj.latitude = res.Latitude;
|
|
327
|
-
obj.longitude = res.Longitude;
|
|
328
|
-
obj.timezone = core.Location.getUsaTzid(res.State, res.TimeZone, res.DayLightSaving);
|
|
329
|
-
}
|
|
330
|
-
|
|
331
327
|
return obj;
|
|
332
328
|
}
|
|
333
329
|
/**
|
|
@@ -353,23 +349,30 @@ class GeoDb {
|
|
|
353
349
|
}
|
|
354
350
|
|
|
355
351
|
const zip5 = qraw.substring(0, 5);
|
|
356
|
-
return this.zipCompStmt.all(zip5 + '%').map(
|
|
352
|
+
return this.zipCompStmt.all(zip5 + '%').map(GeoDb.zipResultToObj);
|
|
357
353
|
} else {
|
|
358
354
|
if (!this.geonamesCompStmt) {
|
|
359
355
|
this.geonamesCompStmt = this.geonamesDb.prepare(GEONAME_COMPLETE_SQL);
|
|
360
356
|
}
|
|
361
357
|
|
|
362
358
|
qraw = qraw.replace(/\"/g, '""');
|
|
363
|
-
const geoRows = this.geonamesCompStmt.all(`"${qraw}
|
|
359
|
+
const geoRows = this.geonamesCompStmt.all(`{asciiname country admin1} : "${qraw}" *`);
|
|
364
360
|
const geoMatches = geoRows.map(res => {
|
|
365
361
|
const country = res.country || '';
|
|
366
362
|
const admin1 = res.admin1 || '';
|
|
363
|
+
const rank = Math.trunc(res.myrank * 100.0) / 100.0;
|
|
367
364
|
const obj = {
|
|
368
365
|
id: res.geonameid,
|
|
369
366
|
value: core.Location.geonameCityDescr(res.asciiname, admin1, country),
|
|
370
367
|
asciiname: res.asciiname,
|
|
368
|
+
admin1,
|
|
369
|
+
country,
|
|
370
|
+
latitude: res.latitude,
|
|
371
|
+
longitude: res.longitude,
|
|
372
|
+
timezone: res.timezone,
|
|
371
373
|
population: res.population,
|
|
372
|
-
geo: 'geoname'
|
|
374
|
+
geo: 'geoname',
|
|
375
|
+
rank: rank
|
|
373
376
|
};
|
|
374
377
|
|
|
375
378
|
if (country) {
|
|
@@ -380,12 +383,6 @@ class GeoDb {
|
|
|
380
383
|
obj.admin1 = admin1;
|
|
381
384
|
}
|
|
382
385
|
|
|
383
|
-
if (latlong) {
|
|
384
|
-
obj.latitude = res.latitude;
|
|
385
|
-
obj.longitude = res.longitude;
|
|
386
|
-
obj.timezone = res.timezone;
|
|
387
|
-
}
|
|
388
|
-
|
|
389
386
|
return obj;
|
|
390
387
|
});
|
|
391
388
|
|
|
@@ -394,7 +391,7 @@ class GeoDb {
|
|
|
394
391
|
}
|
|
395
392
|
|
|
396
393
|
const zipRows = this.zipFulltextCompStmt.all(`"${qraw}*"`);
|
|
397
|
-
const zipMatches = zipRows.map(
|
|
394
|
+
const zipMatches = zipRows.map(GeoDb.zipResultToObj);
|
|
398
395
|
const map = new Map();
|
|
399
396
|
|
|
400
397
|
for (const obj of zipMatches) {
|
|
@@ -413,7 +410,18 @@ class GeoDb {
|
|
|
413
410
|
|
|
414
411
|
const values = Array.from(map.values());
|
|
415
412
|
values.sort((a, b) => b.population - a.population);
|
|
416
|
-
|
|
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;
|
|
417
425
|
}
|
|
418
426
|
}
|
|
419
427
|
/** Reads entire ZIP database and caches in-memory */
|
|
@@ -593,27 +601,27 @@ async function buildGeonamesSqlite(opts) {
|
|
|
593
601
|
`);
|
|
594
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;`);
|
|
595
603
|
doSql(logger, db, `DROP TABLE IF EXISTS geoname_fulltext`, `CREATE VIRTUAL TABLE geoname_fulltext
|
|
596
|
-
USING
|
|
597
|
-
asciiname
|
|
598
|
-
population
|
|
604
|
+
USING fts5(geonameid,
|
|
605
|
+
asciiname, admin1, country,
|
|
606
|
+
population, latitude, longitude, timezone
|
|
599
607
|
);
|
|
600
608
|
`, `DROP TABLE IF EXISTS geoname_non_ascii`, `CREATE TABLE geoname_non_ascii AS
|
|
601
609
|
SELECT geonameid FROM geoname WHERE asciiname <> name`, `INSERT INTO geoname_fulltext
|
|
602
|
-
SELECT g.geonameid,
|
|
610
|
+
SELECT g.geonameid,
|
|
603
611
|
g.asciiname, a.asciiname, c.Country,
|
|
604
612
|
g.population, g.latitude, g.longitude, g.timezone
|
|
605
613
|
FROM geoname g, admin1 a, country c
|
|
606
614
|
WHERE g.country = c.ISO
|
|
607
615
|
AND g.country||'.'||g.admin1 = a.key
|
|
608
616
|
`, `INSERT INTO geoname_fulltext
|
|
609
|
-
SELECT g.geonameid,
|
|
617
|
+
SELECT g.geonameid,
|
|
610
618
|
g.asciiname, '', c.Country,
|
|
611
619
|
g.population, g.latitude, g.longitude, g.timezone
|
|
612
620
|
FROM geoname g, country c
|
|
613
621
|
WHERE g.country = c.ISO
|
|
614
622
|
AND (g.admin1 = '' OR g.admin1 = '00')
|
|
615
623
|
`, `INSERT INTO geoname_fulltext
|
|
616
|
-
SELECT g.geonameid,
|
|
624
|
+
SELECT g.geonameid,
|
|
617
625
|
g.name, a.name, c.Country,
|
|
618
626
|
g.population, g.latitude, g.longitude, g.timezone
|
|
619
627
|
FROM geoname_non_ascii gna, geoname g, admin1 a, country c
|
|
@@ -621,7 +629,7 @@ async function buildGeonamesSqlite(opts) {
|
|
|
621
629
|
AND g.country = c.ISO
|
|
622
630
|
AND g.country||'.'||g.admin1 = a.key
|
|
623
631
|
`, `INSERT INTO geoname_fulltext
|
|
624
|
-
SELECT g.geonameid,
|
|
632
|
+
SELECT g.geonameid,
|
|
625
633
|
alt.name, '', 'ישראל',
|
|
626
634
|
g.population, g.latitude, g.longitude, g.timezone
|
|
627
635
|
FROM geoname g, altnames alt
|
|
@@ -629,7 +637,7 @@ async function buildGeonamesSqlite(opts) {
|
|
|
629
637
|
AND alt.isolanguage = 'he'
|
|
630
638
|
AND g.geonameid = alt.geonameid
|
|
631
639
|
`, `INSERT INTO geoname_fulltext
|
|
632
|
-
SELECT g.geonameid,
|
|
640
|
+
SELECT g.geonameid,
|
|
633
641
|
alt.name, a1.asciiname, 'Israel',
|
|
634
642
|
g.population, g.latitude, g.longitude, g.timezone
|
|
635
643
|
FROM geoname g, admin1 a1, altnames alt
|
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
|
|
|
@@ -294,28 +295,23 @@ class GeoDb {
|
|
|
294
295
|
/**
|
|
295
296
|
* @private
|
|
296
297
|
* @param {any[]} res
|
|
297
|
-
* @param {boolean} latlong
|
|
298
298
|
* @return {Object[]}
|
|
299
299
|
*/
|
|
300
300
|
|
|
301
301
|
|
|
302
|
-
static zipResultToObj(res
|
|
302
|
+
static zipResultToObj(res) {
|
|
303
303
|
const obj = {
|
|
304
304
|
id: String(res.ZipCode),
|
|
305
305
|
value: `${res.CityMixedCase}, ${res.State} ${res.ZipCode}`,
|
|
306
306
|
admin1: res.State,
|
|
307
307
|
asciiname: res.CityMixedCase,
|
|
308
308
|
country: 'United States',
|
|
309
|
+
latitude: res.Latitude,
|
|
310
|
+
longitude: res.Longitude,
|
|
311
|
+
timezone: Location.getUsaTzid(res.State, res.TimeZone, res.DayLightSaving),
|
|
309
312
|
population: res.Population,
|
|
310
313
|
geo: 'zip'
|
|
311
314
|
};
|
|
312
|
-
|
|
313
|
-
if (latlong) {
|
|
314
|
-
obj.latitude = res.Latitude;
|
|
315
|
-
obj.longitude = res.Longitude;
|
|
316
|
-
obj.timezone = Location.getUsaTzid(res.State, res.TimeZone, res.DayLightSaving);
|
|
317
|
-
}
|
|
318
|
-
|
|
319
315
|
return obj;
|
|
320
316
|
}
|
|
321
317
|
/**
|
|
@@ -341,23 +337,30 @@ class GeoDb {
|
|
|
341
337
|
}
|
|
342
338
|
|
|
343
339
|
const zip5 = qraw.substring(0, 5);
|
|
344
|
-
return this.zipCompStmt.all(zip5 + '%').map(
|
|
340
|
+
return this.zipCompStmt.all(zip5 + '%').map(GeoDb.zipResultToObj);
|
|
345
341
|
} else {
|
|
346
342
|
if (!this.geonamesCompStmt) {
|
|
347
343
|
this.geonamesCompStmt = this.geonamesDb.prepare(GEONAME_COMPLETE_SQL);
|
|
348
344
|
}
|
|
349
345
|
|
|
350
346
|
qraw = qraw.replace(/\"/g, '""');
|
|
351
|
-
const geoRows = this.geonamesCompStmt.all(`"${qraw}
|
|
347
|
+
const geoRows = this.geonamesCompStmt.all(`{asciiname country admin1} : "${qraw}" *`);
|
|
352
348
|
const geoMatches = geoRows.map(res => {
|
|
353
349
|
const country = res.country || '';
|
|
354
350
|
const admin1 = res.admin1 || '';
|
|
351
|
+
const rank = Math.trunc(res.myrank * 100.0) / 100.0;
|
|
355
352
|
const obj = {
|
|
356
353
|
id: res.geonameid,
|
|
357
354
|
value: Location.geonameCityDescr(res.asciiname, admin1, country),
|
|
358
355
|
asciiname: res.asciiname,
|
|
356
|
+
admin1,
|
|
357
|
+
country,
|
|
358
|
+
latitude: res.latitude,
|
|
359
|
+
longitude: res.longitude,
|
|
360
|
+
timezone: res.timezone,
|
|
359
361
|
population: res.population,
|
|
360
|
-
geo: 'geoname'
|
|
362
|
+
geo: 'geoname',
|
|
363
|
+
rank: rank
|
|
361
364
|
};
|
|
362
365
|
|
|
363
366
|
if (country) {
|
|
@@ -368,12 +371,6 @@ class GeoDb {
|
|
|
368
371
|
obj.admin1 = admin1;
|
|
369
372
|
}
|
|
370
373
|
|
|
371
|
-
if (latlong) {
|
|
372
|
-
obj.latitude = res.latitude;
|
|
373
|
-
obj.longitude = res.longitude;
|
|
374
|
-
obj.timezone = res.timezone;
|
|
375
|
-
}
|
|
376
|
-
|
|
377
374
|
return obj;
|
|
378
375
|
});
|
|
379
376
|
|
|
@@ -382,7 +379,7 @@ class GeoDb {
|
|
|
382
379
|
}
|
|
383
380
|
|
|
384
381
|
const zipRows = this.zipFulltextCompStmt.all(`"${qraw}*"`);
|
|
385
|
-
const zipMatches = zipRows.map(
|
|
382
|
+
const zipMatches = zipRows.map(GeoDb.zipResultToObj);
|
|
386
383
|
const map = new Map();
|
|
387
384
|
|
|
388
385
|
for (const obj of zipMatches) {
|
|
@@ -401,7 +398,18 @@ class GeoDb {
|
|
|
401
398
|
|
|
402
399
|
const values = Array.from(map.values());
|
|
403
400
|
values.sort((a, b) => b.population - a.population);
|
|
404
|
-
|
|
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;
|
|
405
413
|
}
|
|
406
414
|
}
|
|
407
415
|
/** Reads entire ZIP database and caches in-memory */
|
|
@@ -581,27 +589,27 @@ async function buildGeonamesSqlite(opts) {
|
|
|
581
589
|
`);
|
|
582
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;`);
|
|
583
591
|
doSql(logger, db, `DROP TABLE IF EXISTS geoname_fulltext`, `CREATE VIRTUAL TABLE geoname_fulltext
|
|
584
|
-
USING
|
|
585
|
-
asciiname
|
|
586
|
-
population
|
|
592
|
+
USING fts5(geonameid,
|
|
593
|
+
asciiname, admin1, country,
|
|
594
|
+
population, latitude, longitude, timezone
|
|
587
595
|
);
|
|
588
596
|
`, `DROP TABLE IF EXISTS geoname_non_ascii`, `CREATE TABLE geoname_non_ascii AS
|
|
589
597
|
SELECT geonameid FROM geoname WHERE asciiname <> name`, `INSERT INTO geoname_fulltext
|
|
590
|
-
SELECT g.geonameid,
|
|
598
|
+
SELECT g.geonameid,
|
|
591
599
|
g.asciiname, a.asciiname, c.Country,
|
|
592
600
|
g.population, g.latitude, g.longitude, g.timezone
|
|
593
601
|
FROM geoname g, admin1 a, country c
|
|
594
602
|
WHERE g.country = c.ISO
|
|
595
603
|
AND g.country||'.'||g.admin1 = a.key
|
|
596
604
|
`, `INSERT INTO geoname_fulltext
|
|
597
|
-
SELECT g.geonameid,
|
|
605
|
+
SELECT g.geonameid,
|
|
598
606
|
g.asciiname, '', c.Country,
|
|
599
607
|
g.population, g.latitude, g.longitude, g.timezone
|
|
600
608
|
FROM geoname g, country c
|
|
601
609
|
WHERE g.country = c.ISO
|
|
602
610
|
AND (g.admin1 = '' OR g.admin1 = '00')
|
|
603
611
|
`, `INSERT INTO geoname_fulltext
|
|
604
|
-
SELECT g.geonameid,
|
|
612
|
+
SELECT g.geonameid,
|
|
605
613
|
g.name, a.name, c.Country,
|
|
606
614
|
g.population, g.latitude, g.longitude, g.timezone
|
|
607
615
|
FROM geoname_non_ascii gna, geoname g, admin1 a, country c
|
|
@@ -609,7 +617,7 @@ async function buildGeonamesSqlite(opts) {
|
|
|
609
617
|
AND g.country = c.ISO
|
|
610
618
|
AND g.country||'.'||g.admin1 = a.key
|
|
611
619
|
`, `INSERT INTO geoname_fulltext
|
|
612
|
-
SELECT g.geonameid,
|
|
620
|
+
SELECT g.geonameid,
|
|
613
621
|
alt.name, '', 'ישראל',
|
|
614
622
|
g.population, g.latitude, g.longitude, g.timezone
|
|
615
623
|
FROM geoname g, altnames alt
|
|
@@ -617,7 +625,7 @@ async function buildGeonamesSqlite(opts) {
|
|
|
617
625
|
AND alt.isolanguage = 'he'
|
|
618
626
|
AND g.geonameid = alt.geonameid
|
|
619
627
|
`, `INSERT INTO geoname_fulltext
|
|
620
|
-
SELECT g.geonameid,
|
|
628
|
+
SELECT g.geonameid,
|
|
621
629
|
alt.name, a1.asciiname, 'Israel',
|
|
622
630
|
g.population, g.latitude, g.longitude, g.timezone
|
|
623
631
|
FROM geoname g, admin1 a1, altnames alt
|
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"
|
|
@@ -29,10 +29,10 @@
|
|
|
29
29
|
],
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@hebcal/cities": "^3.1.2",
|
|
32
|
-
"@hebcal/core": "^3.
|
|
33
|
-
"better-sqlite3": "^7.5.
|
|
34
|
-
"pino": "^7.
|
|
35
|
-
"pino-pretty": "^7.
|
|
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.
|
|
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
|
}
|