natural_earth 4.1.0 → 4.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (504) hide show
  1. checksums.yaml +4 -4
  2. data/.gitlab-ci.yml +1 -2
  3. data/.rubocop.yml +5 -13
  4. data/CHANGELOG.md +15 -1
  5. data/Gemfile +18 -0
  6. data/Gemfile.lock +47 -35
  7. data/lib/natural_earth/countries.rb +4 -0
  8. data/lib/natural_earth/country.rb +1 -0
  9. data/lib/natural_earth/geometries.rb +1 -1
  10. data/lib/natural_earth/iso3166.rb +3 -3
  11. data/lib/natural_earth/subdivision.rb +1 -0
  12. data/lib/natural_earth/subdivisions.rb +4 -0
  13. data/lib/natural_earth/tasks/import.rake +51 -10
  14. data/lib/natural_earth/version.rb +1 -1
  15. data/lib/natural_earth.rb +1 -1
  16. data/natural_earth.gemspec +1 -12
  17. data/resources/countries.json +1 -1
  18. data/resources/geometries/AE/AE-AZ.json +1 -1
  19. data/resources/geometries/AE/AE-DU.json +1 -1
  20. data/resources/geometries/AE/AE-FU.json +1 -1
  21. data/resources/geometries/AE/AE-RK.json +1 -1
  22. data/resources/geometries/AE/AE-SH.json +1 -1
  23. data/resources/geometries/AF/AF-KNR.json +1 -1
  24. data/resources/geometries/AF/AF-NIM.json +1 -1
  25. data/resources/geometries/AL/AL-07.json +1 -1
  26. data/resources/geometries/AR/AR-W.json +1 -1
  27. data/resources/geometries/AR/AR-Z.json +1 -1
  28. data/resources/geometries/AT/AT-1.json +1 -1
  29. data/resources/geometries/AZ/AZ-AGC.json +1 -1
  30. data/resources/geometries/AZ/AZ-AGM.json +1 -1
  31. data/resources/geometries/AZ/AZ-FUZ.json +1 -1
  32. data/resources/geometries/AZ/AZ-GOR.json +1 -1
  33. data/resources/geometries/AZ/AZ-KAL.json +1 -1
  34. data/resources/geometries/AZ/AZ-SUS.json +1 -1
  35. data/resources/geometries/AZ/AZ-TAR.json +1 -1
  36. data/resources/geometries/AZ/AZ-XVD.json +1 -1
  37. data/resources/geometries/AZ/AZ-YAR.json +1 -1
  38. data/resources/geometries/BD/BD-F.json +1 -1
  39. data/resources/geometries/BG/BG-08.json +1 -1
  40. data/resources/geometries/BH/BH-13.json +1 -1
  41. data/resources/geometries/BN/BN-TE.json +1 -1
  42. data/resources/geometries/BO/BO-H.json +1 -1
  43. data/resources/geometries/BO/BO-T.json +1 -1
  44. data/resources/geometries/BR/BR-AL.json +1 -1
  45. data/resources/geometries/BR/BR-PE.json +1 -1
  46. data/resources/geometries/BR/BR-RS.json +1 -1
  47. data/resources/geometries/BT/BT-11.json +1 -1
  48. data/resources/geometries/BT/BT-12.json +1 -1
  49. data/resources/geometries/BT/BT-13.json +1 -1
  50. data/resources/geometries/BT/BT-24.json +1 -1
  51. data/resources/geometries/BT/BT-31.json +1 -1
  52. data/resources/geometries/BT/BT-33.json +1 -1
  53. data/resources/geometries/BT/BT-41.json +1 -1
  54. data/resources/geometries/BT/BT-44.json +1 -1
  55. data/resources/geometries/BT/BT-GA.json +1 -1
  56. data/resources/geometries/BT/BT-TY.json +1 -1
  57. data/resources/geometries/BZ/BZ-BZ.json +1 -1
  58. data/resources/geometries/BZ/BZ-CY.json +1 -1
  59. data/resources/geometries/CA/CA-NB.json +1 -1
  60. data/resources/geometries/CA/CA-NT.json +1 -1
  61. data/resources/geometries/CA/CA-NU.json +1 -1
  62. data/resources/geometries/CA/CA-ON.json +1 -1
  63. data/resources/geometries/CA/CA-QC.json +1 -1
  64. data/resources/geometries/CA/CA-SK.json +1 -1
  65. data/resources/geometries/CD/CD-BC.json +1 -1
  66. data/resources/geometries/CD/CD-NK.json +1 -1
  67. data/resources/geometries/CG/CG-11.json +1 -1
  68. data/resources/geometries/CG/CG-12.json +1 -1
  69. data/resources/geometries/CI/CI-01.json +1 -1
  70. data/resources/geometries/CI/CI-13.json +1 -1
  71. data/resources/geometries/CL/CL-BI.json +1 -1
  72. data/resources/geometries/CL/CL-MA.json +1 -1
  73. data/resources/geometries/CL/CL-ML.json +1 -1
  74. data/resources/geometries/CL/CL-NB.json +1 -0
  75. data/resources/geometries/CN/CN-GD.json +1 -0
  76. data/resources/geometries/CN/{CN-65.json → CN-XJ.json} +1 -1
  77. data/resources/geometries/CN/CN-XZ.json +1 -0
  78. data/resources/geometries/CN/CN-YN.json +1 -0
  79. data/resources/geometries/CO/CO-ANT.json +1 -1
  80. data/resources/geometries/CO/CO-COR.json +1 -1
  81. data/resources/geometries/CR/CR-L.json +1 -1
  82. data/resources/geometries/CY/CY-01.json +1 -1
  83. data/resources/geometries/CY/CY-03.json +1 -1
  84. data/resources/geometries/CY/CY-04.json +1 -1
  85. data/resources/geometries/CZ/CZ-KR.json +1 -1
  86. data/resources/geometries/CZ/CZ-LI.json +1 -1
  87. data/resources/geometries/CZ/CZ-PL.json +1 -1
  88. data/resources/geometries/DE/DE-BY.json +1 -1
  89. data/resources/geometries/DO/DO-16.json +1 -1
  90. data/resources/geometries/DZ/DZ-13.json +1 -1
  91. data/resources/geometries/EC/EC-E.json +1 -1
  92. data/resources/geometries/EC/EC-G.json +1 -1
  93. data/resources/geometries/EC/EC-M.json +1 -1
  94. data/resources/geometries/EC/EC-O.json +1 -1
  95. data/resources/geometries/EC/EC-SE.json +1 -1
  96. data/resources/geometries/EG/EG-ASN.json +1 -1
  97. data/resources/geometries/EG/EG-BA.json +1 -1
  98. data/resources/geometries/EG/EG-DK.json +1 -1
  99. data/resources/geometries/EG/EG-MT.json +1 -1
  100. data/resources/geometries/EG/EG-PTS.json +1 -1
  101. data/resources/geometries/EG/EG-SIN.json +1 -1
  102. data/resources/geometries/EG/EG-WAD.json +1 -1
  103. data/resources/geometries/ES/ES-BA.json +1 -1
  104. data/resources/geometries/ES/ES-CC.json +1 -1
  105. data/resources/geometries/ES/ES-H.json +1 -1
  106. data/resources/geometries/ES/ES-SA.json +1 -1
  107. data/resources/geometries/ES/ES-ZA.json +1 -1
  108. data/resources/geometries/FI/FI-02.json +1 -1
  109. data/resources/geometries/FI/FI-10.json +1 -1
  110. data/resources/geometries/FR/FR-06.json +1 -1
  111. data/resources/geometries/GA/GA-1.json +1 -1
  112. data/resources/geometries/GA/GA-8.json +1 -1
  113. data/resources/geometries/GB/GB-CHW.json +1 -1
  114. data/resources/geometries/GB/GB-EDH.json +1 -1
  115. data/resources/geometries/GB/GB-ERY.json +1 -1
  116. data/resources/geometries/GB/GB-FIF.json +1 -1
  117. data/resources/geometries/GB/GB-FLN.json +1 -1
  118. data/resources/geometries/GB/GB-HLD.json +1 -1
  119. data/resources/geometries/GB/GB-KEN.json +1 -1
  120. data/resources/geometries/GB/GB-LIN.json +1 -1
  121. data/resources/geometries/GB/GB-MDW.json +1 -1
  122. data/resources/geometries/GB/GB-MLN.json +1 -1
  123. data/resources/geometries/GB/GB-MRY.json +1 -1
  124. data/resources/geometries/GB/GB-NEL.json +1 -1
  125. data/resources/geometries/GB/GB-NLN.json +1 -1
  126. data/resources/geometries/GB/GB-NYK.json +1 -1
  127. data/resources/geometries/GB/GB-PKN.json +1 -1
  128. data/resources/geometries/GE/GE-IM.json +1 -1
  129. data/resources/geometries/GE/GE-MM.json +1 -1
  130. data/resources/geometries/GE/GE-RL.json +1 -1
  131. data/resources/geometries/GE/GE-SK.json +1 -1
  132. data/resources/geometries/GF/GF.json +1 -1
  133. data/resources/geometries/GH/GH-AA.json +1 -1
  134. data/resources/geometries/GH/GH-TV.json +1 -1
  135. data/resources/geometries/GP/GP.json +1 -1
  136. data/resources/geometries/GR/GR-B.json +1 -1
  137. data/resources/geometries/GT/GT-IZ.json +1 -1
  138. data/resources/geometries/GT/GT-RE.json +1 -1
  139. data/resources/geometries/GT/GT-SM.json +1 -1
  140. data/resources/geometries/GY/GY-PT.json +1 -1
  141. data/resources/geometries/GY/GY-UD.json +1 -1
  142. data/resources/geometries/GY/GY-UT.json +1 -1
  143. data/resources/geometries/HN/HN-SB.json +1 -1
  144. data/resources/geometries/HR/HR-01.json +1 -1
  145. data/resources/geometries/HR/HR-04.json +1 -1
  146. data/resources/geometries/HR/HR-05.json +1 -1
  147. data/resources/geometries/HR/HR-08.json +1 -1
  148. data/resources/geometries/HR/HR-14.json +1 -1
  149. data/resources/geometries/HR/HR-16.json +1 -1
  150. data/resources/geometries/HR/HR-18.json +1 -1
  151. data/resources/geometries/HT/HT-SE.json +1 -1
  152. data/resources/geometries/HU/HU-VA.json +1 -1
  153. data/resources/geometries/ID/ID-AC.json +1 -1
  154. data/resources/geometries/ID/ID-BE.json +1 -1
  155. data/resources/geometries/ID/ID-KI.json +1 -1
  156. data/resources/geometries/ID/ID-KS.json +1 -1
  157. data/resources/geometries/ID/ID-SB.json +1 -1
  158. data/resources/geometries/ID/ID-SU.json +1 -1
  159. data/resources/geometries/IL/IL-D.json +1 -1
  160. data/resources/geometries/IL/IL-JM.json +1 -1
  161. data/resources/geometries/IL/IL-M.json +1 -1
  162. data/resources/geometries/IL/IL-TA.json +1 -1
  163. data/resources/geometries/IL/IL-Z.json +1 -1
  164. data/resources/geometries/IL/IL.json +1 -1
  165. data/resources/geometries/IN/IN-AP.json +1 -1
  166. data/resources/geometries/IN/IN-AR.json +1 -1
  167. data/resources/geometries/IN/IN-AS.json +1 -1
  168. data/resources/geometries/IN/IN-BR.json +1 -1
  169. data/resources/geometries/IN/IN-DH.json +1 -0
  170. data/resources/geometries/IN/IN-GJ.json +1 -1
  171. data/resources/geometries/IN/IN-HP.json +1 -1
  172. data/resources/geometries/IN/IN-JK.json +1 -1
  173. data/resources/geometries/IN/IN-LA.json +1 -0
  174. data/resources/geometries/IN/IN-LD.json +1 -1
  175. data/resources/geometries/IN/IN-MH.json +1 -1
  176. data/resources/geometries/IN/IN-TG.json +1 -0
  177. data/resources/geometries/IN/IN-UP.json +1 -1
  178. data/resources/geometries/IN/IN-UT.json +1 -1
  179. data/resources/geometries/IN/IN-WB.json +1 -1
  180. data/resources/geometries/IQ/IQ-BA.json +1 -1
  181. data/resources/geometries/IQ/IQ-SU.json +1 -1
  182. data/resources/geometries/IR/IR-02.json +1 -1
  183. data/resources/geometries/IR/IR-03.json +1 -1
  184. data/resources/geometries/IR/IR-13.json +1 -1
  185. data/resources/geometries/IR/IR-23.json +1 -1
  186. data/resources/geometries/IT/IT-FC.json +1 -1
  187. data/resources/geometries/IT/IT-RA.json +1 -1
  188. data/resources/geometries/JO/JO-IR.json +1 -1
  189. data/resources/geometries/KE/KE-300.json +1 -1
  190. data/resources/geometries/KE/KE-700.json +1 -1
  191. data/resources/geometries/KG/KG-B.json +1 -1
  192. data/resources/geometries/KG/KG-J.json +1 -1
  193. data/resources/geometries/KH/KH-18.json +1 -1
  194. data/resources/geometries/KR/KR-41.json +1 -1
  195. data/resources/geometries/KR/KR-42.json +1 -1
  196. data/resources/geometries/KW/KW-JA.json +1 -1
  197. data/resources/geometries/KZ/KZ-MAN.json +1 -1
  198. data/resources/geometries/LA/LA-XE.json +1 -1
  199. data/resources/geometries/LA/LA-XI.json +1 -1
  200. data/resources/geometries/LB/LB-JA.json +1 -1
  201. data/resources/geometries/LB/LB-NA.json +1 -1
  202. data/resources/geometries/LK/LK-12.json +1 -1
  203. data/resources/geometries/LK/LK-31.json +1 -1
  204. data/resources/geometries/LK/LK-32.json +1 -1
  205. data/resources/geometries/LK/LK-41.json +1 -1
  206. data/resources/geometries/LK/LK-42.json +1 -1
  207. data/resources/geometries/LK/LK-45.json +1 -1
  208. data/resources/geometries/LK/LK-51.json +1 -1
  209. data/resources/geometries/LK/LK-52.json +1 -1
  210. data/resources/geometries/LK/LK-53.json +1 -1
  211. data/resources/geometries/LR/LR-BM.json +1 -1
  212. data/resources/geometries/LR/LR-CM.json +1 -1
  213. data/resources/geometries/LR/LR-GB.json +1 -1
  214. data/resources/geometries/LR/LR-RI.json +1 -1
  215. data/resources/geometries/LY/LY-BU.json +1 -1
  216. data/resources/geometries/LY/LY-NQ.json +1 -1
  217. data/resources/geometries/LY/LY-ZA.json +1 -1
  218. data/resources/geometries/MA/MA-04.json +1 -1
  219. data/resources/geometries/MA/MA-14.json +1 -1
  220. data/resources/geometries/MA/MA-15.json +1 -1
  221. data/resources/geometries/MD/MD-CA.json +1 -1
  222. data/resources/geometries/ME/ME-13.json +1 -1
  223. data/resources/geometries/MK/MK-55.json +1 -1
  224. data/resources/geometries/ML/ML-6.json +1 -1
  225. data/resources/geometries/MM/MM-05.json +1 -1
  226. data/resources/geometries/MM/MM-17.json +1 -1
  227. data/resources/geometries/MQ/MQ.json +1 -1
  228. data/resources/geometries/MR/MR-01.json +1 -1
  229. data/resources/geometries/MR/MR-11.json +1 -1
  230. data/resources/geometries/MV/MV-00.json +1 -1
  231. data/resources/geometries/MV/MV-02.json +1 -1
  232. data/resources/geometries/MV/MV-05.json +1 -1
  233. data/resources/geometries/MV/MV-07.json +1 -1
  234. data/resources/geometries/MV/MV-08.json +1 -1
  235. data/resources/geometries/MV/MV-13.json +1 -1
  236. data/resources/geometries/MV/MV-23.json +1 -1
  237. data/resources/geometries/MV/MV-26.json +1 -1
  238. data/resources/geometries/MV/MV-28.json +1 -1
  239. data/resources/geometries/MY/MY-01.json +1 -1
  240. data/resources/geometries/MY/MY-02.json +1 -1
  241. data/resources/geometries/MY/MY-04.json +1 -1
  242. data/resources/geometries/MY/MY-09.json +1 -1
  243. data/resources/geometries/MY/MY-12.json +1 -1
  244. data/resources/geometries/MY/MY-13.json +1 -1
  245. data/resources/geometries/NG/NG-DE.json +1 -1
  246. data/resources/geometries/NG/NG-ON.json +1 -1
  247. data/resources/geometries/NI/NI-SJ.json +1 -1
  248. data/resources/geometries/NP/NP-BH.json +1 -1
  249. data/resources/geometries/NP/NP-KO.json +1 -1
  250. data/resources/geometries/NP/NP-LU.json +1 -1
  251. data/resources/geometries/NP/NP-MA.json +1 -1
  252. data/resources/geometries/NP/NP-ME.json +1 -1
  253. data/resources/geometries/NP/NP-NA.json +1 -1
  254. data/resources/geometries/NP/NP-RA.json +1 -1
  255. data/resources/geometries/NZ/NZ-AUK.json +1 -1
  256. data/resources/geometries/NZ/NZ-BOP.json +1 -1
  257. data/resources/geometries/NZ/NZ-GIS.json +1 -1
  258. data/resources/geometries/NZ/NZ-HKB.json +1 -1
  259. data/resources/geometries/NZ/NZ-MWT.json +1 -1
  260. data/resources/geometries/NZ/NZ-TKI.json +1 -1
  261. data/resources/geometries/NZ/NZ-WGN.json +1 -1
  262. data/resources/geometries/NZ/NZ-WKO.json +1 -1
  263. data/resources/geometries/OM/OM-SH.json +1 -1
  264. data/resources/geometries/PH/PH-ALB.json +1 -1
  265. data/resources/geometries/PH/PH-ILS.json +1 -1
  266. data/resources/geometries/PH/PH-LAN.json +1 -1
  267. data/resources/geometries/PH/PH-LUN.json +1 -1
  268. data/resources/geometries/PH/PH-NSA.json +1 -1
  269. data/resources/geometries/PH/PH-SOR.json +1 -1
  270. data/resources/geometries/PH/PH-WSA.json +1 -1
  271. data/resources/geometries/PH/PH-ZAS.json +1 -1
  272. data/resources/geometries/PK/PK-GB.json +1 -1
  273. data/resources/geometries/PK/PK-JK.json +1 -1
  274. data/resources/geometries/PK/PK-KP.json +1 -1
  275. data/resources/geometries/PK/PK-PB.json +1 -1
  276. data/resources/geometries/PK/PK-SD.json +1 -1
  277. data/resources/geometries/PL/PL-DS.json +1 -1
  278. data/resources/geometries/PS/PS-GZZ.json +1 -1
  279. data/resources/geometries/PS/PS-WBK.json +1 -1
  280. data/resources/geometries/PT/PT-02.json +1 -1
  281. data/resources/geometries/PT/PT-04.json +1 -1
  282. data/resources/geometries/PT/PT-06.json +1 -1
  283. data/resources/geometries/PT/PT-10.json +1 -1
  284. data/resources/geometries/PT/PT-12.json +1 -1
  285. data/resources/geometries/PT/PT-17.json +1 -1
  286. data/resources/geometries/PY/PY-10.json +1 -1
  287. data/resources/geometries/PY/PY-5.json +1 -1
  288. data/resources/geometries/RE/RE.json +1 -1
  289. data/resources/geometries/RO/RO-CT.json +1 -1
  290. data/resources/geometries/RS/RS-06.json +1 -1
  291. data/resources/geometries/RS/RS-18.json +1 -1
  292. data/resources/geometries/RS/RS-19.json +1 -1
  293. data/resources/geometries/RU/RU-LEN.json +1 -1
  294. data/resources/geometries/RU/RU-MUR.json +1 -1
  295. data/resources/geometries/SA/SA-04.json +1 -1
  296. data/resources/geometries/SA/SA-09.json +1 -1
  297. data/resources/geometries/SD/SD-NO.json +1 -1
  298. data/resources/geometries/SD/SD-NR.json +1 -1
  299. data/resources/geometries/SD/SD-RS.json +1 -1
  300. data/resources/geometries/SE/SE-D.json +1 -1
  301. data/resources/geometries/SE/SE-E.json +1 -1
  302. data/resources/geometries/SI/SI-035.json +1 -1
  303. data/resources/geometries/SI/SI-050.json +1 -1
  304. data/resources/geometries/SI/SI-059.json +1 -1
  305. data/resources/geometries/SI/SI-090.json +1 -1
  306. data/resources/geometries/SI/SI-165.json +1 -1
  307. data/resources/geometries/SN/SN-DK.json +1 -1
  308. data/resources/geometries/SN/SN-TH.json +1 -1
  309. data/resources/geometries/SS/SS-EE.json +1 -1
  310. data/resources/geometries/SV/SV-LI.json +1 -1
  311. data/resources/geometries/SV/SV-PA.json +1 -1
  312. data/resources/geometries/SV/SV-SV.json +1 -1
  313. data/resources/geometries/SY/SY-DR.json +1 -1
  314. data/resources/geometries/SY/SY-ID.json +1 -1
  315. data/resources/geometries/SY/SY.json +1 -1
  316. data/resources/geometries/TH/TH-85.json +1 -1
  317. data/resources/geometries/TH/TH-91.json +1 -1
  318. data/resources/geometries/TJ/TJ-GB.json +1 -1
  319. data/resources/geometries/TJ/{TJ-X01~.json → TJ-RA.json} +1 -1
  320. data/resources/geometries/TJ/TJ-SU.json +1 -1
  321. data/resources/geometries/TR/TR-04.json +1 -1
  322. data/resources/geometries/TR/TR-31.json +1 -1
  323. data/resources/geometries/TR/TR-65.json +1 -1
  324. data/resources/geometries/TZ/TZ-07.json +1 -1
  325. data/resources/geometries/TZ/TZ-11.json +1 -1
  326. data/resources/geometries/TZ/TZ-25.json +1 -1
  327. data/resources/geometries/UA/UA-09.json +1 -1
  328. data/resources/geometries/UA/UA-14.json +1 -1
  329. data/resources/geometries/UA/UA-51.json +1 -1
  330. data/resources/geometries/UG/UG-406.json +1 -1
  331. data/resources/geometries/UG/UG-424.json +1 -1
  332. data/resources/geometries/US/US-AK.json +1 -1
  333. data/resources/geometries/US/US-AL.json +1 -1
  334. data/resources/geometries/US/US-CT.json +1 -1
  335. data/resources/geometries/US/US-DC.json +1 -1
  336. data/resources/geometries/US/US-DE.json +1 -1
  337. data/resources/geometries/US/US-FL.json +1 -1
  338. data/resources/geometries/US/US-HI.json +1 -1
  339. data/resources/geometries/US/US-ID.json +1 -1
  340. data/resources/geometries/US/US-MD.json +1 -1
  341. data/resources/geometries/US/US-ME.json +1 -1
  342. data/resources/geometries/US/US-MI.json +1 -1
  343. data/resources/geometries/US/US-MN.json +1 -1
  344. data/resources/geometries/US/US-MS.json +1 -1
  345. data/resources/geometries/US/US-MT.json +1 -1
  346. data/resources/geometries/US/US-NH.json +1 -1
  347. data/resources/geometries/US/US-NJ.json +1 -1
  348. data/resources/geometries/US/US-NY.json +1 -1
  349. data/resources/geometries/US/US-RI.json +1 -1
  350. data/resources/geometries/US/US-VA.json +1 -1
  351. data/resources/geometries/US/US-WA.json +1 -1
  352. data/resources/geometries/US/US-WI.json +1 -1
  353. data/resources/geometries/UY/UY-AR.json +1 -1
  354. data/resources/geometries/UY/UY-RV.json +1 -1
  355. data/resources/geometries/UY/UY-SA.json +1 -1
  356. data/resources/geometries/UZ/UZ-NG.json +1 -1
  357. data/resources/geometries/UZ/UZ-QR.json +1 -1
  358. data/resources/geometries/UZ/UZ-SU.json +1 -1
  359. data/resources/geometries/VN/VN-22.json +1 -1
  360. data/resources/geometries/VN/VN-27.json +1 -1
  361. data/resources/geometries/VN/VN-49.json +1 -1
  362. data/resources/geometries/VN/VN-51.json +1 -1
  363. data/resources/geometries/YE/YE-HU.json +1 -1
  364. data/resources/geometries/YT/YT.json +1 -1
  365. data/resources/geometries/ZA/ZA-EC.json +1 -1
  366. data/resources/geometries/ZA/ZA-GT.json +1 -1
  367. data/resources/geometries/ZA/ZA-LP.json +1 -1
  368. data/resources/geometries/ZA/ZA-MP.json +1 -1
  369. data/resources/geometries/ZA/ZA-NC.json +1 -1
  370. data/resources/geometries/ZA/ZA-NL.json +1 -1
  371. data/resources/geometries/ZA/ZA-NW.json +1 -1
  372. data/resources/subdivisions.json +1 -1
  373. metadata +50 -248
  374. data/resources/geometries/AE/AE-X01~.json +0 -1
  375. data/resources/geometries/AE/AE-X02~.json +0 -1
  376. data/resources/geometries/AU/AU-X02~.json +0 -1
  377. data/resources/geometries/AU/AU-X03~.json +0 -1
  378. data/resources/geometries/AU/AU-X04~.json +0 -1
  379. data/resources/geometries/AZ/AZ-X01~.json +0 -1
  380. data/resources/geometries/BA/BA-X01~.json +0 -1
  381. data/resources/geometries/BA/BA-X02~.json +0 -1
  382. data/resources/geometries/BA/BA-X03~.json +0 -1
  383. data/resources/geometries/BA/BA-X04~.json +0 -1
  384. data/resources/geometries/BA/BA-X05~.json +0 -1
  385. data/resources/geometries/BA/BA-X06~.json +0 -1
  386. data/resources/geometries/BA/BA-X07~.json +0 -1
  387. data/resources/geometries/CN/CN-44.json +0 -1
  388. data/resources/geometries/CN/CN-53.json +0 -1
  389. data/resources/geometries/CN/CN-54.json +0 -1
  390. data/resources/geometries/CN/CN-X01~.json +0 -1
  391. data/resources/geometries/FR/FR-GF.json +0 -1
  392. data/resources/geometries/FR/FR-GP.json +0 -1
  393. data/resources/geometries/FR/FR-MQ.json +0 -1
  394. data/resources/geometries/FR/FR-RE.json +0 -1
  395. data/resources/geometries/FR/FR-YT.json +0 -1
  396. data/resources/geometries/IN/IN-DD.json +0 -1
  397. data/resources/geometries/IN/IN-DN.json +0 -1
  398. data/resources/geometries/KI/KI-X01~.json +0 -1
  399. data/resources/geometries/KI/KI-X02~.json +0 -1
  400. data/resources/geometries/LR/LR-X1~.json +0 -1
  401. data/resources/geometries/LR/LR-X2~.json +0 -1
  402. data/resources/geometries/MC/MC-X01~.json +0 -1
  403. data/resources/geometries/MX/MX-X01~.json +0 -1
  404. data/resources/geometries/NZ/NZ-X01~.json +0 -1
  405. data/resources/geometries/NZ/NZ-X03~.json +0 -1
  406. data/resources/geometries/NZ/NZ-X04~.json +0 -1
  407. data/resources/geometries/NZ/NZ-X05~.json +0 -1
  408. data/resources/geometries/NZ/NZ-X06~.json +0 -1
  409. data/resources/geometries/NZ/NZ-X07~.json +0 -1
  410. data/resources/geometries/RU/RU-X01~.json +0 -1
  411. data/resources/geometries/SC/SC-X02~.json +0 -1
  412. data/resources/geometries/SY/SY-X01~.json +0 -1
  413. data/resources/geometries/TD/TD-X01~.json +0 -1
  414. data/resources/geometries/TK/TK-X01~.json +0 -1
  415. data/resources/geometries/TW/TW-CHA.json +0 -1
  416. data/resources/geometries/TW/TW-CYI.json +0 -1
  417. data/resources/geometries/TW/TW-CYQ.json +0 -1
  418. data/resources/geometries/TW/TW-HSQ.json +0 -1
  419. data/resources/geometries/TW/TW-HSZ.json +0 -1
  420. data/resources/geometries/TW/TW-HUA.json +0 -1
  421. data/resources/geometries/TW/TW-ILA.json +0 -1
  422. data/resources/geometries/TW/TW-KEE.json +0 -1
  423. data/resources/geometries/TW/TW-KHH.json +0 -1
  424. data/resources/geometries/TW/TW-KIN.json +0 -1
  425. data/resources/geometries/TW/TW-MIA.json +0 -1
  426. data/resources/geometries/TW/TW-NAN.json +0 -1
  427. data/resources/geometries/TW/TW-PEN.json +0 -1
  428. data/resources/geometries/TW/TW-PIF.json +0 -1
  429. data/resources/geometries/TW/TW-TAO.json +0 -1
  430. data/resources/geometries/TW/TW-TNN.json +0 -1
  431. data/resources/geometries/TW/TW-TPE.json +0 -1
  432. data/resources/geometries/TW/TW-TPQ.json +0 -1
  433. data/resources/geometries/TW/TW-TTT.json +0 -1
  434. data/resources/geometries/TW/TW-TXG.json +0 -1
  435. data/resources/geometries/TW/TW-YUN.json +0 -1
  436. data/resources/geometries/VE/VE-X01~.json +0 -1
  437. data/resources/geometries/XK/XK-X01~.json +0 -1
  438. data/resources/geometries/XK/XK-X02~.json +0 -1
  439. data/resources/geometries/XK/XK-X03~.json +0 -1
  440. data/resources/geometries/XK/XK-X04~.json +0 -1
  441. data/resources/geometries/XK/XK-X05~.json +0 -1
  442. data/resources/geometries/XK/XK-X06~.json +0 -1
  443. data/resources/geometries/XK/XK-X07~.json +0 -1
  444. data/resources/geometries/XK/XK-X08~.json +0 -1
  445. data/resources/geometries/XK/XK-X09~.json +0 -1
  446. data/resources/geometries/XK/XK-X10~.json +0 -1
  447. data/resources/geometries/XK/XK-X11~.json +0 -1
  448. data/resources/geometries/XK/XK-X12~.json +0 -1
  449. data/resources/geometries/XK/XK-X13~.json +0 -1
  450. data/resources/geometries/XK/XK-X14~.json +0 -1
  451. data/resources/geometries/XK/XK-X15~.json +0 -1
  452. data/resources/geometries/XK/XK-X16~.json +0 -1
  453. data/resources/geometries/XK/XK-X17~.json +0 -1
  454. data/resources/geometries/XK/XK-X18~.json +0 -1
  455. data/resources/geometries/XK/XK-X19~.json +0 -1
  456. data/resources/geometries/XK/XK-X20~.json +0 -1
  457. data/resources/geometries/XK/XK-X21~.json +0 -1
  458. data/resources/geometries/XK/XK-X22~.json +0 -1
  459. data/resources/geometries/XK/XK-X23~.json +0 -1
  460. data/resources/geometries/XK/XK-X24~.json +0 -1
  461. data/resources/geometries/XK/XK-X25~.json +0 -1
  462. data/resources/geometries/XK/XK-X26~.json +0 -1
  463. data/resources/geometries/XK/XK-X27~.json +0 -1
  464. data/resources/geometries/XK/XK-X28~.json +0 -1
  465. data/resources/geometries/XK/XK-X29~.json +0 -1
  466. data/resources/geometries/XK/XK-X30~.json +0 -1
  467. data/resources/geometries/XK/XK.json +0 -1
  468. /data/resources/geometries/AL/{AL-BR.json → AL-01.json} +0 -0
  469. /data/resources/geometries/AL/{AL-EL.json → AL-03.json} +0 -0
  470. /data/resources/geometries/AL/{AL-GJ.json → AL-05.json} +0 -0
  471. /data/resources/geometries/AL/{AL-LE.json → AL-08.json} +0 -0
  472. /data/resources/geometries/AL/{AL-DI.json → AL-09.json} +0 -0
  473. /data/resources/geometries/AL/{AL-DR.json → AL-11.json} +0 -0
  474. /data/resources/geometries/AL/{AL-VL.json → AL-12.json} +0 -0
  475. /data/resources/geometries/BS/{BS-X01~.json → BS-GC.json} +0 -0
  476. /data/resources/geometries/CN/{CN-34.json → CN-AH.json} +0 -0
  477. /data/resources/geometries/CN/{CN-11.json → CN-BJ.json} +0 -0
  478. /data/resources/geometries/CN/{CN-50.json → CN-CQ.json} +0 -0
  479. /data/resources/geometries/CN/{CN-35.json → CN-FJ.json} +0 -0
  480. /data/resources/geometries/CN/{CN-62.json → CN-GS.json} +0 -0
  481. /data/resources/geometries/CN/{CN-45.json → CN-GX.json} +0 -0
  482. /data/resources/geometries/CN/{CN-52.json → CN-GZ.json} +0 -0
  483. /data/resources/geometries/CN/{CN-41.json → CN-HA.json} +0 -0
  484. /data/resources/geometries/CN/{CN-42.json → CN-HB.json} +0 -0
  485. /data/resources/geometries/CN/{CN-13.json → CN-HE.json} +0 -0
  486. /data/resources/geometries/CN/{CN-46.json → CN-HI.json} +0 -0
  487. /data/resources/geometries/CN/{CN-23.json → CN-HL.json} +0 -0
  488. /data/resources/geometries/CN/{CN-43.json → CN-HN.json} +0 -0
  489. /data/resources/geometries/CN/{CN-22.json → CN-JL.json} +0 -0
  490. /data/resources/geometries/CN/{CN-32.json → CN-JS.json} +0 -0
  491. /data/resources/geometries/CN/{CN-36.json → CN-JX.json} +0 -0
  492. /data/resources/geometries/CN/{CN-21.json → CN-LN.json} +0 -0
  493. /data/resources/geometries/CN/{CN-15.json → CN-NM.json} +0 -0
  494. /data/resources/geometries/CN/{CN-64.json → CN-NX.json} +0 -0
  495. /data/resources/geometries/CN/{CN-63.json → CN-QH.json} +0 -0
  496. /data/resources/geometries/CN/{CN-51.json → CN-SC.json} +0 -0
  497. /data/resources/geometries/CN/{CN-37.json → CN-SD.json} +0 -0
  498. /data/resources/geometries/CN/{CN-31.json → CN-SH.json} +0 -0
  499. /data/resources/geometries/CN/{CN-61.json → CN-SN.json} +0 -0
  500. /data/resources/geometries/CN/{CN-14.json → CN-SX.json} +0 -0
  501. /data/resources/geometries/CN/{CN-12.json → CN-TJ.json} +0 -0
  502. /data/resources/geometries/CN/{CN-33.json → CN-ZJ.json} +0 -0
  503. /data/resources/geometries/{TW/TW.json → CN-TW/CN-TW.json} +0 -0
  504. /data/resources/geometries/CO/{CO-X01~.json → CO-DC.json} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b949dd9dd03defe0756b024029fd9d17c5d4a52ded4de271e0c2d4a5c4c6343d
