Привет
Мы занимаемся проектом для жд фанатов, где юзеры заливают свои фотки, и тегируют место съемки. Дальше, мы работаем со списокм объектов - например показываем станции и депо, с фотками, которые привязаны к этим объектам. В случае, кода ж.д. объект не найден, мы тегируем фотку городом или деревней, где был снят поезд. Так как на начальном этапе стояла задача быстро поднять проект, мы использовали самое быстрое решение, которое могли поднять своими руками - взяли базу geonames. Все прекрасно работает, кроме очевидного минуса - отличия в активности и детализации geonames и osm, в пользу последнего.
Проект зажил, и мы стали думать, как нам добиться более подробных геолокаций. Долго читали и облизывались на подробную классификацию ж.д. объектов в osm, и наконец решили - пора мигрировать на osm. В связи с чем возникли вопросы, которые мы хотим задать вам
Сразу хочу оговориться, что мы используем mysql, и хотим на нем остаться. Это уловие врядли мы сможем поменять в ближайшем будующем - сервер слишком круто затюнен под mysql, и эту же mysql использует другой коммерческий проект, который кормит все остальные некоммерческие, и позволяет нам держать и развивать наш жд сайт.
В общих чертах, мы видим решение нашей задачи примерно таким образом:
Импортируем только нужные нам ноды, и убиваем все relations и ways. Нужные нам - это почти все ноды с тэгом railway, а так же с тэгом place. Получаем как минимум ту же функциональность что имеем сейчас с geonames, но зато на порядок больше объектов. Но тут же возникают вопросы:
- Как лучше решить задачу с принадлежностью ноды, например к стране? Например, при заполнении фотки, при вводе названия мы дергаем автокомплитер, и чтобы лимитировать лавину запросов в базу, мы дергаем его только по той стране, в которой была сделана фотка. Второй пример - человек заходит в раздел “Австрия” и хочет получить все фотки из австрийских депо.
Дело в том, что в geonames каждый объект автоматом имеет принадлежность к админ баундари. Там невозможны объекты, которые не имеют принадлежности к какому-то региону. Когда человек с сайта geonames добавляет объект в базу, geonames автоматом понимает по координатам, где находится объект, и к какому рагиону нужно привязать объект. Как быть в случае с osm нодами, которые имеют только координаты? Не прогонять же каждый апдейт через отдельный pgsql, чтобы при выгрузке теэгировать принадлежность? Есть какое нибудь простое решение, если мы не хотим заморачиваться с полигонами для проверки принадлежности?
- Как быть, например, со станциями, которые заведены как way, а не как node? Если я правильно понял, политика редактирования osm поощряет сложные станции всегда добавлять как way, а не как node. Можно конечно тупо сконверировать через osmfilter с опицей --all-to-nodes, но в некоторых случаях мы получим визуально фотки не на станции, а буквально на здании станции. Как решать эту проблему? Кроме того, не возникнет ли проблем с накатываенем обновлений, если в changeset’ах мы будем конвертировать way в ноды - будут ли совпадать id новых инкрементированных нод? Например, как я вижу nominantim все объекты адресует в единое облако id, называя их places, значит есть же какой-то человеческий алгоритм преобразования. Или мы неправильно поняли политику, и если станция отображается полигоном, то рядом все равно ставится node?
Спасибо за ваши советы, и хочу сразу предотвратить вопросы - а почему вы хотите попроще а не посложнее: проект бесплатный, и у нас нет достаточных ресурсов чтобы поднимать полновесное решение, поэтому и ищем легкие пути. Задач и так стоит очень много, очень много сил уходит на развитие базы подвижного состава, и мы не можем закопаться и умереть на гео функционале. Не забрасывайте нас шапками, если у нас получится мигрировать на osm, мы приведем с нашего сайта иностранных пенисонеров, которые с радостью помогут с развитем osm в их регионах