一个工具,可以更容易地自动化osm编辑而不会引起问题。

osm-bot-abstraction-layer的Python项目详细描述


osm bot抽象层是一个python包,使osm编辑更容易自动化而不会引起问题。

此项目包含OSM机器人之间共享的代码,以避免多次编写相同的功能。

例如,自动编辑可以跨大区域更改许多对象。在这种情况下,最好将其拆分为多个编辑,以避免国家大小的边界框。此逻辑作为此项目中包含的工具之一可用。

安装

pip install osm-bot-abstraction-layer

PyPI version

贡献

与任何项目的第一次接触都是至关重要的,因此请在本自述文件中报告所有问题。如果你需要这样的工具,但决定不使用它的某些固定原因-请打开一个问题!

关于如何改进文档的报告,bug报告,pull请求都是受欢迎的!

从最小的排版到大的新特性,pull请求都是受欢迎的——不过,在发生巨大变化的情况下,从打开一个问题开始总是一个好主意。

目的

此工具适用于同时使用此工具的人

  • 程序员
  • 有经验的OSM编辑
  • 遵循OSM规则

任何运行自动编辑的人都要对出现的所有问题负责,包括在像这样的外部库中导致错误的问题。

我消除了我注意到的所有错误,毕竟我自己在使用这段代码,但有些仍然潜伏着。欢迎发布报告和拉取请求!

有关OSM规则的提示

请注意,未经社区协商或同意,不得进行自动化。

有关详细信息,请参见Import/GuidelinesAutomated Edits/Code of Conduct

注意,违反上述规则的自动编辑通常会被撤消。未经讨论的自动编辑可以由任何人恢复,无需任何咨询。

是的,这意味着一些可以节省时间和完全合理的自动化编辑被拒绝,不应该被编辑。它仍然优于无限制的自动编辑。

配置

创建包含以下内容的secret.json文件:

{
	"bot_account": {
		"username": "Your OSM username for a bot account",
		"password": "?6ofGZm=qr*skR?C,a,1E#k9g8:kE7"
	},
	"human_account": {
		"username": "Your OSM username for a human operated account",
		"password": "t?\q~,?m;2l?Dd$cKc`?n9PeSDBjj/"
	}
}

用法示例

下面是一个基于真正的自动编辑的示例,在guidelines for the automatic edits之后。

  1. 询问了相关社区。在本例中,它影响了波兰映射器,因此线程出现了in Polish section of forum.openstreetmap.org。请注意,不同的社区可以使用不同的论坛或邮件列表作为他们的沟通渠道。
  2. 另外Page documenting the automated edit was created at OSM wiki
  3. OSM社区接受了编辑。
  4. 以下代码是使用run_simple_retagging_task组件创建的。运行此脚本将导致:
  • 使用overpass turbo下载osm数据,如objects_to_consider_query参数中所指定
  • 遍历所有和对象,忽略函数作为参数传递的对象is_element_editable_checker_function返回false
  • 对于所有其他edit_element_function应用
  • 更改将自动拆分为多个更改集(如果需要),以避免在一次编辑中出现过大的边框或过多的对象
  • changeset_commentdiscussion_urlosm_wiki_documentation_page参数值用于应用正确的变更集标记
  1. 运行此代码导致两次编辑:#64628901#64628951
from osm_bot_abstraction_layer.generic_bot_retagging import run_simple_retagging_task

def is_element_editable(tag_dictionary, identifier):
    if tag_dictionary.get('name') == ("bankomat"):
        return True
    if tag_dictionary.get('name') == ("Bankomat"):
        return True
    return False

def edit_element(tags):
    tags.pop('name', None)
    return tags

def main():
    run_simple_retagging_task(
        max_count_of_elements_in_one_changeset=500,
        objects_to_consider_query="""
[out:xml][timeout:25000];
area[name="Polska"]->.a;
(
  nwr[amenity='atm'][name='Bankomat'](area.a);
  nwr[amenity='atm'][name='bankomat'](area.a);
);
out body;
>;
out skel qt;
""",
        objects_to_consider_query_storage_file='/media/mateusz/5bfa9dfc-ed86-4d19-ac36-78df1060707c/OSM-cache/overpass/tags_for_retagging_descriptive_atm.osm',
        is_in_manual_mode=False,
        changeset_comment='usuwanie nazw opisowych z bankomatów (name="bankomat" i name="Bankomat")',
        discussion_url='https://forum.openstreetmap.org/viewtopic.php?id=66038',
        osm_wiki_documentation_page='https://wiki.openstreetmap.org/wiki/Mechanical_Edits/Mateusz_Konieczny_-_bot_account/fix_descriptive_name_on_ATMs_in_Poland',
        is_element_editable_checker_function=is_element_editable,
        edit_element_function=edit_element,
    )

main()

其他文档

文件目前大多丢失-请打开一个问题,如果它对你有用(拉请求也欢迎)。

历史和词源

项目的一部分建立在osmapi之上,并提供了额外的抽象层。这部分是初始的,是项目名称的来源。

项目地点

这个项目位于https://github.com/matkoniecz/osm_bot_abstraction_layer

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java正在寻找Java8中的内置函数以忽略异常   javascript JQuery更改Div的颜色   java PostgreSQL使用JDBC写入inet列   java为什么体重指数计算结果不正确?   java禁用linux中的log4j控制台日志记录   java我可以让我的JMS主题在新订阅者连接时通知发布者(使用ActiveMQ)   基于三个浮点输入的java过滤器JTable?   Java OpenGL/LWJGL体素纹理   在SpringBoot java应用程序中,有没有一种方法可以通过不同的机器使用hostIP作为主机远程连接到redis服务器   java Struts 2 s:提交按钮语法以在映射中设置值   java源代码:setDomainEnv。windows 7中的cmd文件   缺少货币计算java的返回语句   JavaHibernate没有注意到从其他源进行的数据库更新   无法在OpenCV/Java中生成负矩阵   Java不做循环   java无法使用类对象写入文件ArrayList   jpa使用数组作为调用Java的存储过程的输入   java使用文件提供程序检索内容Uri失败   需要java程序来创建方法模板