4
- data.tar.gz: 6b9eb2cecc4c2d4dc74713f5119b3698da4bcaef007e3ee2d2097ba138a04169
3
+ metadata.gz: 568c6687797f8ae95c34e80b649fcc766580e0d5eabc6d33bbd277fec128aad0
4
+ data.tar.gz: 89d2a695dc3fe4d7d529b97b51d85d024cd121069d10debaac10b85030a5b6f7
5
5
  SHA512:
6
- metadata.gz: 900f15b21693e2fdcd01f09cfd983af002ca7b8ef56366e314a53c26c4bd1ecf16f0d36f2c028ae071aec82a3a4eb95896b4dfb8d8722d68ac6e10763f6b5613
7
- data.tar.gz: 8b64b3fe44fbc0f13a5e0f8508e60f0222dee98d807aa8726af7969b82d3820637d4248339548b827cc2434840aca5a24f95087edfff0263f0bb6e75b60d4cb2
6
+ metadata.gz: fe3f7afbcf83dfea4aa789b1b6f99ad486760f241c163eceed525da3cfa744726ae2d198413da1f36c8067e15bacaf5cf4974755920b4a79e1b8a5e489c5f52c
7
+ data.tar.gz: 8dc9a4a3959b8302ebd201672874f20cc922aa33f5508a3a13c09589eece2627fd5b6251f5fa362665d15991842f1f493f2adb39f120277b0a3b6cc449378b8a
data/.gitlab-ci.yml CHANGED
@@ -1,7 +1,6 @@
1
- image: ruby:3.0.2
1
+ image: ruby:3.2.1
2
2
 
