From dfd27874381266c0ee71e162ef970b760a81f940 Mon Sep 17 00:00:00 2001 From: rolux Date: Thu, 24 Nov 2011 19:38:10 +0100 Subject: [PATCH] geo/map bugfixes --- demos/listmap/index.html | 5 +- demos/listmap/js/listmap.js | 109 +-- demos/listmap2/js/listmap.js | 40 +- source/Ox.Geo/json/Ox.Geo.json | 1062 +++++++++++++++------------ source/Ox.Geo/png/flags/16/IN.png | Bin 1125 -> 1097 bytes source/Ox.Geo/png/flags/256/IN.png | Bin 12586 -> 12332 bytes source/Ox.Geo/png/flags/64/IN.png | Bin 2058 -> 1896 bytes source/Ox.UI/js/Map/Ox.ListMap.js | 2 +- source/Ox.UI/js/Map/Ox.Map.js | 6 +- source/Ox.UI/js/Map/Ox.MapMarker.js | 16 +- tools/geo/js/geo.js | 403 +++++----- tools/geo/jsonc/countries.jsonc | 27 +- tools/geo/py/geo.py | 9 +- tools/geo/py/png.py | 22 +- 14 files changed, 892 insertions(+), 809 deletions(-) diff --git a/demos/listmap/index.html b/demos/listmap/index.html index 9454896e..9e8bf31f 100644 --- a/demos/listmap/index.html +++ b/demos/listmap/index.html @@ -1,10 +1,9 @@ - ox.js listmap demoOxJS ListMap Demo - - + diff --git a/demos/listmap/js/listmap.js b/demos/listmap/js/listmap.js index eb01bf48..7c31834e 100644 --- a/demos/listmap/js/listmap.js +++ b/demos/listmap/js/listmap.js @@ -1,52 +1,71 @@ -Ox.load('UI', { - debug: true, - theme: 'modern' -}, function() { +Ox.load({UI: {}, Geo: {}}, function() { - Ox.load('Geo', function() { + var markerColor = { + 'Northern America': [64, 64, 255], + 'Central America': [0, 0, 255], + 'Caribbean': [0, 0, 128], + 'Southern America': [0, 255, 0], + 'Northern Europe': [255, 255, 192], + 'Western Europe': [255, 255, 0], + 'Eastern Europe': [255, 128, 0], + 'Southern Europe': [128, 128, 0], + 'Northern Africa': [128, 128, 128], + 'Western Africa': [64, 64, 128], + 'Middle Africa': [64, 64, 64], + 'Eastern Africa': [128, 64, 64], + 'Southern Africa': [64, 128, 64], + 'Western Asia': [255, 128, 128], + 'Central Asia': [255, 0, 0], + 'Eastern Asia': [128, 0, 0], + 'Southern Asia': [255, 0, 255], + 'South-Eastern Asia': [128, 0, 128], + 'Australia and New Zealand': [0, 128, 128], + 'Micronesia': [192, 255, 255], + 'Melanesia': [0, 255, 255], + 'Polynesia': [128, 128, 255], + 'Antarctica': [192, 192, 192] + }, - var listmap = new Ox.ListMap({ - height: window.innerHeight, - places: Ox.map(Ox.COUNTRIES, function(place) { - return { - alternativeNames: place.googleName ? [place.googleName] : [], - area: place.area, - countryCode: place.code, - editable: true, - flag: place.code, - geoname: place.name, - id: place.code, - name: place.name, - type: 'country', - lat: place.lat, - lng: place.lng, - south: place.south, - west: place.west, - north: place.north, - east: place.east - }; - }), - showTypes: true, - width: window.innerWidth - }) - .bindEvent({ - geocode: function(event, data) { - Ox.print(event) - Ox.print(JSON.stringify(data)) - } - }) - .appendTo(Ox.UI.$body); + $listmap = new Ox.ListMap({ + height: window.innerHeight, + places: Ox.COUNTRIES.map(function(place) { + return { + alternativeNames: Ox.compact([place.google, place.imdb, place.wikipedia]), + area: place.area, + countryCode: place.code, + editable: true, + flag: place.code, + geoname: place.name, + id: place.code, + markerColor: markerColor[place.region] || [128,128,128], + name: place.name, + type: 'country', + lat: place.lat, + lng: place.lng, + south: place.south, + west: place.west, + north: place.north, + east: place.east + }; + }), + width: window.innerWidth + }) + .bindEvent({ + geocode: function(event, data) { + Ox.print(event) + Ox.print(JSON.stringify(data)) + } + }) + .appendTo(Ox.UI.$body); - $(window).resize(function() { - Ox.print('RESIZE', window.innerHeight) - listmap.options({ - height: window.innerHeight, - width: window.innerWidth - }); + $(window).resize(function() { + Ox.print('RESIZE', window.innerHeight) + $listmap.options({ + height: window.innerHeight, + width: window.innerWidth }); - - window.listmap = listmap; - }); + + window.$listmap = $listmap; }); \ No newline at end of file diff --git a/demos/listmap2/js/listmap.js b/demos/listmap2/js/listmap.js index a24168b2..6f2bb7c1 100644 --- a/demos/listmap2/js/listmap.js +++ b/demos/listmap2/js/listmap.js @@ -1,36 +1,33 @@ -Ox.load('UI', { +Ox.load({UI: { debug: true, hideScreen: true, showScreen: true, theme: 'modern' -}, function() { - -Ox.load('Geo', function() { +}, Geo: {}}, function() { Ox.getJSON('json/cities50000.json', function(cities) { var places = cities.map(function(city, i) { - var countryCode = city.country_code == 'XK' ? 'RS-KO' : city.country_code, - marker = city.population > 10000000 ? {size: 24, color: [255, 0, 0]} : - city.population > 5000000 ? {size: 22, color: [255, 32, 0]} : - city.population > 2000000 ? {size: 20, color: [255, 64, 0]} : - city.population > 1000000 ? {size: 18, color: [255, 96, 0]} : - city.population > 500000 ? {size: 16, color: [255, 128, 0]} : - city.population > 200000 ? {size: 14, color: [255, 160, 0]} : - city.population > 100000 ? {size: 12, color: [255, 192, 0]} : - city.population > 50000 ? {size: 10, color: [255, 224, 0]} : - {size: 8, color: [255, 255, 0]}, - area = Math.max(city.population, 1) * 100, + var area = Math.max(city.population, 1) * 100, + geoname = city.name + ', ' + Ox.getCountryByCode(city.country_code).name, latSize = Math.sqrt(area) / Ox.EARTH_CIRCUMFERENCE * 360, - lngSize = Math.sqrt(area) * Ox.getDegreesPerMeter(city.latitude); + lngSize = Math.sqrt(area) * Ox.getDegreesPerMeter(city.latitude), + marker = city.population > 10000000 ? {size: 24, color: [255, 0, 0]} + : city.population > 5000000 ? {size: 22, color: [255, 32, 0]} + : city.population > 2000000 ? {size: 20, color: [255, 64, 0]} + : city.population > 1000000 ? {size: 18, color: [255, 96, 0]} + : city.population > 500000 ? {size: 16, color: [255, 128, 0]} + : city.population > 200000 ? {size: 14, color: [255, 160, 0]} + : city.population > 100000 ? {size: 12, color: [255, 192, 0]} + : city.population > 50000 ? {size: 10, color: [255, 224, 0]} + : {size: 8, color: [255, 255, 0]}; return { alternativeNames: [], area: area, - countryCode: countryCode, + countryCode: city.country_code, editable: true, - flag: countryCode, - geoname: city.name + ', ' + Ox.getCountryByCode(countryCode).name, - geonameSort: getGeonameSort(city.name + ', ' + Ox.getCountryByCode(countryCode).name), + geoname: geoname, + geonameSort: getGeonameSort(geoname), id: Ox.encodeBase32(Ox.uid()), markerColor: marker.color, markerSize: marker.size, @@ -206,6 +203,5 @@ Ox.load('Geo', function() { } }); - -}); + }); \ No newline at end of file diff --git a/source/Ox.Geo/json/Ox.Geo.json b/source/Ox.Geo/json/Ox.Geo.json index b56f9790..43abaa20 100644 --- a/source/Ox.Geo/json/Ox.Geo.json +++ b/source/Ox.Geo/json/Ox.Geo.json @@ -213,21 +213,22 @@ "Norway", "United Kingdom" ], - "east": 180, + "east": 179.9999999999, "flagURL": "http://upload.wikimedia.org/wikipedia/commons/6/68/Flag_of_the_Antarctic_Treaty.svg", - "lat": -72.52556439, + "lat": -72.5255643899, "lng": 0, "name": "Antarctica", "north": -60, "region": "Antarctica", - "south": -85.05112878, - "west": -180 + "south": -85.0511287798, + "west": -179.9999999999 }, { "area": 6372157701965.361, "code": "AR", "continent": "South America", - "dependecies": [ + "dependencies": [ + "Argentine Antarctica", "Antarctica" ], "east": -53.6497164, @@ -249,12 +250,12 @@ ], "east": -25, "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/01/Flag_of_Tierra_del_Fuego_province_in_Argentina.svg", - "lat": -72.52556439, + "lat": -72.5255643899, "lng": -49.5, "name": "Argentine Antarctica", "north": -60, "region": "Antarctica", - "south": -85.05112878, + "south": -85.0511287798, "west": -74 }, { @@ -292,7 +293,14 @@ "area": 46223946776081.38, "code": "AU", "continent": "Oceania", - "dependecies": [ + "dependencies": [ + "Ashmore and Cartier Islands", + "Australian Antarctic Territory", + "Christmas Island", + "Cocos Islands", + "Coral Sea Islands", + "Heard Island and McDonald Islands", + "Norfolk Island", "Antarctica" ], "east": -173.0645, @@ -338,13 +346,13 @@ "east": 160, "flag": "AU", "flagURL": "http://upload.wikimedia.org/wikipedia/en/b/b9/Flag_of_Australia.svg", - "lat": -72.52556439, - "lng": 102.31666667, + "lat": -72.5255643899, + "lng": 102.3166666667, "name": "Australian Antarctic Territory", "north": -60, "region": "Antarctica", - "south": -85.05112878, - "west": 44.63333333 + "south": -85.0511287798, + "west": 44.6333333333 }, { "area": 60499860826.18157, @@ -651,7 +659,7 @@ "west": -69.64499 }, { - "area": 786222265.5974265, + "area": 368830818016.12, "code": "BQ", "continent": "South America", "created": { @@ -661,12 +669,12 @@ "dependency": [ "Netherlands" ], - "east": -68.1954002, + "east": -62.9457378, "flagURL": "http://upload.wikimedia.org/wikipedia/commons/1/1e/Flag_of_Bonaire.svg", - "lat": 12.2018902, - "lng": -68.2623822, + "lat": 14.83740955, + "lng": -65.68335055, "name": "Bonaire, Sint Eustatius and Saba", - "north": 12.3122468, + "north": 17.6503149, "region": "Caribbean", "south": 12.0245042, "west": -68.4209633, @@ -681,12 +689,12 @@ ], "east": -20, "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/fd/Flag_of_the_British_Antarctic_Territory.svg", - "lat": -72.52556439, + "lat": -72.5255643899, "lng": -50, "name": "British Antarctic Territory", "north": -60, "region": "Antarctica", - "south": -85.05112878, + "south": -85.0511287798, "west": -80 }, { @@ -987,7 +995,8 @@ "area": 16435911702619.027, "code": "CL", "continent": "South America", - "dependecies": [ + "dependencies": [ + "Chilean Antarctic Territory", "Antarctica" ], "east": -66.3327, @@ -1012,12 +1021,12 @@ ], "east": -53, "flagURL": "http://upload.wikimedia.org/wikipedia/commons/8/8d/Flag_of_Magallanes%2C_Chile.svg", - "lat": -72.52556439, + "lat": -72.5255643899, "lng": -71.5, "name": "Chilean Antarctic Territory", "north": -60, "region": "Antarctica", - "south": -85.05112878, + "south": -85.0511287798, "west": -90 }, { @@ -1038,7 +1047,7 @@ "area": 21555709010335.66, "code": "CN", "continent": "Asia", - "dependecies": [ + "dependencies": [ "Hong Kong", "Macau" ], @@ -1111,7 +1120,7 @@ "west": -86.0449 }, { - "area": 280624359208.4667, + "area": 280624359208.4659, "code": "CSHH", "continent": "Europe", "dissolved": { @@ -1212,7 +1221,7 @@ "west": -25.3839111 }, { - "area": 1805549223.1433032, + "area": 5069459315.473289, "code": "CW", "continent": "South America", "created": { @@ -1222,15 +1231,15 @@ "dependency": [ "Netherlands" ], - "east": -68.7385368, + "east": -68.567, "flagURL": "http://upload.wikimedia.org/wikipedia/commons/b/b1/Flag_of_Cura%C3%A7ao.svg", - "lat": 12.1224221, - "lng": -68.8824233, + "lat": 12.16957, + "lng": -68.99002, "name": "Cura\u00e7ao", - "north": 12.3916805, + "north": 12.4942, "region": "Caribbean", - "south": 12.0379775, - "west": -69.1600137 + "south": 11.9224, + "west": -69.299 }, { "area": 345831962.0301499, @@ -1403,7 +1412,7 @@ "area": 182677851891.08655, "code": "DK", "continent": "Europe", - "dependecies": [ + "dependencies": [ "Faroe Islands", "Greenland" ], @@ -1591,7 +1600,7 @@ "area": 1677389551125.249, "code": "ES", "continent": "Europe", - "dependecies": [ + "dependencies": [ "Canary Islands", "Ceuta and Melilla" ], @@ -1629,24 +1638,24 @@ "west": 32.9977343 }, { - "area": 31497506979520.023, + "area": 19047536573713.348, "code": "EU", "continent": "Europe", - "east": 74.1357, + "east": 34.6045, "flagURL": "http://upload.wikimedia.org/wikipedia/commons/b/b7/Flag_of_Europe.svg", - "lat": 54.5259614, - "lng": 15.2551187, + "lat": 51.1908966, + "lng": 1.56985, "name": "European Union", - "north": 82.7021697, + "north": 70.0922932, "region": "Western Europe", - "south": 33.8978, - "west": -28.0371 + "south": 32.2895, + "west": -31.4648 }, { "area": 676332610065.4183, "code": "FI", "continent": "Europe", - "dependecies": [ + "dependencies": [ "\u00c5land" ], "east": 31.5871, @@ -1735,7 +1744,7 @@ "west": -7.7178955 }, { - "area": 12354685466247.986, + "area": 57945336234756.42, "code": "FQHH", "continent": "Antarctica", "dissolved": { @@ -1745,15 +1754,15 @@ "date": "1979", "dissolved": "split" }, - "east": 70.5761719, + "east": 142.1833333333, "flag": "TF", "flagURL": "http://upload.wikimedia.org/wikipedia/commons/a/a7/Flag_of_the_French_Southern_and_Antarctic_Lands.svg", - "lat": -30.6443971, - "lng": 55.12001645, + "lat": -48.3001768899, + "lng": 90.9235971666, "name": "French Southern and Antarctic Territories", "north": -11.549225, "region": "Antarctica", - "south": -49.7395692, + "south": -85.0511287798, "west": 39.663861, "wikipediaName": "French Southern and Antarctic Lands" }, @@ -1765,7 +1774,24 @@ "country": "Metropolitan France", "date": "1997" }, - "dependecies": [ + "dependencies": [ + "Ad\u00e9lie Land", + "Clipperton Island", + "French Afar and Issas", + "French Guiana", + "French Polynesia", + "French Southern and Antarctic Lands", + "French Southern Lands", + "Guadeloupe", + "Martinique", + "Mayotte", + "New Caledonia", + "R\u00e9union", + "Saint Barth\u00e9lemy", + "Saint Martin", + "Saint Pierre and Miquelon", + "Wallis and Futuna", + "Antarctica", "New Hebrides" ], "east": 9.6625, @@ -1790,16 +1816,16 @@ "dependency": [ "France" ], - "east": 142.18333333, + "east": 142.1833333333, "flag": "TF", "flagURL": "http://upload.wikimedia.org/wikipedia/commons/a/a7/Flag_of_the_French_Southern_and_Antarctic_Lands.svg", - "lat": -72.52556439, - "lng": 139.10833333, + "lat": -72.5255643899, + "lng": 139.1083333333, "name": "Ad\u00e9lie Land", "north": -60, "region": "Antarctica", - "south": -85.05112878, - "west": 136.03333333 + "south": -85.0511287798, + "west": 136.0333333333 }, { "area": 1277176367200.3474, @@ -1835,6 +1861,56 @@ "south": -4.1656, "west": 8.421 }, + { + "area": 805250615187.3992, + "code": "GB", + "continent": "Europe", + "dependencies": [ + "Canton and Enderbury Islands", + "Akrotiri and Dhekelia", + "Anguilla", + "Ascension", + "Bermuda", + "British Antarctic Territory", + "British Indian Ocean Territory", + "British Virgin Islands", + "Cayman Islands", + "Diego Garcia", + "England", + "Falkland Islands", + "Gibraltar", + "Gilbert and Ellice Islands", + "Guernsey", + "Isle of Man", + "Jersey", + "Montserrat", + "Northern Ireland", + "Pitcairn Islands", + "Saint Helena", + "Scotland", + "South Georgia and the South Sandwich Islands", + "Tristan da Cunha", + "Turks and Caicos Islands", + "Wales", + "Antarctica", + "New Hebrides" + ], + "east": 1.768926, + "flagURL": "http://upload.wikimedia.org/wikipedia/en/a/ae/Flag_of_the_United_Kingdom.svg", + "googleName": "UK", + "languages": [ + "Cornish", + "English", + "British" + ], + "lat": 55.3720906, + "lng": -3.4468685, + "name": "United Kingdom", + "north": 60.86165, + "region": "Northern Europe", + "south": 49.8825312, + "west": -8.662663 + }, { "area": 3777956357.769113, "code": "GB-AD", @@ -1874,29 +1950,6 @@ "south": 49.8825312, "west": -6.3651943 }, - { - "area": 805250615187.3992, - "code": "GB", - "continent": "Europe", - "dependecies": [ - "New Hebrides" - ], - "east": 1.768926, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/a/ae/Flag_of_the_United_Kingdom.svg", - "googleName": "UK", - "languages": [ - "Cornish", - "English", - "British" - ], - "lat": 55.3720906, - "lng": -3.4468685, - "name": "United Kingdom", - "north": 60.86165, - "region": "Northern Europe", - "south": 49.8825312, - "west": -8.662663 - }, { "area": 25515326599.749855, "code": "GB-NIR", @@ -1992,24 +2045,24 @@ "wikipediaName": "Georgia (country)" }, { - "area": 84041059.04251076, + "area": 22763384174.018658, "code": "GE-AB", "continent": "Asia", "disputed": [ "Georgia" ], - "east": 20.2782257, + "east": 42.149976, "flagURL": "http://upload.wikimedia.org/wikipedia/commons/2/27/Flag_of_Abkhazia.svg", "languages": [ "Abkhazian" ], - "lat": 46.95325, - "lng": 20.2010411, + "lat": 42.9737816, + "lng": 41.4421799, "name": "Abkhazia", - "north": 47.0002048, + "north": 43.584541, "region": "Western Asia", - "south": 46.9229997, - "west": 20.149517 + "south": 42.410732, + "west": 40.010239 }, { "area": 9503349203.032263, @@ -2028,45 +2081,6 @@ "south": 41.733082, "west": 43.419911 }, - { - "area": 139633328625.30426, - "code": "GF", - "continent": "South America", - "dependency": [ - "France" - ], - "east": -51.616449, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/2/29/Flag_of_French_Guiana.svg", - "lat": 3.933889, - "lng": -53.125782, - "name": "French Guiana", - "north": 5.9548, - "region": "Southern America", - "south": 2.109287, - "west": -54.554438 - }, - { - "area": 1344538103.59379, - "code": "GG", - "continent": "Europe", - "dependecies": [ - "Alderney", - "Herm", - "Sark" - ], - "dependency": [ - "United Kingdom" - ], - "east": -2.158902, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/fa/Flag_of_Guernsey.svg", - "lat": 49.465691, - "lng": -2.585278, - "name": "Guernsey", - "north": 49.731547, - "region": "Northern Europe", - "south": 49.407746, - "west": -2.675589 - }, { "area": 1302387826289.7786, "code": "GEHH", @@ -2092,6 +2106,45 @@ "south": -11.1891796, "west": 172.755768 }, + { + "area": 139633328625.30426, + "code": "GF", + "continent": "South America", + "dependency": [ + "France" + ], + "east": -51.616449, + "flagURL": "http://upload.wikimedia.org/wikipedia/commons/2/29/Flag_of_French_Guiana.svg", + "lat": 3.933889, + "lng": -53.125782, + "name": "French Guiana", + "north": 5.9548, + "region": "Southern America", + "south": 2.109287, + "west": -54.554438 + }, + { + "area": 1344538103.59379, + "code": "GG", + "continent": "Europe", + "dependencies": [ + "Alderney", + "Herm", + "Sark" + ], + "dependency": [ + "United Kingdom" + ], + "east": -2.158902, + "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/fa/Flag_of_Guernsey.svg", + "lat": 49.465691, + "lng": -2.585278, + "name": "Guernsey", + "north": 49.731547, + "region": "Northern Europe", + "south": 49.407746, + "west": -2.675589 + }, { "area": 19057140.93126722, "code": "GG-AL", @@ -2245,6 +2298,20 @@ "south": 15.742032, "west": -61.8468475 }, + { + "area": 387476388452.9188, + "code": "GQ", + "continent": "Africa", + "east": 11.3538886, + "flagURL": "http://upload.wikimedia.org/wikipedia/commons/3/31/Flag_of_Equatorial_Guinea.svg", + "lat": 1.650801, + "lng": 10.267895, + "name": "Equatorial Guinea", + "north": 3.8355, + "region": "Middle Africa", + "south": -1.5475, + "west": 5.5419 + }, { "area": 725852290757.8319, "code": "GR", @@ -2263,34 +2330,6 @@ "south": 34.5428, "west": 19.3098 }, - { - "area": 387476388452.9188, - "code": "GQ", - "continent": "Africa", - "east": 11.3538886, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/3/31/Flag_of_Equatorial_Guinea.svg", - "lat": 1.650801, - "lng": 10.267895, - "name": "Equatorial Guinea", - "north": 3.8355, - "region": "Middle Africa", - "south": -1.5475, - "west": 5.5419 - }, - { - "area": 203323658545.63513, - "code": "GT", - "continent": "South America", - "east": -88.1982, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/ec/Flag_of_Guatemala.svg", - "lat": 15.783471, - "lng": -90.230759, - "name": "Guatemala", - "north": 17.8156972, - "region": "Central America", - "south": 13.63, - "west": -92.2714 - }, { "area": 531522905979.8907, "code": "GS", @@ -2308,6 +2347,20 @@ "south": -59.910976, "west": -38.4301758 }, + { + "area": 203323658545.63513, + "code": "GT", + "continent": "South America", + "east": -88.1982, + "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/ec/Flag_of_Guatemala.svg", + "lat": 15.783471, + "lng": -90.230759, + "name": "Guatemala", + "north": 17.8156972, + "region": "Central America", + "south": 13.63, + "west": -92.2714 + }, { "area": 5446482335.020033, "code": "GU", @@ -2440,6 +2493,23 @@ "south": 17.9422, "west": -74.6082 }, + { + "area": 162790692682.90808, + "code": "HU", + "continent": "Europe", + "east": 22.8979924, + "flagURL": "http://upload.wikimedia.org/wikipedia/commons/c/c1/Flag_of_Hungary.svg", + "languages": [ + "Hungarian" + ], + "lat": 47.162494, + "lng": 19.503304, + "name": "Hungary", + "north": 48.585233, + "region": "Eastern Europe", + "south": 45.737124, + "west": 16.1136813 + }, { "area": 546015995630.9251, "code": "HVBF", @@ -2461,35 +2531,18 @@ "wikipediaName": "Republic of Upper Volta" }, { - "area": 162790692682.90808, - "code": "HU", - "continent": "Europe", - "east": 22.8979924, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/c/c1/Flag_of_Hungary.svg", - "languages": [ - "Hungarian" - ], - "lat": 47.162494, - "lng": 19.503304, - "name": "Hungary", - "north": 48.585233, - "region": "Eastern Europe", - "south": 45.737124, - "west": 16.1136813 - }, - { - "area": 2095460525988.537, + "area": 116270632971.66176, "code": "IC", "continent": "Africa", "dependency": [ "Spain" ], - "east": -2.1567972, + "east": -12.9987624, "flagURL": "http://upload.wikimedia.org/wikipedia/commons/b/b0/Flag_of_the_Canary_Islands.svg", - "lat": 28.2915637, - "lng": -16.6291304, + "lat": 28.6736742, + "lng": -15.5797286, "name": "Canary Islands", - "north": 40.41292, + "north": 29.709598, "region": "Northern Africa", "south": 27.6377504, "west": -18.1606948 @@ -2549,11 +2602,28 @@ "south": 29.4797, "west": 34.267387 }, + { + "area": 1412207881.62399, + "code": "IM", + "continent": "Europe", + "dependency": [ + "United Kingdom" + ], + "east": -4.308328, + "flagURL": "http://upload.wikimedia.org/wikipedia/commons/b/bc/Flag_of_the_Isle_of_Man.svg", + "lat": 54.236107, + "lng": -4.548056, + "name": "Isle of Man", + "north": 54.418247, + "region": "Northern Europe", + "south": 54.04464, + "west": -4.830181 + }, { "area": 9736416526088.582, "code": "IN", "continent": "Asia", - "dependecies": [ + "dependencies": [ "Jammu and Kashmir" ], "east": 97.395555, @@ -2583,21 +2653,21 @@ "west": 68.1097 }, { - "area": 1412207881.62399, - "code": "IM", - "continent": "Europe", + "area": 183577277217.56094, + "code": "IN-JK", + "continent": "Asia", "dependency": [ - "United Kingdom" + "India" ], - "east": -4.308328, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/b/bc/Flag_of_the_Isle_of_Man.svg", - "lat": 54.236107, - "lng": -4.548056, - "name": "Isle of Man", - "north": 54.418247, - "region": "Northern Europe", - "south": 54.04464, - "west": -4.830181 + "east": 79.3058507, + "flagURL": "http://upload.wikimedia.org/wikipedia/commons/c/cd/Jammu-Kashmir-flag.svg", + "lat": 34.1490875, + "lng": 76.8259652, + "name": "Jammu and Kashmir", + "north": 35.5054275, + "region": "Southern Asia", + "south": 32.2922694, + "west": 73.750507 }, { "area": 40562687944.25631, @@ -2616,23 +2686,6 @@ "south": -7.4891118, "west": 71.1859131 }, - { - "area": 183577277217.56094, - "code": "IN-JK", - "continent": "Asia", - "dependency": [ - "India" - ], - "east": 79.3058507, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/c/cd/Jammu-Kashmir-flag.svg", - "lat": 34.1490875, - "lng": 76.8259652, - "name": "Jammu and Kashmir", - "north": 35.5054275, - "region": "Southern Asia", - "south": 32.2922694, - "west": 73.750507 - }, { "area": 848059568986.0635, "code": "IQ", @@ -2723,6 +2776,20 @@ "south": 49.164176, "west": -2.256745 }, + { + "area": 24005584843.571304, + "code": "JM", + "continent": "South America", + "east": -76.1448669, + "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/0a/Flag_of_Jamaica.svg", + "lat": 18.109581, + "lng": -77.297508, + "name": "Jamaica", + "north": 18.569782, + "region": "Caribbean", + "south": 17.6688854, + "west": -78.4073639 + }, { "area": 193288150235.7403, "code": "JO", @@ -2755,20 +2822,6 @@ "south": 23.9207972, "west": 122.91 }, - { - "area": 21202923962.90615, - "code": "JM", - "continent": "South America", - "east": -76.180321, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/0a/Flag_of_Jamaica.svg", - "lat": 18.115265, - "lng": -77.2734795, - "name": "Jamaica", - "north": 18.526976, - "region": "Caribbean", - "south": 17.703554, - "west": -78.366638 - }, { "area": 4566161.281369122, "code": "JTUM", @@ -2893,20 +2946,6 @@ "south": 17.0786101, "west": -62.86956 }, - { - "area": 333784532662.54047, - "code": "KP", - "continent": "Asia", - "east": 130.68865, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/5/51/Flag_of_North_Korea.svg", - "lat": 40.339852, - "lng": 127.510093, - "name": "North Korea", - "north": 43.01159, - "region": "Eastern Asia", - "south": 37.5892, - "west": 124.172937 - }, { "area": 681890094841.403, "code": "KOJP", @@ -2927,6 +2966,20 @@ "west": 124.172937, "wikipediaName": "Korean Empire" }, + { + "area": 333784532662.54047, + "code": "KP", + "continent": "Asia", + "east": 130.68865, + "flagURL": "http://upload.wikimedia.org/wikipedia/commons/5/51/Flag_of_North_Korea.svg", + "lat": 40.339852, + "lng": 127.510093, + "name": "North Korea", + "north": 43.01159, + "region": "Eastern Asia", + "south": 37.5892, + "west": 124.172937 + }, { "area": 371748242347.5363, "code": "KR", @@ -3742,7 +3795,7 @@ "area": 86514439152.23622, "code": "NL", "continent": "Europe", - "dependecies": [ + "dependencies": [ "Aruba", "Bonaire, Sint Eustatius and Saba", "Cura\u00e7ao", @@ -3766,7 +3819,11 @@ "area": 1956432609138.1396, "code": "NO", "continent": "Europe", - "dependecies": [ + "dependencies": [ + "Bouvet Island", + "Peter I Island", + "Queen Maud Land", + "Svalbard and Jan Mayen", "Antarctica" ], "east": 31.355, @@ -3824,15 +3881,15 @@ "dependency": [ "Norway" ], - "east": 44.63333333, + "east": 44.6333333333, "flag": "NO", "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/d9/Flag_of_Norway.svg", - "lat": -72.52556439, - "lng": 32.31666667, + "lat": -72.5255643899, + "lng": 32.3166666667, "name": "Queen Maud Land", "north": -60, "region": "Antarctica", - "south": -85.05112878, + "south": -85.0511287798, "west": 20 }, { @@ -3849,23 +3906,6 @@ "south": -0.5580623, "west": 166.9071293 }, - { - "area": 417793725.8031535, - "code": "NU", - "continent": "Oceania", - "dependency": [ - "New Zealand" - ], - "east": -169.7743249, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/01/Flag_of_Niue.svg", - "lat": -19.054445, - "lng": -169.867233, - "name": "Niue", - "north": -18.952625, - "region": "Polynesia", - "south": -19.1555668, - "west": -169.9500847 - }, { "area": 5015092056.758395, "code": "NTHH", @@ -3893,11 +3933,32 @@ "west": 44.712752, "wikipediaName": "Saudi-Iraqi neutral zone" }, + { + "area": 417793725.8031535, + "code": "NU", + "continent": "Oceania", + "dependency": [ + "New Zealand" + ], + "east": -169.7743249, + "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/01/Flag_of_Niue.svg", + "lat": -19.054445, + "lng": -169.867233, + "name": "Niue", + "north": -18.952625, + "region": "Polynesia", + "south": -19.1555668, + "west": -169.9500847 + }, { "area": 4261577771796.5947, "code": "NZ", "continent": "Oceania", - "dependecies": [ + "dependencies": [ + "Cook Islands", + "Niue", + "Ross Dependency", + "Tokelau", "Antarctica" ], "east": -175.0663205, @@ -3923,12 +3984,12 @@ "east": -150, "flag": "NZ", "flagURL": "http://upload.wikimedia.org/wikipedia/commons/3/3e/Flag_of_New_Zealand.svg", - "lat": -72.52556439, + "lat": -72.5255643899, "lng": -175, "name": "Ross Dependency", "north": -60, "region": "Antarctica", - "south": -85.05112878, + "south": -85.0511287798, "west": 160 }, { @@ -3959,6 +4020,34 @@ "south": 7.0409, "west": -83.0522411 }, + { + "area": 10121168791949.904, + "code": "PCHH", + "continent": "Oceania", + "dependency": [ + "United States" + ], + "dissolved": { + "country": [ + "Marshall Islands", + "Micronesia", + "Northern Mariana Islands", + "Palau" + ], + "date": "1986", + "dissolved": "split" + }, + "east": 172.5732422, + "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/41/Flag_of_the_Trust_Territory_of_the_Pacific_Islands.svg", + "lat": 10.4061473, + "lng": 152.2155762, + "name": "Pacific Islands", + "north": 20.6584862, + "region": "Micronesia", + "south": 0.1538084, + "west": 131.8579102, + "wikipediaName": "Trust Territory of the Pacific Islands" + }, { "area": 2855066440319.2007, "code": "PE", @@ -4010,34 +4099,6 @@ "south": -12.0823, "west": 140.8419695 }, - { - "area": 10121168791949.904, - "code": "PCHH", - "continent": "Oceania", - "dependency": [ - "United States" - ], - "dissolved": { - "country": [ - "Marshall Islands", - "Micronesia", - "Northern Mariana Islands", - "Palau" - ], - "date": "1986", - "dissolved": "split" - }, - "east": 172.5732422, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/41/Flag_of_the_Trust_Territory_of_the_Pacific_Islands.svg", - "lat": 10.4061473, - "lng": 152.2155762, - "name": "Pacific Islands", - "north": 20.6584862, - "region": "Micronesia", - "south": 0.1538084, - "west": 131.8579102, - "wikipediaName": "Trust Territory of the Pacific Islands" - }, { "area": 2205280531223.852, "code": "PH", @@ -4061,7 +4122,7 @@ "area": 2433685651116.017, "code": "PK", "continent": "Asia", - "dependecies": [ + "dependencies": [ "Azad Kashmir", "Gilgit-Baltistan" ], @@ -4216,6 +4277,29 @@ "south": 32.2895, "west": -31.4648 }, + { + "area": 1402280935471.6604, + "code": "PUUM", + "continent": "Oceania", + "dependency": [ + "United States" + ], + "dissolved": { + "country": "United States Minor Outlying Islands", + "date": "1986", + "dissolved": "merged" + }, + "east": -160.004578, + "flag": "US", + "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/e2/Flag_of_the_United_States_%28Pantone%29.svg", + "lat": 3.0220885, + "lng": -168.3145555, + "name": "United States Miscellaneous Pacific Islands", + "north": 6.433183, + "region": "Polynesia", + "south": -0.389006, + "west": -176.624533 + }, { "area": 161269956913.75598, "code": "PW", @@ -4273,29 +4357,6 @@ "south": 8.9294817, "west": -80.0232967 }, - { - "area": 1402280935471.6604, - "code": "PUUM", - "continent": "Oceania", - "dependency": [ - "United States" - ], - "dissolved": { - "country": "United States Minor Outlying Islands", - "date": "1986", - "dissolved": "merged" - }, - "east": -160.004578, - "flag": "US", - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/e2/Flag_of_the_United_States_%28Pantone%29.svg", - "lat": 3.0220885, - "lng": -168.3145555, - "name": "United States Miscellaneous Pacific Islands", - "north": 6.433183, - "region": "Polynesia", - "south": -0.389006, - "west": -176.624533 - }, { "area": 18688837753.055202, "code": "QA", @@ -4516,6 +4577,24 @@ "south": 1.2015, "west": 103.6012 }, + { + "area": 2899291545265.023, + "code": "SH", + "continent": "Africa", + "dependency": [ + "United Kingdom" + ], + "east": -5.6786442, + "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/00/Flag_of_Saint_Helena.svg", + "lat": -22.52888935, + "lng": -10.05107405, + "name": "Saint Helena", + "north": -7.8876128, + "region": "Western Africa", + "south": -37.1701659, + "west": -14.4235039, + "wikipediaName": "Saint Helena, Ascension and Tristan da Cunha" + }, { "area": 40411341662.19755, "code": "SI", @@ -4556,24 +4635,6 @@ "south": 5.612787, "west": 97.343396 }, - { - "area": 2899291545265.023, - "code": "SH", - "continent": "Africa", - "dependency": [ - "United Kingdom" - ], - "east": -5.6786442, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/00/Flag_of_Saint_Helena.svg", - "lat": -22.52888935, - "lng": -10.05107405, - "name": "Saint Helena", - "north": -7.8876128, - "region": "Western Africa", - "south": -37.1701659, - "west": -14.4235039, - "wikipediaName": "Saint Helena, Ascension and Tristan da Cunha" - }, { "area": 1450540754767.253, "code": "SJ", @@ -4764,6 +4825,44 @@ "south": -0.0988769, "west": 6.328125 }, + { + "area": 50536546494694.38, + "code": "SUHH", + "continent": "Europe", + "dependencies": [ + "Byelorussian Soviet Socialist Republic" + ], + "dissolved": { + "country": [ + "Armenia", + "Azerbaijan", + "Belarus", + "Estonia", + "Georgia", + "Kazakhstan", + "Kyrgyzstan", + "Latvia", + "Lithuania", + "Moldova", + "Russia", + "Tajikistan", + "Turkmenistan", + "Ukraine", + "Uzbekistan" + ], + "date": "1991-12-21", + "dissolved": "split" + }, + "east": -168.97788, + "flagURL": "http://upload.wikimedia.org/wikipedia/commons/a/a9/Flag_of_the_Soviet_Union.svg", + "lat": 58.64807535, + "lng": 105.31911, + "name": "Soviet Union", + "north": 82.1673907, + "region": "Eastern Europe", + "south": 35.12876, + "west": 19.6161 + }, { "area": 42613483960.324196, "code": "SV", @@ -4779,7 +4878,7 @@ "west": -90.1923 }, { - "area": 201201483.311003, + "area": 100968986.84106876, "code": "SX", "continent": "South America", "created": { @@ -4789,15 +4888,15 @@ "dependency": [ "Netherlands" ], - "east": -63.0101323, + "east": -62.9996466, "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/d3/Flag_of_Sint_Maarten.svg", - "lat": 18.0525921, - "lng": -63.0736329, + "lat": 18.03748405, + "lng": -63.0665588, "name": "Sint Maarten", - "north": 18.1243792, + "north": 18.0695, "region": "Caribbean", - "south": 18.0052232, - "west": -63.1534588 + "south": 18.0054681, + "west": -63.133471 }, { "area": 343571142589.864, @@ -4879,13 +4978,13 @@ "west": 13.47 }, { - "area": 12354685466247.986, + "area": 15161411044199.537, "code": "TF", "continent": "Antarctica", - "east": 70.5761719, + "east": 77.598801, "flagURL": "http://upload.wikimedia.org/wikipedia/commons/a/a7/Flag_of_the_French_Southern_and_Antarctic_Lands.svg", "lat": -30.6443971, - "lng": 55.12001645, + "lng": 58.631331, "name": "French Southern Territories", "north": -11.549225, "region": "Antarctica", @@ -4945,44 +5044,6 @@ "south": 36.6719898, "west": 67.342012 }, - { - "area": 50536546494694.38, - "code": "SUHH", - "continent": "Europe", - "dependecies": [ - "Byelorussian Soviet Socialist Republic" - ], - "dissolved": { - "country": [ - "Armenia", - "Azerbaijan", - "Belarus", - "Estonia", - "Georgia", - "Kazakhstan", - "Kyrgyzstan", - "Latvia", - "Lithuania", - "Moldova", - "Russia", - "Tajikistan", - "Turkmenistan", - "Ukraine", - "Uzbekistan" - ], - "date": "1991-12-21", - "dissolved": "split" - }, - "east": -168.97788, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/a/a9/Flag_of_the_Soviet_Union.svg", - "lat": 58.64807535, - "lng": 105.31911, - "name": "Soviet Union", - "north": 82.1673907, - "region": "Eastern Europe", - "south": 35.12876, - "west": 19.6161 - }, { "area": 20824442478.024734, "code": "TK", @@ -5201,11 +5262,40 @@ "west": 29.5734335 }, { + "area": 805250615187.3992, "code": "UK", "continent": "Europe", - "dependecies": [ + "dependencies": [ + "Canton and Enderbury Islands", + "Akrotiri and Dhekelia", + "Anguilla", + "Ascension", + "Bermuda", + "British Antarctic Territory", + "British Indian Ocean Territory", + "British Virgin Islands", + "Cayman Islands", + "Diego Garcia", + "England", + "Falkland Islands", + "Gibraltar", + "Gilbert and Ellice Islands", + "Guernsey", + "Isle of Man", + "Jersey", + "Montserrat", + "Northern Ireland", + "Pitcairn Islands", + "Saint Helena", + "Scotland", + "South Georgia and the South Sandwich Islands", + "Tristan da Cunha", + "Turks and Caicos Islands", + "Wales", + "Antarctica", "New Hebrides" ], + "east": 1.768926, "flag": "GB", "flagURL": "http://upload.wikimedia.org/wikipedia/en/a/ae/Flag_of_the_United_Kingdom.svg", "googleName": "UK", @@ -5214,14 +5304,42 @@ "English", "British" ], + "lat": 55.3720906, + "lng": -3.4468685, "name": "United Kingdom", - "region": "Northern Europe" + "north": 60.86165, + "region": "Northern Europe", + "south": 49.8825312, + "west": -8.662663 + }, + { + "area": 11440133137495.588, + "code": "UM", + "continent": "Oceania", + "created": { + "country": "United States Miscellaneous Pacific Islands", + "date": "1986" + }, + "dependency": [ + "United States" + ], + "east": -160.004578, + "flag": "US", + "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/e2/Flag_of_the_United_States_%28Pantone%29.svg", + "lat": 14.0045105, + "lng": -176.7056275, + "name": "United States Minor Outlying Islands", + "north": 28.398027, + "region": "Polynesia", + "south": -0.389006, + "west": 166.593323 }, { "area": 54513363881268.82, "code": "US", "continent": "North America", - "dependecies": [ + "dependencies": [ + "Canton and Enderbury Islands", "American Samoa", "Guam", "Northern Mariana Islands", @@ -5321,28 +5439,6 @@ "south": 12.5143467, "west": -61.4863586 }, - { - "area": 11440133137495.588, - "code": "UM", - "continent": "Oceania", - "created": { - "country": "United States Miscellaneous Pacific Islands", - "date": "1986" - }, - "dependency": [ - "United States" - ], - "east": -160.004578, - "flag": "US", - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/e2/Flag_of_the_United_States_%28Pantone%29.svg", - "lat": 14.0045105, - "lng": -176.7056275, - "name": "United States Minor Outlying Islands", - "north": 28.398027, - "region": "Polynesia", - "south": -0.389006, - "west": 166.593323 - }, { "area": 518541154303.11127, "code": "VDVN", @@ -5432,6 +5528,25 @@ "south": 8.1952, "west": 102.14441 }, + { + "area": 532650571566.48315, + "code": "VNVN", + "continent": "Asia", + "dissolved": { + "country": "Vietnam", + "date": "1976-07-02", + "dissolved": "merged" + }, + "east": 109.464638, + "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/e9/Flag_of_South_Vietnam.svg", + "lat": 12.3176275, + "lng": 106.6478235, + "name": "South Vietnam", + "north": 16.225432, + "region": "South-Eastern Asia", + "south": 8.409823, + "west": 103.831009 + }, { "area": 407416223831.0918, "code": "VU", @@ -5464,26 +5579,7 @@ "west": -178.2284546 }, { - "area": 425920090297.6676, - "code": "VNVN", - "continent": "Asia", - "dissolved": { - "country": "Vietnam", - "date": "1976-07-02", - "dissolved": "merged" - }, - "east": 108.335793, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/e9/Flag_of_South_Vietnam.svg", - "lat": 12.3176275, - "lng": 106.083401, - "name": "South Vietnam", - "north": 16.225432, - "region": "South-Eastern Asia", - "south": 8.409823, - "west": 103.831009 - }, - { - "area": 85141.62541359763, + "area": 39405128.03020904, "code": "WKUM", "continent": "Oceania", "dependency": [ @@ -5494,15 +5590,15 @@ "date": "1986", "dissolved": "merged" }, - "east": 166.65162678, + "east": 166.660066, "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/47/Flag_of_Wake_Island.svg", - "lat": 19.2819444, - "lng": 166.6502778, + "lat": 19.2912744, + "lng": 166.6499348, "name": "Wake Island", - "north": 19.28329338, + "north": 19.320169, "region": "Micronesia", - "south": 19.28059542, - "west": 166.64892882 + "south": 19.26969, + "west": 166.593323 }, { "area": 11220955906.920902, @@ -5541,24 +5637,6 @@ "west": 20.014284, "wikipediaName": "Republic of Kosovo" }, - { - "area": 1115275612987.1345, - "code": "YE", - "continent": "Asia", - "created": { - "country": "South Yemen", - "date": "1990-05-22" - }, - "east": 54.679, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/8/89/Flag_of_Yemen.svg", - "lat": 15.552727, - "lng": 48.516388, - "name": "Yemen", - "north": 19, - "region": "Western Asia", - "south": 11.7975, - "west": 41.7096 - }, { "area": 730804782736.0583, "code": "YDYE", @@ -5578,6 +5656,44 @@ "south": 12.591311, "west": 43.513451 }, + { + "area": 1115275612987.1345, + "code": "YE", + "continent": "Asia", + "created": { + "country": "South Yemen", + "date": "1990-05-22" + }, + "east": 54.679, + "flagURL": "http://upload.wikimedia.org/wikipedia/commons/8/89/Flag_of_Yemen.svg", + "lat": 15.552727, + "lng": 48.516388, + "name": "Yemen", + "north": 19, + "region": "Western Asia", + "south": 11.7975, + "west": 41.7096 + }, + { + "area": 241456152948.5633, + "code": "YEYE", + "continent": "Asia", + "dissolved": { + "country": "Yemen", + "date": "1990-05-22", + "dissolved": "merged" + }, + "east": 47.008731, + "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/f6/Flag_of_North_Yemen.svg", + "lat": 15.0191335, + "lng": 44.8934835, + "name": "North Yemen", + "north": 17.404171, + "region": "Western Asia", + "south": 12.634096, + "west": 42.778236, + "wikipediaName": "Yemen Arab Republic" + }, { "area": 1821566334.0016134, "code": "YT", @@ -5596,30 +5712,32 @@ "west": 44.9914169 }, { - "area": 194910758261.49622, - "code": "YEYE", - "continent": "Asia", + "area": 519930340116.9752, + "code": "YUCS", + "continent": "Europe", "dissolved": { - "country": "Yemen", - "date": "1990-05-22", - "dissolved": "merged" + "country": "Serbia and Montenegro", + "date": "2003-02-04", + "dissolved": "renamed" }, - "east": 47.008731, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/f6/Flag_of_North_Yemen.svg", - "lat": 15.47490965, - "lng": 44.8934835, - "name": "North Yemen", - "north": 17.404171, - "region": "Western Asia", - "south": 13.5456483, - "west": 42.778236, - "wikipediaName": "Yemen Arab Republic" + "east": 23.034093, + "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/e7/Flag_of_the_Kingdom_of_Yugoslavia.svg", + "languages": [ + "Serbo-Croatian" + ], + "lat": 43.86593435, + "lng": 18.1994965, + "name": "Yugoslavia", + "north": 46.8766467, + "region": "Southern Europe", + "south": 40.855222, + "west": 13.3649 }, { - "area": 2338673347483.4565, + "area": 2338673347483.458, "code": "ZA", "continent": "Africa", - "dependecies": [ + "dependencies": [ "Bophuthatswana", "Ciskei", "Transkei", @@ -5673,28 +5791,6 @@ "south": -13.459035, "west": 12.1454 }, - { - "area": 519930340116.9752, - "code": "YUCS", - "continent": "Europe", - "dissolved": { - "country": "Serbia and Montenegro", - "date": "2003-02-04", - "dissolved": "renamed" - }, - "east": 23.034093, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/e7/Flag_of_the_Kingdom_of_Yugoslavia.svg", - "languages": [ - "Serbo-Croatian" - ], - "lat": 43.86593435, - "lng": 18.1994965, - "name": "Yugoslavia", - "north": 46.8766467, - "region": "Southern Europe", - "south": 40.855222, - "west": 13.3649 - }, { "area": 624153359139.742, "code": "ZW", diff --git a/source/Ox.Geo/png/flags/16/IN.png b/source/Ox.Geo/png/flags/16/IN.png index bf111743b6fe261599d1356e77edbef0bc7da94a..c78dd77cfece69cd9bad20184129807da888db78 100644 GIT binary patch delta 292 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 diff --git a/source/Ox.Geo/png/flags/64/IN.png b/source/Ox.Geo/png/flags/64/IN.png index 1c48f89c5d8b766d55f746092a421de6d5ad5903..21b390c7e05b765d491a09cd2e9dd618140c1f43 100644 GIT binary patch delta 1097 zcmV-P1h)H%5a9n;-KvzgV(urBFlU7N;Bh)VHP zA$rkc4<>&@!P0|d4S1A7!BY?Y8-mb+Cg>#w>`8){EL1~kT()7eELL~3TbUWNJMZVA znv#Quf-_IZeD`_t?Z=z9?>!^<@hf2;W9k;rO&mbCfNtUdx&?o969>>Opqn^=ZUNoI z0dx!KCJvxmKsRv!-2%Fa1Lzje&Aty{VJ37tXvMqWmZ=R1nFF0wp9Y3xLOuYCL%GoN9F&fMRiobLWn8 z>P&$I5cK;bBAR~eb(<)&3!$&)_&20GiDX^?HXw;Se`(e#`mu zU+z8=IubJdejp+u6HKTb7qM#q)N=_j}^|J@LF9Szg|h+1c9ySEO9Nv*+0` z2{k|vC=n4Um*>T{ugSu~6LH<1bi2N+u5L-C(vV7}A*+9@Thi_N;<`OqSa>3~eND>c z`8{KVMQEQu5GWD}lcl8%E?oGTyLZ3i?Ab49w>@gL7KwyGyX^yD+ev~zC={~Tc8Z4& z|Kif6UszoHp2^A5?pR?ES^%X4(=<4F@+U4{9OL@+3v6%uY;63E=j~9fwrI6H0J7N> z#bTCJYJh)I>2rpLlH9nl$h~`OJbhZ;9V-k%$@*S+Wo3(Iv%~cC1WF0j>PtLthf1Z+ z`g)UY*Q49@SYK~asnp+vd5KcO^z;PHW`~uPElkrusc_cn&;kG~Ej=Tbvl$yZ%I0R9 zAP}n6SJdkrve`7v=4+bG*JQJ4>h%uQ>MMdk*xY|?Gd6aVT+U``>Dit!KQ>kGu`6T!vb0J50s+ zG#F}tLScwTql0CcD5XfJ50K3!@%=ZHN;XqdrOvP{lykD^=Cr{95v{_qw!SJw+Wf>HUhsozNv|28Xa}dWlNUPqoWRkgDD0F zQ;d!}jF0C@r3M%oIf7{#%+0OfI2k4;j)i~vH@NRNLXm8RXJ-EYR(NJ6nys+5!;tI# zcNlVAeTSiae;hXYK|hikp+G4HtOEcnKdSNjgXdJMZ2*czn{Un?=j$^C0CxI45@s}8 zlt{0{K1HlwS8ql8MiG>J;8N5uz=-x@)JXoo{+>Opqn^=ZUNoI0dx!KCJvxmKsRv!-2%Fa1LzjeO&mbCfNtIb*QR6{S1~3u P00000NkvXXu0mjfTq+X+ delta 1260 zcmajeYdF&j0LSsUhv_V|h;WuxZn;e|aC0e{!E&Zp$SVJKMpU z&CJMTJB8W95<6~3#L4wY@#vxzPS4Z(bAGQruYb?;UEE25aIBSpp5tiu)8zXr<$k`p z7xlzIv%SDlp!rTsBiV$L4RQL@ho(MAf|!r?lw)uoFAp&u?6rnFG#Pyyp{A`_XxZA< z$KbNfVrp%Z5yaz%>KqO!=GL^o<+k^6o$XKlq{+f35XzI9`rmWMW#87T7Lw-Ujiqv~ zU*L1{X*K_R3pd~fXt+)BhyR<>$~_U&g8>))DSvnb-%zC!KD~d<45Da^@$)x(WDaiY z1hPx;cq9RayQu(Oy{a~Vms?@e>^Lkt7e+cL`_Z!M7!-v9NZVVc0}rG+U^!vjh{gmi zIZG#E6*v^nxXB=`^Gwh#cbPYRa`aZ#so#^`WZ(woCXYX2Yj1z@h@f|4Llf!z=Kis- zKeJc{9LtFyb)4$ukS;#aOxJg5>5I2V&A{BNCl6<5o(Gvh{Umc5k(JbFyLf%WM3bja z_b9s-ZEb~nqPq}QVy^y+`Y^u?;kFxNNn;9`#D_IlZVzXCo1rgRVrw(z5UN z?S`Zhc*W6nSQM%>N{sZPLysnIgdmZXbxdZk_7kqQ;few`?p=6iKQ0{DR=H>Wd1!DD zjeIJaoi$uvkB1*TWm=-CoQAI*^!|Houeo^#!f_Ome`aWMQ;SG6I0|g-$I4S_RwG>R zD{TC}3(F(1pWYD}fxPmHii6eo2r`+nwzg+>9p2o`)-$;MVsR0io9hXO7iaIl7IX}V zMEmhVJbLul;}6T%PXi*HY@sI~`*vzF@AcKyZ}FL-jlFNgK(Y7v988)^Ql;rbM|I^y zm-yo71Y`yy#@CO&v=l@0KV*YMYL+&{9=I0hCK0{8OqI)Rx@%Pk9SH#@Wx=Mp8rPRc zltSIf^+1+*2AK%F2mIV^$j*an5#;!-qa|aqGE`|yY=-5 zJbUMkfB;umk%o4T?(I(q?R?chp{tioU5OOBBWqJx5$`K|h9J%_{E9e&NdX#S=_H;a zmDwT?lnHK$B@2E>t~`cAR)>bTsa~eNuR^H|hF-GJ{qR{6qr#^1K6<-qI$irkB2=QQ z@yf~#K;#UMh$lIbNe4?x^sh`AikFASd1k&xLnSY&KO!92;`feqELNnrAfMNIwYK(| zPgE4xPu50WyO@v=te#=cvAo?~m_@_7$q<%(3-cn-_ z$nSpnl19()%8YpF&Qj+QzF-6f!{H Ncii&?y3r%z&cBEZV?qD` diff --git a/source/Ox.UI/js/Map/Ox.ListMap.js b/source/Ox.UI/js/Map/Ox.ListMap.js index 7a730f37..aa35c332 100644 --- a/source/Ox.UI/js/Map/Ox.ListMap.js +++ b/source/Ox.UI/js/Map/Ox.ListMap.js @@ -58,7 +58,7 @@ Ox.ListMap = function(options, self) { format: function(value, data) { return $('') .attr({ - src: Ox.getFlagByGeoname(data.name, 16) + src: Ox.getFlagByGeoname(data.geoname, 16) }) .css({ width: '14px', diff --git a/source/Ox.UI/js/Map/Ox.Map.js b/source/Ox.UI/js/Map/Ox.Map.js index 2805d7f4..5d58e30b 100644 --- a/source/Ox.UI/js/Map/Ox.Map.js +++ b/source/Ox.UI/js/Map/Ox.Map.js @@ -840,10 +840,10 @@ Ox.Map = function(options, self) { self.places = []; if (!self.isAsync) { - self.options.places.forEach(function(place, i) { - self.places[i] = new Ox.MapPlace(Ox.extend({ + self.options.places.forEach(function(place) { + self.places.push(new Ox.MapPlace(Ox.extend({ map: that - }, place)); + }, place))); }); } google.maps.event.trigger(self.map, 'resize'); diff --git a/source/Ox.UI/js/Map/Ox.MapMarker.js b/source/Ox.UI/js/Map/Ox.MapMarker.js index 0d004c76..dc987223 100644 --- a/source/Ox.UI/js/Map/Ox.MapMarker.js +++ b/source/Ox.UI/js/Map/Ox.MapMarker.js @@ -206,15 +206,15 @@ Ox.MapMarker = function(options) { //Ox.Log('Map', 'setOptions, that.map: ', that.map) if (that.map.options('showTypes')) { that.color = typeColor[that.place.type]; - that.size = 8; - Ox.forEach(areaSize, function(size, area) { - if (that.place.area > area) { - that.size = size; - } else { - return false; - } - }); } + that.size = 8; + Ox.forEach(areaSize, function(size, area) { + if (that.place.area > area) { + that.size = size; + } else { + return false; + } + }); that.marker.setOptions({ // fixme: cursor remains pointer cursor: that.place.editing ? 'move' : 'pointer', diff --git a/tools/geo/js/geo.js b/tools/geo/js/geo.js index 7add3a9d..62fd657e 100644 --- a/tools/geo/js/geo.js +++ b/tools/geo/js/geo.js @@ -1,44 +1,46 @@ Ox.load('UI', function() { - Ox.getJSONC('../jsonc/countries.jsonc', function(geo) { - - var $map = $('') - .attr({ - id: 'map', - src: '../png/map.png' - }), - $bar = Ox.Bar({size: 24}), - $status = $('
') - .css({margin: '5px 0 0 8px'}) - .appendTo($bar) - $panel = Ox.SplitPanel({ - elements: [ - { - element: $map - }, - { - element: $bar, - size: 24 - } - ], - orientation: 'vertical' - }) - .appendTo(Ox.UI.$body), - errors = [], - geocoder = new google.maps.Geocoder(), - json = [], - timeout = 2000; + Ox.getJSONC('../jsonc/countries.jsonc', function(data) { Ox.getJSON('../json/countries.json', function(countries) { - var length = countries.length; - callGetData(); - function callGetData() { - getData(countries.shift(), function(country) { + + var $map = $('') + .attr({ + id: 'map', + src: '../png/map.png' + }), + $bar = Ox.Bar({size: 24}), + $status = $('
') + .css({margin: '5px 0 0 8px'}) + .appendTo($bar), + $panel = Ox.SplitPanel({ + elements: [ + { + element: $map + }, + { + element: $bar, + size: 24 + } + ], + orientation: 'vertical' + }) + .appendTo(Ox.UI.$body), + errors = [], + geocoder = new google.maps.Geocoder(), + json = [], + length = countries.length, + timeout = 2000; + + getNextCountry(); + + function getNextCountry() { + getCountryData(countries.shift(), function(country) { addFlag(country); json.push(country); $status.html(json.length + '/' + length + ' ' + country.name); if (countries.length) { - setTimeout(callGetData, timeout); + setTimeout(getNextCountry, timeout); } else { var $dialog = Ox.Dialog({ buttons: [ @@ -58,200 +60,179 @@ Ox.load('UI', function() { WebkitUserSelect: 'text' }) .html( - '
' + JSON.stringify(json, null, 4) + '
' + '
' + JSON.stringify(
+                                            errors.length ? {errors: errors, data: json} : json,
+                                        null, 4) + '
' ), height: window.innerHeight * 0.9 - 48, title: 'Ox.Geo', width: window.innerWidth * 0.9 }).open(); - Ox.print('Errors:', errors); - $status.html( - errors.length - ? 'Done, see console for errors.' - : 'Done, no errors.' - ); + $status.html(''); } }); } - }); - function addFlag(country) { - var $div, - center = Ox.getXYByLatLng({lat: country.lat, lng: country.lng}), - crossesDateline = country.west > country.east, - height = $map.height(), - northEast = Ox.getXYByLatLng({lat: country.north, lng: country.east}), - southWest = Ox.getXYByLatLng({lat: country.south, lng: country.west}), - width = $map.width(); - if (crossesDateline) { - $div = [ - $('
') - .addClass('rect') - .css({ - left: '-16px', - top: (height * northEast.y) + 'px', - right: (width - width * northEast.x) + 'px', - bottom: (height - height * southWest.y) + 'px', - }) - .hide() - .appendTo(Ox.UI.$body), - $('
') - .addClass('rect') - .css({ - left: (width * southWest.x) + 'px', - top: (height * northEast.y) + 'px', - right: '-16px', - bottom: (height - height * southWest.y) + 'px', - }) - .hide() - .appendTo(Ox.UI.$body), - - ]; - } else { - $div = [ - $('
') - .addClass('rect') - .css({ - left: ($map.width() * southWest.x) + 'px', - top: ($map.height() * northEast.y) + 'px', - right: ($map.width() - $map.width() * northEast.x) + 'px', - bottom: ($map.height() - $map.height() * southWest.y) + 'px', - }) - .hide() - .appendTo(Ox.UI.$body) - ]; + function addFlag(country) { + var $div, + center = Ox.getXYByLatLng({lat: country.lat, lng: country.lng}), + crossesDateline = country.west > country.east, + height = $map.height(), + northEast = Ox.getXYByLatLng({lat: country.north, lng: country.east}), + southWest = Ox.getXYByLatLng({lat: country.south, lng: country.west}), + width = $map.width(); + if (crossesDateline) { + $div = [ + $('
') + .addClass('rect') + .css({ + left: '-16px', + top: (height * northEast.y) + 'px', + right: (width - width * northEast.x) + 'px', + bottom: (height - height * southWest.y) + 'px', + }) + .hide() + .appendTo(Ox.UI.$body), + $('
') + .addClass('rect') + .css({ + left: (width * southWest.x) + 'px', + top: (height * northEast.y) + 'px', + right: '-16px', + bottom: (height - height * southWest.y) + 'px', + }) + .hide() + .appendTo(Ox.UI.$body) + ]; + } else { + $div = [ + $('
') + .addClass('rect') + .css({ + left: ($map.width() * southWest.x) + 'px', + top: ($map.height() * northEast.y) + 'px', + right: ($map.width() - $map.width() * northEast.x) + 'px', + bottom: ($map.height() - $map.height() * southWest.y) + 'px', + }) + .hide() + .appendTo(Ox.UI.$body) + ]; + } + $('') + .attr({ + src: '../png/icons/16/' + country.code + '.png', + title: country.name + }) + .addClass('flag') + .css({ + left: (center.x * 100) + '%', + top: (center.y * 100) + '%' + }) + .mouseenter(function() { + $(this).css({ + zIndex: Ox.uid() + }); + $.each($div, function() { + $(this).show(); + }); + }) + .mouseleave(function() { + $.each($div, function() { + $(this).hide(); + }); + }) + .appendTo(Ox.UI.$body); } - $('') - .attr({ - src: '../png/icons/16/' + country.code + '.png', - title: country.name + ' ((' + country.south + ", " + country.west + "), (" + country.north + ", " + country.east + "))" - }) - .addClass('flag') - .css({ - left: (center.x * 100) + '%', - top: (center.y * 100) + '%' - }) - .mouseenter(function() { - $(this).css({ - zIndex: Ox.uid() - }); - $.each($div, function() { - $(this).show(); - }); - }) - .mouseleave(function() { - $.each($div, function() { - $(this).hide(); - }); - }) - .appendTo(Ox.UI.$body); - } - function geocode(address, country, callback) { - var bounds; - if (!Ox.isUndefined(country.north)) { - bounds = new google.maps.LatLngBounds( - new google.maps.LatLng(country.south, country.west), - new google.maps.LatLng(country.north, country.east) - ); - callback({ - bounds: bounds, - location: bounds.getCenter() - }); - } else { - geocoder.geocode({ - language: 'en', - address: address - }, function(results, status) { - if (results && results.length) { - var result = results[0]; - callback({ - bounds: result.geometry.bounds || result.geometry.viewport, - location: result.geometry.location - }) - } else { - errors.push([address, status]) - callback(null); - } - }); - } - } - - function getData(country, callback) { - if (country.lat) { - callback(country); - return; - } - var addresses = geo.geocode[country.name] || [country.name], - length = addresses.length, - union; - getImageURLs(country, function(imageURLs) { - // this might be too much data - /* - Ox.extend(country, { - imageURLs: imageURLs - }); - */ - callGeocode(); - }); - function callGeocode() { - geocode(addresses.shift(), country, function(data) { - var center, lat, lng, - northEast, southWest, - east, north, south, west; - if (data) { - union = !union ? data.bounds : union.union(data.bounds); - if (addresses.length == 0) { - if (length == 1) { - lat = data.location.lat(); - lng = data.location.lng(); - } else { - center = union.getCenter(); - lat = center.lat(); - lng = center.lng(); - } - northEast = union.getNorthEast(); - southWest = union.getSouthWest(); - east = northEast.lng(); - north = northEast.lat(); - south = southWest.lat(); - west = southWest.lng(); - callback($.extend(country, { - area: Ox.getArea( - {lat: south, lng: west}, - {lat: north, lng: east} - ), - east: toFixed(east), - lat: toFixed(lat), - lng: toFixed(lng), - north: toFixed(north), - south: toFixed(south), - west: toFixed(west) - })); + function geocode(geoname, callback) { + var bounds, location = data.location[geoname]; + if (location) { + bounds = new google.maps.LatLngBounds( + new google.maps.LatLng(location.south, location.west), + new google.maps.LatLng(location.north, location.east) + ); + callback({ + bounds: bounds, + location: bounds.getCenter() + }); + } else { + geocoder.geocode({ + language: 'en', + address: geoname + }, function(results, status) { + if (results && results.length) { + var result = results[0]; + callback({ + bounds: result.geometry.bounds || result.geometry.viewport, + location: result.geometry.location + }) + } else { + errors.push({geoname: geoname, status: status}); + Ox.print('remove this print statement', errors) + callback(null); } - } else { - callback(country); - } - }); - if (addresses.length) { - setTimeout(callGeocode, timeout); + }); } } - } - function getImageURLs(country, callback) { - var image = new Image(); - image.onload = function() { - callback({ - icon16: Ox.canvas(image).canvas.toDataURL() - }); - }; - image.src = '../png/icons/16/' + country.code + '.png'; - } + function getCountryData(country, callback) { - function toFixed(num) { - return parseFloat(num.toFixed(8)); - } + var geonames = Ox.clone(data.geocode[country.name]) || [country.name], + length = geonames.length, + union; + getNextGeoname(); + + function getNextGeoname() { + geocode(geonames.shift(), function(geodata) { + var center, lat, lng, + northEast, southWest, + east, north, south, west; + if (geodata) { + union = !union ? geodata.bounds : union.union(geodata.bounds); + } + if (geonames.length) { + setTimeout(getNextGeoname, timeout); + } else { + if (union) { + if (length == 1) { + lat = geodata.location.lat(); + lng = geodata.location.lng(); + } else { + center = union.getCenter(); + lat = center.lat(); + lng = center.lng(); + } + northEast = union.getNorthEast(); + southWest = union.getSouthWest(); + east = northEast.lng(); + north = northEast.lat(); + south = southWest.lat(); + west = southWest.lng(); + country = Ox.extend(country, { + area: Ox.getArea( + {lat: south, lng: west}, + {lat: north, lng: east} + ), + east: toFixed(east), + lat: toFixed(lat), + lng: toFixed(lng), + north: toFixed(north), + south: toFixed(south), + west: toFixed(west) + }); + } + callback(country); + } + }); + } + + } + + function toFixed(num) { + return parseFloat(num.toFixed(10)); + } + + }); }); diff --git a/tools/geo/jsonc/countries.jsonc b/tools/geo/jsonc/countries.jsonc index c85890e7..c74a020e 100644 --- a/tools/geo/jsonc/countries.jsonc +++ b/tools/geo/jsonc/countries.jsonc @@ -380,27 +380,26 @@ ], "geocode": { // construction of countries unknown to the google maps geocoder + "Abkhazia": ["Abkhazia, Georgia"], "Akrotiri and Dhekelia": ["Akrotiri, Cyprus", "Dhekelia, Cyprus"], - "Bonaire, Saint Eustatius and Saba": ["Bonaire", "Saba, Netherlands Antilles", "Saint Eustatius"], + "Bonaire, Sint Eustatius and Saba": ["Bonaire", "Saba", "Sint Eustatius"], "Byelorussian Soviet Socialist Republic": ["Belarus"], + "Canary Islands": ["Ferro, Canary Islands", "Isla Alegranza, Canary Islands"], "Canton and Enderbury Islands": ["Canton Island", "Enderbury Island"], "Ceuta and Melilla": ["Ceuta", "Melilla"], - "Curaçao": ["Banda Abou, Curaçao"], "Czechoslovakia": ["Czech Republic", "Slovakia"], - "East Germany": [ - "Mecklenburg Vorpommern", "Saxony", "Thuringia" - ], + "East Germany": ["Mecklenburg Vorpommern", "Saxony", "Thuringia"], "Dahomey": ["Benin"], - "European Union": ["Europe"], + "European Union": ["Cyprus", "Finland", "Greece", "Portugal"], "French Afar and Issas": ["Djibouti"], // see http://en.wikipedia.org/wiki/French_Southern_and_Antarctic_Lands // and http://en.wikipedia.org/wiki/Scattered_Islands_in_the_Indian_Ocean - "French Southern and Antarctic Territories": ["Adélie Land", "Bassas da India", "Glorioso Islands", "Île Kerguelen"], - "French Southern Territories": ["Bassas da India", "Glorioso Islands", "Île Kerguelen"], + "French Southern and Antarctic Territories": ["Adélie Land", "Bassas da India", "Glorioso Islands"], + "French Southern Territories": ["Amsterdam Island", "Bassas da India", "Glorioso Islands", "Kerguelen Island"], "Georgia": ["Georgia, Asia"], // see http://en.wikipedia.org/wiki/Gilbert_Islands "Gilbert and Ellice Islands": ["Arorae, Kiribati", "Butaritari, Kiribati", "Makin, Kiribati", "Tuvalu"], - "Jamaica": ["Clarendon Parish, Jamaica", "St. James Parish, Jamaica", "St. Thomas Parish, Jamaica", "Westmoreland Parish, Jamaica"], // in case results are us-biased + // "Jamaica": ["Clarendon Parish, Jamaica", "St. James Parish, Jamaica", "St. Thomas Parish, Jamaica", "Westmoreland Parish, Jamaica"], // in case results are us-biased "Jammu and Kashmir": ["Jammu and Kashmir, India"], "Johnston Island": ["Johnston Atoll"], "Korea": ["North Korea", "South Korea"], @@ -409,7 +408,7 @@ "Neutral Zone": ["39944, Saudi Arabia", "76611, Saudi Arabia"], "New Hebrides": ["Vanuatu"], "North Vietnam": ["Ha Giang Province, Vietnam", "Lai Chau Province, Vietnam", "Thua Thien-Hue Province, Vietnam"], - "North Yemen": ["Al Jawf, Yemen", "Hajjah, Yemen", "Ta'izz, Yemen"], + "North Yemen": ["Al Jawf, Yemen", "Hajjah, Yemen", "Ta'izz Province, Yemen"], "Northern Cyprus": ["Karpass, Cyprus", "Kokkina, Cyprus", "Lympia, Cyprus"], "Pacific Islands": ["Marshall Islands", "Micronesia", "Northern Mariana Islands", "Palau"], // "Palestine": ["71, Israel", "El-arish Rafah, Egypt"], @@ -419,21 +418,21 @@ "San Marino": ["San Marino, Europe"], // in case results are us-biased "Serbia and Montenegro": ["Montenegro", "Serbia"], "Siam": ["Thailand"], - "Sint Maarten": ["Sint Maarten, Netherlands Antilles"], + "Sint Maarten": ["Great Bay, Sint Maarten", "Oyster Pond, Sint Maarten", "Simpson Bay Lagoon, Sint Maarten"], "South Ossetia": ["Shida Kartli"], // see http://en.wikipedia.org/wiki/Sudan#States_and_regions // "South Sudan": [ // "Central Equatoria, Sudan", "Eastern Equatoria, Sudan", "Jonglei, Sudan", "Lakes, Sudan", "Northern Bahr el Ghazal, Sudan", // "Upper Nile, Sudan", "Unity, Sudan", "Warrap, Sudan", "Western Bahr el Ghazal, Sudan", "Western Equatoria, Sudan" // ], - "South Vietnam": ["Ca Mau Province, Vietnam", "Da Nang Province, Vietnam", "Kiên Giang Province, Vietnam"], + "South Vietnam": ["Ca Mau Province, Vietnam", "Da Nang Province, Vietnam", "Khanh Hoa Province, Vietnam", "Kien Giang Province, Vietnam"], "South Yemen": ["Al-Mahrah, Yemen", "Lahij, Yemen"], "Soviet Union": [ "Armenia", "Azerbaijan", "Belarus", "Estonia", "Georgia, Europe", "Latvia", "Lithuania", "Kazakhstan", "Kyrgyzstan", "Moldova", "Russia", "Tajikistan", "Turkmenistan", "Ukraine", "Uzbekistan" ], - "United Kingdom": ["England", "Northern Ireland", "Scotland", "Wales, United Kingdom"], + "United Kingdom": ["England", "Northern Ireland", "Scotland"], "United States Minor Outlying Islands": [ "Baker Island, UM", "Howland Island", "Jarvis Island", "Johnston Atoll", "Kingman Reef", "Midway Islands", "Palmyra Atoll", "Wake Island" @@ -442,9 +441,7 @@ "United States Miscellaneous Pacific Islands": [ "Baker Island, UM", "Howland Island", "Jarvis Island", "Kingman Reef", "Palmyra Atoll" ], - "UK": ["England", "Northern Ireland", "Scotland", "Wales, United Kingdom"], "Upper Volta": ["Burkina Faso"], - "Wake Island": ["Wake Atoll"], "Wales": ["Wales, United Kingdom"], "West Germany": ["Schleswig Holstein", "Northrhine Westphalia", "Bavaria, Germany"], "Yugoslavia": [ diff --git a/tools/geo/py/geo.py b/tools/geo/py/geo.py index fe736aab..e0dfb3cc 100644 --- a/tools/geo/py/geo.py +++ b/tools/geo/py/geo.py @@ -53,17 +53,14 @@ def get_countries(): html = read_wikipedia_url('ISO 3166-3') matches = re.compile('.*?', re.DOTALL).findall(html) countries += map(lambda x: parse(x), matches) - print sorted(map(lambda x: x['name'], countries)) # ISO 3166-1 alpha-2 html = fix(read_wikipedia_url('ISO 3166-1 alpha-2')) matches = re.compile('([A-Z]{2})\n