Всем привет. Экспериментирую с API. (Прочитал его внимательно). Вознили некоторые вопросы, надеюсь на вашу помощь.
могу ли я через api создавать точки (node), которые вижу только я. Т.е. к ним не может получить доступ другой пользователь.
каким образом через api добывать точке, относящиеся к данному конкретному пользователю?
Для загрузки node, я делаю следующее:
поло логину и паролю, узнаю uid пользователя.
по uid получаю все changeset’ы
обхожу все changeset’ы, использую /api/0.6/changeset/#id/download => получаю все id node.
загужаю все точки (node), используя /api/0.6/node/#id
Мне кажется этот путь очень неэффектвным, есть более нормальное решение для загрузки node??? В распоряжении иммется login и password.
могу ли я через api создавать точки (node), которые вижу только я. Т.е. к ним не может получить доступ другой пользователь.
Нет.
API служит для редактирования, а не массовых выгрузок. Его не надо нагружать.
Можно загрузить всю планету к себе и получать все точки, измененные пользователем последний раз, из своей базы. И делать еще много чего.
bac1ca, вам поможет, думаю, вот эта тема. В базе OSM нежелательно хранить мусор, и каждый её байт доступен всем.
Получить данные, загруженные пользователем, нетривиально: потребуется загрузить полный хистори-дамп и написать программу для фильтрации.
И еще.
Т.е. получается тот подход по загрузке node, который я описывал в первом посту правильный?
Более легкого способа получить все node отмеченные одним пользователем не существует?
Он простой, но неправильный. Потому что сервер просто ляжет ото всех запросов даже по одному более-менее продуктивному пользователю. Некое приближение можно получить, скачав последнюю выгрузку планеты (или страны) и отфильтровав — через osmosis, например — объекты по пользователю. Но это не даст тех объектов, которые были изменены позже кем-то другим. Можно скачать список ченджсетов по пользователю и взять оттуда список ID объектов всех трёх типов, а затем вытащить их из дампа планеты.