3
3
  before_script:
4
- - gem install bundler -v 2.2.22
5
4
  - bundle install
6
5
 
7
6
  test:
data/.rubocop.yml CHANGED
@@ -1,19 +1,11 @@
1
+ require:
2
+ - rubocop-performance
3
+ - rubocop-rake
4
+ - rubocop-rspec
5
+
1
6
  AllCops:
2
7
  TargetRubyVersion: 2.7
3
8
  NewCops: enable
4
- SuggestExtensions: false
5
-
6
- Metrics/BlockLength:
7
- Exclude:
8
- - 'natural_earth.gemspec'
9
- - 'spec/**/*.rb'
10
- - '**/*.rake'
11
9
 
12
10
  Naming/VariableNumber:
13
11
  Enabled: false
14
-
15
- Style/AsciiComments:
16
- Enabled: false
17
-
18
- Style/Documentation:
19
- Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  ## [Unreleased]
2
2
 
3
- ## [0.1.0] - 2021-08-26
3
+ ## [4.1.1] - 2023-04-25
4
+
5
+ ### Fixed
6
+
7
+ - Remove subdivisions without official ISO-3166-2 code (ex: `KI-X01~`)
8
+
9
+ ### Changed
10
+
11
+ - Upgrade development environment to Ruby 3.2
12
+ - Regenerate resources from the latest NaturalEarth release with:
13
+ * Taiwan (`TW`) as a China subdivision
14
+ * Kosovo (`XK`) as an unrecognized sovereign state
15
+ * Renamed subdivisions in some countries to match ISO-3166-2 codes
16
+
17
+ ## [4.1.0] - 2021-08-26
4
18
 
