Понимание argparse для получения динамических c карт с географическим местоположением твитов - PullRequest
1 голос
/ 12 июля 2020

Я нашел этот python код в Интернете (twitter_map_clustered.py), который (я думаю) помогает создать карту с использованием геоданных разных твитов.:

from argparse import ArgumentParser
import folium
from folium.plugins import MarkerCluster
import json

def get_parser():
    parser = ArgumentParser()
    parser.add_argument('--geojson')
    parser.add_argument('--map')
    return parser

def make_map(geojson_file, map_file):

    tweet_map = folium.Map(Location=[50, 5], max_zoom=20)

    marker_cluster = MarkerCluster().add_to(tweet_map)

    geodata= json.load(open(geojson_file))

    for tweet in geodata['features']:
        tweet['geometry']['coordinates'].reverse()
        marker = folium.Marker(tweet['geometry']['coordinates'], popup=tweet['properties']['text'])
        marker.add_to(marker_cluster)

    #Save to HTML map file
    tweet_map.save(map_file)

if __name__ == '__main__':
    parser = get_parser()
    args = parser.parse_args()
    make_map(args.geojson, args.map)

Мне удалось извлечь географическую информацию различных твитов и сохраните их в файл geo_data.json. Однако у меня проблемы с пониманием кода, особенно функции def get_parser().

Кажется, что нам нужно добавить аргумент при запуске файла в командной строке. Аргумент должен быть geo_data.json. Однако он еще и карту просит? parser.add_argument('--map')

Почему так? Разве в коде мы не создаем карту здесь?

#Save to HTML map file
tweet_map.save(map_file)

Не могли бы вы мне помочь. Как бы вы запустили сценарий python? Я упустил что-нибудь важное?

1 Ответ

2 голосов
/ 12 июля 2020

Как объясняется в argparse документации , он просто запрашивает имя файла geo json и имя, которое ваш код будет использовать для сохранения карты.

Следовательно , вы запустите:

python twitter_map_clustered.py --geojson geo_data.json --map mymap.html

и получите карту с именем mymap.html.

...