Я наблюдаю странное поведение с osmfilter (https://wiki.openstreetmap.org/wiki/Osmfilter), который можно установить с помощью следующей команды:
$ sudo apt-get install osmctools
Предположим, я экспортировал map.osm для региона с https://www.openstreetmap.org и я хочу фильтровать только дороги из этого файла. Я могу использовать команду:
$ osmfilter map.osm --keep='highway' > highways_terminal.osm
Файл highways_terminal.osm содержит информацию о магистралях. Затем я попытался использовать Python, чтобы сделать то же самое с subprocess.run():
import subprocess
cmd = ["osmfilter", "map.osm", "--keep='highway'"]
resp = subprocess.run(cmd, capture_output=True, text=True)
with open("highways_subprocess.osm", "w") as fp:
fp.write(resp.stdout)
Но highways_subprocess.osm не содержит никакой информации, кроме «границы».
Я неправильно обрабатываю кавычки?
resp.stderr
сообщение об ошибке? Что такое код возврата? Обратите внимание, что вы можете напрямую указать выходной файл с помощью опции-o=<file>
. Также подумайте о том, чтобы взять добычу на osmium, который быстрее и имеет больше возможностей, чем osmfilter. - person scai   schedule 25.01.2019resp.stderr
не имеет сообщения.resp.returncode
это0
. Я пробовал-o=<file>
, но я все еще получаю только ограничения. Кроме того, я мог свободно получить доступ к осмию... мне не пришлось "грабить" :) jk ..спасибо! - person yang5   schedule 25.01.2019