5
19
  - Initial release
data/Gemfile CHANGED
@@ -4,3 +4,21 @@ source 'https://rubygems.org'
4
4
 
5
5
  # Specify your gem's dependencies in natural_earth.gemspec
6
6
  gemspec
7
+
8
+ group :development, :test do
9
+ # Rake tasks
10
+ gem 'multi_json'
11
+ gem 'oj'
12
+ gem 'rake', '~> 13.0'
13
+ gem 'rgeo-shapefile', '~> 3.0'
14
+
15
+ # Tests
16
+ gem 'rspec', '~> 3.0'
17
+ gem 'twitter_cldr', '~> 6.7'
18
+
19
+ # Linting
20
+ gem 'rubocop', require: false
21
+ gem 'rubocop-performance', require: false
22
+ gem 'rubocop-rake', require: false
23
+ gem 'rubocop-rspec', require: false
24
+ end
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- natural_earth (4.1.0)
4
+ natural_earth (4.1.1)
5
5
  rgeo-geojson (~> 2.1)
6
6
 
7
7
  GEM
@@ -10,61 +10,71 @@ GEM
10
10
  ast (2.4.2)
11
11
  camertron-eprun (1.1.1)
12
12
  cldr-plurals-runtime-rb (1.1.0)
13
- concurrent-ruby (1.1.9)
14
- dbf (4.2.0)
15
- diff-lcs (1.4.4)
13
+ concurrent-ruby (1.2.2)
14
+ dbf (4.2.2)
15
+ diff-lcs (1.5.0)
16
+ json (2.6.3)
16
17
  multi_json (1.15.0)
