Если вы хотите, чтобы это было точно, вы должны начать с данных многоугольника, которые включают местоположение и форму каждого почтового индекса. У меня есть база данных, подобная этой (раньше она публиковалась в ходе переписи населения США, но они этого больше не делают), и я создал подобные вещи, но не такой точный запрос.
Если вам не важно быть точным (что, я полагаю, вам не нужно), вы можете получить таблицу центральных точек почтовых индексов и точек запроса, упорядоченных по great circle расстояние. PostGIS предоставляет отличные инструменты для этого, хотя вы можете создать запрос к другим базам данных, которые будут выполнять аналогичные задачи.
Альтернативный подход, который я использовал, состоит в том, чтобы создать прямоугольник, который охватывает нужный вам круг, запросить его с помощью оператораween в lon / lat, а затем выполнить большой круг в коде приложения.