根据国家/地区提取随机的城镇名称

时间:2018-10-19 08:09:58

标签: python random geocoding geonames

我已经为此苦苦挣扎了一段时间,并且在让它在蓝色月亮中工作一次到彻底崩溃之间一直处于困境。

我的最终目标是用用户可以选择的地区/国家的随机城镇名称替换词典中的“!R”。或者举一个具体的例子,基本上是这样的事情:https://www.mithrilandmages.com/utilities/CityNames.php

开始简单地上网并将城镇名称列表粘贴到.csv中后,我意识到这将花费很长时间,并且远远不够详尽,并且为此设置了数据库。

因此,我尝试使用GeoCoderGeoNames来使某项工作正常...但是我似乎无法使它正常工作,因为我希望它能够工作(或对此有效)。

链接到脚本和代码https://github.com/Araxiel/CK2-Province_Set-Upper/blob/abandoned/1.3.0/Source/_workbench/databases.py

我目前的尝试是一直使用children直到最小的孩子,但这不是很可靠,查询需要一段时间。此外,我似乎无法像United States这样的名称。 我能找到的所有信息都是返回指定位置的特定经度或IP地址,但这远不是我想要的。我看到了一个名为“ Faker”的库,但是我很确定这也不是我想要的,尤其是因为找不到关于其数据库从何处获取信息的文档。

我正准备扔掉毛巾,尝试创建一个将单词组合在一起的RNG名称生成器。

编辑:基本上,我目前对以下内容的尝试...

    def get_towns(country):
        import geocoder
        global geonames_username
        a = geocoder.geonames(country, key=geonames_username)
        b = geocoder.geonames(a.geonames_id, key=geonames_username, method='children')
        import random
        b_r = random.choice(b)
        c = geocoder.geonames(b_r.geonames_id, key=geonames_username, method='children')
        [...etc...]

...当我尝试将"United States"设置为国家/地区时发生故障,由于某种原因,它返回了South America。即使我能解决这个问题,一直到进行4-5次查询的孩子们也不仅效率低下(最终花费大约10秒钟才能到达城镇,这意味着在进行50次查询时可能需要10分钟[和花了我200个学分;这是一个小程序,只有很少的人会使用,所以我一天不会花掉5万个查询,但这并不是很好的编码]),但它似乎更经常崩溃而不是(参见美国示例)。 我的问题是,基本上我是否缺少任何明显的东西,例如通过GeoNames或其他任何方式来选择随机城镇名称的直接方法。捆绑将近2gb的.txt文件显然不是一种选择。

0 个答案:

没有答案