17
- oj (3.13.2)
18
- parallel (1.20.1)
19
- parser (3.0.2.0)
18
+ oj (3.14.3)
19
+ parallel (1.23.0)
20
+ parser (3.2.2.1)
20
21
  ast (~> 2.4.1)
21
- rainbow (3.0.0)
22
+ rainbow (3.1.1)
22
23
  rake (13.0.6)
23
- regexp_parser (2.1.1)
24
+ regexp_parser (2.8.0)
24
25
  rexml (3.2.5)
25
- rgeo (2.3.0)
26
+ rgeo (3.0.0)
26
27
  rgeo-geojson (2.1.1)
27
28
  rgeo (>= 1.0.0)
28
29
  rgeo-shapefile (3.0.0)
29
30
  dbf (~> 4.0)
30
31
  rgeo (>= 1.0)
31
- rspec (3.10.0)
32
- rspec-core (~> 3.10.0)
33
- rspec-expectations (~> 3.10.0)
34
- rspec-mocks (~> 3.10.0)
35
- rspec-core (3.10.1)
36
- rspec-support (~> 3.10.0)
37
- rspec-expectations (3.10.1)
32
+ rspec (3.12.0)
33
+ rspec-core (~> 3.12.0)
34
+ rspec-expectations (~> 3.12.0)
35
+ rspec-mocks (~> 3.12.0)
36
+ rspec-core (3.12.2)
37
+ rspec-support (~> 3.12.0)
38
+ rspec-expectations (3.12.3)
38
39
  diff-lcs (>= 1.2.0, < 2.0)
