Когда выбираешь дом с учетом благополучия ребенка и жизни семьи с ним ближайшие 20 лет, лучше жить в пешеходной доступности от детсада, школы, коледжа и университета. Было бы хорошо чтобы поблизости были кружки детского творчества, спортцентры, школы иностранных языков. Ну и отлично, когда рядом есть игровые площадки и поликлиники - жилье ведь выбирают не на пару лет.

Мой рейтинг домов будет основан только на количественных метриках пешеходной доступности. Все расчеты основаны на данных проекта OpenStreetMap для жилых домов, которые ближе 2км пешком от входа в метрополитен или МЦК, а это значит что у этих домов нет проблем с транспортной доступностью. Рассчитаем самые удобные дома для жизни с детьми в районах Москвы.

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

Методика расчета

Для каждого жилого дома Москвы выше 2х этажей в его окрестности 2км пешком суммируем в отдельные значения сколько объектов каждого типа вокруг здания из списка:

Также для каждого дома ведем признак all_infra, который будет активирован, когда в окресности есть один и более объект для каждой из категорий этого списка. А также посчитаем totalScore как сумму числа всех этих объектов в окрестностях (поликлинику и детские площадки с понижающим коэффициентом 0.01).

Результаты расчетов опубликовал как список на 30тыс жилых многоэтажных жилых домов для Москвы, где для каждого из домов расчитано число объектов инфраструктуры, связанной с детьми, в пешей доступности до 2км. Можете загрузить его в Excel или базу данных и фильтровать и сортировать строки так как удобно именно вам. В данных есть адреса домов и название района.

30тыс. домов Москвы. Чем светлее точка, тем меньше вышеназванной инфраструктуры в окрестностях дома
30тыс. домов Москвы. Чем светлее точка, тем меньше вышеназванной инфраструктуры в окрестностях дома

Моя модель достаточно простая и не учитывает что-либо кроме пешеходной дистанции до объектов инфраструктуры.

Если вы не программист, а интересны результаты, просто пропускайте следующий раздел.

Как рассчитать

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

Уже описывал по шагам как подготовить исходные данные для анализа. Но если у вас вдруг нет ресурсов или желания для таких расчетов, то можете взять предрасчитаные данные для пешеходных расстояний от жилых домов до мест в окрестностях: https://github.com/igor-suhorukov/igor-suhorukov.github.io/blob/main/data/distmsk_*.parquet (где под * номера от 0 до 21). Загружать эти файлы в таблицу duckdb_building нужно, чтобы обогатить данные адресом: номером дома, названием улицы и района.

