Class: TokyoMetro::Api::Point

Inherits:
MetaClass::Hybrid show all
Includes:
ClassNameLibrary::Api::Point
Defined in:
lib/tokyo_metro/api/point.rb

Overview

Note:

地物情報 ug:Poiでは、駅出入口情報を提供する。

Note:

地物情報は必ず緯度経度情報(geo:long, geo:lat)を持ち、 /places APIを使用した地理領域絞り込み検索が可能。

地物情報 ug:Poi を扱うクラス

Defined Under Namespace

Classes: Info, List

クラスメソッド - データの取得・保存 collapse

テスト collapse

Methods inherited from MetaClass::Fundamental

factory_for_generating_from_saved_file

Class Method Details

.get(http_client, id_urn: nil, title: nil, category_name: nil, parse_json: false, generate_instance: false, to_inspect: false) ⇒ ::Array

地物情報を取得するメソッド

Parameters:

  • http_client (HTTPClient)

    HTTPClient のインスタンス【必須】

  • id_urn (String) (defaults to: nil)

    固有識別子 (ucode) <id - URN>

  • title (String) (defaults to: nil)

    地物名。エレベータには「エレベータ」という文字列を含む。「出入口」の文字列の後に出口番号が続く。<dc:title - xsd:string>

  • category_name (String) (defaults to: nil)

    地物のカテゴリ(必ず「出入口」となる) <ugsrv:categoryName - xsd:string>

  • parse_json (Boolean) (defaults to: false)

    JSONを配列とするか否かの設定(false の場合は文字列とする)

  • generate_instance (Boolean) (defaults to: false)

    データ取得後に Ruby のインスタンスを作成するか否かの設定

  • to_inspect (Boolean) (defaults to: false)

    データ取得後にコマンドツールに内容を表示するか否かの設定

Returns:

  • (::Array)


20
21
22
23
24
25
26
# File 'lib/tokyo_metro/api/point.rb', line 20

def self.get( http_client ,
  id_urn: nil , title: nil , category_name: nil ,
  parse_json: false , generate_instance: false , to_inspect: false )

  factory_for_getting.process( http_client , id_urn , title , category_name ,
    parse_json , generate_instance , to_inspect )
end

.get_geo_test(http_client, geo_long, geo_lat, radius) ⇒ nil

データ取得のテスト

Returns:

  • (nil)


76
77
78
79
80
81
82
83
84
# File 'lib/tokyo_metro/api/point.rb', line 76

def self.get_geo_test( http_client , geo_long , geo_lat , radius )
  puts "#{get_test_title} (geo)"
  result = get_geo( http_client , geo_long , geo_lat , radius , to_inspect: true , parse_json: true , generate_instance: true )
  puts "(#{result.length})"
  result.each do | point_info |
    puts point_info.to_strf
    puts "" * 2
  end
end

.get_test(http_client) ⇒ nil

データ取得のテスト

Returns:

  • (nil)


53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/tokyo_metro/api/point.rb', line 53

def self.get_test( http_client )
  puts "#{get_test_title}"
  ary = get( http_client , to_inspect: true , parse_json: true , generate_instance: true )
  puts ""
  puts "#{ary.length} datas"
  puts ""

  h = ary.group_by( &:station_name_in_title )
  h.keys.sort.each do | station |
    h[ station ].sort_by( &:code_in_title ).each do | point_info |
      puts "(#{ point_info.floor.to_s.rjust(2) }) #{ point_info.category_name } #{ point_info.title.to_s }"
    end
  end

  ary.each do | point_info |
    puts point_info.to_strf
    puts "\n" * 2
  end

end

.save(http_client, filename, file_type: :yaml, id_urn: nil, title: nil, category_name: nil, to_inspect: false) ⇒ nil

駅情報を取得し保存するメソッド

Parameters:

  • http_client (HTTPClient)

    HTTPClient のインスタンス【必須】

  • file_type (Symbol) (defaults to: :yaml)

    保存するファイルの種類【必須】

  • id_urn (String) (defaults to: nil)

    固有識別子 (ucode) <id - URN>

  • title (String) (defaults to: nil)

    地物名。エレベータには「エレベータ」という文字列を含む。「出入口」の文字列の後に出口番号が続く。<dc:title - xsd:string>

  • category_name (String) (defaults to: nil)

    地物のカテゴリ(必ず「出入口」となる) <ugsrv:categoryName - xsd:string>

  • to_inspect (Boolean) (defaults to: false)

    データ取得後にコマンドツールに内容を表示するか否かの設定

Returns:

  • (nil)


36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/tokyo_metro/api/point.rb', line 36

def self.save( http_client , filename , file_type: :yaml ,
  id_urn: nil , title: nil , category_name: nil ,
  to_inspect: false )

  data = get( http_client ,
    id_urn: id_urn , title: title , category_name: category_name ,
    parse_json: true , generate_instance: false , to_inspect: false )

  data = eval( data.to_s.gsub( /(?:\r\n|\r)/ ,"\n" ).encode( "UTF-8" ) )

  save_data( data , filename , file_type: file_type )
end