39
- rspec-support (~> 3.10.0)
40
- rspec-mocks (3.10.2)
40
+ rspec-support (~> 3.12.0)
41
+ rspec-mocks (3.12.5)
41
42
  diff-lcs (>= 1.2.0, < 2.0)
42
- rspec-support (~> 3.10.0)
43
- rspec-support (3.10.2)
44
- rubocop (1.20.0)
43
+ rspec-support (~> 3.12.0)
44
+ rspec-support (3.12.0)
45
+ rubocop (1.50.2)
46
+ json (~> 2.3)
45
47
  parallel (~> 1.10)
46
- parser (>= 3.0.0.0)
48
+ parser (>= 3.2.0.0)
47
49
  rainbow (>= 2.2.2, < 4.0)
48
50
  regexp_parser (>= 1.8, < 3.0)
49
- rexml
50
- rubocop-ast (>= 1.9.1, < 2.0)
51
+ rexml (>= 3.2.5, < 4.0)
52
+ rubocop-ast (>= 1.28.0, < 2.0)
51
53
  ruby-progressbar (~> 1.7)
52
- unicode-display_width (>= 1.4.0, < 3.0)
53
- rubocop-ast (1.11.0)
54
- parser (>= 3.0.1.1)
55
- rubocop-rspec (2.4.0)
54
+ unicode-display_width (>= 2.4.0, < 3.0)
55
+ rubocop-ast (1.28.0)
56
+ parser (>= 3.2.1.0)
57
+ rubocop-capybara (2.18.0)
58
+ rubocop (~> 1.41)
59
+ rubocop-performance (1.17.1)
60
+ rubocop (>= 1.7.0, < 2.0)
61
+ rubocop-ast (>= 0.4.0)
62
+ rubocop-rake (0.6.0)
56
63
  rubocop (~> 1.0)
57
- rubocop-ast (>= 1.1.0)
58
- ruby-progressbar (1.11.0)
59
- twitter_cldr (6.7.0)
64
+ rubocop-rspec (2.20.0)
65
+ rubocop (~> 1.33)
66
+ rubocop-capybara (~> 2.17)
67
+ ruby-progressbar (1.13.0)
68
+ twitter_cldr (6.11.5)
60
69
  camertron-eprun
