Мне недавно пришлось столкнуться с этой проблемой. В итоге я создал библиотеку в target-c, которая в основном анализирует комбинацию уличных данных OSM и данных о занимаемой площади здания OSM, чтобы выяснить концепцию «блока», где понятие «блок» представляет собой многоугольную область, которая имеет здания внутри него и который имеет многоугольник пересекающихся улиц, окружающих его. Он не работает для всех ситуаций (например, для блоков без данных о занимаемой площади зданий), но для городов он хорошо работает при определении блоков.
Другой подход, который, насколько мне известно, не поддерживается OSM, состоит в том, чтобы получать данные о блочных полигонах непосредственно от городских властей, но это не особенно масштабируемо, если только вы не используете только несколько заданных локалей. И некоторые города не публикуют эти данные.