0

これはこれまでのコードです。flickrapi を使用して緯度と経度の画像を取得し、flickr の overpass API を使用してこの場所のノードに関する情報を見つけています。

import flickrapi
import overpy

api_key = "xxxxxxxxxxxxxxxxxxx"
secret_api_key = "xxxxxxxx"
flickr = flickrapi.FlickrAPI(api_key, secret_api_key)

def obtainImages():

    photo_list = flickr.photos.search(api_key=api_key, accuracy = 15, has_geo=1, per_page = 100, extras = 'tags, url_s')

    for photo in photo_list[0]:

        id = str(photo.attrib['id'])
        url = str(photo.attrib['url_s'])
        title = (photo.attrib['title']).encode('utf-8')

        photo_location = flickr.photos_geo_getLocation(photo_id=photo.attrib['id'])
        lat = float(photo_location[0][0].attrib['latitude'])
        lon = float(photo_location[0][0].attrib['longitude'])

        max_lat = lat + 0.25
        min_lat = lat - 0.25
        max_lon = lon + 0.25
        min_lon = lon - 0.25


        print lat
        print min_lat
        api = overpy.Overpass()
        query = "node(%s, %s, %s, %s);out;" % ( min_lat, min_lon, max_lat, max_lon )
        result = api.query(query)
        print query
        print len(result.nodes)

obtainImages()

flickr api の側面は完全に機能しています。変数のいずれかを印刷しようとすると、すべて機能します。また、min_lat と min_lon は印刷時にすべて機能します。

ただし、エラーはありませんが、クエリは結果を返しません。Lat と min_lat は一度だけ出力され、プログラムは実行を続けますが、他に何もせず、他に何も出力しません。

これがなぜなのかについて誰か提案はありますか?私は初心者なので、どんな助けでも大歓迎です!

4

1 に答える 1

1

問題は、巨大なデータセットをクエリしていることです。これにより、クエリに多くの時間がかかります。

たとえば、flickr から 1 つの画像だけをクエリしたところ、スクリプトは次のクエリを生成しました。

node(20.820875, -87.027648, 21.320875, -86.527648);out;

51162 件の結果があります。2890平方キロメートルのボックスで利用可能なすべてのノードを照会しています。

経度と緯度への変更 (+/- 0.25 のような「小さな」ものであっても) が結果にどのように影響するかをよりよく理解するには、GIS Stackexchange: https://gis.stackexchangeのこの投稿を参照することをお勧めします。 com/a/8655/12310

于 2016-01-31T17:04:34.297 に答える