select name,place_name,ST_X(ST_Centroid(way)),ST_Y(ST_Centroid(way))
from osm_polygon where (name is not null or place_name is not null) and place='city';
возвращает 262 города. А такой
select name,place_name,ST_X(ST_Centroid(way)),ST_Y(ST_Centroid(way))
from osm_polygon where (name is not null or place_name is not null) and (place='city' or place='town');
Ну я думал сделать страничку с поиском. Имя города - ключ, он впринципе произвольный.
Т.е. чтоб было можно сгенерить ссылку вида openstreetmap.ru/go/Бобровка (Свердловская обл.)
Отсутсвие строгой проверки - конечно не очень хорошо, но прежде всего сервис будет востребован (если еще конечно будет) технически грамотными специалистами.
Лично я бы сделал по максимуму - вынес в табличку все, что по статусу выше пгт, причем вне зависимости от степени нарисованности (и вообще присутствия) в ОСМ. То есть просто по координатам, например, из GNS или Википедии. Если есть у нас город - хорошо, нет - люди увидят, что его надо нарисовать.
Вопрос дублирования названий решить можно а) ip-геолокацией до уровня региона и б) сначала страничкой со списком всех найденных мест, а уже потом картой.
В самом хитром случае эта страничка может представлять собой
село Бобровка (Свердловская область)
OpenLayers-карта этого места
село Бобровка (Самарская область)
OpenLayers-карта этого места
и т.д.
Ну я как думал: openstreetmap.ru/go/Бобровка если в списке есть такое место (координаты + зум) - не задавая вопросов переходим, если нет - ищем (через номинатим или по локальной выгрузке), предлагаем варианты, выбираем нужный вариант, правим смещение зум - сохраняем.
Соответсвенно нужно вам сформировать ссылку на бобровку - проверили есть ли запись openstreetmap.ru/go/Бобровка если есть и не совпадает с нужным - ввели openstreetmap.ru/go/Бобровка (Свердловская обл.) получили список бобровок - сохранили координаты и зум и в следующий раз по строке penstreetmap.ru/go/Бобровка (Свердловская обл.) попадаете куда хотели. Естественно записями типа openstreetmap.ru/go/Бобровка если их много, злоупотреблять не стоит, о чем планирую написать крупными буквами на страничке добавления привязки. Можно конечно и жестко такую бяку запретить, но все-же я исхожу из положения разумности человека формирующего ссылку.
Alexandr Zeinalov, нужны все населенные пункты, place=‘city’ or place=‘town’ or place=‘hamlet’ в общем по максимуму. А лучше доступ с openstreetmap.ru до бд на гислабе, чтобы не заморачиваться с обновлениями. (Быстродействие не важно т.к. поиск местоположения происходит 1 раз, а не на каждый переход по ссылке).