Country/region 代码 (iso-3166-1/iso-3166-2) 到经度和纬度

Country/region codes (iso-3166-1/iso-3166-2) to longitude and latitude

我需要将 iso-3166-1/iso-3166-2 代码转换为 longitude/latitude

示例:

我一直在四处搜索,但未能找到完整的列表,或者理想情况下,Java 库没有找到。

This Github project 很有前途,但缺少很多地区的大量地理位置信息。

请注意,与问题 Need a list of all countries in the world, with a longitude and latitude coordinate 不同,此问题指的是区域细分 (iso-3166-2)。

由于我没有得到任何答案,我将解释我是如何解决的。

我找到了 iso-3166-1 国家代码质心的 csv 列表:http://dev.maxmind.com/geoip/legacy/codes/country_latlon/(我不得不进行一些手动调整)

至于 iso-3166-2 区域质心,我最终创建了一个 shell 脚本,它使用 Google 地图 API 以 csv 格式打印区域质心(请注意,我没有验证完整的输出,但我检查的情况是正确的)。这是使用 curl and jq 处理 API 输出的脚本的简化版本:

#!/bin/bash

# Example list of regions (full list can be obtained from https://www.ip2location.com/free/iso3166-2 )
REGIONS="VE-O GB-BKM GB-CAM GB-CMA"

for REGION in $REGIONS; do 
LATLON=$(curl -s "maps.googleapis.com/maps/api/geocode/json?sensor=false&address=$REGION" | jq -r '.results[0].geometry.location.lat,@text ",",.results[0].geometry.location.lng')
echo $REGION , $LATLON |  tr -d ' '
done

然后我使用 Apache Commons CSV

在我的 java 代码中导入了 csv 列表

这些是我在解决这个问题时找到的最好的资源:

国家坐标: http://dev.maxmind.com/geoip/legacy/codes/country_latlon/

ISO 3166-2 坐标: https://github.com/oodavid/iso-3166-2/blob/master/iso_3166_2.js