61
70
  cldr-plurals-runtime-rb (~> 1.1)
62
71
  tzinfo
63
- tzinfo (2.0.4)
72
+ tzinfo (2.0.6)
64
73
  concurrent-ruby (~> 1.0)
65
- unicode-display_width (2.0.0)
74
+ unicode-display_width (2.4.2)
66
75
 
67
76
  PLATFORMS
77
+ ruby
68
78
  x86_64-darwin-20
69
79
 
70
80
  DEPENDENCIES
@@ -75,8 +85,10 @@ DEPENDENCIES
75
85
  rgeo-shapefile (~> 3.0)
76
86
  rspec (~> 3.0)
77
87
  rubocop
88
+ rubocop-performance
89
+ rubocop-rake
78
90
  rubocop-rspec
79
91
  twitter_cldr (~> 6.7)
80
92
 
81
93
  BUNDLED WITH
82
- 2.2.22
94
+ 2.4.6
@@ -1,19 +1,23 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module NaturalEarth
4
+ # Give access to the list of supported countries
4
5
  module Countries
5
6
  class << self
6
7
  include ISO3166
7
8
  alias normalize as_iso3166_1
8
9
 
10
+ # Return the list of supported countries as iso-3166-1 alpha-2 codes
9
11
  def supported
10
12
  COUNTRIES.keys
11
13
  end
12
14
 
15
+ # Check if a country is supported
13
16
  def supported?(iso3166_1)
14
17
  COUNTRIES.key?(normalize(iso3166_1))
15
18
  end
16
19
 
20
+ # Fetch information about a country, as a NaturalEarth::Country instance
17
21
  def fetch(iso3166_1)
18
22
  raise KeyError unless supported?(iso3166_1)
19
23
 
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module NaturalEarth
4
+ # A NaturalEarth country
4
5
  class Country
5
6
  attr_reader :data
6
7
 
@@ -4,7 +4,7 @@ require 'multi_json'
4
4
  require 'rgeo/geo_json'
5
5
 
6
6
  module NaturalEarth
7
- module Geometries
7
+ module Geometries # :nodoc:
8
8
  COUNTRY_PATH = 'geometries/%<iso3166_1>s/%<iso3166_1>s.json'
9
9
  SUBDIVISION_PATH = 'geometries/%<iso3166_1>s/%<iso3166_2>s.json'
10
10
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module NaturalEarth
4
- module ISO3166
4
+ module ISO3166 # :nodoc:
5
5
  # Normalize an ISO-3166-1 code (alpha-2, alpha-3 or numeric) or ISO-3166-2 code to ISO-3166 alpha-2
6
6
  def as_iso3166_1(iso3166)
7
7
  return numeric_to_alpha2(iso3166) if numeric? iso3166
@@ -25,11 +25,11 @@ module NaturalEarth
25
25
  protected
26
26
 
27
27
  def reformat(code)
28
- code.to_s.upcase.gsub('_', '-')
28
+ code.to_s.upcase.tr('_', '-')
29
29
  end
30
30
 
31
31
  def extract(code)
32
- return code.split('-').first if code.match?(/-/)
32
+ return code.split('-').first if code.include?('-')
33
33
 
34
34
  code
35
35
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module NaturalEarth
4
+ # A NaturalEarth subdivision
4
5
  class Subdivision
5
6
  attr_reader :data
6
7
 
@@ -1,19 +1,23 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module NaturalEarth
4
+ # Give access to the list of supported subdivisions
4
5
  module Subdivisions
5
6
  class << self
6
7
  include ISO3166
7
8
  alias normalize as_iso3166_2
8
9
 
10
+ # Return the list of supported subdivisions, as iso-3166-2 codes
9
11
  def supported
10
12
  SUBDIVISIONS.keys
11
13
  end
12
14
 
15
+ # Check if a subdivision is supported
13
16
  def supported?(iso3166)
14
17
  SUBDIVISIONS.key?(normalize(iso3166))
15
18
  end
16
19
 
20
+ # Fetch information about a subdivision, as a NaturalEarth::Subdivision instance
17
21
  def fetch(iso3166)
18
22
  raise KeyError unless supported?(iso3166)
19
23
 
@@ -18,6 +18,8 @@ require_relative '../../natural_earth'
18
18
  #
19
19
  # [1]: <https://www.naturalearthdata.com/> / <https://github.com/nvkelso/natural-earth-vector>
20
20
  # [2]: <https://www.naturalearthdata.com/downloads/10m-cultural-vectors/>
21
+ #
22
+ # rubocop:disable Metrics/BlockLength
21
23
  namespace :import do
22
24
  desc 'Build GeoJSON resources from Natural Earth full release files'
23
25
  task :cultural, [:dir] => :cleanup do |_t, args|
@@ -42,6 +44,9 @@ namespace :import do
42
44
  end
43
45
  end
44
46
 
