国家/地区代码(iso-3166-1 / iso-3166-2)到经度和纬度

我需要从iso-3166-1 / iso-3166-2代码转换为经度/纬度

例子:

  • 输入:“US”,输出:(37.09024,-95.71289100000001)。
  • 输入“VE-O”,输出:(10.9970723,-63.91132959999999)。

我一直在寻找,但未能找到完整的列表,或者理想情况下,找不到Java库。

这个Github项目很有前途,但很多地区缺少很多地理定位信息。

请注意,与需要世界上所有国家/地区列表的问题不同,这个国家/地区具有经度和纬度坐标 ,这个区域是指区域细分(iso-3166-2)。

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

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

至于iso-3166-2区域质心,我最终创建了一个shell脚本,它使用Google Maps API以csv格式打印区域质心(请注意,我没有validation完整输出,但我检查的情况是正确的)。 这是使用curl和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