2016-06-15 12 views
1

私は正しい都市のために緯度と経度を確実に取得したいと思います。例えば、オーストラリアにシドニーが、カナダにシドニーがあります。これは都市と国をジオコードに渡す方法

for d in listofobjs: 
    location = geolocator.geocode(d['city']) 
    d2 = { 
     'username': d['username'], 
     'latitude': location.latitude, 
     'longitude': location.longitude 
    } 
    listofobjs2.append(d2) 

正常に動作します。しかし、私は

AttributeError: 'list' object has no attribute 'latitude' 

はですlocatoionから緯度を読むしようとすると、私はエラーを取得する代わりにこれ

location = geolocator.geocode(d['city'],d['country']) 

のような場所をしようとすると、私はエラーを取得します都市と国の両方にジオコードを渡すことは可能ですか?

答えて

0

ドキュメントでは、geolocator.geocodeが0,1以上の値を返すことができることが記載されています。 このメソッドはリストを返すことができるため、単一の構造要素としてアクセスしようとするとエラーメッセージが表示されます。 リストを繰り返して、必要に応じてlistofobjs2に追加します。

正確に1つの場所の一致を確認することはできません。しかし、なぜ2つのパラメータを渡すのですか?私はそれらをドキュメントの例のような文字列で組み合わせます:

"some address NYC"ですから、このようなあなたの要求を置く場合:

D [ '都市'] +」「+ D [ '国']

それはたとえば、あなたがより良い

https://geopy.readthedocs.io/en/1.10.0/

+0

にマッチしますリストを返します。しかし、すべての可能な場所のリスト。 [場所(バンクーバー、ブリティッシュコロンビア州、カナダ、(49.2608944、-123.1139382、0.0))、場所(バンクーバー、クラーク郡、ワシントン、アメリカ合衆国、(45.6306954、-122.6744556、0.0) (バンクーバー、サンアントニオデルテキンダマ、コロンビアのクンチナマルカ、(4.585473、-74.3518472、0.0))、...(バンクーバー、クラーク郡、ワシントン、アメリカ合衆国、45.6306954、-122.6744556、0.0)さらなる処理が必要になります。他の簡単な方法はありませんか? – jas

+0

ドキュメントには、この例があります:location = geolocator.geocode( "175 5th Avenue NYC")。私はジオロケーターAPIを知らないのですが、geolocator.geocode(d ['city'] + "" + d ['country'])は動作します(都市+国では1文字列、2パラメータ呼び出しではなく1文字列ドキュメント内の一致) –

+0

はい、動作しています – jas

関連する問題