这是一个有趣的问题 - 我不知道有一个庞大的数据集,但我对生成数据集的一些想法是:
Strava API
如果您有免费的 API 密钥,则可以查询 Strava 的路段终点并为其指定 lat/lng 边界,因此您将在这些范围内获得起点和终点(但仅限于 10 个结果,因此您必须循环以获取足够的数据并可能超出您的 API 调用限制,但是如果您只是创建一次它可能不会那么糟糕)。您也可以从特定的自行车骑行/跑步中获得很多积分,但它们会非常接近,我认为您不希望这样做。
http://strava.github.io/api/v3/segments/#explore 例如
节流
默认速率限制允许每 15 分钟 600 个请求,最多
每天最多 30,000 个请求。
API 调用
curl -G https://www.strava.com/api/v3/segments/explore \
-H "Authorization: Bearer YOUR_TOKEN" \
-d bounds=37.821362,-122.505373,37.842038,-122.465977 \
回应
{
"segments": [
{
"id": 229781,
"name": "Hawk Hill",
"climb_category": 1,
"climb_category_desc": "4",
"avg_grade": 5.7,
"start_latlng": [
37.8331119,
-122.4834356
],
"end_latlng": [
37.8280722,
-122.4981393
],
"elev_difference": 152.8,
"distance": 2684.8,
"points": "}g|eFnm@n@Op@VJr@"
},
{
"id": 632535,
"name": "Hawk Hill Upper Conzelman to Summit",
"climb_category": 0,
"climb_category_desc": "NC",
"avg_grade": 8.10913,
"start_latlng": [
37.8334451,
-122.4941994
],
"end_latlng": [
37.8281297,
-122.4980005
],
"elev_difference": 67.29200000000003,
"distance": 829.834,
"points": "_j|eFvc@p@SbAu@h@Qn@?RTDH"
}
]
}
谷歌地理编码 API
此 API 将接受地址并为您提供 lat/lng(以及更多),但会受到限制。您只需要一个很容易获得的地址列表。
APIhttps://developers.google.com/maps/documentation/geocoding/
节流
免费 API 的用户:每 24 小时有 2,500 个请求。 5 个请求
每秒。
API 调用
https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA
回应
{
"results" : [
{
"address_components" : [
{
"long_name" : "1600",
"short_name" : "1600",
"types" : [ "street_number" ]
},
{
"long_name" : "Amphitheatre Pkwy",
"short_name" : "Amphitheatre Pkwy",
"types" : [ "route" ]
},
{
"long_name" : "Mountain View",
"short_name" : "Mountain View",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Santa Clara",
"short_name" : "Santa Clara",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "California",
"short_name" : "CA",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United States",
"short_name" : "US",
"types" : [ "country", "political" ]
},
{
"long_name" : "94043",
"short_name" : "94043",
"types" : [ "postal_code" ]
}
],
"formatted_address" : "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
"geometry" : {
"location" : {
"lat" : 37.42291810,
"lng" : -122.08542120
},
"location_type" : "ROOFTOP",
"viewport" : {
"northeast" : {
"lat" : 37.42426708029149,
"lng" : -122.0840722197085
},
"southwest" : {
"lat" : 37.42156911970850,
"lng" : -122.0867701802915
}
}
},
"types" : [ "street_address" ]
}
],
"status" : "OK"
}