Про городской округ Сочи я высказывал свое мнение в "Я бы не жил в Сочи в этих местах…"
В этой статье найду места на оставшейся части побережья Краснодарского края на основе данных OpenStreetMap где могут быть проблемы из-за близости к жилью не самых комфортных мест для уютной жизни на побережье Черного Моря. Показать результаты работы моей модели для Туапсе просили еще в комментариях к первой статье "Где бы вы точно не жили и не остановились даже на время, если бы знали и выбирали на основе фактов".
Загрузка данных
Подробно про процесс подготовки данных и запросов к ним уже расказывал здесь раньше. Для запуска модели мне в этот раз нужны данные для Туапсинского района, городского округа Геленджик, городского округа Новороссийск и городского округа Анапа.
Подготовил геоиндекс для аналитики этих районов
select h3_polygon_to_cells(geom,8)
from geometry_global_view
where type='multipolygon'::table_reference and
id in (365231,364548,364545,364543)
Перед этим загрузив открытые геоданные Южного федерального округа
wget https://download.geofabrik.de/russia/south-fed-district-latest.osm.pbf
docker run -it --rm -w $(pwd) -v $(pwd):/$(pwd) -v /var/run/docker.sock:/var/run/docker.sock openstreetmap_h3:latest -source_pbf $(pwd)/south-fed-district-latest.osm.pbf -result_in_tsv true
docker run --name postgis15-south-fed-district --memory=12g --memory-swap=12g --memory-swappiness 0 --shm-size=1g -v $(pwd)/database:/var/lib/postgresql/data -v $(pwd)/south-fed-district-latest_loc_ways:/input -e POSTGRES_PASSWORD=osmworld -d -p 5432:5432 postgres15_postgis:latest -c checkpoint_timeout='15 min' -c checkpoint_completion_target=0.9 -c shared_buffers='4096 MB' -c wal_buffers=-1 -c bgwriter_delay=200ms -c bgwriter_lru_maxpages=100 -c bgwriter_lru_multiplier=2.0 -c bgwriter_flush_after=0 -c max_wal_size='32768 MB' -c min_wal_size='16384 MB'
Пару слов о модели
В основе этой аналитики моя субъективная модель, которая отговаривает меня жить в определенных местах. Главный её фильтр - расстояние по прямой от жилья на котором учитываются негативные факторы. И в ней не учитываются автомобильные пробки и транспортная доступность, количество солнечных дней в году, рейтинги поликлиник, наличие школ и садиков, недоступна информация которой сейчас нет и возможно и не будет на OpenStreetMap.
Статья про Москву собрала 200+ комментариев, где мне подсказали какие проблемы есть в каких районах, так же исправил благодаря подсказке читателя как модель реагировала на будки во дворах, помеченные industrial.
В комментариях в прошлых моделях вызвало массовое возмущение то что я учитывал кладбища, морги. В этой версии модели не буду учитывать близость к клабдищам.
Модель - это всего лишь грубое приближение реальности, тем более что данные о материалах дома и реальное качество строительства не учитываются. Как и года постройки здания, название типового проекта. Не учитывается слышимость из соседних квартир и с улицы. Так же как нерасчитывается затухание шума на деревьях/ на шумозащитном экране у трассы( детальная информация о высоте деревьев и плотности их размещения на OpenStreetMap отсутствует), какие соседи из каких квартир уходят в запой и поколачивают свою семью, где есть агрессивные к другим людям индивиды во дворах и парках, качество водоснабжения и можно ли безопасно пить воду из-под крана. Живут ли в доме тараканы. Работает ли вентиляционная труба или ее замуровал сосед сверху расширив за ее счет объем свей жилплощади. Как часто ломает лифт сосед перегружая его до потолка стройматериалами. Есть ли хулиганы жгущие пластиковые кнопки в лифте и побелку в подъезде, изрисовывают ли стены дома. И многое другое не менее важное для комфорта остается вне модели.
Но, даже не смотря на такое упрощение результаты работы модели даже на неполных исходных данных лучше, чем полное неведение об окрестностях жилья или только позитивная информация о районе. Набор факторов хоть и субъективный, но при возможности не жить рядом, думаю многие решат так же. Рядом с жильем, ближе чем в 150м не хотел бы видеть, нюхать и слышать влияющее на:
качество воздуха: Станция перевалки мусора, Свалка, Террикон, Коровник, Свинарник, Жидкий навоз, Очистка сточных вод, Дымовая труба, Крематорий
уровень шума: Стройка, Железнодорожные пути, Взлётно-посадочная полоса, Вертолётная площадка. Автомобильные дороги регионального значения, дороги с более чем 2мя полосами движения, Автомобильные дороги федерального значения, Стадион
индустриальное настроение: Промышленные площади, Подстанции, Генератор, ТЭЦ, Карьер
опасность: Контейнер, содержащий жидкости или сжатые газы, Магазин пиротехники, Опасность, Территория подвержена стихийным бедствиям, Район или дорога, подверженная затоплению
комары: Заболоченые участки
Это все что учитывает модель на данный момент на тех данных что доступны. Если в исходных данных OpenStreetMap, например, нет информации о местах схода селевых потоков или затопления местности, то и в результате модели эти места на карте не будут отмечены как опасные. Если вы живете поблизости с такими местами и знаете о проблемах, то вы можете редактировать данные в OSM, проект развивается за счет совместных правок данных.
Новая визуализация для результатов
Читатели подсказывали в комментариях что было бы полезно увидеть сразу все здания - в которых я бы не стал жить и те которые модель не считает не подходящими для жилья.
Оказалось, что для GeoJSON у MapBox есть формат, который позволяет указывать стиль геометрии - прозрачность и цвет:
'fill' - цвет области (красный #ff0000 в ячейках индекса Uber H3, где по модели и данным у зданий есть негативные факторы, зеленый #00ff00 где они отсутствуют, оранжевый #ff9700 смешанные ячейки где и то и то)
'fill-opacity' - выставил в 50% прозрачности
Для того чтобы в результат попали ячейки без негативных факторов: в запросе для расчета таблицы distance в PostreSQL/PostGIS я заменил inner join на left join и расчитал результаты агрегации этих дистанций в таблицу h3_10_stat_colored:
create table h3_10_stat_colored as
select h3,h3_cell_to_boundary_geography(h3) cell ,count, reason,
case
when ARRAY_POSITION(all_reason,NULL::text) is null and cardinality(reason)>0 then '#ff0000'
when ARRAY_POSITION(all_reason,NULL::text)>0 and cardinality(reason)>0 then '#ff9700' else '#00ff00'
end colour
from (
select h3_10 h3, count(distinct (to_id,to_type)),array_agg(distinct reason) filter (where reason is not null ) reason, array_agg(distinct reason) all_reason
from distance
group by 1 order by 1
) geo;
\copy (select json_build_object('type', 'FeatureCollection','features', json_agg(
json_build_object('type', 'Feature','geometry', st_AsGeoJSON(cell)::json,
'properties', json_build_object(
'count', count,
'reason', reason,
'fill',colour,
'fill-opacity',0.5)))) FROM h3_10_stat_colored ) to 'h3-10_colored.json.geojson';
Остается одна проблема - встроенный виджет карты в GitHub Gist не поддерживает цвета. Но онлайн сервис geojson.io поддерживает стили и цвета в GeoJSON. В QGIS тоже можно загрузить данные из таблицы h3_10_stat_colored и настроить цвета:
И отображение этих же данных без каких-либо настроек "из коробки" в geojson.io
Результаты
Можно скачать данные и загрузить в онлайн инструменте geojson.io, где можно масштабировать карту.
Здесь будут лишь скриншоты результатов работы модели в QGIS:
Интересно будет узнать где в этих местах на берегу моря вам было дискомфортно и что на это влияло.
Комментарии (24)
vagon333
27.09.2023 06:01Глядя на красные районы Новороссийска и Геленджика, я бы подправил критерий. :)
Вы забраковали новострой, со свежей инфраструктурой, без проблем социалистической электрики, канализации и водопроводов.
Через 3-5 лет ремонт закончится, а вид на бухту и близость пляжа останется.igor_suhorukov Автор
27.09.2023 06:01+2Так как изменятся данные о стройках и районы "позеленеют". Результаты "не высечены из камня"...
B_bird
27.09.2023 06:01Больше смущает зона аэропортов, хоть сейчас они почти не задействованы... Вряд ли шум, экология и пробки на подъездах позволяют ячейки относить к зеленым
Rollant
27.09.2023 06:01+2У аэропортов надо учитывать схемы захода.То, что вы находитесь в 12 км от аэропорта не гарантирует, что самолёты не будут летать в 700 м над вами.
Javian
27.09.2023 06:01-1А кое-где еще с подвески могут боеприпасы соскочить
http://mil.ru/airfields.htmКарта аэродромов и приаэродромных территорий
saag
27.09.2023 06:01А давайте про южное побережье Испании:-)
marapper
27.09.2023 06:01Ха, сейчас работаю как раз в интернациональном стартапе по недвижке в Берлине. Пока до Испании не добрались, но карты шума выглядит так:
Швейцария (уличный шум по некоторым параметрам, но в основном, по улицам)
для Германии (чисто по транспорту)
На самом деле, глупо сводить данные только к одной карте - мы показываем еще транспортную доступность, близость точек "интереса" (от магазинов до атомных станций), а для каждой страны еще куча особенностей. Например, для Швейцарии, например, еще важно количество дневного света и сколько вершин гор ты можешь увидеть из апартов (учитывая, что именно они заслоняют свет).
igor_suhorukov Автор
27.09.2023 06:01Спасибо за комментарий по делу. Теперь рассказывайте какой routing engine используете для расчета растояний. Как выбираете точки для многоподъездных домов и для площадных POI? Какой софт используете для расчета высоты солнца? Учитываете ли при этом тень от деревьев, их высоту - откуда эти данные берете?
Какая территория у вас сейчас в проекте учитывается(сколько зданий)? Какие критерии применяются в вашей модели для оценки домов? Какая гексагональная система/scale используется для агрегации данных на первом скриншоте?
Сколько стоит MapBox API для ваших нужд?
На самом деле, глупо сводить данные только к одной карте
Тут же проблема как это бесплатно хранить и визуализировать любому по открытым данным. Если дадите захостить модель для Испании на ваших серверах postgis/postgrest/web server, то могу и по слоям сделать)
marapper
27.09.2023 06:01Вряд ли отвечу, уж простите. Много вопросов для проекта, над которыми еще 100 человек, кроме меня работает, и многое под NDA и коммерческой тайной :).
igor_suhorukov Автор
27.09.2023 06:01+1Тогда похоже и ваш совет не применим)
marapper
27.09.2023 06:01Да нет, я согласен, но то что делаете - классно! Из близких примеров, когда подобное переросло в реальный проект с монетизацией https://vc.ru/tribuna/712087-delaem-besplatnyy-agregator-nedvizhki-homebro-2-0-pomozhete
Javian
Современная "Очистка сточных вод" - это крытые емкости, от которых нет такого запаха как от старых систем. А старые пахнут на несколько км при хорошем ветре.
>на берегу моря вам было дискомфортно и что на это влияло.
Постоянно жить на берегу моря дискомфортно - если взглянуть на поселки, куда не ходила нога девелопера (или вглянуть на старых картах и старых спутниковых снимках), то жилье удалено от береговой линии примерно на километр. На таком расстоянии не чувствуются негативные факторы микроклимата моря.
igor_suhorukov Автор
Но они же не гермитичны и потом воды все равно попадают в окружающую среду... Как я понимаю, что для аэрации контур не может быть замкнутым.
Зимой я согласен, летом влажность в помещении.
Javian
Вода попадает в море (т.е. на пляж) если нет канализации - это большинство поселков. А если сделано по современным нормам с глубоководным сбросом, то с глубины эта вода не поднимется на поверхность.
Т.е. тут надо очень внимательно смотреть на этот вопрос. Как классический пример можно взять Коктебель, т.к. он отметился в массе публикаций на тему слива канализации прямо на пляж.
Sercius
На нашем побережье прям дискомфорт от влажности, IMHO, только к югу от Туапсе. К северу микроклимат в городах и поселках близок к сухому средиземноморью. В Геленджике много санаториев именно для астматиков - сочетание сухого климата и сосен хорошо поправляет здоровье. В Анапе тоже достаточно сухо, но с растительностью похуже. Конкретно в представленных городах есть еще фактор рельефа. В Геленджике в большей степени - там есть микрорайоны, где непривычному к таким уклонам человеку будет не комфортно просто пройтись до магазина.
А если попробовать впилить в модель данные с Циана/Авито по возрасту жилья? В идеале, конечно, такие исследования делать на базе данных какого-нибудь 2ГИС. Но это уже не хобби для любителя, а конкретные исследования, за которые платят конкретные деньги.
igor_suhorukov Автор
Обычно возраст зданий все берут с открытых датасетов из ГИС ЖКХ. Они вроде доступны, а вроде нет. Кое кто в рунете на этом бизнес сделал, крупные корпорации свои парсеры сайта для него писали. Как пример публикации с данными про год постройки на хабре "Рассказ об этапах работы над картой возраста домов Владимира".
Javian
Там многие данные "от балды" и можно поделить по смыслу "до революции, после войны, 1970-е"
uuger
Поддерживаю двумя руками. Даже скорость, с какой корродируют металлы на конструкциях, увеличивается чуть ли не экспоненциально по мере приближения к морю. В зависимости от рельефа, в зимние месяцы первые 200-300 метров от линии прибоя обильно орошаются солёной взвесью из воды и песка из-за штормов.
Javian
Простой пример - поставил машину на набережной вечером, а утром на тормозных дисках можно разглядеть мелкие коричневые точки.
inkvizitor68sl
Тормозные диски летом в Москве за неделю ржавеют и без моря
inkvizitor68sl
Большинство негативных факторов микроклимата моря исправляется нормальной вентиляцией в обе стороны - приточной и вытяжной. Желательно, во всех комнатах - но на худой конец дырки в окнах подойдут.
Впрочем, конкретно про черноморское побережье говорить сложно, там не жил, может там и свои особенности.
uuger
к сожалению, не исправляются - светильники на балконах и наружные блоки кондиционеров цветут всеми оттенками коричневого, а окна покрываются солью
вот ткнул почти наугад на Яндекс.Картах, очень показательный кондиционер
Hidden text
Javian
На спутниковых антеннах лучше видно