Pull to refresh
Comments 78
Спасибо за интересную статью, но, если честно, в нынешнем виде карта «не работает».

Откройте, для примера, Крылатское. Соседние, совершенно одинаковые дома почему-то попадают в категорию 369 Круб или 234 Круб. Причем центрами более дорогих «пятен» в обоих случаях служат лесные массивы, где жилья вообще нет…

При этом реально дорогой ельцинский дом на Осенней почему-то никак не повлиял на тепловую карту.
Центры пятен бывают не на своем месте — это одна из причин почему я оставил на усмотрение пользователя выбор масштаба. В разных режимах рисунки совершенно непохожи.

Объекты используются далеко не все которые есть в Москве, так что эта карта скорее для того чтобы посмотреть «свысока» на ситуацию.

А что касается одинаковых домов, можно скриншот или еще как-нибудь? А то я не смог найти. Там есть прокрутка в всплывающем окошке, если что, но она не во всех браузерах видна.

Подход выглядит странным. Начиная с leaflet (т.е. с GIS) в качестве исходной точки, тепловые карты делаются намного быстрее. А так… делать самому tile server — разве что ради интереса?

Я видел leaflet когда искал решение. Видел еще много таких же инструментов — там получается то же самое что в Google HeatMap layer.
Вот их официальный пример использования. Попробуйте позумить карту — точки сливаются.

Tile server — это громко сказано. За это больше отвечает Google Maps. Мое дело отдать ему тайлы для координат которые он «попросил». Кэширование картинок было на сайте и без того, так что тут не пришлось изобретать ничего.

Ну и конечно же, да, это все ради интереса.
Карта интересная, цвета подобраны хорошо. Задумка визуализации тоже отличная. Скинул ссыль знакомому риэлтору: выборка очень усреднённая (нужно считать хотя бы не среднее арифметическое, а медианное).

На примере п.Архангельское (4 км на запад от МКАД). Там многоквартирные дома перемешаны с частными домами и особняками. Разбрас цен от 78 т.руб. за м2 до 338 т.руб. за м2. Т.е. если искать жильё только по тепловой карте, то эту область можно пропустить, хотя там оч много квартир стоимостью 130-140 т.руб. за м2. Медианная цена получается гораздо ниже средней.
По-хорошему нужно делать выборку по большим критериям: с учетом типа дома (пятиэтажек панельных и девятиэтажек панельных отдельно), количества комнат, наличие инфраструктуры ближайшей (300-500м).
На более человеческом примере скажу так: это как вычислять среднюю стоимость еды, среди которой есть кукурузные хлопья, хлеб, колбаса, свинина и черная икра. Мы увидим что средняя стоимость еды составит 3000 рублей за килограмм.
Как более явный пример, — с.Татариново (44 км от МКАД на юг по М-4). Так неправильно :)
Спасибо!

В Татариново — это кто-то ошибся с количеством нулей просто. Такое, кстати, часто бывает. Я удалил этот объект с карты, так что как только она обновится там будет все в порядке.

Думаю, что для поиска жилья эта карта совсем не подходит. Там большинство объектов — архивные. Честно говоря, я даже думаю что она вовсе бесполезна — так, один раз посмотрел и понял, что и так все знал, где дороже, где дешевле… Просто красиво это нарисовано.

Я сделаю на днях карту с медианным значением цены. Посмотрим что получится. Отпишусь здесь.
Лучше бы с фильтрами сделать по площади к примеру и по типу жилья.
Для этого придется сгенерировать по целой отдельной карте для каждого из сочетаний нескольких фильтров. К сожалению, при текущих ресурсах для меня это практически невозможно.
Почему бы не генерить тайлы налету и кэшировать их?
Это слишком долго.
Чтобы покрыть видимую область экрана (примерно 1900х800) тайлами нужно что-то около 30 секунд только на рисование при максимальном зуме (14). Для каждого из меньших зумов время соответственно увеличивается в несколько раз. Это без учета подгрузки и обработки данных.

Не обязательно. Можно нагенерить данных на каждый квадрат, но отдельно по каждому слою. А отображать их среднее.

Обязательно надо. Тогда, например, объявления типа «Петроградский р-н., Архангельск, Попова ул, 25» не будут попадать в статистику Петербурга.
Это не спасет от таких случаев. Криворукие есть как среди программистов, так и среди агентов.
От таких — спасёт конечно. Если среди цен вокруг 100 попадается пара вариантов ~25, то их можно смело выбрасывать.
Вот, если что, для сравнения два скриншота:
Медианное
image
Среднее арифметическое
image

Я решил оставить среднее арифметическое.
А сделать две цветовые координаты — цена-тон, частота объявлений — насыщенность — не пробовали?
Не пробовал, но попробую.

Я еще пробовал с прозрачностью: где дешевле там маска прозрачнее вплоть до совсем невидимой, получилось не очень.
Хорошо выглядит!
Но немного критики не помешает :)

А почему не использовали кадастровые кварталы (они довольно маленькие)? Насколько я знаю, границы кварталов (GIS-данные) можно найти в инете. Для каждого такого квартала задать стоимость за м2 и отрисовать. Мне кажется так было бы быстрее — сейчас карта притормаживает.

