How old is this house сайт
How old is this house сайт
How old is this house. Как я делал карту возраста домов Петербурга
Примерно из ниоткуда возникает идея сделать прекрасную складную карту Петербурга, показывающую возраст домов, их архитектурный стиль и на которой будут выделены здания — яркие представители стиля.
В памяти есть какие-то онлайн-проекты.
Беглый поиск дает много примеров из разных городов: Портланд, Рейкьявик, Нью-Йорк: Бруклин, Манхеттен, Барселона, Любляна, Львов, и даже проект масштаба страны, — Нидерланды.
Про Петербург тоже кое-что есть: например, отличные данные на Петроградку: «Ретроспектива застройки Петербурга» и проект Делового Петербурга: «Как застраивался Петербург: история строительства города за 68 секунд».
Цель — бумажная карта, к идее сделать how-old-is-this.house приду в процессе. Начинаю искать сырые данные.
Данные
Проекты Павла Суворова про Петроградку и Делового Петербурга ссылаются на «Технико-экономические паспорта многоквартирных домов» — это табличка на двадцать две с лишним тысячи домов, с разными характеристиками. Как я понял, она появилась благодаря программе взносов на капитальный ремонт. В таблице интерес представляют адрес и год постройки, географических координат, увы нет.
«Паспорта» лежат на портале «Открытые данные Петербурга». На нем же есть раздел «Карта» и, если хорошо искать, или у тебя знающие друзья, в разделе прочее есть слой «Объектно-адресная система Санкт-Петербурга». В нем прекрасно детализированная геометрия всех объектов, имеющих адрес в Петербурге, в атрибутах помимо названия объекта и адреса, регулярно встречается год постройки. Всего сто двадцать пять тысяч адресов, и сорок одна тысячa дат. Прекрасно подходит, только нужно избавиться от набережных, разъездных путей и прочего, что не является зданиями.
Eсли накинуть все адреса из паспортов домов как точки и выделить полигоны с годами из «объектно-адресной системы» и OSM — можно оценить покрытие. Оцениваем: очень много серых пятен — продолжаю искать исходные данные.
Искать долго не приходится, есть прекрасный «Архитектурный сайт Санкт-Петербурга CityWalls.ru». Деликатно собираем данные с портала, получаем табличку с адресом, годами постройки, именем архитектора, архитектурным стилем, ссылками на страницу сооружения и его фотографию. Таких записей 27 тысяч, но часть из них — утраченные здания.
Быстро превращаем адреса в точки, накидываем на карту вместе с предыдущими слоями — кажется покрытые очень приличное, ура!
Теперь нужно все эти данные собрать вместе, причесать и преобразовать в симпатичный вид.
Геопроцессинг
Для решения геоинформационных задач использовал QGIS и ArcGIS Pro, если нужно было что-то автоматизировать на Python — PyCharm.
В первую очередь, готовлю слой зданий, который потом буду максимально наполнять атрибутами. Основа слоя — «Объектно-адресная система Санкт-Петербурга» с портала открытых данных Санкт-Петербура, геометрия детальная, видимо, из кадастровых паспортов, смотрится красиво, бонусом забираем все мосты. Максимально избавляемся от ненужных нам полигонов набережных, подъездных путей, площадок складирования и т.п.
Из выгрузки OpenSteetMap забираем все полигоны, которые не пересекаются с полигонами из первого слоя. Получаем вот такой результат на сто сорок две тысячи объектов, полезные атрибуты из исходных слоёв уже включены.
Базовый слой зданий «Объектно-адресная система Санкт-Петербурга»+ OpenStreetMap
«Технико-экономические паспорта многоквартирных домов» — это таблица, в которой один из столбцов — адрес. Для того, чтобы использовать эти данные, таблицу нужно геокодировать — каждой записи сопоставить точку с координатами. Пишем простой скрипт на Python, который с помощью одного из сервисов геокодирования добавляет столбцы широты и долготы в таблицу. По пути теряем небольшой процент записей — некоторые адреса не удается обработать.
На сайте СityWalls.ru простая структура, данные несложно собрать автоматически. Пишу простенький парсер, который собирает ссылку на страницу дома, его id на портале, текстовую строку: года постройки, архитектурный стиль, архитектора, название, адрес и ссылку на фотографию. Координаты с сайта не подходят — пользователи часто отмечают точки рядом с домом, а не сам дом, поэтому сам геокодирую слой, используя уже готовый скрипт. В результате — географические точки с аттрибутами на двадцать семь тысяч зданий.
По простому принципу — если точка находится на полигоне — присоединяем информацию из «Паспортов» и CityWall к зданиям. Теперь про каждый полигон у нас есть табличка с кучей информации из разных источников:
Похоже на помойку. В итоге хочется иметь на каждое здание аккуратный набор атрибутов:
Эмпирически определяем приоритет источников для атрибутов, например, адреса лучше всего указаны в слое «Объектно-адресная система», хорошо — в «Паспортах» и примерно одинаково по качеству — в CityWalls и OpenStreetMap
Отдельный прикол с годом, для анализа нужно число, а во всех источниках — это строка, причем формат очень разнообразный: это может быть понятный «1703» или «1703г», список годов «1703,2020», период строительства «1822-1917», эпоха «до 1822», или прекрасное «1 9471 94 8», а также их комбинации и исключения.
Немного покрутив данные и пару раз сделав плохой выбор, нахожу правило, которое дает приличный результат: берем первое четырехзначное число из строки, если это не период, иначе — второе из первого периода в строке. Немного мучений с магией регулярных выражений, и в одну строку кода превращаем все текстовые поля дат в числа.
Зеленый — полигоны с годами, красный — без года
Если смотреть на процент заполнения (из ста сорока двух тысяч полигонов, года есть только для пятидесяти пяти), кажется, что покрытие вышло слабое, но если оценить на пространственное распределение, и качество объектов (например, дома против трансформаторных будок), получается прилично. Визуально кажется, что задачу слой выполняет: видны пространственные паттерны, дырок визуально мало, или они распределены равномерно. Слой интересно изучать, но перфекционист хочет полного покрытия, перфекциониста пока придушим.
Стоит оценить качество полученных данных. Из базовых методов, всегда доступно — можно посмотреть на график:
Сразу бросаются в глаза два пика — 1917 и 2008 год. Провалы после революции, Великой Отечественной войны и распада Советского союза — логичны и читаемы. Как быть с двумя выбросами? Гипотеза такая — многие дома дореволюционной постройки помечены как 1917, всякие варианты «до/предположительно» я отмечал.
2008 год — это, и вправду, период активного строительства в Петербурге. Цифры за 2008 на сайте Комитета по строительству и архитектуре меньше, но это ни о чем не говорит. К сожалению, я не помечал из какого источника взят год в итоговой таблице, расследование отложу на потом.
Беды большой в этом нет, но важно пользователя или предупредить об аномалиях, или показывать данные так, чтобы выбросы не влияли на достоверность визуализации.
Ура! Данные обработали, качество оценили, можно визуализировать.
Кстати, набор свободно доступен по лицензии CC BY-SA в разделе «Данные».
Палитра цветов
Опыт коллег подсказывает, что выигрышно смотрится представление возраста домов в непрерывной палитре от горячих цветов к холодным, на темном фоне. Попробуем:
возьмем стандартную темную базовую карту от ESRI и цветовую палитру Spectral, предустановленную в QGIS:
Смотрится эффектно, но хочется, чтобы было круто и как-то связано с Петербургом.
Задача — подобрать цвета для базовой карты и домов. Один из моих любимых фотографов Петербурга — Андрей Михайлов, цвета на его фотографиях созвучны с моим «чувством города». Из инстаграмма фотографа набираю картинки, чтобы выудить из них ключевые цвета.
Таким образом, красный цвет с фасада Пантелеймоновской церкви, желтый — с Адмиралтейства и Петропавловского собора, зеленый цвет — с башни Кунсткамеры и синий — с купола Троицкого собора собираются в палитру.
Попы грифонов с Банковского мостика и крыши Васильевского острова дают так нужный нам диапазон синих и темно-серых оттенков. Все же Петербург.
В Mapbox Studio весело и удобно делаем базовую карту:
studio.mapbox.com
Собираем все вместе. Нужно немного поэкспериментировать с распределением временной шкалы по палитре, в итоге информативным оказывается способ, когда в каждом цветовом отрезке равное число объектов.
Получается эффектно, мне нравится, эффект «светлячков» смотрится хорошо, картинка как будто светится. Переход от старого «лампового» уличного освещения к новому «светодиодному» получается обыгран в цветах, символично. При этом четко читаются эпохи, но не настолько, чтобы пики 1917 и 2008 были заметны — славно. Впереди следующий этап — нужно как-то это показать людям.
Проклятый-Старый.дом
Нужен прототип. Кидаю набор данных друзям, которые разрабатывают хаб пространственных данных «Геосемантика». На карте показываем возраст цветом, а при нажатии на дом показываем его атрибуты и фотографию, если она есть. Пробую веб карту на «ближнем круге».
Друзья-кролики положительно отзываются об исследовании карты как о процессе «залипательном», это наводит на мысль, что интерактивная веб-карта может быть хорошим способом показать собранные данные, а также их улучшить, если наладить механизм сбора правок.
Веб-разработчик я плюс-минус никакой, поэтому одновременно советуюсь с заинтересованными однокурсниками, изучаем платформы и реализации других подобных платформ. Требования примерно такие:
быстро отрисовывать наши сто двадцать тысяч полигонов в разработанном стиле на своей базовой карте
возможность фильтрации по временной шкале
показывать карточку объекта с атрибутами и фотографией
наладить сбор крауд-правок.
Получаю дружественный совет присмотреться к платформе Carto. Кроме сбора правок, так или иначе всем требованиям платформа отвечает, причем на бесплатных тарифах можно сделать довольно много. Немного шаманим с данными, чтобы они дружили с Carto, например, год, чтобы его красиво показывать на временной шкале-гистограмме, должен быть в формате DDMMYYHHMMSSZ, или длина текстового поля должна быть не более 255 знаков.
Колдуем над HTML карточкой объекта, чтобы она была красивой и показывала ссылки. Вздыхаем, что не все реализовано, как бы хотелось, а тонкая настройка возможна с API, что трудоемко и дорого. Получается довольно симпатичная, быстрая и отзывчивая веб-карта.
carto.com
Проблему сбора правок решаю в меру изящным костылем. Гугл-форму можно предзаполнить по параметрам в ссылке, а ответы она, форма, складывает в таблицу. Это нас вполне устраивает: в таком виде правки можно и проверять, и можно автоматически обновить слой. Генерирую ссылки для каждого из объектов (некоторые выходят очень длинными, но костыль есть костыль), прикручиваем ссылку в карточку здания — сбор правок готов.
Веб-разработка, как я уже говорил, это не про меня — поэтому изучаю разные онлайн-конструкторы сайтов и останавливаюсь на Тильде. Особенно хорошо, ей удается адаптировать сайт под разные размеры экрана, что важно.
Верстаю сайт, вставляю карту с carto.com, делаю его двуязычным, подключаю комментарии, адаптирую под разные размеры экрана — вообще, процесс интересный. Результат — how-old-is-this.house
«Там что-то было про бумажную карту?»
Исходной идей было сделать бумажную карту центра Петербурга, в голове её образ уже есть. Но в процессе работы стало ясно, что данных и времени на подготовку нужно больше, чем казалось в начале пути, поэтому я продолжаю работать над ней. На странице «Постер и бумажная карта» можно подписаться на уведомление о её готовности.
Стиль визуализации, разработанный для веба, прямо просится на плакат и на стену. Вооружаюсь цитатой Шарля Жозефа Минарда: «Мои карты не просто показывают, они так же рассчитывают, вычисляют для глаза; это переломная точка. «, и приступаю к верстке постера. Цель — красиво показать полученные данные, желательно так, чтобы можно было увидеть каждый дом, а также показать распределение зданий на карте по годам постройки. Кажется, что если окрасить в разработанную палитру гистограмму — выйдет познавательно.
Выбираю платформы для печати на заказ постеров. Соотношу рабочий масштаб карты и доступные размеры на платформах для печати — размер постера 60*90 сантиметров.
Верстка — дело приятное, тем более, львиная часть работы сделана до этого: экспортирую растр высокого разрешения из QGIS, в Adobe Illustrator готовлю гистограмму, добавляю копирайты, логотипы. Сейчас важно не забыть показать аномалии на гистограмме и пояснить, в чем дело. Получилось симпатично.
Заказываю пробные отпечатки на обеих платформах, финальные правки — готово!
Постер можно купить на странице «Постер и бумажная карта»
Улыбчивая безымянная девушка из Printful держит виртуальный постер
Спасибо
Было весело делать этот проект, хочу сказать спасибо:
Бонус хабру, по просьбам трудящихся — обои для рабочего стола,
Сколько лет этому дому? Появилась онлайн-карта возраста зданий Петербурга
По словам Славина, идея картографического проекта пришла к нему спонтанно. Существуют аналогичные проекты, посвященные другим городам и даже странам мира, среди них — карты Портленда (США), Барселоны (Испания), Львова (Украина) и даже Нидерландов (да, всей страны). Эти сервисы различаются по функциональности и удобству, однако how-old-is-this.house — один из самых информативных среди них.
«Подобных проектов много, и для Питера абстрактно думалось, что было бы хорошо иметь [такую карту. — Прим. ред.]. Плюс хочется издавать карты уровня Blue Crow Media, и создание набора данных нужно, чтобы сделать классную печатную карту центральной части города. Над этим мы сейчас работаем», — рассказал Славин PRTBRT.
При подготовке карты Никита обратил внимание на два пика застройки — в 1917 и 2008 годах. Первый пик картограф объясняет тем, что, вероятно, многие дома дореволюционной постройки при советской власти регистрировались заново. Второй — тем, что в конце нулевых город действительно активно застраивался. «Цифры за 2008 год на сайте Комитета по строительству и архитектуре меньше, но это ни о чем не говорит. К сожалению, я не помечал, из какого источника взят год в итоговой таблице, расследование отложу на потом», — пишет Славин об этом казусе.
Карта возраста домов Санкт-Петербурга существует и в виде красивого постера, который можно заказать на сайте проекта. Постер без рамы обойдется в 1 200 рублей, с рамой — в 4 100. Доставка бесплатная.
Сейчас Славин вместе с другими картографами работает над аналогичными проектами по Москве, Владимиру и Казани.
«В каждом из этих городов есть картограф-составитель, я выступаю в роли координатора. Сейчас оцениваем, хватит ли того, что можно достать малой кровью для запуска проекта: пустые карты людям, естественно, не интересы. Если ответ „да“, целимся на дни города, они у всех трех городов проходят в конце августа — начале сентября», — говорит картограф.
А еще нас начался большой совместный проект с «Авито Недвижимостью». В нем мы рассказываем о необычной и честной стороне путешествий по России. Первый текст — о том, как 2020 год навсегда изменит путешествия по нашей стране.
Карта возрастов домов появилась у Санкт-Петербурга
Российский картограф разработал онлайн-карту возрастов зданий Санкт-Петербурга, на которую попало более 55 тысяч объектов. На сайте проекта можно почитать об истории её создания и заказать постер.
Новую онлайн-карту разработал картограф Никита Славин, который учится в международной европейской магистратуре Cartography M.Sc. На карту нанесены здания, построенные с основания города в 1703 году и до наших дней. При клике по каждому дому открывается карточка с его фотографией, годом постройки, названием архитектурного стиля, именем архитектора, адресом и ссылкой на более подробное описание объекта. Также интерфейс сайта позволяет увидеть, какое количество зданий было построено в каждое десятилетие смуществования Санкт-Петербурга.
Процесс создания карты Никита описал в лонгриде, который опубликован на сайте проекта. В этом разделе подробно разобран каждый этап работы от появления идеи и обработки данных до формирования цветовой палитры и выбора доменного имени.
Один из промежуточных этапов работы над картой
При создании цветовой палитры Никита вдохновлялся фотографиями Андрея Михайлова и брал цвета прямо с его снимков:
«Таким образом, красный цвет с фасада Пантелеймоновской церкви, желтый — с Адмиралтейства и Петропавловского собора, зеленый цвет — с башни Кунсткамеры и синий — с купола Троицкого собора собираются в палитру. Попы грифонов с Банковского мостика и крыши Васильевского острова дают так нужный нам диапазон синих и темно-серых оттенков».
Постер с картой Санкт-Петербурга
Изначально Никита хотел создать бумажную складную карту центра Санкт-Петербурга и собирал данные именно для нее, но постепенно проект вырос до веб-продукта. Тем не менее, картограф продолжает работать над бумажной версией.
Кроме того, на сайте можно заказать постер, который Славин сверстал на основе онлайн-карты. Помимо самих домов на него нанесен график с распределением зданий по возрасту. Большой тираж постеров готовится к выпуску 15 июня. Средства, вырученные за счёт их продажи, должны покрыть стоимость хостинга.
kachkaev/tooling-for-how-old-is-this-house
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
This repository helps assemble a geographic dataset with building infos. Attributes are gathered from multiple sources and include construction year, floor count, address, architect, photo, wikipedia page URL and so on. The entire process consists of launching console commands, which invoke scripts written in TypeScript. The results of data collection and processing are automatically turned into uploadable and printable artifacts.
To run the scripts, you need to specify a geographic territory, which is usually a single city or town. You can also supplement data from remote sources with manually created features. This helps mitigate potential data quality issues that cannot be resolved upstream.
Because how-old-is-this.house focuses on cities in Russia, the instructions below are in Russian. Although some of the data sources are country-specific, most parts of the repo can be recycled for a global re-use.
🔢 финальные характеристики здания (цифра означает приоритет)
⏳ временно используемые вспомогательные данные
🗑 данные игнорируются из-за редкости или низкого качества
📍 точка (point)
🟥 контур (polygon / multipolygon)
адрес | архитектор | геометрия | год | название | стиль | фото | этажность | 🔗 Викиданные | 🔗 Википедия | 🔗 Минкультуры | 🔗 сайт |
---|---|---|---|---|---|---|---|---|---|---|---|
«МинЖКХ» | 3️⃣ | ⏳ 📍 | 4️⃣ | 2️⃣ | |||||||
Минкультуры | 2️⃣ | ⏳ 📍 | 1️⃣ | 3️⃣ | 4️⃣ | 1️⃣ | |||||
ОСМ | 1️⃣ | 1️⃣ | 1️⃣ 🟥 | 3️⃣ | 2️⃣ | 1️⃣ | 3️⃣ | 1️⃣ | 3️⃣ | 3️⃣ | 2️⃣ |
Росреестр | 4️⃣ | ⏳ 📍 | 5️⃣ | 🗑 | 3️⃣ | ||||||
Викиданные | 🗑 | 2️⃣ | ⏳ 📍 | 🗑 | 1️⃣ | 2️⃣ | 1️⃣ | 1️⃣ | 1️⃣ | ||
Викимапия | 🗑 | ⏳ 🟥 | 6️⃣ | 5️⃣ | 5️⃣ | 🗑 | |||||
Викигид | 5️⃣ | 3️⃣ | ⏳ 📍 | 2️⃣ | 4️⃣ | 3️⃣ | 2️⃣ | 2️⃣ | 2️⃣ | 1️⃣ |
Чтобы создать новую карту возраста домов, вам понадобятся:
В качестве текстового редактора рекомендуется VSCode с расширениями DotENV, Geo Data Viewer, Git Graph, Git Lens, Wikitext и Yaml. Для визуализации полученных данных подойдёт любая геоинформационная программа (например, QGIS).
Требования к системе
Для запуска скриптов подойдёт любой относительно современный компьютер с любой операционной системой (Linux, macOS, Windows). Для обработки территории с населением порядка миллиона человека хватит 2-4 ГБ оперативной памяти и порядка 1 ГБ свободного места на диске. Скорее всего, бутылочным горлышком будет пропускная способность интернета и ограничения, которые накладывают источники на скорость скачивания данных.
Подготовка к работе
Эти шаги достаточно выполнить один раз, даже если вы планируете сбор данных для нескольких территорий.
Убедитесь, что на машине установлены гит (система контроля версий) и нода (среда запуска скриптов). При установке ноды рекомендуется выбрать версию LTS.
Команды для проверки установки:
Установите последнюю версию ярна (менеджера зависимостей):
Команда для проверки установки:
Про /path/to написано выше.
Откройте терминал, перейдите в папку /path/to/tooling :
Название этой папки должно появиться слева от места ввода команды.
Это займёт пару минут.
Запуск этой консольной команды помогает проверить общую работоспособность скриптов. Если возникла ошибка, следует заново пройтись по инструкции (видимо, что-то пропустили).
Подготовка данных Минкультуры
Этот раздел можно пропустить, если вы собираетесь работать над уже начатой территорией. Инструкции достаточно выполнить один раз, даже если вы планируете сбор данных для нескольких городов.
Скачайте список объектов с сайта Министерства культуры РФ:
opendata.mkrf.ru/opendata/7705851331-egrkn
Ссылка на архив — в правом верхнем углу страницы. Файл должен быть в формате jsons (с s на конце).
🚩 Пользователям macOS и Ubuntu
Встроенная программа для распаковки архивов отрезает у файла хвост. Чтобы этого избежать, откройте папку со скаченным архивом в терминале и распакуйте его командой unzip :
Обработка выбранной территории
Скрипты в этом репозитории подходят для обработки любой части РФ. Рекомендуется ограничиваться компактной территорией, например, одной городской агломерацией. Из-за особенностей процесса получения данных, попытка за раз охватить большую, но при этом малонаселённую территорию, будет неэффективной.
Созданные в рамках этого проекта данные желательно хранить в гит-репозитории. Это позволяет отслеживать изменения в файлах, делать их резервные копии и работать над территориями совместно. Репозиторий с данными и репозиторий со скриптами хранятся отдельно друг от друга. Данные разных территорий хранятся в независимых друг от друга гит-ветках.
Перед выполнением шагов в этом разделе вам надо получить доступ к непубличному репозиторию, в котором будут храниться промежуточные данные. Для этого свяжитесь с автором скриптов или администраторами how-old-is-this.house. Вы должны быть зарегистрированным пользователем на гитхабе и сообщить свой ник.
После получения доступа:
TERRITORY_NAME — это название города или части субъекта РФ (например, pnz-penza или mo-saransk ). Название папки соответствует названию ветки репозитория с данными ( territories/TERRITORY_NAME ).
Откройте файл /path/to/tooling/.env.local как текстовый и укажите путь к выбранной территории. Это делается добавлением такой строчки:
Часть TERRITORY_NAME надо заменить на реальное название папки.
Если территория новая, постройте её границу согласно настройкам в territory-config.yml → extent :
Желательно подбирать границы территории так, чтобы они повторяли контуры кадастровых кварталов. Это повысит эффективность работы с АПИ Росреестра.
Закоммитьте и запушьте изменения в файлах territory-config.yml и territory-extent.yml при помощи гита.
Этот шаг упростит дальнейшую работу над территорий и обеспечит вас резервной копией.
Получение исходных данных
Скрипты выполняются по очереди сверху вниз. Если у вас возникает проблема с одним из источников, вы можете по-прежнему запускать скрипты, которые не упоминают этот источник. Например, если что-то пошло не так с Росреестром, достаточно начать игнорировать все последующие скрипты */rosreestr/* и можно пройти весь процесс до конца. Финальный набор данных будет неполным, но это легко исправить потом — достаточно перезапустить скрипты.
Если вы совместно работаете над одной территорией, то вам можно пропустить некоторые шаги в этом разделе. Какие именно — зависит от того, что уже успели сделать до вас.
Полученные исходные данные отображаются как изменения в репозитории. Эти файлы важно коммитить и пушить.
Потратив пару лишних минут на гит после запуска очередного скрипта, вы можете легко сэкономить себе несколько часов. Гит даёт возможность откатывать данные до предыдущих версий, если что-то пошло не так. Такая защита позволяет проводить эксперименты без страха что-то испортить или удалить.
Скачайте списки зданий на страницах, которые перечислены в файле territory-config.yml :
Скачайте и обработайте данные по зданиями:
Создайте временный файл для анализа промежуточного результата:
Извлеките данные для вашей территории из скаченного ранее дампа:
Скачайте контуры зданий и административные границы:
Скачайте контуры водных объектов и дорог (они понадобятся только для визуализации):
Скачайте геопривязанные ОКС (объекты капитального строительства) и земельные участки:
Создайте временные файлы для анализа промежуточного результата:
Создайте файлы-страницы для хранения деталей объектов:
Скачайте детали объектов из АПИ fir_object :
Этот скрипт поддерживает многозадачность. Вы можете открыть до десяти терминалов и запустить его в каждом окне, чтобы ускорить процесс.
Скачайте детали объектов из АПИ ПКК, чтобы закрыть оставшиеся пробелы:
Этот скрипт не поддерживает многозадачность. Запуск слишком большого числа запросов к серверу приводит к блокировке айпи-адреса.
Расширьте список кадастровых номеров, если это необходимо.
Созданные ранее файлы-страницы заканчиваются несколькими десятками пустых кадастровых номеров. После опроса АПИ некоторые кварталы могут заполниться данными «под завязку». Это значит, что есть вероятность найти ещё больше объектов, если добавить страниц.
Вероятно, процесс добавления и простукивания страниц придётся повторять несколько раз. Если очередной запуск скрипта 7-add-extra-object-info-pages.ts не добавил ни одной страницы, данные Росреестра можно считать собранными.
Списки кадастровых номеров иногда содержат пустоты длиной в несколько сотен объектов. Они возникают при сносе многоквартирных домов. Если за такими пустотами следуют только объекты без координат, то расширение и простукивание диапазонов кадастровых номеров не даст «дотянуться» до некоторых данных.
Вероятность такой ситуации крайне мала; вы узнаете о ней только после смешивания и визуализации всех данных. Проблема даст о себе знать большим количеством зданий без года постройки в одном из районов.
Если вы нашли кадастровые номера, до которых скрипты «не дотягиваются», то вы можете вручную указать их в файле territory-config.yml :
На каждый проблемный квартал достаточно ввести только один кадастровый номер (максимальный из найденных вручную). После обновления файла territory-config.yml надо перезапустить скрипт 4-generate-initial-object-info-pages и все последующие в этом подразделе.
Скачайте элементы внутри территории:
Скачайте контуры объектов:
Создайте временные файлы для анализа промежуточного результата:
Скачайте и обработайте детали объектов:
Скачайте страницы, которые перечислены в territory-config.yml → sources → wikivoyage :
Создание локального каталога геокодов
Геокодирование — это процесс связывания адреса объекта и его координат. В собранных нами данных есть здания с адресом и координатами, а также записи, где координаты отсутствуют. Собрав каталог геокодов, мы уменьшим количество объектов без координат.
Скрипты для пока ещё неготовых источников следует пропустить. Их можно запускать в любом порядке.
Заполнение пробелов в локальном каталоге геокодов
Сопоставление адресов и географических координат из разных источников существенно улучшает качество смешивания данных. Тем не менее, координаты некоторых зданий по-прежнему остаются неизвестными. Для их получения можно воспользоваться сторонним сервисом, в частности геокодером от Яндекса. Этот этап улучшает финальный результат, но не является решающим. Его можно пропустить или выполнить позже.
Полнота данных ОСМ на выбранной территории существенно влияет на количество пробелов в каталоге геокодов. Чтобы уменьшить зависимость от стороннего геокодера, попробуйте улучшить данные в ОСМ и потом скачать их заново. Пример такого мини-проекта — пензенская картовечеринка.
Чтобы воспользоваться геокодером от Яндекса, вам потребуется ключ для их АПИ. Его получают на странице developer.tech.yandex.ru/services (следует выбрать JavaScript API и HTTP Геокодер). Важно, чтобы у вас было разрешение кэшировать ответы сервера, иначе вы будете нарушать лицензионное соглашение.
Добавьте ключ от АПИ в файл /path/to/tooling/.env.local :
Запустите геокодер и сохраните результат в кэш:
В зависимости от лимита запросов для вашего ключа, вам может понадобиться несколько дней, чтобы закрыть все пробелы. Скрипт завершит свою работу при достижении лимита, а вам на электронную почту придёт письмо от Яндекса. Доступ к АПИ геокодера будет ограничен до конца суток.
Можно продолжать обработку данных, не дожидаясь полного геокодирования адресов, а потом вернуться к этому шагу.
Добавьте полученные геокоды в каталог:
Как и на предыдущем шаге, результат скрипта */8-report-geocodes.ts не попадает в гит-репозиторий. Значит, этот скрипт надо выполнить каждый раз при клонировании или обновлении репозитория с данными.
Если вы подготавливаете данные итерациями, некоторые геокоды Яндекса могут стать лишними. Например, это происходит после улучшения данных ОСМ. Чтобы удалить лишние файлы из кэша, воспользуетесь этим скриптом:
Подготовка к смешиванию данных
У нас есть исходные данные из нескольких источников, а также локальный каталог геокодов. Чтобы объединить источники, нам нужно привести все данные к единому формату и заполнить недостающие геокоды.
Единица смешивания данных — стандартизированный файл (слой). Для каждого источника создаётся по одному слою.
Скрипты для пока ещё неготовых источников следует пропустить. Их можно запускать в любом порядке.
Этот финальный этап обработки данных комбинирует слои, которые мы получили на предыдущем шаге.
Исходные слои выполняют одну из двух ролей: являются базой (источником геометрии и характеристик) или заплаткой (только источником характеристик). Роль базового слоя выполняет ОСМ, все остальные источники — заплатки.
Смешайте базовые слои и заплатки:
Запустите скрипт выбора финальных характеристик из нескольких вариантов:
Результат смешивания данных откроется в любой геоинформационной программе (например, QGIS). Есть возможность отобразить его в браузере. Для этого надо запустить веб-сервер из папки /path/to/tooling :
Запуск скриптов не требует ручных шагов по обработке данных. Как следствие, ошибки в источниках неизбежно попадают в финальные характеристики зданий.
Чтобы повысить качество и полноту результата, предусмотрена возможность подмешивать опциональные ручные слои. Это позволяет добавлять на карту особые объекты (например, мосты) или исправлять ошибки в характеристиках (например, корректировать год постройки).
Данные из папки manual имеют приоритет над остальными источниками. При создании нового файла *.geojson важно не забыть указать «layerRole»: «base» или «layerRole»: «patch» — иначе этот слой будет проигнорирован при смешивании.
При ручном создании объекта-заплатки есть специальная возможность перечислить данные, которые следует проигнорировать при смешивании. Например, в слое Минкультуры может быть снесённое здание, на месте которого построено новое, с уже правильными данными в Росреестре. Чтобы исключить данные по снесённому зданию из результата, мы создаём файл /path/to/data/territories/TERRITORY_NAME/sources/manual/patches.geojson ( «layerRole»: «patch» ). В него добавляем точку с координатами внутри контура проблемного здания:
Неточности в ОСМ проще всего исправлять на сайте osm.org, а потом заново скачивать улучшенные данные. Инструкции для участия в проекте вы найдёте на wiki.osm.org. При добавлении любых данных в базу ОСМ важно пользоваться только разрешёнными источниками. Копировать содержимое других карт запрещено — сомнительные правки будут удалены участниками сообщества. См. FAQ.
Инструкции в этом разделе предназначены для тех, кто закончил подготовку данных и планирует их публикацию на сайте how-old-is-this.house.
Гистограмма годов постройки
How old is this house сайт
Я закончил курс Cartography M.Sc — это 4-семестровая магистерская программа университетов Мюнхена, Вены, Дрездена и Твенте, она ориентирована на широкое образование в области картографии и геоинформатики.
В последнем семестре — конце марта 2020 года, — как всякий приличный студент, искал, чем бы заняться вместо диплома. Родилась идея сделать туристическую карту родного Петербурга, показать либо архитектурные стили, либо эпохи строительства каждого здания.
Идея карты возраста домов не новая. Примерно 10 лет назад подобные проекты стали появляться в Портленде, Рейкьявике, Нью-Йорке, Барселоне, Любляне, Львове… Есть даже проект масштаба страны — Нидерланды.
О Петербурге тоже кое-что имеется: « Ретроспектива застройки Петербурга » и « Как застраивался Петербург: история строительства города за 68 секунд ». Авторы ссылаются на «Технико-экономические паспорта многоквартирных домов», которые лежат на портале « Открытые данные Петербурга ».
Для решения геоинформационных задач использовал QGIS и ArcGIS Pro, если нужно было что-то автоматизировать на Python — PyCharm.
Работать с открытыми данными не так страшно, как кажется
В первую очередь подготовил слой зданий, который потом максимально наполнял атрибутами. Основа слоя — «Объектно-адресная система Санкт-Петербурга» с городского портала открытых данных. Геометрия там детальная, видимо, из кадастровых паспортов, смотрится красиво. Бонусом взял мосты, а вот от полигонов набережных, подъездных путей, площадок складирования избавился.
«Технико-экономические паспорта многоквартирных домов» — это таблица, в которой один из столбцов — адрес. Чтобы использовать эти данные, таблицу нужно было геокодировать. Написал простой скрипт на Python, который помог добавить в таблицу столбцы широты и долготы.
Далее написал простенький парсер, собирающий данные на сайте СityWalls.ru: ссылку на страницу дома, его id, год постройки, архитектурный стиль, имя архитектора, название, адрес и ссылку на фотографию. Также использовал уже готовый скрипт для сбора координат, так как пользователи часто отмечают точки рядом с домом, а не сам дом.
Для старта это стало хорошим решением, потому что мне не нужна была ничья помощь. Некоторые технические ограничения пришлось решать с помощью различных костылей.
Не просто было выбрать доменное имя. Хотелось передать в названии суть проекта, быть немного оригинальным и избежать слова «каждый» (потому что дом — не каждый). В процессе выяснил, что есть доменное пространство «.house» — родился вариант «how-old-is-this.house». Если вдруг появится желание сделать проект глобальным — имя уже подходит. Только жаль, что нет русского домена «.дом».
Сайт how-old-is-this.house был зарегистрирован 27 мая 2020 года — ко дню рождения Петербурга. Работал над ним (от идеи до релиза) два с половиной месяца.
« Карту возраста домов » собирал в Тильде — это хороший и удобный конструктор, можно делать довольно высокого качества сайты не сильно вкладываясь в разработку. Но конструктора мне было мало, и я прибегал к инъекциям html JavaScript.
Кроме авторских скриптов, нашел комбинацию сервисов, при помощи которых проект можно было запустить «малой кровью»: carto.com, google forms, printful… Изначально верстал русскую и английскую версии.
О проекте сразу же написали несколько изданий, в том числе «Медуза» (признана иностранным агентом). Начали появляться люди, которые говорили, что хотят сделать что-то похожее.
Идею поддержала петербургская компания « Геосемантика », которая занимается различными IT-решениями с приставкой «гео» (географическими, картографическими). Там работают мои друзья. Мы стали партнерами, вместе доработали продукт и в июле 2020 года переехали на новую платформу.
Появилась нормальная фильтрация по годам, удобный механизм для сбора правок и их моделирования. В общем, много костылей было снято.
Сейчас выпущено 7 городов, у каждого свой картограф. Еще несколько городов в работе. Они будут появляться, пока мы не охватим всю Россию. Думаю, каждый новый город будет делать проще. Ехать ведь легче, чем заводиться. Сервис на всю страну — это логичный следующий шаг.
В отличии от зарубежных проектов, мы основательнее подошли к процессу. Обычно создатели подобных карт шли в одно место, забирали технико-экономические паспорта, данные с Википедии или еще откуда-то — и получалось низкое покрытие.
Наш проект популярен потому, что мы сделали два шага глубже в Data mining, получаем покрытие 60-80% зданий в городе.
Второй плюс — мы приглашаем людей вносить правки. Забираем у автора замечания и человек, который отвечает за город (обычно это картограф), их отсматривает, проверяет и если нужно, то публикует.
Третья уникальность нашей карты — продукт комплексно упакован. Есть веб-версия, мобильная версия и печатное производство.
Продажа постеров помогает в какой-то степени финансировать разработку новых городов. Например, оплачивать хостинг…
Я бы сейчас не назвал проект коммерческим, он больше творческий, волонтерский.
Наша печатная продукция — популярный подарок, особенно Москва. Пытаемся расширять ассортимент, есть на это запросы. Недавно появились блокноты, хотели бы запустить одежду.
Стиль визуализации, разработанный для веба, прямо просится на плакат и на стену. Верстка — дело приятное, тем более, львиная часть работы сделана до этого: экспортирую растр высокого разрешения из QGIS, в Adobe Illustrator готовлю гистограмму, добавляю копирайты, логотипы.
Постер (размер 60×90 сантиметров) можно купить в магазине карт « Кон-Тики ». Для читателей «Сделано.медиа» 10% скидка по промокоду «SDELANO10».
Еще одной уникальностью нашего проекта назвал бы цвет. Он модный. Пришли к нему не сразу, но быстро. Опыт коллег подсказал, что выигрышно смотрится представление возраста домов в непрерывной палитре от горячих цветов к холодным, на темном фоне. Петербургу в этом плане повезло, потому что у нас прекрасно сохранившийся исторический центр и современные окраины. И если раскрасить город от красного к синему, то появляется эффект свечения, лампочки.
Размышляя над внешним видом карты Петербурга, обратил внимание на работы Андрея Михайлова, это один из моих любимых фотографов. Его фото созвучны с моим чувством города. Из его Инстаграма выудил ключевые цвета. Красный — с фасада Пантелеймоновской церкви, желтый — с Адмиралтейства и Петропавловского собора, зеленый — с башни Кунсткамеры, синий — с купола Троицкого собора.
Собрал вместе. Поэкспериментировав с распределением на временной шкалы по палитре, выяснил, что информативным оказывается способ, когда в каждом цветовом отрезке равное число объектов.
К городам цвет подбирался индивидуально. В Москве очень интересная ферментированная застройка и там петербургского эффекта нет, но, как и в Петербурге, в основу цветовой палитры карты пошли цвета фасадов. А вот на Урале базовыми стали цвета самоцветов.
Везде таймлайн начинается с теплого тона и заканчивается холодным. В каждом городе отсчет времени разный. Например, в Москве с 1357 года, в Петербурге — с 1703-го. Закономерности нет. Эта шкала появляется автоматически и первая дата — самый старый дом, который мы нашли.
Общего дизайнера у проекта нет. Все утверждаю я, как выпускающий редактор.
Выпуская новый город, делаем посты и рассылку в те издания, которым, как нам кажется, это будет интересно. О нас в основном пишут региональные СМИ, федералам были интересны Петербург и Москва. Эти города чаще просматривают на сайте. Далее по популярности Казань и Екатеринбург. Надеемся, что интерес будет к Калининграду, релиз о котором появился 4 июня 2021 года.
В 2021 году мы стали победителями ежегодной международной премии за достижения в области инфографики, визуализации данных и дата-арта Moscow Dataviz Awards — взяли «золото». Моя статья «How old is this house. Как я делал карту возраста домов Петербурга» была отмечена, как «Лучший кейс на конкурсе «ТехноТекст-2020». Карта Москвы попала в календарь geohipster 2021.
Я не разработчик. Я — картограф. Это довольно мультидисциплинарная специальность — ты немного дизайнер, чуточку классический картограф из прошлого века, немножко дата-журналист, веб-разработчик… С одной стороны, прикольно, что у тебя есть экспертиза по всем направлениям, но с другой — ты слабый разработчик… слабый специалист во всех областях.