47
+ # Also exist with another name
48
+ duplicate_countries = %w[FR-971 FR-972 FR-973 FR-974 FR-976]
49
+
45
50
  data = {
46
51
  'UM' => {
47
52
  'iso-3166-1' => {
@@ -61,6 +66,7 @@ namespace :import do
61
66
  RGeo::Shapefile::Reader.open(map_units_shp) do |shapefile|
62
67
  shapefile.each do |entry|
63
68
  next if entry['ISO_A2'].empty? || entry['ISO_A2'].to_i == -99
69
+ next if duplicate_countries.include?(entry['ISO_A2'])
64
70
 
65
71
  data[entry['ISO_A2']] = {
66
72
  'iso-3166-1' => {
@@ -82,6 +88,7 @@ namespace :import do
82
88
  RGeo::Shapefile::Reader.open(countries_shp) do |shapefile|
83
89
  shapefile.each do |entry|
84
90
  next if entry['ISO_A2'].empty? || entry['ISO_A2'].to_i == -99
91
+ next if duplicate_countries.include?(entry['ISO_A2'])
85
92
  next if data.key?(entry['ISO_A2'])
86
93
 
87
94
  data[entry['ISO_A2']] = {
@@ -128,7 +135,7 @@ namespace :import do
128
135
  end
129
136
 
130
137
  # …and some subdivisions.
131
- unrecognized_sovereign_states = ['Somaliland', 'Northern Cyprus']
138
+ unrecognized_sovereign_states = ['Kosovo', 'Northern Cyprus', 'Somaliland']
132
139
  nope = ['West Bank', 'Siachen Glacier'] # Just wikipedia them and you'll understand
133
140
 
134
141
  subdivisions = {
@@ -168,7 +175,7 @@ namespace :import do
168
175
  RGeo::Shapefile::Reader.open(map_units_shp) do |shapefile|
169
176
  shapefile.each do |entry|
170
177
  next unless entry['ISO_A2'].empty? || entry['ISO_A2'].to_i == -99
171
- next if countries.keys.include?(entry['GEOUNIT'])
178
+ next if countries.key?(entry['GEOUNIT'])
172
179
  next if unrecognized_sovereign_states.include?(entry['GEOUNIT']) || nope.include?(entry['GEOUNIT'])
173
180
 
174
181
  subdivision = subdivisions[entry['GEOUNIT']]
@@ -182,13 +189,38 @@ namespace :import do
182
189
  end
183
190
  end
184
191
 
185
- # Some countries are so small they are considered as subdivisions in Natural Earth.
192
+ # Some countries are wrongly considered as subdivisions in Natural Earth.
186
193
  country_as_subdivisions = {
194
+ 'Guyane française' => {
195
+ 'iso-3166-1' => { 'alpha-2' => 'GF', 'alpha-3' => 'GUF', 'numeric' => 254 },
196
+ 'continent' => 'South America',
197
+ 'region' => 'South America'
198
+ },
187
199
  'Gibraltar' => {
188
200
  'iso-3166-1' => { 'alpha-2' => 'GI', 'alpha-3' => 'GIB', 'numeric' => 292 },
189
201
  'continent' => data['ES']['continent'],
190
202
  'region' => data['ES']['region']
191
203
  },
204
+ 'Guadeloupe' => {
205
+ 'iso-3166-1' => { 'alpha-2' => 'GP', 'alpha-3' => 'GLP', 'numeric' => 312 },
206
+ 'continent' => 'North America',
207
+ 'region' => 'Caribbean'
208
+ },
209
+ 'Martinique' => {
210
+ 'iso-3166-1' => { 'alpha-2' => 'MQ', 'alpha-3' => 'MTQ', 'numeric' => 474 },
211
+ 'continent' => 'North America',
212
+ 'region' => 'Caribbean'
213
+ },
214
+ 'Mayotte' => {
215
+ 'iso-3166-1' => { 'alpha-2' => 'YT', 'alpha-3' => 'MYT', 'numeric' => 175 },
216
+ 'continent' => 'Africa',
217
+ 'region' => 'Eastern Africa'
218
+ },
219
+ 'La Réunion' => {
220
+ 'iso-3166-1' => { 'alpha-2' => 'RE', 'alpha-3' => 'REU', 'numeric' => 638 },
221
+ 'continent' => 'Seven seas (open ocean)',
222
+ 'region' => 'Eastern Africa'
223
+ },
192
224
  'Tuvalu' => {
193
225
  'iso-3166-1' => { 'alpha-2' => 'TV', 'alpha-3' => 'TUV', 'numeric' => 798 },
194
226
  'continent' => data['SB']['continent'],
@@ -203,7 +235,7 @@ namespace :import do
203
235
 
204
236
  # Some countries have non official subdivisions in Natural Earth.
205
237
  countries_without_subdivisions = %w[
206
- AI AQ AS AW AX BL CK CW EH FK FO GG GS GU HK HM IM IO JE KY MF MP NC NF NU PF PM PN TC TF VA VG VI
238
+ AI AQ AS AW AX BL CK CW EH FK FO GG GS GU HK HM IM IO JE KY MC MF MP NC NF NU PF PM PN TC TF TW VA VG VI XK
207
239
  ]
208
240
 
209
241
  # Some subdivisions have incorrect ISO-3166-2.
@@ -216,6 +248,11 @@ namespace :import do
216
248
  'TJ-X01~' => 'TJ-RA'
217
249
  }
218
250
 
251
+ # Some subdivisions have missing names.
252
+ subdivisions_missing_names = {
253
+ 'CO-DC' => 'Bogotá'
254
+ }
255
+
219
256
  subdivisions_shp = File.join(dir, format(file_patterns[:subdivisions], ext: 'shp'))
220
257
  RGeo::Shapefile::Reader.open(subdivisions_shp) do |shapefile|
221
258
  shapefile.each do |entry|
@@ -244,13 +281,15 @@ namespace :import do
244
281
  entry['iso_3166_2']
245
282
  end
246
283
 
247
- if iso_3166_2.match?(/~\z/)
248
- puts format('Unknown subdivision: %<name>s (%<iso_3166>s)', name: entry['name'], iso_3166: iso_3166_2)
284
+ if iso_3166_2.end_with?('~')
285
+ puts format('Warning: unknown subdivision %<name>s (%<iso_3166>s)', name: entry['name'], iso_3166: iso_3166_2)
286
+ next
249
287
  end
250
288
 
251
- data[entry['iso_a2']]['subdivisions'][entry['iso_3166_2']] = {
252
- 'name' => entry['name'],
253
- 'iso-3166-2' => entry['iso_3166_2'],
289
+ name = subdivisions_missing_names.key?(iso_3166_2) ? subdivisions_missing_names[iso_3166_2] : entry['name']
290
+ data[entry['iso_a2']]['subdivisions'][iso_3166_2] = {
291
+ 'name' => name,
292
+ 'iso-3166-2' => iso_3166_2,
254
293
  'geometry' => RGeo::GeoJSON.encode(entry.geometry)
255
294
  }
256
295
  end
@@ -285,7 +324,7 @@ namespace :import do
285
324
  file.puts MultiJson.dump(country['geometry'])
286
325
  end
287
326
 
288
- next if country['subdivisions'].size.zero?
327
+ next if country['subdivisions'].empty?
289
328
 
290
329
  country['subdivisions'].each do |(iso_3166_2, subdivision)|
291
330
  File.open(File.join(geometries_dir, iso_3166_1, "#{iso_3166_2}.json"), 'wb') do |file|
@@ -295,6 +334,7 @@ namespace :import do
295
334
  end
296
335
  end
297
336
 
337
+ desc 'Remove generated GeoJSON resources'
298
338
  task :cleanup do
299
339
  dir = NaturalEarth::RESOURCES_DIR
300
340
  next unless File.exist?(dir)
@@ -306,3 +346,4 @@ namespace :import do
306
346
  puts "#{dir} removed."
307
347
  end
308
348
  end
349
+ # rubocop:enable Metrics/BlockLength
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module NaturalEarth
4
- VERSION = '4.1.0'
4
+ VERSION = '4.1.1'
5
5
  end
data/lib/natural_earth.rb CHANGED
@@ -9,7 +9,7 @@ require_relative 'natural_earth/geometries'
9
9
  require_relative 'natural_earth/country'
10
10
  require_relative 'natural_earth/subdivision'
11
11
 
12
- module NaturalEarth
12
+ module NaturalEarth # :nodoc:
13
13
  class << self
14
14
  protected
15
15
 
@@ -13,6 +13,7 @@ Gem::Specification.new do |s|
13
13
  s.description = 'Ruby wrapper around data from Natural Earth, free vector and raster map data @ naturalearthdata.com.'
14
14
  s.homepage = 'https://gitlab.com/vaolo-public/ruby/natural-earth-gem'
15
15
 
16
+ s.metadata['rubygems_mfa_required'] = 'true'
16
17
  s.metadata['allowed_push_host'] = 'https://rubygems.org'
17
18
  s.metadata['homepage_uri'] = s.homepage
18
19
  s.metadata['source_code_uri'] = s.homepage
@@ -28,16 +29,4 @@ Gem::Specification.new do |s|
28
29
  s.required_ruby_version = '>= 2.7.0'
29
30
 
30
31
  s.add_dependency 'rgeo-geojson', '~> 2.1'
31
-
32
- # Rake tasks
33
- s.add_development_dependency 'multi_json'
34
- s.add_development_dependency 'oj'
35
- s.add_development_dependency 'rake', '~> 13.0'
36
- s.add_development_dependency 'rgeo-shapefile', '~> 3.0'
37
- # Tests
38
- s.add_development_dependency 'rspec', '~> 3.0'
39
- s.add_development_dependency 'twitter_cldr', '~> 6.7'
40
- # Linting
41
- s.add_development_dependency 'rubocop'
42
- s.add_development_dependency 'rubocop-rspec'
43
32
  end