Я, кстати, не совсем понял — вы тайлы генерируете на стороне клиента что-ли? Мне кажется опять же не оптимально — зависеть от мощности компьютера (или планшета пользователя сайта). Наверно, лучше было бы отдельный сервер поднять, который бы для заданного прямоугольника возвращал картинки с тайлами, которые вы бы просто накладывали поверх карты.
Такие карты, где раскрашены микрорайоны или районы уже есть.

Карта притормаживает не из-за генерации тайлов а из-за метрики. Я написал об этом в самом конце статьи.

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

Беда в том, что на карте (как минимум Питера) закрашиваются и промзоны и парки и пустыри… Если район знаешь — то смешно, если не знаешь — то странно.

Очень странное пятно низкой цены вблизи будущего метро «проспект Славы». Нельзя ли настраивать, за сколько месяцев берутся данные? Метро открывается в декабре, вряд ли это пятно будет по текущим данным БН.
Да, я планировал сделать фильтр по периоду дат. Но там будет небольшой выбор. Что-то вроде, 6, 12, 24 месяца.
Интересен период «месяц» и динамика, с каких дат брать. Или начальная и конечная дата. Примерно так, как строятся графики на БН.

А вообще у вас получается, что близость метро — не означает ничего. Хотя по оценке БН — оно дает изменение цены в размере 5-10 процентов.

Это я все про свой Питер говорю, что в Москве — не знаю.
Я знаком с бюллетнем и их принципами работы (я работал в конкурирующей компании). Не буду распинаться тут по этому поводу, скажу только что чтобы что-то продать надо дать людям то чего им хочется.
Кстати, на Роеме я писал как-то о некоторых особенностях работы местных «порталов».
Вы будете смеяться, но куча риелторов используют бумажную версию БН. :-) Ну просто совсем некомпьютерные дамы. :-)

Кстати, есть способ оценки реалистичности цены. Если за 2-3 месяца объект исчезает из продажи и через 2-3 недели не появляется вновь — значит он продан и цена была чуть выше цены сделки. Если висит по полгода — значит цена завышена.

Впрочем, иногда продается и по завышенной цене. Мы, например, продали по цене в полтора раза выше. У покупателя расселение (деньги инвестора) и нужны две квартиры рядом — чтобы первоклассник мог, не одевая шубу, бегать от бабушки к маме.
У меня объекты автоматически снимаются с публикации если цена не меняется больше 2 месяцев.
А с расчета по карте?

Кстати, вы не пробовали учитывать тип домов? То есть ввести коэффициенты для КМ, СФ, хрущевок и так далее и считать тепловую карту только по территориям.
С карты объекты не удаляются при этом.

По типам домов не пробовал, потому что он указан в очень небольшом количестве объявлений.
Ну на БН — почти в 100%. Правда не всегда верно, то есть блочный с панельным часто путают, а кировку со сталинкой. Но по группам — более-менее достоверно.
Очень классно, прям залип. Но карту бы побольше, что-то типа на весь экран.
Спасибо!
Я бы сделал карту на всю Россию, но пока не хватает для этого ресурсов.
на хабре уже была тепловая «карта цен» недвижки. и там и тут карта предложения. итоговая цена сделки может отличаться. и иногда сильно.
Может отличаться, особенно для элитки, но реальную цену сделки Вы никогда не узнаете. Ее знают только продавец и покупатель.
И в пересчете на квадратный метр, в большинстве случаев, цена будет отличаться не сильно.
Постоянно натыкаюсь на «Данное объявление было снято с публикации собственником. „
Может, надо такие отмечать красным в списках объектов на карте?
Большая часть использованных объектов — архивные. Да, думаю, надо их помечать как-то.
Но в любом случае, эта карта не подходит для поиска предложений. Только чтобы посмотреть где дороже, где дешевле.
С «посмотреть где дороже, где дешевле» карта справляется на «ура». Сам мониторил недвижимость за мкадом — примерно такая же карта в голове сложилась.
Круто! Что за мероприятие такое?
Но все же мне не нравятся эти красные ореолы вокруг точек. И что делать со сливанием точек при зуме?

Мероприятие вот это: http://rmcreative.ru/blog/post/vzjali-vtoroe-mesto-na-khakatonm


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

Ещё интересно, почему в районе Видного (где синева ближе всего ко мкаду) такие низкие цены?
Ну продавец же не скажет «Дёшево продаю, потому что тут по ночам упыри из болот вылезают». ))
Судя по фотографиям: дом изначально делался на продажу из самых дешёвых материалов, — чего не скажешь о цене, за которую его продают.
Интересный проект.
Видны пятна «дешевого цвета» вокруг новостроек на ранней стадии строительства.
Однако, прочитав заголовок я сначала подумал что речь пойдет о корреляции между тепловым излучением территории и ценами на недвижимость.
Тогда уж посмотреть, насколько цены на недвижимость коррелируют с уровнем энергопотребления. Или с количеством новостроек.
Та же история. С учётом не слишком большой разницы в черте одного города, найти какую-то зависимость было бы оч-чень нелегко.
Я думаю, для увеличения скорости расчетов можно использовать видеокарты. они как раз позволяют рассчитывать картинки и обладают внушительной вычислительной мощностью.

