Ruby gem用于从字符串解析country + city?

时间:2014-01-15 17:54:25

标签: ruby-on-rails ruby

我正在尝试确定Twitter用户的城市,州和国家/地区。 location字段返回位置,但我需要解析它并以结构化格式存储这些数据。

例如,如果用户生物中的位置是“伦敦”,则应将该城市存储为伦敦,将该国家存储为英国。如果它是“奥尔巴尼,纽约”,它应该将城市存储为奥尔巴尼,将州存储为纽约,将国家存储为美国。如果它只是“纽约”,它应该将州存储为纽约,将国家存储为美国。如果它是“印度”,它应该将该国存储为印度(没有城市或州)。显然,如果该位置像“外太空”一样无意义,它将不返回任何内容。

那里有没有像这样的宝石吗?如果没有,有什么方法可以智能地利用第三方来做到这一点吗?

1 个答案:

答案 0 :(得分:3)

我面临同样的问题,以确定推特位置。我找到的最好的免费服务是 openstreetmap

它非常易于使用,响应是JSON。

尝试自己:http://nominatim.openstreetmap.org/search?q=london&format=json&&addressdetails=1&accept-language=en

这里是匹配“london”的第一个元素:

{
"place_id": "97592906",
"licence": "Data \u00a9 OpenStreetMap contributors, ODbL 1.0. http:\/\/www.openstreetmap.org\/copyright",
"osm_type": "relation",
"osm_id": "65606",
"boundingbox": [
  "51.2867584228516",
  "51.6918754577637",
  "-0.510375142097473",
  "0.334015518426895"
],
"lat": "51.5072759",
"lon": "-0.1276597",
"display_name": "London, Greater London, England, United Kingdom",
"class": "place",
"type": "city",
"importance": 0.9654895765402,
"icon": "http:\/\/nominatim.openstreetmap.org\/images\/mapicons\/poi_place_city.p.20.png",
"address": {
  "city": "London",
  "county": "London",
  "state_district": "Greater London",
  "state": "England",
  "country": "United Kingdom",
  "country_code": "gb"
}

}

如您所见,address字段包含您需要的所有信息。