Для загрузки данных в Parquet формате пришлось стряхнуть пыль со своего проекта arrow_to_database, обновить его зависимости до последней версии, поправил код и написал сборку проекта в Dockerfile. Проект позволяет используя библиотеку Apache Arrow загружать данные из файлов Parquet, ORC, Arrow Feather в базы данных PostgreSQL, H2, QuestDB. Жду не дождусь когда уже в PostgreSQL или psql появится возможность загружать parquet файлы без стороннего инструментария. Основной функционал проекта по загрузке данных:

 void copyArrowDatasetIntoPreparedStatement(int batchSize, FileFormat fileFormat,
                                              String datasetUri, PreparedStatement preparedStatement) throws Exception {
        try (BufferAllocator allocator = new RootAllocator()) {
            FileSystemDatasetFactory factory = new FileSystemDatasetFactory(allocator,
                                                        NativeMemoryPool.getDefault(), fileFormat, datasetUri);
            final Dataset dataset = factory.finish();
            ScanOptions options = new ScanOptions(batchSize);
            final Scanner scanner = dataset.newScan(options);
            try {
                long rowCount=0;
                try (ArrowReader reader = scanner.scanBatches()) {
                    while (reader.loadNextBatch()) {
                        try (VectorSchemaRoot root = reader.getVectorSchemaRoot()) {
                            JdbcParameterBinder binder = JdbcParameterBinder
                                    .builder(preparedStatement, root).bindAll().build();
                            while (binder.next()) {
                                preparedStatement.addBatch();
                                rowCount++;
                            }
                            preparedStatement.executeBatch();
                        }
                    }
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
                LOGGER.info("Total rows imported: {}", rowCount);
            } finally {
                AutoCloseables.close(scanner, dataset);
            }
        }
    }

Происходит инициализация Dataset, создание Scanner и запись каждой порции данных( размер фрагмента задан параметром программы) из Arrow API в базу через JDBC. Остальной код в проекте нужен для конвертации схемы и парсинг параметров утилиты и интереса тут не представляет. Утилита также может автоматически создавать таблицу по схеме parquet файла, если указать create_table.

Импорт 55млн. строк данных в PostgreSQL :

[main] INFO org.apache.arrow.memory.BaseAllocator - Debug mode disabled. Enable with the VM option -Darrow.memory.debug.allocator=true.
[main] INFO org.apache.arrow.memory.DefaultAllocationManagerOption - allocation manager type not specified, using netty as the default type
[main] WARN org.apache.arrow.memory.CheckAllocator - More than one DefaultAllocationManager on classpath. Choosing first found
[main] INFO org.apache.arrow.memory.CheckAllocator - Using DefaultAllocationManager at memory-netty/14.0.1/arrow-memory-netty-14.0.1.jar!/org/apache/arrow/memory/DefaultAllocationManagerFactory.class
[main] INFO com.github.isuhorukov.arrow.jdbc.DatasetReader - Generated 'insert' query from Apache Arrow schema: insert into duckdb_building("h3_8", "building_id", "building_type", "distance", "categories", "design_ref", "name", "amenity", "leisure", "shop", "healthcare", "tourism", "historic", "sport", "memorial", "education", "religion", "office", "brand", "network", "operator") values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
[main] INFO com.github.isuhorukov.arrow.jdbc.DatasetReader - Total rows imported: 55180865

После подготовки необходимых данных расчет модели по домам явно не rocket science - просто суммы и фильтрация:

CREATE TABLE moscow_district AS select tags->'name' name,polygon from multipolygon where tags->'admin_level'='8' and tags->'boundary'='administrative';

CREATE INDEX idx_moscow_district_geometry ON moscow_district USING gist (polygon);

CREATE TABLE infrastructure_for_children AS
  select 
     (select name 
      from moscow_district 
      where st_contains(polygon, centre) limit 1) district,
  tags->'addr:street' street, 
  tags->'addr:housenumber' housenumber,  
  totalscore,
  kindergarten>0 and school>0 and college>0 and university>0 and language_school>0 and music_school>0 and training>0 and sports_centre>0 and community_centre>0 and playground>0 and clinic>0 all_infra,
  kindergarten::smallint,
  school::smallint,
  college::smallint,
  university::smallint,
  language_school::smallint,
  music_school::smallint,
  training::smallint,
  sports_centre::smallint,
  community_centre::smallint,
  playground::smallint,
  clinic::smallint
from (select building_id,building_type,
       (count(*) filter (where amenity='kindergarten' or amenity='childcare') +
       count(*) filter (where amenity='school') +
       count(*) filter (where amenity='college') +
       count(*) filter (where amenity='university') +
       count(*) filter (where amenity='language_school') +
       count(*) filter (where amenity='music_school') +
       count(*) filter (where amenity='training') +
       count(*) filter (where leisure='sports_centre') +
       count(*) filter (where amenity='community_centre') +
       0.01*count(*) filter (where leisure='playground') +
       0.01*count(*) filter (where amenity='clinic'))::float4 totalScore,
       count(*) filter (where amenity='kindergarten' or amenity='childcare') kindergarten,
       count(*) filter (where amenity='school') school,
       count(*) filter (where amenity='college') college,
       count(*) filter (where amenity='university') university,
       count(*) filter (where amenity='language_school') language_school,
       count(*) filter (where amenity='music_school') music_school,
       count(*) filter (where amenity='training') training,
       count(*) filter (where leisure='sports_centre') sports_centre,
       count(*) filter (where amenity='community_centre') community_centre,
       count(*) filter (where leisure='playground') playground,
       count(*) filter (where amenity='clinic') clinic
      from duckdb_building 
        group by 1,2) stat 
  inner join  geometry_global_view g 
    on stat.building_id=id and stat.building_type=type
        and (g.tags->'building:levels' is not null and g.tags->'building:levels'~'^\d+$' and (g.tags->'building:levels')::integer>2) -- только многоэтажные дома
 order by totalscore desc;

Для рейтинга из общего списка нужно выбрать по одному дому с самым большим totalScore и наличием всей инфраструктуры в первую очередь, если опция доступна:

select district, street, housenumber,
        totalscore,all_infra,
  kindergarten, school,college, university, language_school, music_school,training,sports_centre,community_centre,playground,clinic 
from 
 (select *, row_number() over (partition by district order by all_infra desc,totalscore desc) 
   from infrastructure_for_children) a 
where row_number=1 and district is not null
order by totalscore desc;

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

Всегда ли и все ли исходные данные проекта OpenStreetMap правильные? Я отвечу - не всегда. Постоянно есть что улучшать и в исходных данных и к чему стремиться в модели, сохраняя при этом ее прозрачность и простоту. Считаю, что неполные бесплатные данные лучше их отсутствия / недоступности из-за стоимости комерческих геоданных.

Рейтинг лучших домов по районам

Если выбрать только одно значение для каждого района Москвы в следующем порядке, то получим рейтинг жилья по районам:

  1. сначала дома где в округе есть вся вышеперечисленная инфраструктура;

  2. и в порядке убывания totalScore для этого района.

Можно скачать по ссылке на GitHub с более подробной информацией по числу садиков, школ...

По одному самому лучшему дому на район. Чем светлее точка на карте, тем меньше вышеназванной инфраструктуры в окрестностях дома
По одному самому лучшему дому на район. Чем светлее точка на карте, тем меньше вышеназванной инфраструктуры в окрестностях дома
            Район                |            Улица              |    Дом      | totalscore | вся ли инф-ра? 
---------------------------------+-------------------------------+-------------+------------+---------------
 Красносельский район            | Сретенский бульвар            | 3/4 с2      |     190.16 | да
 Мещанский район                 | Рождественский бульвар        | 11          |     183.83 | да
 Басманный район                 | Мясницкая улица               | 30/2 с3     |      181.1 | да
 Тверской район                  | Петровский бульвар            | 23          |     178.83 | да
 Гагаринский район               | Ленинский проспект            | 79          |     166.48 | да
 Таганский район                 | Яузский бульвар               | 14/8        |     164.79 | да
 Пресненский район               | Садовая-Кудринская улица      | 6 с1        |     163.87 | да
 Ломоносовский район             | Ленинский проспект            | 81/2        |     163.42 | да
 район Арбат                     | Большой Девятинский переулок  | 1/17        |     156.64 | да
 Обручевский район               | Ленинский проспект            | 95Б         |     143.14 | да
 район Измайлово                 | Сиреневый бульвар             | 32          |     142.79 | да
 район Северное Измайлово        | Сиреневый бульвар             | 37/40       |     138.86 | да
 Академический район             | Нахимовский проспект          | 56          |     137.37 | да
 район Черёмушки                 | улица Архитектора Власова     | 27          |     135.24 | да
 район Марьина Роща              | Октябрьская улица             | 2           |     133.77 | да
 район Проспект Вернадского      | улица Удальцова               | 1 к1        |     131.96 | да
 район Хамовники                 | Смоленская улица              | 3           |     130.26 | да
 район Беговой                   | Бумажный проезд               | 2/2         |     128.49 | да
 Хорошёвский район               | Ленинградский проспект        | 59          |     127.45 | да
 район Замоскворечье             | улица Зацепский Вал           | 5           |      126.3 | да
 район Раменки                   | проспект Вернадского          | 10 к1       |     125.61 | да
 район Аэропорт                  | улица Усиевича                | 27 к1       |     125.43 | да
 Савёловский район               | улица 8 Марта                 | 8 к1        |     118.95 | да
 Орехово-Борисово Южное          | Ореховый бульвар              | 20/2        |     117.84 | нет
 район Сокол                     | Ленинградский проспект        | 63          |     117.31 | да
 район Орехово-Борисово Северное | Борисовский проезд            | 44 к2       |     116.63 | нет
 район Зябликово                 | Ореховый бульвар              | 29/49       |     115.83 | нет
 район Якиманка                  | улица Серафимовича            | 2/20        |     115.77 | да
 район Северное Тушино           | улица Героев Панфиловцев      | 3           |     114.98 | нет
 Южнопортовый район              | 3-й Крутицкий переулок        | 11          |     113.49 | да
 Тимирязевский район             | Чуксин тупик                  | 3           |     112.86 | да
 район Марьино                   | Братиславская улица           | 5           |     111.94 | да
 Бутырский район                 | Бутырская улица               | 4           |     111.75 | да
 район Люблино                   | улица Верхние Поля            | 35 к5       |     110.22 | да
 район Кузьминки                 | Волгоградский проспект        | 82/37       |     109.92 | да
 район Гольяново                 | Щёлковское шоссе              | 79 к1       |     108.18 | нет
 район Восточное Измайлово       | Первомайская улица            | 74          |     105.42 | да
 район Сокольники                | улица Гастелло                | 41          |     101.84 | да
 район Преображенское            | улица Богородский Вал         | 6 к1        |     100.14 | да
 район Богородское               | Краснобогатырская улица       | 79 к3А      |       99.3 | да
 Бескудниковский район           | Дмитровское шоссе             | 103         |      97.76 | нет
 Даниловский район               | Мытная улица                  | 48          |      97.47 | да
 район Бибирево                  | Шенкурский проезд             | 14          |      96.68 | нет
 район Митино                    | Митинская улица               | 23          |      96.04 | нет
 район Текстильщики              | 11-я улица Текстильщиков      | 12А         |      95.21 | да
 Дмитровский район               | Дмитровское шоссе             | 107 к1      |      94.44 | нет
 район Щукино                    | улица Маршала Рыбалко         | 1           |       93.7 | да
 район Лефортово                 | Красноказарменная улица       | 3           |      93.59 | да
 район Котловка                  | улица Кржижановского          | 27          |      92.89 | нет
 Бабушкинский район              | Ленская улица                 | 19          |      91.31 | да
 Лосиноостровский район          | Анадырский проезд             | 25 к2       |      90.75 | нет
 Алексеевский район              | проспект Мира                 | 182         |      90.43 | да
 район Ясенево                   | Ясногорская улица             | 13 к2       |      90.02 | нет
 район Зюзино                    | Болотниковская улица          | 54 к1       |      89.59 | да
 район Дорогомилово              | Большая Дорогомиловская улица | 4           |       89.5 | да
 район Хорошёво-Мнёвники         | улица Маршала Тухачевского    | 21 к1       |      89.33 | нет
 район Лианозово                 | Алтуфьевское шоссе            | 83          |      88.87 | нет
 район Северное Медведково       | Сухонская улица               | 11          |      88.69 | нет
 район Перово                    | Федеративный проспект         | 16 к1       |      88.39 | нет
 район Ховрино                   | улица Лавочкина               | 34 к1       |      87.79 | да
 район Восточное Дегунино        | улица 800-летия Москвы        | 14          |      87.58 | нет
 Рязанский район                 | Волжский бульвар              | 13 к1       |      86.68 | да
 район Отрадное                  | Северный бульвар              | 8           |      85.41 | нет
 район Соколиная Гора            | Большая Семёновская улица     | 29/2        |      85.39 | да
 Останкинский район              | Звёздный бульвар              | 1           |      84.64 | да
 район Кунцево                   | Ярцевская улица               | 27 к1       |      84.57 | нет
 район Новогиреево               | Мартеновская улица            | 16/36       |      84.26 | нет
 район Свиблово                  | Вересковая улица              | 1 к2        |      82.96 | да
 район Южное Тушино              | улица Свободы                 | 43          |      82.29 | да
 район Царицыно                  | Кантемировская улица          | 31          |      81.87 | нет
 Головинский район               | улица Лавочкина               | 28/42       |      80.72 | да
 Можайский район                 | Гвардейская улица             | 15 к1       |      79.32 | нет
 район Коньково                  | Профсоюзная улица             | 110 к2      |      78.75 | нет
 район Левобережный              | Фестивальная улица            | 4           |      77.87 | да
 Нагорный район                  | Болотниковская улица          | 11 к1       |      77.67 | нет
 район Ивановское                | Напольный проезд              | 1           |      76.81 | нет
 район Чертаново Северное        | Чертановская улица            | 1А к1       |      76.25 | нет
 Ярославский район               | Хибинский проезд              | 26          |      75.48 | нет
 район Коптево                   | улица Космонавта Волкова      | 29          |      74.97 | нет
 Донской район                   | Донская улица                 | 33          |      74.48 | да
 район Братеево                  | улица Борисовские Пруды       | 16 к2       |      74.46 | нет
 район Строгино                  | улица Маршала Катукова        | 20 к1       |      74.17 | да
 район Южное Медведково          | Заповедная улица              | 18 к2       |      73.61 | да
 район Западное Дегунино         | Коровинское шоссе             | 15 к1       |      73.24 | нет
 район Чертаново Центральное     | Кировоградская улица          | 32 к1       |      72.54 | нет
 район Выхино-Жулебино           | Рязанский проспект            | 58/1        |      71.61 | нет
 Алтуфьевский район              | Алтуфьевское шоссе            | 64В         |      71.57 | да
 район Тёплый Стан               | улица Островитянова           | 16 к2       |      71.54 | нет
 район Южное Бутово              | Южнобутовская улица           | 9           |      71.26 | нет
 Войковский район                | улица Космонавта Волкова      | 17 к1       |      69.81 | нет
 район Солнцево                  | улица Богданова               | 26 к2       |      66.57 | нет
 район Чертаново Южное           | Кировоградский проезд         | 3 к1        |      66.46 | нет
 район Москворечье-Сабурово      | Кантемировская улица          | 16 к1А      |      66.42 | нет
 район Ростокино                 | улица Сергея Эйзенштейна      | 2           |      66.14 | да
 Тропарёво-Никулино              | проспект Вернадского          | 105 к4      |      65.95 | нет
 район Крылатское                | Рублёвское шоссе              | 34 к1       |      65.48 | нет
 район Вешняки                   | улица Старый Гай              | 2 к3        |      64.12 | да
 район Печатники                 | улица Кухмистерова            | 20          |      62.96 | нет
 район Фили-Давыдково            | Инициативная улица            | 5 к1        |      61.81 | нет
 район Новокосино                | Суздальская улица             | 18 к3       |       60.8 | нет
 район Марфино                   | улица Кашёнкин Луг            | 2 к1        |      60.57 | нет
 район Нагатинский Затон         | Судостроительная улица        | 12          |      60.03 | нет
 Нижегородский район             | Боенский проезд               | 2           |      58.25 | нет
 район Нагатино-Садовники        | Нагатинская улица             | 32          |      57.96 | нет
 район Покровское-Стрешнево      | Малая Набережная улица        | 17/22       |      56.26 | да
 Ново-Переделкино                | улица Скульптора Мухиной      | 3           |      52.39 | нет
 район Филёвский Парк            | Кастанаевская улица           | 4           |      52.32 | да
 район Северное Бутово           | бульвар Дмитрия Донского      | 17          |      49.98 | нет
 район Очаково-Матвеевское       | Озёрная улица                 | 17          |      45.54 | да
 поселение Московский            | улица Зелёная Горка           | 1 к3        |      42.37 | нет
 район Косино-Ухтомский          | улица Руднёвка                | 3           |      41.89 | нет
 район Северный                  | Дмитровское шоссе             | 165Е к7     |      37.83 | нет
 район Бирюлёво Восточное        | 6-я Радиальная улица          | 3 к1        |      33.64 | нет
 район Метрогородок              | Открытое шоссе                | 17 к1       |      33.61 | нет
 поселение Внуковское            | улица Анны Ахматовой          | 10          |      33.59 | нет
 поселение Сосенское             | Фитарёвская улица             | 19          |      27.23 | нет
 район Некрасовка                | Рождественская улица          | 33          |      23.92 | нет
 поселение Воскресенское         | Чечёрский проезд              | 122 к2      |      20.53 | нет
 район Внуково                   | Спортивная улица              | 2/11        |      14.59 | нет
(119 rows)
Просмотр этого же списка в интерфейсе GitHub
Просмотр этого же списка в интерфейсе GitHub

Выводы

Больше всего инфраструктуры для детей Москвы доступно у домов в ЦАО, Ломоносовском районе, районе Аэропорт и в Измайлово. Но при этом почти в каждом районе столицы инфраструктуры предостаточно, если судить по рассчитаному списку.

Данных вокруг нас очень много. Но при этом мало кто задумывается какую ценность эти данные могут дать для решений в жизни, основанных не на эмоциях а на объективных факторах. При этом у всех нас есть возможность улучшать и дополнять данные о реальном мире, а также строить модели которые пригодятся именно вам и вашей семье. Помните, что использование любой модели - это как навигатор с картой в автомобиле: можно принять информацию к сведению, но всегда отвественность за действия остается на вас.

Творчество нейросети SD на тему лучшего жилья в многоэтажном доме для семьи
Творчество нейросети SD на тему лучшего жилья в многоэтажном доме для семьи

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

Комментарии (21)


  1. Javian
    28.11.2023 05:59
    +1

    Чем светлее точка на карте, тем меньше вышеназванной инфраструктуры

    Тем новее жилая застройка. Наверное следовало бы учитывать год застройки микрорайона. Смешивается микрорайон советского проекта, где вся инфраструктура строилась по принципу 15-минутуной пешей доступности. И современная застройка - "максимум площади на продажу".


    1. igor_suhorukov Автор
      28.11.2023 05:59

      Спасибо! Отличная мысль с годом постройки так как уже в данных есть поле с типовым проектом домов чтобы отличать здания панельный дом 60х от башни Вулыха итп.


    1. igor_suhorukov Автор
      28.11.2023 05:59

      Немного статистики по годам:

      create table kids_infra_house as select distinct building_id,building_type,g.tags from duckdb_building stat inner join  geometry_global_view g  on stat.building_id=g.id and stat.building_type=g.type and (g.tags->'building:levels' is not null and g.tags->'building:levels'~'^\d+$' and (g.tags->'building:levels')::integer>2);
      
      osmworld=# select count(*) from kids_infra_house where tags?'start_date';
       count 
      -------
       20515
      
      
      select tags->'start_date' year,count(*) from kids_infra_house where tags?'start_date' group by 1 order by 2 desc;
      Число домов в используемых данных, по годам постройки
            year           | count 
      ---------------------+-------
       1960                |  1103
       1962                |   961
       1961                |   955
       1959                |   877
       1963                |   856
       1966                |   811
       1965                |   807
       1964                |   775
       1958                |   753
       1967                |   712
       1968                |   679
       1969                |   634
       1970                |   582
       1971                |   518
       1972                |   460
       1957                |   455
       1974                |   451
       1973                |   403
       1975                |   371
       1979                |   346
       1977                |   313
       1976                |   295
       1980                |   286
       1978                |   279
       1981                |   269
       1985                |   230
       1982                |   230
       1983                |   213
       1984                |   200
       1987                |   188
       1956                |   186
       1995                |   179
       2001                |   175
       2004                |   170
       1986                |   164
       1997                |   162
       2000                |   160
       2002                |   154
       1999                |   151
       2003                |   147
       1998                |   136
       1989                |   129
       2006                |   127
       1988                |   127
       1996                |   125
       2005                |   118
       2007                |    94
       1994                |    93
       1991                |    85
       2008                |    83
       1990                |    74
       2010                |    71
       1992                |    71
       2014                |    66
       2009                |    66
       2016                |    64
       2011                |    64
       1993                |    64
       1955                |    60
       2017                |    51
       2015                |    50
       2013                |    46
       2012                |    41
       2019                |    24
       1954                |    22
       1928                |    19
       2018                |    18
       1953                |    18
       2020                |    17
       2020-01-14          |    15
       1936                |    12
       1935                |    12
       2022-03-31          |    12
       2018-12-18          |    11
       2021                |    11
       1952                |    11
       2017-12-27          |    10
       1950                |     9
       2017-10-31          |     8
       2020-12-30          |     8
       2016-12-26          |     7
       2019-08-12          |     7
       2020-01-09          |     7
       1927                |     7
       2018-12-26          |     7
       1914                |     7
       2021-08-06          |     7
       2019-04-12          |     6
       1917                |     6
       2020-10-28          |     6
       1931                |     6
       1912                |     6
       2018-12-28          |     6
       2019-01-11          |     6
       2022-08-11          |     6
       1938                |     5
       2019-12-27          |     5
       2019-06-26          |     5
       2018-12-22          |     5
       2019-10-08          |     5
       2021-09-24          |     5
       2022                |     5
       2019-12-30          |     5
       1930                |     4
       2021-10-28          |     4
       2016-11-02          |     4
       2021-09-10          |     4
       1860                |     4
       2021-11-19          |     4
       1949                |     4
       1929                |     4
       1932                |     4
       1908                |     4
       1934                |     4
       1940                |     4
       2018-09-21          |     4
       1939                |     4
       1900                |     4
       2022-08-04          |     4
       2022-06-01          |     3
       2022-07-07          |     3
       2020-03-25          |     3
       2018-12-10          |     3
       2019-02-27          |     3
       2020-12-31          |     3
       2017-12-30          |     3
       2020-04-23          |     3
       2021-04-15          |     3
       2021-03-26          |     3
       2022-01-21          |     3
       2018-10-17          |     3
       2022-01-01          |     3
       2022-04-13          |     3
       2019-10-04          |     3
       2020-02-03          |     3
       1890                |     3
       2022-04-20          |     3
       1915                |     3
       2021-12-30          |     3
       2022-06-27          |     3
       2019-08-29          |     3
       1905                |     3
       1925                |     3
       2018-10-26          |     3
       2021-08-31          |     3
       2022-01-10          |     3
       2021-04-30          |     3
       1880                |     3
       1937                |     3
       2020-03-24          |     3
       2022-08-26          |     3
       2021-01-07          |     3
       2021-07-23          |     3
       2018-12-12          |     3
       1906                |     3
       2019-06-27          |     3
       2019-07-10          |     3
       2019-04-30          |     3
       2021-04-08          |     3
       1910                |     3
       2019-05-08          |     2
       2022-09-26          |     2
       2020-08-26          |     2
       1933                |     2
       2022-05-24          |     2
       1911                |     2
       2021-10-29          |     2
       2021-09-13          |     2
       2021-06-08          |     2
       2020-02-06          |     2
       2019-02-12          |     2
       2018-09-07          |     2
       2022-03-21          |     2
       2022-11-10          |     2
       1944                |     2
       2021-11-29          |     2
       2019-04-09          |     2
       1909                |     2
       1899..1902          |     2
       2018-06-29          |     2
       2022-08-18          |     2
       2021-06-30          |     2
       2020-11-26          |     2
       2021-06-22          |     2
       2019-11-18          |     2
       2021-10-15          |     2
       2019-01-17          |     2
       2021-06-16          |     2
       2022-07-20          |     2
       2019-04-02          |     2
       2021-03-01          |     2
       2021-04-06          |     2
       2021-12-15          |     2
       2019-11-26          |     2
       2018-12-03          |     2
       2022-05-18          |     2
       2019-12-31          |     2
       2019-08-09          |     2
       2018-12-11          |     2
       2020-10-08          |     2
       2022-05-27          |     2
       2019-06-18          |     2
       2020-04-17          |     2
       2023-01-19          |     2
       2021-12-20          |     2
       2022-02-28          |     2
       2022-02-01          |     2
       2022-08-16          |     2
       2018-07-27          |     2
       2021-04-27          |     2
       2018-09-28          |     2
       2018-10-24          |     2
       2018-09-27          |     2
       1951                |     2
       2021-03-30          |     2
       2017-12-31          |     2
       2022-09-01          |     2
       2020-09-08          |     2
       2020-04-06          |     2
       2019-02-22          |     2
       2020-06-30          |     2
       2021-09-30          |     2
       2019-01-09          |     2
       2018-10-31          |     2
       2021-08-27          |     2
       2022-02-02          |     2
       2020-01-20          |     2
       2021-09-23          |     2
       1926                |     2
       1907                |     2
       2020-12-29          |     2
       2019-08-23          |     2
       2019-11-20          |     2
       2020-08-24          |     2
       2021-12-17          |     2
       2019-09-30          |     2
       2020-10-27          |     2
       1941                |     2
       2019-02-15          |     2
       2022-01-12          |     1
       2020-01-13          |     1
       2019-07-01          |     1
       2022-09-30          |     1
       2019-04-03          |     1
       2022-09-29          |     1
       2019-09-09          |     1
       2019-10-29          |     1
       2020-12-04          |     1
       2022-05-06          |     1
       2019-07-31          |     1
       2020-09-25          |     1
       2020-10-07          |     1
       2020-06-03          |     1
       2019-10-02          |     1
       2016-12-30          |     1
       2022-09-09          |     1
       1936-1940           |     1
       2019-08-13          |     1
       2021-03-25          |     1
       1810                |     1
       2019-02-19          |     1
       2018-11-08          |     1
       2022-07-15          |     1
       1902                |     1
       2021-10-20          |     1
       2021-06-10          |     1
       2020-10-21          |     1
       2019-03-07          |     1
       2020-12-28          |     1
       2019-02-21          |     1
       2021-07-30          |     1
       2019-03-29          |     1
       2019-12-06          |     1
       2020-04-13          |     1
       2022-03-16          |     1
       1885                |     1
       2018-05-17          |     1
       2022-07-06          |     1
       2022-04-29          |     1
       2019-01-29          |     1
       2021-10-27          |     1
       2021-06-29          |     1
       2017-08-22          |     1
       2018-07-02          |     1
       2019-07-23          |     1
       2017-04-03          |     1
       2017-12-26          |     1
       2018-07-23          |     1
       2020-06-04          |     1
       2020-03-19          |     1
       2022-07-19          |     1
       2022-08-03          |     1
       2021-10-25          |     1
       2022-09-14          |     1
       2022-09-15          |     1
       2019-08-02          |     1
       2019-05-30          |     1
       2021-03-31          |     1
       2020-02-14          |     1
       2018-09-12          |     1
       2021-08-17          |     1
       2023-02-02          |     1
       2019-02-06          |     1
       2018-04-28          |     1
       2023-04-11          |     1
       2021-12-24          |     1
       2020-10-12          |     1
       2021-10-21          |     1
       2021-07-05          |     1
       2023-01-09          |     1
       2020-01-10          |     1
       2021-07-06          |     1
       2021-06-24          |     1
       2020-07-24          |     1
       2020-04-29          |     1
       2019-01-10          |     1
       2020-11-06          |     1
       2022-08-10          |     1
       2018-12-06          |     1
       2022-07-29          |     1
       2021-02-01          |     1
       2021-12-03          |     1
       2019-08-19          |     1
       2020-01-27          |     1
       2018-11-30          |     1
       2021-12-21          |     1
       2015-12-30          |     1
       2023-02-06          |     1
       2017-10-12          |     1
       2020-06-25          |     1
       late C19            |     1
       2021-11-12          |     1
       2020-12-21          |     1
       2020-07-31          |     1
       2018-12-19          |     1
       2022-04-12          |     1
       2021-02-17          |     1
       2022-03-02          |     1
       2019-04-19          |     1
       late C18..early C19 |     1
       2021-12-28          |     1
       2021-06-02          |     1
       2021-05-13          |     1
       2021-01-13          |     1
       2020-12-03          |     1
       2020-04-08          |     1
       2021-02-04          |     1
       2019-05-28          |     1
       2019-03-04          |     1
       2019-11-12          |     1
       2021-11-11          |     1
       2022-08-22          |     1
       2020-10-05          |     1
       1904                |     1
       2017-12-21          |     1
       2023-01-16          |     1
       2021-11-10          |     1
       1800                |     1
       2021-12-27          |     1
       197                 |     1
       2021-08-25          |     1
       1947-1952           |     1
       2019-09-06          |     1
       2019-09-04          |     1
       2020-01-29          |     1
       1887                |     1
       1840-1912           |     1
       2019-10-30          |     1
       2020-02-28          |     1
       2021-12-23          |     1
       2021-07-29          |     1
       2021-07-27          |     1
       2022-03-25          |     1
       1899                |     1
       2021-12-29          |     1
       1977..1978          |     1
       2020-09-21          |     1
       2021-08-11          |     1
       2019-10-31          |     1
       2022-05-25          |     1
       2017-12-12          |     1
       2015-05-07          |     1
       2021-09-06          |     1
       2022-08-17          |     1
       1756-1874           |     1
       1833                |     1
       2021-05-24          |     1
       2021-06-21          |     1
       2021-12-13          |     1
       2020-06-19          |     1
       2018-12-13          |     1
       2022-09-28          |     1
       1850                |     1
       2019-08-21          |     1
       2022-01-19          |     1
       2021-12-09          |     1
       2021-02-24          |     1
       2019-10-03          |     1
       2018-07-31          |     1
       2020-11-23          |     1
       2019-07-19          |     1
       2016-11-30          |     1
       2019-04-10          |     1
       2020-01-30          |     1
       2021-06-28          |     1
       2022-07-04          |     1
       2017-12-08          |     1
       2020-05-15          |     1
       2022-08-30          |     1
       2021-05-11          |     1
       2019-02-28          |     1
       2019-05-14          |     1
       2020-11-24          |     1
       2018-07-12          |     1
       2022-01-13          |     1
       2019-11-15          |     1
       2021-07-26          |     1
       2019-10-25          |     1
       2019-08-28          |     1
       1903                |     1
       2022-05-17          |     1
       2023-03-20          |     1
       2018-09-18          |     1
       2019-03-12          |     1
       1875                |     1
       2018-10-12          |     1
       2018-03-27          |     1
       2020-03-03          |     1
       2020-08-12          |     1
       2021-06-15          |     1
       2022-07-25          |     1
       2020-12-07          |     1
       2019-09-17          |     1
       1869                |     1
       2018-03-15          |     1
       2019-07-17          |     1
       2021-08-24          |     1
       2020-11-02          |     1
       2019-04-08          |     1
       2021-03-23          |     1
       1846                |     1
       2022-04-14          |     1
       2021-09-15          |     1
       2022-02-18          |     1
       2022-12-02          |     1
       2022-05-19          |     1
       2022-11-18          |     1
       2021-04-19          |     1
       2018-11-09          |     1
       2019-02-11          |     1
       2021-06-25          |     1
       2019-05-21          |     1
       2021-12-16          |     1
       2019-03-06          |     1
       2019-09-23          |     1
       2017-04-27          |     1
       1948                |     1
       2019-03-25          |     1
       2021-03-18          |     1
       2018-12-21          |     1
       2021-11-01          |     1
       2021-08-05          |     1
       2021-11-26          |     1
       2022-06-15          |     1
       2021-03-17          |     1
       2020-05-28          |     1
       2019-09-02          |     1
       2021-10-13          |     1
       2020-06-17          |     1
       2020-09-22          |     1
      (470 rows)

      Похоже надо парсер делать, судя по формату года постройки в данных.


      1. Javian
        28.11.2023 05:59

        Похоже на данные ГИС ЖКХ. У них если точная дата не известна, то, например, в случае до революционного здания пишут 1914. 1940 - если довоенный.


        1. igor_suhorukov Автор
          28.11.2023 05:59

          Возможно, но на задачу отличить советскую застройку от современной не должны повлиять значения: 1914 или 1940


          1. Javian
            28.11.2023 05:59

            Они по влияют если вникать в жилищные условия.


            1. igor_suhorukov Автор
              28.11.2023 05:59

              Конечно, но только для тех кто предпочитает жить в доме построенном до 1940 года.


              1. Javian
                28.11.2023 05:59

                Например в таком 1931 года постройки:

                Помимо потомков старожилов, в доме живут звёзды эстрады, театра и кино, деятели науки и культуры. Часть квартир сдаётся в аренду, в том числе сотрудникам крупных международных корпораций


                1. igor_suhorukov Автор
                  28.11.2023 05:59

                  Целевая аудитория этого дома вряд ли читает Хабр.

                  osmworld=# create table building_with_and_date as select building_id,building_type,start_date from duckdb_building group by 1,2,3;
                  SELECT 41084
                  Time: 8158,811 ms (00:08,159)
                  osmworld=# select count(*) from building_with_and_date where start_date<=1940;
                   count 
                  -------
                     206
                  (1 row)

                  Итого в базе 206 домов старше 1940 года постройки (из 30тыс. в этой статье) и распределение для них по годам выглядит так:
                  select start_date,count(*) from building_with_and_date where start_date<=1940 group by 1 order by 1;
                  start_date | count 
                  ------------+-------
                          197 |     1
                         1670 |     1
                         1756 |     1
                         1773 |     1
                         1800 |     1
                         1810 |     1
                         1812 |     1
                         1818 |     2
                         1825 |     1
                         1827 |     1
                         1833 |     2
                         1840 |     2
                         1846 |     1
                         1850 |     2
                         1860 |     4
                         1869 |     1
                         1870 |     1
                         1871 |     1
                         1875 |     2
                         1880 |     6
                         1885 |     1
                         1887 |     1
                         1890 |     5
                         1898 |     1
                         1899 |     1
                         1900 |     6
                         1902 |     1
                         1903 |     2
                         1904 |     3
                         1905 |     4
                         1906 |     3
                         1907 |     2
                         1908 |     4
                         1909 |     3
                         1910 |     4
                         1911 |     2
                         1912 |     6
                         1914 |     7
                         1915 |     3
                         1917 |    12
                         1925 |     3
                         1926 |     2
                         1927 |     7
                         1928 |    19
                         1929 |     5
                         1930 |     4
                         1931 |     6
                         1932 |     4
                         1933 |     2
                         1934 |     5
                         1935 |    13
                         1936 |    13
                         1937 |     5
                         1938 |     6
                         1939 |     4
                         1940 |     4
                  (56 rows)

                  в случае до революционного здания пишут 1914. 1940 - если довоенный.

                  По этим данным не вижу чтобы ваше предположение соответствовало действительности.


                  1. Javian
                    28.11.2023 05:59

                    Возможно сейчас сведения о МКД в ГИС ЖКХ внесли управляющие компании. И такие вещи массово уже не наблюдаются.


  1. sepuka
    28.11.2023 05:59
    +1

    Учитывает ли модель переход улицы? Сейчас часто там, где раньше можно было просто перейти улицу, надо идти вдаль, там походить по лестницам, потом кружным путём вернуться. Сто метров расстояния вполне могут оказаться километром перемещения.


    1. igor_suhorukov Автор
      28.11.2023 05:59

      Учитывает, в основе проверенный движок построения маршрутов GraphHopper 8 а не "велосипедный" роутер написанный на коленке.


  1. PhysicalGraffiti
    28.11.2023 05:59

    Странные результаты получились. Вот улица Осташковская. Дом 9к1 есть, 9к5 есть, а стоящий между ними 9к2 - отсутствует.


    1. igor_suhorukov Автор
      28.11.2023 05:59

      Яндекс панорамы для него не доступны, проверил. На OpenStreetMap он 9к2 обозначен как стройка. Дом сдан в эксплуатацию?


      1. PhysicalGraffiti
        28.11.2023 05:59

        Дом сдан в эксплуатацию. В нем живут уже год или более.


        1. igor_suhorukov Автор
          28.11.2023 05:59

          Если вы в этом уверены, то можете обновить данные в OpenStreetMap для дома.


  1. KapasMordorov
    28.11.2023 05:59

    Надо как-то разбираться с преобладанием одного показателя.

    Аэропорт - район, где много ВУЗов. В остальном ничего примечательного.

    И где Куркино?


    1. igor_suhorukov Автор
      28.11.2023 05:59

      И где Куркино?

      На карте отсутствует так как полигон, по которому извлекались данные для Москвы из всего Центрального федерального округа, этот район не включает.

      Надо как-то разбираться с преобладанием одного показателя.

      Специально для этого есть детальная выгрузка и каждый может написать свою формулу для totalScore


    1. igor_suhorukov Автор
      28.11.2023 05:59

      Аэропорт - район, где много ВУЗов. В остальном ничего примечательного.

      Вы недооцениваете район Аэропорт

      улица Усиевича 27 к1 - вся инфраструктура из статьи есть в окрестностях и totalscore=125.43

      В окрестностях 2км пешком:

      • 51 детсада (kindergarten)

      • 30 школ (school)

      • 4 коледжа(college)

      • 11 университет (university)

      • 3 языковые школы (language_school)

      • 2 музыкальных школы (music_school)

      • 11 секций (training)

      • sports_centre=4 спортивных центра

      • 7 дома творчества/общественных заведений (community_centre)

      • 224 игровых площадки (playground)

      • 19 поликлиник (clinic)


  1. mikegordan
    28.11.2023 05:59

    Для меня важней чтобы рядом были много больших ТЦ, Павильоны Выставок, Здания где проводятся разные соревнования, Здания где проходят конференции.


    1. igor_suhorukov Автор
      28.11.2023 05:59

      Возможно Инфраструктура у жилья в столице вам поможет