Геокодинг, ПО для получения адреса по координатам

Существует ли такое ПО для геокодинга, чтобы можно было по координатам широты и долготы получать адрес? ПО аналогичное этому:
https://wiki.openstreetmap.org/wiki/Osmgeoref

То есть ПО также не должно быть особо требовательным к ресурсам (ЦП - armv7l), и оно не должно использовать систему баз данных. По сути ПО должно осуществлять поиск в файлах типа pbf, osm, o5m, ogb.

Если такого нет, какие есть альтернативы, учитывая, что всё должно будет работать на armv7l с 1 ГБ RAM?

Какой объем?

  • планета
  • континент (какой)
  • страна (какая)
  • облать
  • город

Без базы с пространственными индексами или её аналога - никак.
Её можно строить в памяти при запуске, но это будет кушать память и сильно увеличивать время каждого запуска (пропорционально размеру файлов).

Я делал подобную штуку для нашей системы, но там было в рамках одной области и максимум город и улица, до домов не спускался. И это работало в виде сервиса на серверном железе, поэтому время запуска и память были некритичны.

Центральный федеральный регион:
https://download.geofabrik.de/russia/central-fed-district.html

Только Россия. Москва и Московская область.

Чтобы сделать адрес (типа область/район/нп/улица/дом) всё одно надо сначала обработать файл типа pbf, osm, o5m, …
Результат либо в базу, без чего тут многие не представляют программирования, либо в свои какие-то структуры данных в удобных для использования форматах.

Уже обработал через https://wiki.openstreetmap.org/wiki/Osmgeoref из большого pbf файла получил маленький ogb с городами МО, улицами, домами. Проблема в том, что через ту же утилиту osmposition нельзя получить обратное. То есть я ввожу город, улицу, дом и получаю координаты, а в обратную сторону так не работает. Переписать C-шный код в той же утилите не вариант :smiley:

Ну так это и есть примитивный аналог БД, заточенный под одно конкретное применение - прямой геокодинг (координаты из адреса). Обратный геокодинг (из координаты адрес), который вам нужен, из него простым способом не получить, т.к. для его эффективной работы нужна специальная дополнительная структура - пространственный индекс, которого тут нет, насколько я понял на беглый взгляд.
Вам нужно или допилить эту утилиту до необходимой функциональности или сделать с нуля свою, на том языке который вам ближе.

Что если заюзать osm2pgsql, и уже в psql делать запросы по координатам?

Если я правильно понял, то речь идет не о компьютере, а о дохлом устройстве, типа продвинутого mp3-плейера или самого начального уровня смартфоне. Там с готовыми sql-базами все грустно, даже ОС на борту может не оказаться.

По сабжу - вам надо на (мощном) компьютере все пространство ЦФО нарезать на полигоны, по одному на каждый известный вам адрес. Это будут сотни тысяч полигонов. Ну то есть полигон это адресная точка плюс все пространство вокруг, которое ближе к этой точке, чем к другим адресам, но не далее, скажем, 100 метров.
А потом уже готовые полигоны хранить на устройстве в чем-то вроде квадродерева, позволяющем делать ненапряжный для ЦПУ поиск.