Еще хочется проанализировать другие города)))
Спасибо.Круто. При попытке аутентификации через google аккаунт возникает ошибка:

Похоже, сайт лег под Хабраэффектом, конкретно у меня не открывается.
Похоже на то. Доступа к серваку нет, техподдержка не отвечает.
Метрика показывает +400% посетителей за сегодня — но вообще-то, это не так уж и много.
На скриншотах выглядит круто, в живую посмотреть не получилось, сайт не открывается — наверное сказался «хабра-эффект». Быстро посмотрел исходный код и обнаружил что вы используете SetPixel для рисования, не думали попробовать переписать с использование LockBits или usafe кода? Как мне кажется, скорость рисования при таком подходе может значительно увеличиться.
Я попробую. Но, вообще, больше всего времени уходит на это:

pointsWithDistance = pointsWithDistance.OrderBy(a => a.Item1).ToList();
Очень интересно! Но у меня такое чувство, что — для Москвы, по крайней мере — получилась просто карта «Центр и новостройки». Видимо, из-за выборки за полгода я наблюдаю пятна там, где есть новостройки, а в других местах, по сути, везде размазан один и тот же оранжевый цвет, кроме редких вкраплений всяких парковообразных зон и т.п… Было бы логично получить разрешение, при которых были бы видны, хотя бы, пятна в шаговой доступности от метро.
UFO landed and left these words here
Спасибо!

Можно много придумать интересных параметров для отображения на тепловой карте. Например, загрязненность, в том числе шумовая и радиационная. Только, как ни парадоксально, на цены это не влияет.
UFO landed and left these words here
Про доступность различных объектов инфраструктуры тоже хотел написать — посмотрите, как Яндекс решал эту задачу. У них, правда, не такая детальная тепловая карта — цветные квадратики.

Было бы круто изобразить уровень комфортности жилья по таким факторам. А если корреляция с ценой действительно не такая высокая, то можно ещё более интересную карту сделать — отношения комфорта к цене. Будет интересно видеть районы с неадекватно завышенными ценами — или наоборот, с недорогим, но хорошо расположенным жильем.
Спасибо!
А объявления откуда берете?
Самое интересное — архив цен. Хочется реальные цены знать.
На данный момент, на сайте около 400 активных источников — это агентства, всякие CRM и агрегаторы, плюс пользователи размещают объявления вручную. Ежедневно добавляется около 10-20 тысяч новых объявлений. Это при том что правила для приема достаточно жесткие.
Спасибо, текущая ситуация понятна — вам, как я понял, агентства и прочие сами объявления выгружают. А модерацию вы сами ведете? Контрольные звонки (для проверки фейковости) делаете? И еще может быть не скромный вопрос: а при запуске проекта (когда еще нет клиентов), где можно найти источники данных (объявлений) на первое время?
Модерация автоматическая и позволяет исключить часть некачественных объявлений. Про механизм не буду писать — слишком долго.

Плюс анализируются жалобы посетителей, и агенты на которых часто жалуются блокируются (сами жалобы я модерирую вручную, так что манипулировать не получится).

Источников для запуска полно. Благо, порталов по недвижимости у нас хватает. Написать парсер — работы на несколько дней. Других способов не вижу. Но про этику нельзя забывать — как минимум ссылку на источник нужно опубликовать.

Где-то пол года назад делал такую карту: отношение плотности населения к плотности заведений общепита, в том числе ресторанов, кафе, закусочных и прочего.
Как данные брал – отдельная детективная история. Не знаю как сейчас, но тогда на городских порталах данных о том, сколько людей в каком доме живут, не было, приходилось наобум тыкаться в API, выковыривать все это.
Делал в Wolfram Language, на генерацию подобной карты уходило секунд 40, рассчитывались все жилые дома Москвы и все заведения.
Вот тут можно скачать файл на 23мб в высоком разрешении.
Если будет интересно, расскажу, как делал, какими алгоритмами пользовался.
На создание такой карты ушло дня четыре, из них два дня на поиск данных
P.S.
Касательно цветов: всё меряется в попугаях.
Темно-красный – много кафе на малую плотность людей (менее выгодно открывать там)
Темно зеленый – много людей и почти нет заведений (там можно открывать для локальных клиентов)

О! Мне очень интересно, но в первую очередь — откуда удалось найти данные по количеству жителей в разных домах, в какие апи тыкание наобум это дало?

Круто! Спасибо за статью и библиотеку! Т.е. генерируем .png с помощью библиотеки, а потом средствами js API Яндекс карт накладываем его на карту? Я просто не изучал пока их API.

Про Яндекс ничего не знаю. Я использую Гугл — все ссылки в статье.
Точно, с телефона смотрел ночью, не рассмотрел. Потом попробую к яндексу прикрутить.
Only those users with full accounts are able to leave comments. Log in, please.