了解 argparse 以获取带有推文地理位置的动态地图

Understanding argparse to get dynamic maps with Geo-Location of tweets

我在网上找到了这个 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 脚本?我遗漏了什么重要的东西吗?

正如 argparse documentation 所解释的那样,它只是询问 geojson 文件的名称以及您的代码将用于保存地图的名称。

因此,您将运行:

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

你会得到一张名为mymap.html的地图。