natural_earth 4.1.0 → 4.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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