Русский
Русский
English
Статистика
Реклама

Карты

Иван Чашкин Мне нравится, что OpenStreetMap это открытые данные, которые доступны всем и всегда

17.06.2020 12:21:27 | Автор: admin

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

Когда и как вы познакомились с проектом OpenStreetMap?

10-15 лет назад был проект Пробковорот, который строил карту пробок. Я им активно пользовался. И то ли он в какой-то момент перешел на OSM, то ли сразу его использовал. Но вот через это приложение я и узнал про существование OSM.

Почему вы начали редактировать карту в OSM? Как это случилось?

Незадолго до того, как я узнал про OSM, у меня была мысль сделать свою навигационную программу, так как тогда для Windows CE ничего подобного не было. Я стал интересоваться картографией и изучать соответствующие сервисы. Не знаю почему, но уже на этом этапе я стал собирать GPS-треки улиц своего города. В то время я жил в небольшом городке Воронежской области и обошел практически все его улицы. Кстати, он тогда был весьма плохо отрисован даже в Яндекс.Картах буквально пару улиц и всё. И представьте мою радость, когда я узнал про OSM и стал это белое пятно превращать в плотную сеть улиц, домов и пр. Тут-то мне и пригодились ранее собранные треки. Буквально на твоих глазах пустое место превращается в нормальную карту, а потом ты можешь загрузить всё это в навигатор и построить маршрут прямо до своего дома. Тогда это было чем-то невероятным.

Сложно ли вам было влиться в проект, изучить его теги, структуру, архитектуру?

Нет, не сложно, так как я увлекаюсь программированием. По мне так, OSM спроектирован достаточно логично. К тому же, есть WikiOSM, где все подробно написано практически о каждом теге. Если чего-то нет на русском, то это точно есть на английском языке. Если же все равно остались вопросы, всегда можно зайти на форум и попытать его обитателей, которые сразу же подскажут направление.



Сейчас продолжаете картографировать?

Продолжаю, но, в основном, отмечаю подъезды с номерами квартир, иногда магазины, а также, если иду или еду по незнакомой для меня территории и вижу какие-то интересные POI или нестандартное дорожное ограничение, то ставлю точку в навигаторе с комментарием. Потом уже дома, когда доходят руки, сверяюсь с OSM и вношу если необходимо правки. Помимо этого, если еду куда-то далеко или когда бываю в небольших деревнях, стараюсь всегда записывать GPS-треки, а после загружать их в OSM, чтобы потом по ним можно было выровнять спутниковые карты. А вообще есть идея сделать сервис, который бы показывал, где треков нет или они уже устарели и неплохо бы съездить туда ещё разок.

Как вы картографируете? Поделитесь своими секретами? Какие используете программы, как собираете информацию и пр.

Сейчас много правок вношу через мобильный навигатор Maps.Me. Он позволяет делать простейшие правки, в том числе оставлять заметки. Иногда использую Keypad-Mapper_3 это мобильное приложение, с помощью которого удобно собирать информацию, а именно номера домов. Треки пишу в OSM Tracker, когда это делаю, параллельно запускаю приложение Tower Collector, которое сопоставляется координаты с сигналом сотовой связи для проекта OpenCellId. Также как-то пробовал снимать панорамы улиц для Mapillary и OpenStreetCam, прикольная штука. Рекомендую. Неплохо так упрощает картирование.

Если же возникает желание отрисовать какую-то большую территорию, по-старинке распечатываю обходной лист и иду в поля: хожу, например, по дворам, смотрю их устройство и делаю пометки ручкой на листочке. Потом дома неспешно открываю JOSM и начинаю рисовать Когда так ходишь, нередко люди тебя принимают за какую-то важную персону, которая что-то проверяет, и начинают задавать странные вопросы.

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

Все-таки, почему подъезды?

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

К тому же, их достаточно просто отмечать: идёшь по улице и записываешь с табличек номера подъездов и квартир в них. Обычно я это делаю через Maps.Me: ставлю в нем маркер и делаю к нему подпись вида 3:21-40 это означает, что здесь находится подъезд 3, в котором располагаются квартиры с 21 по 40. Когда дом более-менее стандартный, то можно записывать только последнее число, например, 1:-20, -40, 3:-60 и т.д. Сейчас мне также периодически приходится ездить развозить заказы по адресам и если есть номера квартир в подъезде, то сразу можно построить маршрут к финишу и даже приблизительно прикинуть этаж квартиры. Кстати, недавно мне пришла мысль попробовать сделать геокодер, который бы по адресу выдавал бы координаты места с точностью до подъезда, сделал небольшой прототип и сейчас тестирую когда есть время.



Вы автор многих полезных валидаторов. Самый известный из которых валидатор подъездов. Ни одна картоакция в сообществе, связанная с номерами подъездов, не обходится без него. Расскажите о них. Как они создавались? Зачем их делали?

Мои инструменты сложно назвать валидаторами, так как они ничто ни с чем не сравнивают. Они всего лишь удобным образом в режиме онлайн показывают какой-то определенный вид информации, который уже хранится в OSM. Почти все они основаны на замечательном сервисе Overpass Turbo, благодаря которому использование OSM в исследовательских целях превратилось просто в праздник. На API этого сервиса и основаны почти все мои инструменты, которые, наверное, правильно было бы назвать другим словом визуализаторы.

Как я выбираю то, что отображать? Исходя из личных потребностей. С чем я часто работаю в OSM или сталкиваюсь в жизни, то под это и делаю очередную версию визуализатора. Начал картировать подъезды сделал инструмент, который их показывает, чтобы понимать, где они еще не отмечены.

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

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

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

Одна из последних карта границ регионов. Мне на одном сайте потребовалось раскрасить регионы России по цветам. Поискал в интернете, где можно взять координаты, не нашёл. Мне показалось, что эта задача довольно интересная: нужно выгрузить координаты всех регионов и упростить линии, так чтобы было минимум точек. Можно, конечно, ещё немного оптимизировать, но в целом получилось довольно неплохое приближение.

Исходный код всех моих визуализаторов или карт есть на GitHub, в основном это JavaScript, минимум серверной части на PHP и да, если нужно, можно свободно использовать для своих целей.



Что вам нравится в OSM? Что не нравится? Что бы сделали лучше?

Мне нравится, что OSM это открытые данные, которые доступны всем и всегда. Их в любой момент можно выгрузить и с их помощью решить какую-либо свою геоинфомационную задачу. Одно время я очень старательно редактировал Народную карту Яндекса, но потом понял, что я сам не могу использовать то, что я туда внес. И я перестал это делать.

Мне нравится редактор JOSM. Многие его ругают, а я от него кайфую. Сколько лет в OSM, а до сих пор узнаю про него что-то новое, то оказывается, что у него есть эта функция, то другая. К тому же, его можно использовать не только для OSM, но и для других ГИС-задач. У него куча плагинов и невероятная гибкость.

Мне нравится ширина и глубина OSM. Это чуть больше, чем просто карта. Многие говорят, что это база данных, но это цифровая модель мира. Поэтому в нем хранится гораздо больше, чем вы видите на первый взгляд. В нем есть место, как информации о качестве дорог, так и даже 3D.

Не нравится, когда люди не понимают суть проекта и портят данные. Сообщество все равно вернет всё назад, но жалко потраченного времени. Так было с покемонами, так сейчас происходит с переписью населения. Зачем это делать? Ведь эти данные в любом случае удалят.

Что бы сделал лучше? Наверное, я пожелаю разработчикам многочисленных программ, которые есть в мире OSM, терпения, сил и ярких идей. Мы пользуемся вашими наработками почти каждый день и хотим, чтобы они были еще лучше! Например, я очень жду, когда Maps.Me начнет показывать полосы на дорогах и перекрестках. Я их вношу, вношу, а он их всё не показывает.



Какие бы вы порекомендовали проекты, инструменты, приложения, которые как-то связаны с OSM?

Если говорить про мобильные навигаторы, однозначно рекомендую Maps.Me и OsmAnd. Первый вам пригодится, если вы собираетесь путешествовать по городам, второй если вас ждет поход, у него есть крутые функции, например, водная навигация. Недавно видел отличный проект OpenRecycleMap ребята из Пскова сделали карту на базе OSM, где можно найти или добавить контейнер для раздельного сбора мусора.

Что бы вы сказали тому человеку, который сомневается: использовать данные OSM или нет; участвовать в проекте или нет?

OSM это как Википедия или волонтерство. Ты, как и многие другие участники, делаешь свой небольшой вклад в общее дело, а в итоге получается, что проделана большая работа. Лично мне приятно чувствовать себя сопричастным к таким проектам, которыми пользуется большое количество людей. Вроде бы ты в удовольствие что-то делаешь и для себя, а в итоге это приносит пользу всем :-)



Используете данные OSM по работе? В личной жизни?

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

Что скажете в завершении беседы?

Если однажды попробовать поредактировать карту в OSM, то это дело может затянуть всерьёз и надолго. Поэтому будьте осторожны. :-)



Общение российских участников OpenStreetMap идёт в чатике Telegram и на форуме.
Также есть группы в социальных сетях ВКонтакте, Facebook, но в них, в основном, публикуются новости.

Присоединяйтесь к OSM!



Подробнее..

Из песочницы Как высчитать ключи перехода от лобой системы координат к WGS с сантиметровой точностью?

03.10.2020 18:20:42 | Автор: admin
Для кого этот пост картографы, геодезисты, генпланисты, строители и т.д.

Коллеги, привет!

Решаемая проблема получение 100% достоверных параметров для пересчета координат, например в привычные картографические градусы (WGS84). Коллеги уже поняли про что я, а любопытным поясню дело в том, что гуляющие по интернету приложения и алгоритмы с параметрами пересчета координат например из выписки ЕГРН на вашу дачу в координаты для GPS приемника, в подавляющем большинстве будут лаптем по карте. Для поиска объекта размером с дом, это не будет проблемой, а вот для инженерной затеи, уже слабовата точность. К примеру мы хотим обозначить границы на местности с сантиметровой точностью, найти трубу под землей или кабель, запустить безпилотник по картам с плоскими координатами, чертить чертеж в плоских координатах с картографической онлайн основой из интернета и многое другое, что требует субметровой точности.

Почему точные координаты становятся не точными


Плоские метровые координаты, знакомые нам из сведений о нашей недвижимости или с проектов и чертежей очень точны локально, но для привязки их к земному шару одной математики мало. Дело в том, что математическая модель плоской, метровой системы координат из документов, сначала была реализована на местности в виде геодезических пунктов, с точностью тех технологий, какие были на тот момент (в РФ большая часть систем координат развита в советское время и действуют по сей день). И уже потом от этих геодезических пунктах первого класса, создавались другие, от тех еще другие, от них всех производные секретные системы координат такие как СК63 с разворотами и искажениями координатной сетки, дабы врага запутать. При каждом таком преобразовании допускались искажения, незначительные, но нарастают они не линейно относительно количества преобразований, а намного прогрессивнее. В итоге большая часть координатных сеток сейчас похожа на чуть помятую и стянутую с одного краю простыню. Именно по этому 99% геокалькуляторов не спасут Вас от помятой простыни координатной сетки. Есть несколько геодезических сервисов для пересчета координат, платных, могу предположить, что там люди считают не по теоретическим параметрам системы координат, а обладают всеми параметрами помятой простыни. В большей части РФ надо рассчитывать параметры системы координат для небольших территорий, радиус этих территорий часто не превышает 15км. При таких небольших территориях искажения координатной сетки часто не превышает сантиметра, система координат очень точно лежит на земном шаре. Если Ваш интерес вылезает за 20-30км пространства, то необходимо несколько локальных параметров перехода рассчитывать на меньшие территории, дробить систему координат на более мелкие подзоны.

Изобретаем велосипед?


Для целей расчета истинных параметров систем координат оказывается вагон ПО. Правда это как правило составляющие сложных и дорогостоящих профессиональных программных комплексов для геодезии и картографии, которые далеко не всем профессионалам даже нужны, еще часть ПО работает на винде с непонятными и сложно употребляемыми форматами фалов. Есть еще варианты из командной строки. Вдохновившись статьей на профильном форуме решили написать своё ПО с блекджеком и вебом.

image

Расскажу кратко как это работает


Для расчета параметров нам нужны три точки (можно больше, будет точнее) в двух системах координат, в WGS и в той самой местной системе координат, параметры которой Вы хотите знать. Плоские метровые координаты берем из каталогов, кадастровых планов территорий, карточек привязок и т.д. Градусные координаты или из тех же источников, либо часто используем координаты GNSS базовых станций, либо берем спутниковый приемник, и просто замеряем эти известные в плоских координатах точки.

Веб форма высчитывает параметры системы координат и выводит на экран в двух популярных и применимых в 99% ГИС системах форматах proj строка и WKT.

Тут немного рассказов про те самые параметры и немного терминологии


Много непонятных букв
Геоцентрическая система координат, это система где есть три пространственные координатные оси проходящие через центр земли. Координаты в такой системе имеют вид x,y,z или привычные нам широта и долгота измеряемые градусами угла от нулевой точки через землю lat long h. При этом высота h отсчитывается не от центра земли как в первом случае, а от эллипсоида, сферы, геоида (упрощённой модели поверхности земли).

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

Местная система координат (МСК) как правило прямоугольная система координат, обслуживающая небольшую локальныю территорию. Часто распостраняется на территорию района или города, где её искажения не критичны для точности строительства, кадастра и т.д.

Параметры системы координат состоят из нескольких отдельных параметров, опишем каждый из них. Возьмём строку параметров PROJ4 (MapInfp, ArcGIS и т. д. Так же используют эти параметры, только структура записи иная): +proj=omerc +lat_0=59.8338730825 +lonc=33 +alpha=-0.0001 +gamma=-1.771957267229058 +k=0.9996584453038837 +x_0=2365031.423134961 +y_0=426397.2888527482 +ellps=krass

Модель земного шара (+ellps=krass) в нашем случае это эллипсоид Красовского. Под этим названием эллипсоида скрывается параметры примерного описания земного шара: направление координатных осей и углы между осями, диаметр, сжатие на полюсах и т. д. Выбрать необходимый эллипсоид можно опытным путём либо зная основываясь на какой системы координат родилась интересующая вас МСК. На территории РФ, большая часть МСК выходцы из СК42 с эллипсоидом Красовского.

Проекция земного шара на плоскость (+proj=omerc) метод с помощью которого прямоугольные координаты проецируются за круглую землю. Самый распространённый алгоритм это апельсиновые дольки, если порезать апельсин по долькам, отделить от долек шкурки.

Расправленную шкурку положить на лист в клетку и получится проекция Меркатора. Бывают разные проекции с разными направлениями и размерами долек, бывают цилиндрические проекции, это когда апельсин превращают в цилиндр и раскатывают кожуру на плоскость, конические и т. д. Выбрать необходимую можно опытным путём либо зная основываясь на какой системы координат родилась интересующая вас МСК. На территории РФ, большая часть МСК выходцы из СК42 с проекцией Меркатора. Для точных локальных параметров МСК на малых территориях рекомендуем применять косую проекцию Меркатора (omerc).

Центр проекции в градусах (+lat_0=59.8338730825 +lonc=33) это то место, где расправленная шкурка апельсина меньше меньше всего растягивается для достижения плоскости (обычно серединка шкурки дольки), место с наименьшими искажениями. Грубо говоря место где плоский лист МСК прикасается к шарику нашей планеты. Часто для центральной точки выбирают точку центра района геодезических работ.

Развороты (+alpha=-0.0001 +gamma=-1.771957267229058) разворот осей координат МСК относительно меридиана.

Масштабный коэффициент (+k=0.9996584453038837), в идеале должен быть единицей. Показывает, на сколько реальное расстояние отличается от координатного. С помощью масштаба можно сразу прикинуть, как увеличивается искажение размеров при отдалении от центральной точки МСК.

Координаты центра проекции в метрах (+x_0=2365031.423134961 +y_0=426397.2888527482), можно рассматривать как значение смещения начала отсчёта координат в плоской МСК.

За основу взяты опенсорсные пакеты

  • proj4 для геодезических трансформаций
  • Leaflet для отображения информации на карте
  • geophp для расчета территории действия параметров с сантиметровой точностью (на момент написании статьи не реализовано)

Исходный код веб формы доступен с лицензией AGPL в открытом репозитории.

Обсуждение веб формы тутачки.
Подробнее..

Перевод Новости из мира OpenStreetMap 515 (26.05.2020-01.06.2020)

13.06.2020 18:19:58 | Автор: admin

lead picture


Тренды в OpenStreetMap: среди стран, городов и тем 1 | Pascal Neis | map data OpenStreetMap contributors



Картографирование


  • Русс Гарретт, разработчик сайта OpenInfraMap, опубликовал в своем Твиттере картинку, на которой можно увидеть источники возобновляемой энергии в Европе, отмеченные в OSM.
  • [1] На сайте статистики osmstats.neis-one.org, который ведет Паскаль Нейс, появилась новая функция, аналогичная Twitter Trends. Она отображает тренды в OSM: среди стран, городов и тем.
  • Zkir поделился своими выводами, которые он сделал по итогам участия в картоакции "Как проехать в деревню?" (о ней мы писали ранее). Кстати, он также провел стрим.

Сообщество


  • Местное отделение Фонда OSM в США опубликовало протокол заседания своего совета от 29 апреля 2020 года.
  • В российском сообществе OSM продолжается картоакция "Как проехать в деревню?". Напомним, что в рамках инициативы предлагается нарисовать дорогу к тем деревням, которые на данные момент никак не соединены в OSM со всем остальным миром. Сейчас идет работа над Южным федеральным округом. Ранее был отработан Приволжский.
  • SomeoneElse написал скрипт, который умеет делать рейтинг тем для данного того или иного списка рассылки OSM. С его помощью он составил рейтинги тем списка рассылки Тегирование в мае 2020 года, Разговоры в мае 2012 года (когда было много горячих дискуссий во время сменя лицензии) и мае 2007 года.
  • Валерий Трубин продолжает серию интервью с осмерами. На этот раз он поговорил с Евгением Катышевым о том, как принимаются новые теги в OSM, и Николаем Парухиным о переводах инструментов на русский язык.
  • Иван Кирюшкин рассказал, как он с помощью OSM и QGIS построил изохроны территориальной доступности горнолыжных курортов Розы Хутор и Альпики-Сервис.
  • Мы уже сообщали ранее (#498), что пользователь Vascom начал еженедельно собирать новые карты для Maps.Me. Не так давно он добавил еще 6 новых стран: Сербию, Словакию, Словению, Венгрию, Румынию, Боснию и Герцеговину. Помимо этого, он начал делать ежедневные сборки. Правда, всего две локации: Москва и запад Московской области.

Импорты


  • Российская компания NextGIS сообщила, что выполнила импорт в OSM всех гипермаркетов Лента. Как отмечается на форуме, для импорта был использован инструмент OSM Conflator, процесс был документирован на WikiOSM. Импорт предварительно был согласован с сообществом RU-OSM на форуме и в Telegram-чате.

Фонд OpenStreetMap


  • Эдоардо Нирхут рассказал в своем блоге об усилиях, которые он прилагает для создания официального местного отделения Фонда OSMF в Океании. Компании OSGeo Oceania Ltd уже подала заявление о признании ее юридическим лицом местного отделения.
  • Фонд OSM и GraphHopper выпустили совместный пресс-релиз, в котором сообщили о выходе версии 1.0 открытого движка маршрутизации GraphHopper. Его разработка ведется уже 7 лет.

Гуманитарный OSM


  • Некоммерческая организация Missing Maps способствует сбору открытых данных об учреждениях здравоохранения во всем мире. В своем блоге она рассказывает о платформе healthsites.io и их подходу к ее проектированию.
  • HOT объявил первую группу получателей программы микрогрантов Rapid Response Microgrants: COVID-19, целью которой является улучшение покрытия карты слабо отрисованных районов, у которых нет сильных сообществе, так как они могут быть забыты в связи с пандемией COVID-19.
  • В интервью Вилле Марселен рассказал о том, как он работал над новой версией инструмента (4.0) HOT Tasking Manager.
  • Забытый и неотрисованный под таким заголовком на сайте Пулитцеровского центра вышла статья о судьбе Макоко, районе трущоб в Нигерии, которого официально не существует. Помимо прочего в материале рассказывается о работе HOT по составлению карты этой территории.

Образование


  • Павел Гаврилов сделал два (1, 2) больших обучающих видео о работе с мультиполигонами в JOSM (посты в блоге: 1, 2).

Карты


  • Никита Славин в статье на Хабре рассказал, как он сделал карту Санкт-Петербурга, показывающую возраст домов.
  • "Куда бы переехать" карта с историями из разных стран. В основном, рассказы россиян о жизни в других странах и городах России. В качестве подложки карта на базе OSM. К сожалению, есть проблемы с атрибуцией.
  • Карта размещения эвакуированных госпиталей на территории Кемеровской области-Кузбасса во время Великой Отечественной войны.

Переходим на OSM


  • Японский автоперевозчик Hokkaido Takushoku Bus сделал карту своих маршрутов. В качестве подложки OSM.
  • Район Фрейзинг в федеральной земле Бавария (Германия) использует OSM на своем туристическом портале.
  • В Минске создали интерактивную карту мест сбора мусора. В качестве подложки OSM.
  • Оказалось, что крупная российская социальная сеть Вконтакте использует POI из OSM.

Открытые данные


  • Балтийская металлургическая компания поделилась с сообществом RU-OSM снимками своей промышленной площадки.
  • Представитель замка Постерштайн в Германии, в котором сейчас находится музей, спросил: сотрудничают ли между собой OSM и Викимедия в Германии. Это их заинтересовало, так как не так давно они узнали о проекте Карта замков Швейцарии совместном проекте швейцарских OSM и Викимедии. Штефан Келлер поделился с ними нужными контактами, но до сих пор не получил никакой обратной связи.
  • Гийом Ришар сообщил, что доступна новая карта Люксембурга, выполненную методом отмывки. В ее основе открытые данные, собранные с помощью технологии LiDAR.
  • Флориан Лоховв беспокоится за проект OpenStreetCam. В данный момент он делает новые снимки быстрее, чем их удается загрузить на этот сервис. В последнее время обработка снимков на нем происходит по несколько дней.
  • Немецкий город Херренберг сделал платформу stadtnavi, чтобы поддержать переход к более экологичным видам транспорта, таким как общественный транспорт, каршеринг, велосипед или просто ходьба. В основе проекта данные OSM и свободное программное обеспечение.

Программное обеспечение


  • Разработчики OsmAnd сообщили о выходе новой версии приложения, которая теперь умеет работать с плагинами пользователей. За счет этого его можно будет настроить еще более тонко. Отмечается, что вы можете указать в плагине собственные файлы рендеринга, шрифты, маршруты, карты и пр.
  • Возобновлена разработка плагина для браузера OSM Smart Menu.

Программирование


  • Куинси Морган, разработчик онлайн-редактора iD, размышляет о том, чтобы сделать мобильное приложение для данного редактора.

OSM в СМИ


  • Сара Скоулс написала в журнале Popular Science об OSM в целом, а также коснулась ряда деталей, например, импорта зданий в Денвере, археологии, спасателях, вырубке лесов и многом другом.

Другие гео события


  • Возможно, первая абстрактная карта, показывающая маршруты общественного транспорта была выполнена Францем Раффельшпергеров в 1826 году.
  • Бард Вульфгар, наиболее известный своими сатирическими карикатурами о Донаельде Неготовом, на самом деле работает археологом. В Твиттере он опубликовал интересную информацию о том, как аэрофотосъемка и LiDAR помогают ему в его работе каждый день.
  • Скорее всего, карта Германии 1989 года сейчас невероятно дешево стоит .
  • Meander это генератор исторических карт течения вымышленных рек.
  • С помощью сервиса 'Widen My Path CycleStreets' можно оставить маркер на карте Великобритании в том месте, где по мнению ее автора необходимо расширить велосипедную дорожку.
  • Российской госкорпорацией Роскосмос выпущен очередной номер научно-практического журнала Дистанционное зондирование Земли из космоса в России.
  • Власти Москвы опубликовали карту иммунитета к коронавирусу.
  • В Москве с 1 июня разрешили выходить на улицу для прогулок и занятий спортом. При этом власти предлагают выходить на улицу не тогда, когда хочется, а по расписанию. График прогулок составлен для каждого дома жилого дома в Москве! Узнать его можно на сайте мэрии города.



Общение российских участников OpenStreetMap идёт в чатике Telegram и на форуме. Также есть группы в социальных сетях ВКонтакте, Facebook, но в них в основном публикуются новости.

Присоединяйтесь к OSM!



Предыдущие выпуски: 514, 513,,512, 511, 510,
Подробнее..

Перевод Красивая и подробная геологическая карта Марса, сделанная на Python, GDAL

14.06.2020 18:20:27 | Автор: admin
image

На этой неделе творческое переосмысление геологической (или все же ареологической?) карты Марса на основе карты, сделанной USCS. Использовалась те же геологические данные, что и для оригинальной, но было добавлено больше топонимов и подписей, проведен редизайн визуального стиля, а термины из легенды карты упрощены для общего понимания.



Одной из самых сложных частей проекта было сделать перевод условных обозначений на язык не специалистов. Оригинальная карта была сделана для геологов, поэтому большую часть вокабуляра пришлось пересмотреть. Например, новая расшифровка значения края кальдеры Граница пустой магматической камеры, оставшейся после извержения вулкана. В оригинале было Овоидный бугорок, очерчивающий одну или несколько слитых частично или полностью закрытых впадин; коллапс вулкана, связанный с извержениями и, возможно, взрывными извержениями.

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

image
Некоторые из особо-примечательных геологических объектов на Марсе. 1: Гора Олимп, самый большой вулкан в Солнечной системе. 2: Долины Маринер, система глубоких каньонов длиной более 4000 км. 3: Равнина Эллада, самый большой видимый ударный кратер в Солнечной системе. 4: Марс геологически разделен на Северную низменность (бледно-зеленую) и Южную горную местность (коричневая). Ударные кратеры, образованные падающими астероидами и кометами (неоново-желтые), разбросаны по всей планете.

image
Для карты использовались следующие отдельные слои. 1-3: Геологические элементы, геологические контакты и геологические особенности из набора данных USGS. 4-5: уровень наклона и из двух источников USGS. 6: Номенклатура от IAU (Международный Астрономический Союз). 7-8: линии сетки и 3D-эффект, разработанный в Photoshop.

Много времени ушло на выбор проекции для проекта. Чтобы точно показать, какая часть планеты состояла из каждого геологического образования, в итоге использовалась проекция Эккерта IV. Этот тип проекции карты искажает контуры объекта, но сохраняет относительную площадь фигур по всей поверхности планеты. Такая проекция не подходит для визуализации полярных регионов, поэтому также добавили четыре карты-врезки в углы, чтобы показать каждое полушарие Марса (северное, южное, восточное и западное).

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

image
1: Равнопромежуточная. 2: Экерт IV. 3-5: Ортографические проекции с центром на разных долготах и широтах


Рассказ о реализации



В данном проекте использовались открытые данные USGS, IAU и NASA.
Стек технологий: Python 3.7.1, GDAL 2.4.1, Illustrator CC 2019 и Photoshop CC 2019 (можно заменить на бесплатные Gimp и Inkscape, например).
Также нужно установить пакеты: matplotlib numpy, pandas, cartopy, jupyter.


Сбор и обработка данных



Создание модели рельефа (DEM)



Модель рельефа это данные, содержащие информацию о высоте различных точек на планете. В проекте использовались данные, полученные из Геологической Службы США. Каждый пиксель в файле GeoTIFF это 16-битное число, которое описывает высоту точки.

Примечание: многие программы не могут нормально прочитать этот файл, так что то, что он выглядит странно в формате предпросмотра или в других неспециализированных программах это нормально. В рамках проекта работа с ними шла через GDAL (англ. Geospatial Data Abstraction Library библиотека абстракции гео-пространственных данных).

Создание проекций карты



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

Изменяем проекцию в DEM-файле: в исходном файле использовалась равнопромежуточная проекция, поэтому нужно ввести следующий код в командную строку, чтобы осуществить перевод. Код использует оригинальный файл intif и создает новый outtif, в формате eck4 (Эккерт IV) проекции.

gdalwarp -t_srs "+proj=eck4" ./path_to_intif.tif ./path_to_outtif.tif


Потом уменьшаем разрешение DEM, просто сокращая размер каждого пикселя до 1500x1500 метров, используя метод average. Это позволит сократить время обработки, да и уменьшение разрешения в этот момент сделать проще, чем потом.

gdalwarp -tr 1500 1500 -r average ./path_to_intif.tif ./path_to_outtif.tif


Отмывка и карта склонов



Дальше мы используем получившийся файл для создания карты с отмывкой и карты склонов для каждого полушария планеты.

Карта после отмывки показывает тени из воображаемого источника света, свет падает на карту сверху. Он воображаемый, потому что в реальном мире так не бывает одиночный источник света создаст тени под разными углами в разных частях шара. Встроенная функция hillshade в GDAL устанавливает угол падения света одинаковый для всей карты. Для данного проекта z, вертикальное увеличение, поставили равным 20. Это увеличивает каждое значение высоты в 20 раз, чтобы сделать рельеф более контрастным и обеспечить отображение теней.

gdaldem hillshade -z 20 ./path_to_intif.tif ./path_to_hillshade.tif


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

gdaldem slope ./path_to_intif.tif ./path_to_slope.tif

image

Ортографические проекции



В дополнение к карте в проекции Эккерт IV также сделаны четыре карты полушарий Марса. Проекция Эккерт IV плохо подходит для отображения Северного и Южного полюсов, поэтому эти две врезки очень полезны для их понимания. Для получения отмывки и карты склонов повторяем код с небольшими изменениями ortho вместо eck4 и обозначаем центр долготы и широты для каждой карты (North:+lat_0=90 +lon_0=90, South :+lat_0=-90 +lon_0=90, East:+lat_0=0 +lon_0=90, West:+lat_0=0 +lon_0=270).

gdalwarp -t_srs "+proj=ortho +lat_0=90 +lon_0=0" ./path_to_intif.tif ./path_to_outtif.tif
gdalwarp -tr 1500 1500 -r average ./path_to_intif.tif ./path_to_outtif.tif
gdaldem hillshade -z 20 ./path_to_intif.tif ./path_to_hillshade.tif
gdaldem slope ./path_to_intif.tif ./path_to_slope.tif

image

Легенда карты


Международный Астрономический Союз отвечает за присвоение имен внеземным объектам. Можно просто скачать файл в формате CSV, содержащий все объекты для каждой планеты прямо с их сайта. Для этого надо использовать функцию Advanced Search (расширенного поиска), чтобы скачать All Feature Types (все типы объектов) для вашей планеты Target (Mars), но только с Approval Status of Adopted by IAU одобренные МАС. В разделе Columns to Include section (столбцы для включения) выберите Feature ID, Feature Name, Clean Feature Name, Target, Diameter, Center Lat/Lon, Feature Type и Feature Type Code. Также можно включить Origin (происхождение), если хотите добавить в проект дополнительную информацию об объектах, такую как, например, в честь кого он был назван.

Геологические структуры и элементы


Геологическая карта показывает различные типы пород и другие особенности, такие как линии разломов и русла рек. У USGS есть красивая геологическая карта Марса, которую мы и используем в качестве исходной. Для работы с этими данными загрузите архив базы данных (790 МБ) с USGS Geologic Map. В следующем разделе, посвященному дизайну карты в Python, объясняется, как получить доступ и отобразить каждый тип данных в этой базе данных.

Дизайн карты в Python



Мы создаем шесть чертежей (plots) с геологическими элементами, структурами, особенностями, двумя видами текстовых подписей и сеткой. Часто стоит разделять данные для обработки, чтобы легко применять при необходимости эффекты из Photoshop или Illustrator. В matplotlib использовался gridspec, чтобы настроить все элементы так, чтобы каждый subplot занимал конкретное место в пределах декоративной рамки.

image

Геологические элементы это различные виды рельефа, составляющие поверхность планеты. Разные скальные элементы обычно представлены разными цветами. Набор данных USGS помечает каждую породу 23 буквенным кодом, обозначающим тип элемента. Назначаем цвет каждому буквенному коду, составив таблицу пар код-цвет в Mars_geologic_units.csv. Мы обращаемся к этому файлу при построении каждого элемента в cartopy и matplotlib. Сохранение графических параметров в отдельном файле облегчает использование различных цветовых схем и обособляет дизайн от кода.

image

Геологические контакты это границы между геологическими породами. Некоторые геологические границы являются приблизительными или скрыты под пылью. Как и для геологических пород, используем файл конфигурации Mars_geologic_boundaries.csv, чтобы отобразить каждый тип геологического контакта в другом цвете. На окончательной карте настраиваем отображение некоторых геологических контактов в виде пунктирных линий, просто открыв PDF в Illustrator и выбрав все объекты одного цвета (Select -> Same -> Stroke color).

image

Геологические особенности это другие видимые линии на поверхности планеты, такие как каналы, края кратеров или гребни гор. В датасете есть 13 различных типов. Чтобы отобразить каждый из них в особом стиле, каждый отобразили в другом цвете, а затем стилизовали линии в Illustrator. Это позволило применить специальных эффекты, такие как градиентные хвосты, чтобы показать направление движения каналов оттока и лавовых потоков.

image

Условные обозначения



Для карты использовалось два набора данных для меток. Первый это официальный от IAU. Размеры меток создаются в соответствии с размером объекта, хотя все равно финальную настройку размеров необходимо делать в Illustarator.

image

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

image

Места высадки: чтобы отобразить места высадки марсоходов и других космических аппаратов, использовалось улучшенное цифровое изображение от NASA в качестве фона. Чтобы показывать все 4 полушария планеты, пришлось поменять проекцию landing_sites.ipynb.

Сохранение результатов из Matplotlib



Обычно результаты сохраняются в формате pdf, чтобы провести финальные правки текста и форм в Illustrator. Вот пара стандартных команд, которые облегчают последующую редактуруt:

import matplotlibimport matplotlib.pyplot as pltimport matplotlib.backends.backend_pdf as pdf# Выгружает текст в редактируемом формате, а не в формате формы:matplotlib.rcParams['pdf.fonttype'] = 42# Сохраняет вертикальное положение для картинокmatplotlib.rcParams['image.composite_image'] = False# Удаляет границы и тики из subplotax.axis('off')# Убирает padding и margins отовсюдуplt.margins(0,0)plt.subplots_adjust(top=1, bottom=0, right=1, left=0, hspace=0, wspace=0)plt.gca().xaxis.set_major_locator(plt.NullLocator())plt.gca().yaxis.set_major_locator(plt.NullLocator())#Сохраняет в pdfpp = pdf.PdfPages('./savename.pdf', keep_empty=False)pp.savefig(fig)pp.close()# если не нужно сохранять в векторах# можно делать сразу в PNG и правит сразу в Photoshop:plt.savefig('./savename.png', format='png', dpi=600, pad_inches=0, transparent=True)


После сохранения PDF его нужно отредактировать так, чтобы каждый объект можно было редактировать независимо. В Illustrator выберите все в файле и идите в Object --> Clipping Mask --> Release. В этот момент стоит также удалить бэкграунд и границы, если вы их делали раньше.

Дизайн в Illustrator и Photoshop



Экспортирование из Python в PDF позволяет использовать некоторые функции графических редакторов, которых или нет, или их реализация гораздо более трудозатратна.
В этом проекте не так много особых текстовых эффектов, так что редактирование было минимально.

Создание теней под текстом в Photoshop


Для создания этого эффекта нужно скопировать слой с подписями и зайти в Filter --> Blur Gallery --> Field Blur. Для теней хорошо создавать два слоя с blur на 20% прозрачности один с Blur равным 4px, а другой 10px.

Цвета и шрифты


Чтобы карты выглядела продумано, для карты выбирались цвета из заранее продуманной палитры на 70 цветов. Два шрифта (Redflowers and Moon).
image
image

Разработка цветовой схемы


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

Декоративные иллюстрации


В проекте хотелось комбинировать большие датасеты и ручные элементы в стиле художников William Morris или Alphonse Mucha. Для этого перед разработкой была собрана большая коллекция картин для вдохновения.

image

На старте хотелось попробовать разные вариации рамок для карты. Была создана коллекция из 18 разных паттернов.

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

Итоговый результат:
image

Ссылка на github: github.com/eleanorlutz/mars_geology_atlas_of_space

Реферальные ссылки:
Astronomy. Andrew Fraknoi, David Morrison, Sidney C. Wolff et al. OpenStax 2016.
Gazetteer of Planetary Nomenclature. International Astronomical Union (IAU) Working Group for Planetary System Nomenclature (WGPSN) 2019.
Planetary Symbology Mapping Guidelines. Federal Geographic Data Committee.
Mars HRSC MOLA Blended DEM Global 200m v2. NASA PDS and Derived Products Annex. USGS Astrogeology Science Center 2018.
Geologic Map of Mars SIM 3292. Kenneth L. Tanaka, James A. Skinner, Jr., James M. Dohm, Rossman P. Irwin, III, Eric J. Kolb, Corey M. Fortezzo, Thomas Platz, Gregory G. Michael, and Trent M. Hare. USGS 2014.
Viking Global Color Mosaic 925m v1. NASA PDS, 2019
Missions to Mars. The Planetary Society.
Fonts: Moon by Jack Harvatt and RedFlower by Type & Studio.
Advice: Thank you to Henrik Hargitai, Oliver Fraser, Thomas Mohren, Chris Liu, Chloe Pursey, and Leah Willey for their helpful advice in making this map.
Подробнее..

Об эффективном использовании памяти при отображении картографических данных

29.12.2020 18:11:47 | Автор: admin

Введение

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

Однако при реализации этой вроде бы типовой задачи возникли проблемы, связанные с наличием некоторых ограничений:

Во-первых, компьютеры, используемые экипажем МКС в повседневной деятельности это закупаемые в централизованном порядке ноутбуки, которые уже проверены в эксплуатации в течение нескольких лет (т.е. не самой последней модели) и имеют довольно средние по современным меркам видеокарты и, главное, не очень большие объемы памяти.

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

В-третьих, МКС движется с 1-ой космической скоростью, совершая оборот вокруг Земли примерно за 92 минуты, т.е. смена неповторяющихся изображений земной поверхности на экране в реальном времени должна идти достаточно быстро.

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

При этом, например, если максимальный размер текстуры, которую можно загрузить в видеопамять составляет 2048х2048, то, даже не самая большая из карт, например, карта ночной Земли, доступная на сайте НАСА [1], при довольно грубом разрешении около 0.75 км/пиксель уже имеет размер 54000х27000 пикселей. Таким образом, чтобы загружать такую карту как текстуру, ее нужно было бы разбить как минимум на 342 фрагмента.

Требование неупакованных данных для отображения

Одна из объективных сложностей, как раз и требующая больших объемов памяти при отображении больших объемов данных, связана с необходимостью перед отображением распаковать имеющийся файл. Та же ночная карта Земли занимает на диске около 393 Мбайт в формате JPEG, а если ее преобразовать в двумерный массив цветов пикселей RGB (т.е. по сути, в формат BMP), она займет в памяти уже 54000х27000х3=4,374 Гбайт. Это даже больше чем 232 и поэтому, например, просто адресовать такой массив в 32-х разрядной среде уже не получится, не говоря о том, что реально в 32-х разрядной среде Windows (где и требуется данное отображение) пользователям доступно только до 3 Гбайт памяти. Кстати, вероятно, поэтому даже такой развитой графический редактор как AcdSee отображает эту ночную карту Земли, но не может редактировать ее (выдает ошибку).

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

Подходящий формат картографических данных

Исторически одним из первых сжатых графических форматов был формат PCX [2], заменяющий несколько подряд идущих одноцветных пикселей на один пиксель и счетчик его повторений. В настоящее время этот формат практически не применяется, дошло до того, что его перестал отображать даже такой стандартный редактор Windows как Paint. В самом деле, фотографические изображения формат PCX сжимает очень плохо, для них разработаны специальные алгоритмы JPEG. А обычные рисунки стало проще хранить в несжатом формате BMP, поскольку рисунок в несколько мегабайт не проблема для современных компьютерных средств и сжимать такие небольшие данные уже не имеет особого смысла.

Но при этом не принимается во внимание, что еще остается целый класс специальных изображений-рисунков карты, где при наличии больших размеров и больших одноцветных площадей старый формат PCX по-прежнему очень удобен и дает большую степень сжатия. Например, уже приводимая выше ночная карта Земли в формате PCX занимает лишь около 292 Мбайт. Такое сильное сжатие даже по сравнению с форматом JPEG получилось, конечно, не только за счет алгоритма сжатия, но и за счет перехода от полного RGB-цвета (16.8 миллионов оттенков) к 256 цветам, позволяющим заменить три байта RGB каждого пикселя на один байт номера цвета в палитре формата PCX. Разумеется, ночная карта Земли - это не рисунок, а интегрированный из тысяч спутниковых фотографий ортофотоплан, т.е. тоже фотография. Но по содержащейся на ней информации, включающий лишь океан, более светлую землю и светящиеся города, она ближе к обычным картам-рисункам, не требующим для сохранения всей информации миллионов оттенков. И при этом наличие лишь 256 цветов все равно позволяет отображать даже некоторые особенности рельефа, например, ледники.

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

Использование двумерных массивов при отображении

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

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

Однако в случае загрузки карты целиком в память в исходном сжатом PCX-формате изначально получается не двумерный массив, а некий набор непредсказуемо сдвинутых (из-за сжатия) строк непредсказуемой длины. Для того, чтобы найти нужную точку необходимо пройти этот имеющийся набор по всем строкам с самого начала, считая сколько повторяющихся групп пикселей встретилось на пути и находя начало очередной строки. И такую распаковку необходимо проводить для каждой точки моделируемого изображения, что, разумеется, для отображения в реальном времени опять недопустимо медленно.

Использование массива реперных точек

Для ускорения обработки была использована сетка т.н. реперных точек. Один раз загруженное исходное сжатое изображение в PCX-формате просматривается и в памяти составляется двумерный массив характеристик некоторого подмножества точек, например, каждой 64-ой точки в строке. Точка в этом массиве характеризуется 4-х байтным смещением от начала сжатого изображения и байтом номера, по которому данная точка попадает внутрь группы повторяющихся пикселей. Например, если для реперной точки в массиве указан код 01 25 DE 00 0A, а по этому смещению 00DE2501 в PCX-изображении находится код CF 33, это означает, что данная реперная точка является по счету десятой (0A) в сжатой группе из 15 (CF) пикселей одинакового цвета 33.

Для того чтобы найти цвет пикселя с координатами (X, Y) в сжатом PCX-изображении, нужно сначала делением X на 64 найти ближайшую реперную точку и извлечь 5 байт информации для нее из двумерного массива реперных точек. Затем по найденному смещению встать на начало очередного элемента PCX-формата и начать распаковывать от ближайшей реперной точки до нужной. Распаковка заключается в подсчете числа пикселей. Например, если нужен цвет точки, отстоящей от рассмотренной ближайшей реперной на 3 пикселя, то он также будет равен цвету реперной точки (33), поскольку и реперная и заданная точка попадают в одну группу 15 сжатых пикселей. Для последующих точек, возможно, уже придется перемещаться к следующим элементам PCX-формата, подсчитывая их длины, пока не набежит нужный номер точки, т.е. нужная координата X. Даже в худшем случае так придется распаковать число элементов не превышающее расстояние между двумя соседними реперными точками.

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

Массив реперных точек, разумеется, тоже требует памяти. Так, для уже приводимой в пример ночной карты потребуется дополнительно 54000х27000/64х5=113906250 байт, при условии, что в качестве реперной взята каждая 64-ая точка в строке. Таким образом, общий объем, занимаемый ночной картой Земли в памяти вместе с реперными точками, составит около 406 Мбайт, что почти в 10 раз меньше, чем несжатый массив цветов RGB пикселей того же изображения.

Правда, для упрощенного 256-цветного изображения можно было бы хранить просто двумерный массив байтов номеров цветов, а не самих RGB, что само по себе дало бы трехкратное уменьшение объема по сравнению с обычным форматом BMP, но и это все равно было бы существенно больше по объему памяти (54000х27000=1458000000), чем сжатое PCX-изображение с реперными точками.

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

При этом поиск ближайшей реперной точки и дальнейшая распаковка совмещены с расчетом географических координат следующей точки. Это возможно потому, что для расчета географических координат в основном используются операции для чисел с плавающей точкой (т.е. задействуется устройство FPU), а для определения цвета пикселя карты нужной точки используются операции с целыми числами. Во время длительно выполняющихся FPU-операций (типа FATAN и FSQRT) может параллельно выполниться несколько десятков операций обработки реперной точки и в ряде удачных случаев обработка может даже успеть выполниться до окончания исполнения сложной операции FPU, таким образом, в этих случаях поиск через реперные точки не будет вызывать замедления по сравнению с прямым извлечением цветов из несжатого изображения.

Пример изображения ночной Земли в модели иллюминатора МКС приведен ниже.

Отображение фрагмента ночной карты Земли в модели иллюминатора методом обратной трассировки лучей.Отображение фрагмента ночной карты Земли в модели иллюминатора методом обратной трассировки лучей.

На приведенном рисунке виден ярко освещенный промышленный район севера Италии, Средиземное море и север Африки на горизонте. Для наглядности данной иллюстрации выбран грубый масштаб (около 36 км на см. экрана в центре модели иллюминатора). Отображаемая в реальном времени карта в формате PCX имеет размеры 54000х27000 пикселей и полностью загружена в память.

Заключение

Быстро прогрессирующие компьютерные средства и особенно отрасль компьютерных игр позволила создавать весьма реалистичные изображения в режиме реального времени. Однако для этого обычно требуется специальная аппаратура (графический процессор) и большие объемы памяти.

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

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

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

Литература

1. http://earthobservatory.nasa.gov/NaturalHazards/view.php?id=79765

2. ZSoft Corporation PCX Technical Reference Manual Revision4 Marietta, GA 1988

Подробнее..

Перевод Как создавать красивые карты с помощью Python

03.02.2021 20:08:13 | Автор: admin
Мне всегда нравились карты городов, и несколько недель назад я решил создать свою собственную, художественную версию. Немного погуглив, я обнаружил крутое руководство, написанное Фрэнком Себальосом. Оно увлекательно и полезно, но я предпочитаю более подробные/реалистичные карты-схемы. Из-за этого я решил создать свою собственную версию карт. Итак, давайте посмотрим, как мы можем создавать красивые карты с помощью Python и данных OpenStreetMap.



Установка OSMnx


Прежде всего нам нужно установить Python. Я рекомендую использовать Conda и виртуальные среды (venv) для создания рабочего пространства. Также мы собираемся использовать пакет Python OSMnx, который позволит нам загружать пространственные данные из OpenStreetMap. Чтобы развернуть venv и установить OSMnx, нужно выполнить две команды Conda:

conda config --prepend channels conda-forgeconda create -n ox --strict-channel-priority osmnx

Скачивание дорожно-уличных сетей


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


graph_from_place() принимает несколько параметров. place это запрос, который будет использоваться в OpenStreetMaps для извлечения данных указанного места, retain_all вернёт нам все улицы, даже если они не связаны с другими элементами, simplify немного очистит предоставленный граф, а network_type укажет, какой тип уличной сети нужно получить.

Я хочу получить все возможные данные (network_type=all), но вы можете загружать только проезжие дороги, используя drive, или пешеходные дорожки, используя walk.

Другой способ загрузить данные использовать graph_from_point(), который позволяет нам указать GPS-координаты. В некоторых случаях этот вариант более удобен, например в местах со схожими названиями, и даёт нам большую точность. Используя dist, мы можем сохранить только те узлы, которые находятся в указанных пределах от центра графа.


Вам необходимо учитывать, что, если вы загружаете данные из крупных мест, таких как Мадрид или Берлин, нужно немного подождать, чтобы получить всю информацию.

Распаковка и раскраска наших данных


И graph_from_place(), и graph_from_point() вернут MultiDiGraph, который мы можем распаковать и положить в список, как показано в руководстве Фрэнка Себальоса.


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


Есть даже возможность идентифицировать определённые дороги и как-то иначе раскрасить только эти дороги.


В моём примере colourMap.py я использую следующие цвета:


color="#a6a6a6"color="#676767"color="#454545"color="#bdbdbd"color="#d5d5d5"color="#ffff"

Не стесняйтесь менять цвета или условия, чтобы создавать новые карты на свой вкус.

Чертим и сохраняем карту


Наконец, нам нужно только одно сформировать карту. Во-первых, нам нужно определить центр нашей карты. Выберите GPS-координаты того места, которое вы хотите сделать центром карты. Затем мы добавим границы и цвет фона. bgcolor, north, south, east и west будут новыми границами нашей карты. Сформированная карта будет обрезана по введённым координатам. Если вам нужна карта побольше, просто увеличьте границы. Учтите, что, если вы используете метод graph_from_point(), вам нужно будет увеличить значение dist в соответствии с вашими потребностями. Для bgcolor я выбрал тёмно-синий цвет #061529, чтобы прикинуть чертёж, но вы опять же можете настроить его по своему вкусу.


После этих шагов нам нужно просто сформировать и сохранить карту. Я рекомендую использовать fig.tight_layout(pad = 0) для настройки параметров карты, чтобы хорошо подогнать части чертежа.


Результаты


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


Одно различие, которое следует учитывать между graph_from_place() и graph_from_point(), заключается в том, что graph_from_point() получает данные об улицах из окрестности на основе установленного вами расстояния (dist). В зависимости от того, нужна ли вам простая карта или более подробная, вы можете использовать любой из этих методов. Карта Мадрида была создана с помощью graph_from_place(), а карта Берлина с помощью graph_from_point().


Вдобавок к этому, возможно, вам понадобится изображение размером с плакат. Самый простой способ сделать это установить атрибут figsize внутри ox.plot_graph(). figsize может регулировать ширину и высоту в дюймах. Обычно я выбираю размер побольше, например figsize=(27,40).


Бонус: добавляем воду


OpenStreetMap также содержит данные о реках и других природных источниках воды, таких как озёра или водные каналы. Снова используя OSmnx, мы можем загрузить эти данные.


Как и раньше, мы можем перебирать данные и раскрашивать карту. В данном случае я предпочитаю синие цвета, например #72b1b1 или #5dc1b9.




Наконец, нам нужно сохранить рисунок. В этом случае я не использую границы с bbox внутри plot_graph. Это ещё одна вещь, с которой можно поэкспериментировать.


После успешной загрузки водоёмов нам нужно соединить два изображения. Немного GIMPa или Photoshopa сделает своё дело; не забудьте, что эти два изображения должны быть с одним и тем же fig_size или границами, bbox, для упрощения интерполяции.


Последние штрихи


Мне нравится добавлять текст с названием города, GPS-координатами и названием страны. GIMP или Photoshop делают своё дело.


Также, если вы добавите воду, вам нужно будет заполнить некоторые места или покрасить другие водоёмы, например море. Линия рек изменяется, но с помощью инструмента Ведро с краской вы можете заполнить эти пробелы.


Заключение и код


Код для создания этих карт доступен в моем GitHub. Не стесняйтесь использовать его и покажите мне свои результаты! Надеюсь, вам понравился этот пост. Благодарю, что прочитали, и призываю вас делиться знаниями, которые приведут нас к лучшим, невероятным результатам!

Отвечая на призыв автора, делимся знаниями на нашем курсе Python, который будет еще выгоднее с промокодом HABR, добавляющим 10% к скидке на баннере.



image



Подробнее..

Использование данных OSM для анализа

25.04.2021 10:05:42 | Автор: admin

Постановка задачи

В рамках проекта Фото-Географического Атласа России (photogeomap.ru) мы собрали ряд фотографий различных ландшафтов страны. Многие из них сделаны в достаточно труднодоступных местах. Именно эту труднодоступность на качественном уровне мы и хотим оценить для каждой точки (фотографии)/

Индекс недоступности

Характеристика, позволяющая косвенно, на качественном уровне оценить сложность попасть к точку съемки данного кадра. Поскольку не нашлось готовых решений по расчету такой характеристики. Решено было создать свою. Назовем ее индекс недоступности (ИН).

От чего он зависит? Очевидно, что от:

  • удаленности от дорог доступных для транспорта

  • удаленности от пеших троп и дорог пригодных только для пешего передвижения

  • удаленности от водных путей сообщения

Источник данных для анализа

Единственным доступным источником векторных данных для такого анализа близости нам видится OSM.

Спорные моменты и допущения

Сразу опишу все допущения принятые нами

  1. Все расчеты проведены с использованием данных OSM со всеми содержащимися в них огрехами и неточностями.
    На карте могут быть отображены НЕ ВСЕ тропы и не все дороги. Степень валидности существующих объектов также не обсуждалась.

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

  3. При анализе близости от водных объектов не учитывалась их связность и судоходность. Что в общем случае конечно неверно, но мы сознательно вводим это допущение.

Подготовка данных OSM

1. Данные OSM на территорию РФ, полученные через https://download.geofabrik.de загружены в СУБД Postgres (c ext. PostGIS).
Основные нужные нам для анализа объекты расположены в таблице planet_osm_line.
Не забываем индексировать нужные нам поля (в случае дорог это поле highway)

2. Готовим дороги и тропы. Созданы materialize view для автодороги и тропинок из класса planet_osm_line.

Дороги - select * from planet_osm_line where highway is not null and highway != track (выбраны все типы дорог из данных OSM вне зависимости от типа и качества покрытия) ошибки неверного назначения тегов проигнорированы..

Тропы - select * from planet_osm_line where highway is not null and highway = track (выбраны тропинки)

На полученных m.view - тоже создаем индексы на нужное поле. Работать будет легче.

3. Готовим реки. Создаем materialize view для линейных рек и площадных водных объектов
Теги по которым можно выбрать реки смотрим ТУТ

Краткий анализ что у нас есть по рекам вообще -

--------------------------------
SELECT t.waterway , count (t.waterway) as cnt FROM public.osm_rivers_l as t where t.waterway is not null group by t.waterway order by cnt desc
---------------------------------

Реки (линейные)
select * from planet_osm_line where waterway is not null

Реки (площадные)
select * from planet_osm_polygon where water is not null

Расчет удаления от точек съемки

На этом этапе мы собственно считаем расстояния от наших точек (фото) до дорог, троп и рек.
Выполнить эту процедуру можно в любом настольном ГИС приложении , например в QGIS . В принципе, такой расчет можно провести в самом PostGIS, не вылезая из БД. Но я не программист и мне лень изучать и делать с нуля то, что я могу быстро за 10 мин сделать в той среде где работаю ежедневно (в GIS)

Определение расстояний от точек съемки до дорог - пишем в поле Road_dist и троп - Track_dist считаем все сразу в километрах! Определяем расстояние от линейных и площадных рек. Берем минимальное из пары (ближайший водные объект, неважно какой геометрии) и пишем в поле River_dist

Итак у нас есть поля с записанными в них расточениями. Собственно на этом использование данных OSM завершается, но не весь процесс..

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

Теперь у нас все готово, и мы начинаем считать сам ИН.
Сначала мы переводим количественные показатели в качественные характеристики.

1. Введены градации расстояний (поля Road_cat и Track_cat) и присвоены значения весового коэффициента для удаленности от автодорог и троп (Road_cst и Track_cst)

Track_cst считается только для объектов с удаление от дорог более 5 км иначе принимается 0

до 1

до 0,5 часа пешком

1

от 1 до 5

до 2х часа

2

от 5 до 10

до 3х часов

4

от 10 до 25

до дня ходьбы

6

более 25

более 1 дня

10

2. Введены градации расстояний (River_cat) и присвоены значения весового коэффициента для удаленности от рек (River_cst) для объектов с удаление более 10 км от любых дорог и троп , иначе принимается 0

до 1 км

до 0,5 часа пешком

2

от 1до 5

до 2х часа

4

от 5 до 10

до 3х часов

6

более 10

до дня ходьбы

10

3. Вводим характеристику отражающую доступ только с акватории северных морей.
Поле Sea_cst весовой коэффициент по доступу с северных морей для объектов, расположенных в Арктике и на побережье северных морей (выбраны по карте визуальное их не много). В основном все объекты приняты за 0, кроме пары десятков.

с побережья северных морей

5

арктические острова

10

4. Все 4 поля *_cst суммированы в INDEX_IMP
смысл у него примерно такой - чем он выше --тем тяжелее добраться к точке.

менее 3 - относительно легко доступная точка (можно ии приехать на машине или относительно недалеко прийти пешком

в районое первого десятка приехать на машине и хорошо прогуляться.

второй десяток уровень автономной экспедиции.

более 30 очень сложно доступная точка - только с морских судов и пр пр радости

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

Подробнее..

Человейник, тебе меня не сломить! Анализ жилья в мегаполисе

03.02.2021 10:04:43 | Автор: admin
Вчера на них никто не обращал внимание, а сегодня они повсюду. Человейники атакуют! Официально они именуются ЖК эконом-класса, а по сути являются гигантскими бетонными коробками из дешевых материалов. Москва задает моду на уплотнительную застройку и возведение целых районов человейников. И вот уже из Питера, Новосибирска и других зон поражения раздается безысходное понастроили тут. Как всегда, под ударом простой народ. В красной зоне риска люди, созревшие для покупки или аренды квартир.

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


Человейники Гонконга. Интересно, можно ли будет сделать такую фотку в Москве лет через 30?

О проекте


ХоумХаб это молодой проект, развивающийся на энтузиазме и неравнодушии к будущему наших городов. Мегаполисы России повторяют путь агломераций Китая, сросшихся в один большой человейник с убитой экологией. Однако китайское правительство спохватилось, признало проблему и пытается выровнять ситуацию. В то время как Москва с маниакальным упорством обрастает микрорайонами со сверх-плотной застройкой сомнительного качества и отстутствием намеков на озеленение:


Типичный человейник заглядывает в окна кирпичного дома. Автор фотографии Михаил Мельников.

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

К слову об освещении подобных тем в СМИ: рождение NIMBY & BANANA
Английскими СМИ был сконструирован насмешливый и туповатый образ противника уплотнительной застройки. NIMBY (Not In My Back Yard) человек, который негодует, что у него под окнами строится ТЦ или на месте зеленого сквера возводится ЖК. В лучших традициях пропаганды образ был доведен до абсурда. Так родилась аббревиатура BANANA Build Absolutely Nothing Anywhere Near Anything: если абориген против точечной застройки в своем дворе, то наверняка и против любой застройки где бы то ни было, вот же фрик!

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

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


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

Из чего складывается качество жизни в мегаполисе


Насколько мегаполис комфортен для жизни и безопасен для здоровья, зависит от набора факторов городской среды. К большинству из этих факторов мы только примериваемся. Среди них:

  • Уровень шума.
  • Социальная инфраструктура.
  • Транспортная инфраструктура.

Зато у нас уже готов расклад по двум ключевым факторам:

  • Экология. Качество воздуха на наш взгляд важнейший аспект экологии, влияющий на жизнь в городе. Поэтому в разделе Экология сейчас представлены два слоя: качество воздуха и источники загрязнения, среди которых ТЭЦ, заводы и водоочистные сооружения.
  • Застройка. В этом разделе доступны два взаимодополняющих слоя: процент плотности застройки и процент застройки.

Так как пост посвящен человейникам, мы сфокусируем рассказ именно на застройке: чем чревата высокая плотность застройки, как мы ее измеряем и зачем нам вместо общепринятых своя модель для расчетов.

Плотность застройки


Плотность застройки характеризует интенсивность использования территории. Слишком плотная застройка таит ряд опасностей:

Огромная нагрузка на социальную и транспортную инфраструктуру. Несоразмерная концентрация жителей на клочке земли приводит к хайлоаду для близлежащих магазинов, парковок и дорог. А это очереди к лифтам, очереди за продуктами и пробки при подъезде к дому.


Хватит ли пропускной способности этой дороги, когда достроятся все 45 корпусов? Кстати, как на единственной полосе разъезжаться?

Нехватка солнечного света. Существует специальный ГОСТ о продолжительности инсоляции (естественного освещения) жилых помещений. Застройка окна-в-окна его игнорирует чуть более чем полностью:


Солнечные лучи попадают в этот двор и окна максимум на 40 минут в день. Фотография взята из прекрасного поста про питерский колодец-могильник.

Разрушение природной экосистемы. Сравните просторные зеленые дворы между кирпичными домами советской постройки и заставленные машинами бетонные каньоны новостроек. Березы или яблоневый садик под окнами? Забудьте.

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

Огромная плотность населения безупречные условия для распространения пандемии. COVID-19 непрозрачно намекнул, что ряды высоченных человейников с одним супермаркетом на весь микрорайон так себе идея.

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




Коробки в боевой раскраске. Обе фотографии взяты из блога фотографа, столкнувшегося с человейниками.

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

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

Расчет плотности застройки


Плотность застройки города принято оценивать по двум параметрам:

Процент застройки процентное соотношение площади зданий к общей площади участка, на котором они стоят.

Процент плотности застройки процентное соотношение суммарной поэтажной площади зданий на участке к его площади.

В разных странах и городах исторически закрепились свои нюансы расчетов. Например, в Нью-Йорке площадь здания отмеряется от внутренних стен, а площадь участка берется строго по его границам. В Лондоне площадь здания меряется от наружных стен, а площадь участка захватывает половины улиц, окружающих участок. Во многих странах принято измерять плотность застройки в расчете на гектар земли (1 га = 10 000 м), а в наших мегаполисах прижилось измерение в расчете на квартал. Площади кварталов могут отличаться в разы, и это привносит неразбериху.

С точки зрения оценки качества жизни ни один из перечисленных способов расчетов нас не устраивает. Они ориентированы на градостроителей и архитекторов, а не на людей, населяющих дома. Эти способы слишком огрубленные: если участок представляет собой пустырь с супер-плотной застройкой по центру, озвученные методы выведут среднее по больнице, и это, согласитесь, не интересно. Также они не учитывают множества граничных случаев. Допустим, один из участков зажат между несколькими соседними, а другой стоит у парка. Эти способы не выявят разницу между их плотностью. Хотя понятно, что дом возле парка застроен менее плотно, чем дом, зажатый в кольцо соседей.

Мы предлагаем способ расчетов, заточенный не для задач застройщиков, а для адекватного выбора жилья. Он хорош тем, что основывается на вычислении застройки для каждого дома в отдельности. Для этого нужно определить геометрию участка вокруг дома; найти его площадь с учетом некоторых нюансов; найти площади стоящих на участке домов. Поехали!

Будем расчитывать процент плотности застройки и процент застройки вот для этого дома:


Москва, Ломоносовский проспект, 14.

Геометрию, этажность и другие атрибуты домов мы импортируем из OSM в табличку PostgreSQL, для которой включено расширение PostGIS. В нем есть масса удобных функций для работы с географическими и геометрическими объектами.

Итак, извлекаем геометрию интересующего дома из таблицы. Отступаем от нее 200 м во все стороны. Получившийся многоугольник и есть интересующий нас участок земли. Именно для такой небольшой площади мы будем считать процент плотности застройки и процент застройки.


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

Почему конутры участка на скриншоте получились такой странной формы? Они расчитаны с помощью функции PostGIS ST_Buffer(geometry, radius_of_buffer), формирующей полилинию точек, отстоящих от заданной геометрии на расстояние radius_of_buffer. Параметр radius_of_buffer равен 200 м, а сглаживание углов включено по умолчанию. Для наглядности вот примеры результатов ST_Buffer() на этом и других зданиях, но с radius_of_buffer всего в 10 м:


Контуры домов фиолетовые. Контуры участка, полученные с помощью ST_Buffer() синие.

Сформировав таким образом участок вокруг дома, находим и суммируем площади всех зданий на участке. Если здание попало на участок частично, мы учитываем только площадь пересечения. Таким образом мы получаем общую площадь зданий на участке.

Теперь находим все попадающие на участок водоемы. Вычитаем их площадь пересечения с участком из общей площади участка. Мотивация простая: требуется определить площадь участка вокруг дома, по которой можно спокойно перемещаться. Грубо говоря, у дома на скале, вокруг которого океан, застройка примерно 100%.

С этой же целью находим все трамвайные, монорельсовые и ЖД-пути, а также дороги, не являющиеся внутридворовыми проездами и попадающие на участок. Вычитаем их площади из площади участка. Чтобы посчитать площадь дороги, нужно найти ее ширину. Но как?

Для некоторых дорог в OSM указан тег lanes, обозначающий количество полос. Для обозначения значимости дороги используется тег highway. По тому, является ли дорога автомагистралью федерального значения, городской трассой или внутриквартальным проездом, можно предположить ее полосность. Ширину полосы определяет ГОСТ: она зависит от типа трассы и максимально допустимой скорости (OSM-тег maxspeed). Например, для highway=motorway ширина полосы может быть 3.75 м, а для дороги во дворе 2.75 м.


Дороги внутри участка отмечены темно-серым, трамвайные пути светло-серым.

На даннном этапе у нас уже посчитана общая площадь участка, которая годится для расчета параметров застройки. Для определения процента застройки берем процентное соотношение площади домов к площади участка. Оно может варьироваться от 0 до 100%. Имея 100-балльную шкалу, подбираем для нее цвета от насыщенно-зеленого для пустынных участков до темно-красного для максимально застроенных.

Процент застройки дома 17%:


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

Осталось расчитать процент плотности застройки. Для этого площади домов домножаются на их этажность. Если в OSM не заполнена этажность дома, то для него процент плотности застройки не вычисляется, а при расчете процента плотности для ближайших домов вместо неизвестного значения подставляется среднее от соседей.

Процент плотности застройки дома 136%:


В OSM указано, что у интересующего дома 10 этажей. Со всех сторон он окружен другими зданиями и дорогами, поэтому в отличие от соседнего дома возле сквера он подсвечен более светлым оттенком зеленого на слое процент плотности застройки.

Процент плотности застройки на практике варьируется от нуля до тысяч процентов (и лишь физики ведают, до какого предела в теории). Здания с небольшим значением процента плотности отображаются на карте зеленым. Дома, для которых в OSM не отмечена этажность, отображаются фиолетовым. Но какое значение принять за максимальное для соотнесения ему темно-красного? Роль референса для дна досталась, кто бы сомневался, деловому району Москва-Сити с процентом плотности застройки, перевалившим за тысячу.


Приз в номинации Максимальный процент плотности застройки в Москве заслуженно получает Москва-Сити. Но почивать на лаврах не в правилах этого делового района: он активно пополняется новыми высотками.

С рекордсменом по проценту плотности застройки все понятно. А где самый высокий процент застройки? Конечно же, в центре города. Во многих дворах внутри Садового кольца он достигает 85%. Но для исторического центра это нормально: многие европейские города могут похвастать 95% застройки.


Приз в номинации Максимальный процент застройки в Москве вручается дворам возле Тверской улицы.

А вот как выглядит на карте уплотнительная застройка дворов возле метро Домодедовская:


Слева блочки с адекватной плотностью застройки, справа новый ЖК бизнес-класса, застроенный окна-в-окна. Ибо сказано: за слово бизнес в названии и входную группу с искуственным мрамором не стыдно доплатить по тарифу x2.

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

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

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

Поэтому мы реализовали более наглядный способ генерализации:

1) Замостить карту гексагонами с длиной ребра 100 метров для 12 уровня зума, 200 м для 11 зума и так далее вплоть до 6 зума. Для этого была использована функция PostGIS ST_HexagonGrid(hex_edge_len, bounds).

2) Найти дома, попадающие внутрь гексагона. Рассчитать среднее взвешенное процента застройки и процента плотности застройки по полученным значениям.

3) Залить гексагоны соответствующими цветами. В результате генерализация будет выглядеть примерно так:


Гексагональная генерализация процента застройки: средние уровни зума, на которых виден центр города.

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


Обратная сторона ХоумХаба


Настало время поговорить про технологии, которые стоят за нашей картой.

Наши источники данных


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

При подготовке слоев с застройкой мы столкнулись с проблемой: многие рорайоны Москвы появились недавно, оторваны от основной транспортной сети, и добираются туда в основном только местные жители. Как правило, по единственной замершей в вечной пробке дороге. Следовательно, такие места замаплены в OSM из рук вон плохо или вовсе отсутствуют на карте. Мы стараемся это исправить, но наши усилия капля в море всех человейников.

Для карты рельефа мы используем DEM (digital elevation model) SRTM v3. Это данные, полученные радарной топографической съемкой материковых и островных территорий с 54 южной широты по 60 северной широты.

SRTM считается одним из самых качественных открытых датасетов, и его точности (1 измерние высоты примерно на 50 метров поверхности) должно хватить для адекватного использования в моделях экологии и распространения шума.

Пайплайн генерации тайлов


Наша цепочка python-скриптов для скачивания данных, импорта в PostgreSQL, подсчета данных для слоев и нарезки их на тайлы разбита на несколько docker-образов и запускается через docker-compose. Весь процесс выглядит так:

Подготовка растровых тайлов с рельефом местности. Датасет SRTM состоит из набора растровых тайлов 1 x 1, которые мы пропускаем через последовательность GDAL-утилит для генерации прозрачных тайлов с хилшейдингом, тайлов с цветовым рельефом и совмещения этих двух наборов в комбинированные тайлы рельефа местности.

Подготовка векторных тайлов с данными из OSM, слоями застройки и экологии. С ресурса Geofabrik скачивается фрагмент OSM, а конкретно Центральный федеральный округ России. Из него с помощью osmium-extract извлекается окружность, включающая Москву и некоторую часть МО.

Для заливки данных в PostgreSQL запускается импортер Imposm3. Он хорош тем, что позволяет удобно сконфигурировать параметры генерализации для лесов, озер, дорог и произвольных объектов.

Далее в PostgreSQL создаются дополнительные столбцы, таблицы, и стартует скрипт подготовки данных для слоев с экологией и застройкой. Он-то и реализует логику расчета процента плотности застройки, процента застройки, качества воздуха и заполнения таблицы с источниками загрязнения.

Финальный аккорд запуск генерации векторных тайлов. Для этого используется самописный скрипт с конфигом, конкретизирующим, какие зумы и с какими данными генерировать. В PostGIS есть все необходимые для этого функции, такие как ST_MakeEnvelope(), ST_Intersects(), ST_AsMVT(), ST_AsMvtGeom().

Вот карта и готова. Для отрисовки в браузере используется опенсорсная библиотека Mapbox GL JS. Стиль карты был запилен по-простому, безо всяких WYSIWYG-примочек, в виде гигантского json в формате Mapbox.

О планах и о команде


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

Архитектор проекта, фулстек-разработчик, девопсер, дизайнер, веб-мастер и копирайтер-на-пол-ставки это все я. В душе я бэкендер, поэтому вместо мобильной версии сайта на js у меня получилась консольная тулза на C++. Пришлось переделывать. Вышел микросервис. Разработка забуксовала. К счастью, в проект ворвался Rostixman: он за одно воскресенье запилил вменяемую мобильную версию и пофиксил косяки интерфейса, за что ему отдельное спасибо.

ХоумХаб развивается, задач становится все больше и они все заковыристее. Поэтому наша команда упоротых исследователей мегаполиса ищет новых разработчиков, особенно фронтендеров! Будем рады разработчикам, которым близка идея проекта и которые готовы посвящать ему свое время.

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

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

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

Транспортная инфраструктура. Боль многих городов-сателлитов в вечной пробке на единственной дороге между сателлитом и мегаполисом. А у многих микрорайонов проблемы с доступностью на общественном транспорте. Поэтому мы планируем сделать два слоя: для автомобилистов и для приверженцев общественного транспорта.

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

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

А что за карта без гео-поиска? Мы сделаем и его. Но конечно же приоритет 1 улучшать, валидировать и снова улучшать наши модели.

Заключение


ХоумХаб это карта со слоями, которые помогают находить ответы на наболевшие вопросы. Какая плотность застройки в новом микрорайоне? Обнаружены ли в нем зачатки инфраструктуры и можно ли из него выбраться своим ходом? Сколько заводов и промзон в Капотне? Стоит ли ценителю тишины покупать квартиру с окнами на Ленинградское шоссе? Как долго идти от ЖК Грин Парк до ближайшего парка?

А на какие вопросы ищете ответа вы? Делитесь мнением, реквестуйте фичи. Критикуйте, это же Хабр в конце концов! А мы в предстоящих релизах будем приоткрывать новые грани жизни в мегаполисе.


Под занавес: это не Гонконг, это Марфино. А вы бы хотели, чтобы наши мегаполисы превратились в сплошной человейник?
Подробнее..

Как мы нарисовали на карте несколько тысяч интерактивных объектов без вреда для перформанса

29.07.2020 10:12:50 | Автор: admin

Привет, меня зовут Дарья, и я Frontend-разработчик юнита Гео вАвито. Хочу поделиться опытом того, как мы сделали навебе новый поиск покарте, заменив кластеры более удобным решением и сняв ограничение наколичество отображаемых объектов.


В статье я расскажу, какая перед нами стояла задача и как мы справлялись спроблемами впроцессе реализации.



Чем нас не устраивал старый поиск покарте


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


Решение скластерами было неудобным понескольким причинам. Во-первых, пользователям нужно было сделать оттрёх досеми кликов поним, прежде чем появлялась возможность кликнуть наконкретный пин и посмотреть объявления изнего всписке слева. Во-вторых, кластеры плохо считывались нужно было сравнивать цифры внутри них или сопоставлять визуально размеры кластеров. Витоге пользователю приходилось прилагать много усилий длятого, чтобы найти интересующие его объявления.


Выглядело это так:



Что мы решили изменить


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


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


Поскольку мы решили рисовать пины или точки взависимости отплотности объектов наэкране и полноты выборки, нам понадобилась формула, которая бы говорила, когда рисовать какой тип объектов. Переменные этой формулы размер карты и размер пина впикселях. Константы вней подбирали наоснове наших ощущений того, какая плотность пинов кажется нам уместной, и здесь всё индивидуально. Мы выбрали вариант, прикотором каждый девятый элемент сетки состоронами, равными диаметру пина, может быть занят. Получилось так:


$limit = viewPort.width viewPort.height / (pinDiameter^2 9)$


Если количество найденных объявлений меньше этого лимита, то показываем пины, а иначе точки.


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


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

Приведу примеры целевого состояния поиска покарте дляразных случаев:



Много объявлений безфильтров показываем точки. Голубой цвет точек обозначает просмотренность, красный ховер



Выбраны фильтры, которые дают небольшую выдачу показываем пины



Приблизились на уровень, когда виды дома, и можем отобразить все объявления показываем пины


Далее я перечислю вопросы, скоторыми мы столкнулись впроцессе реализации, и расскажу, как их решали.


Как нарисовали на карте несколько тысяч точек


Когда унас были кластеры и пины, мы рисовали накарте меньше 1000объектов. Вслучае сточками нужно уметь рисовать много объектов, чтобы подсвечивать пользователям, где объявлений больше. Например, так:



Поиск двухкомнатных квартир повсей России


Мы используем Яндекс-карты, API которых предоставляет разные способы отрисовки объектов. Например, кластеры мы рисовали черезинструмент ObjectManager, и он отлично подходит дляслучаев, когда количество объектов накарте не превышает 1000. Если попробовать нарисовать сего помощью, например, 3000объектов, карта начинает подтормаживать привзаимодействии сней.


Мы понимали, что может появиться необходимость отрисовать несколько тысяч объектов безвреда дляпроизводительности. Поэтому посмотрели всторону ещё одного API Яндекс-карт картиночного слоя, длякоторого используется класс Layer.


Основной принцип этого API заключается втом, что вся карта делится натайлы (изображения вpng или svg формате) фиксированного размера, которые маркируются через номера X, Y и зум Z. Эти тайлы накладываются поверх самой карты, и витоге каждая область представляется каким-то количеством изображений взависимости отразмера области и разрешения экрана. Собственно, API берёт насебя всю фронтовую часть, запрашивая нужные тайлы привзаимодействии скартой (изменении уровня зума и сдвиге), а бэкенд-часть нужно писать самостоятельно.



Разбиение натайлы. Длянаглядности их границы выделены черными линиями. Каждый квадрат отдельное изображение


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


Чтобы реализовать бэкенд, мы взяли формулы дляприведения координат точек ксистеме тайлов впроекции Меркатора:


func (*Tile) Deg2num(t *Tile) (x int, y int) {    x = int(math.Floor((t.Long + 180.0) / 360.0 * (math.Exp2(float64(t.Z)))))    y = int(math.Floor((1.0 - math.Log(math.Tan(t.Lat*math.Pi/180.0)+1.0/math.Cos(t.Lat*math.Pi/180.0))/math.Pi) / 2.0 * (math.Exp2(float64(t.Z)))))    return}func (*Tile) Num2deg(t *Tile) (lat float64, long float64) {    n := math.Pi - 2.0*math.Pi*float64(t.Y)/math.Exp2(float64(t.Z))    lat = 180.0 / math.Pi * math.Atan(0.5*(math.Exp(n)-math.Exp(-n)))    long = float64(t.X)/math.Exp2(float64(t.Z))*360.0 - 180.0    return lat, long}

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


Нарисовав svg поданным, мы получили подобные изображения тайлов:



Поскольку нам необходимо учитывать разные фильтры впоиске покарте, мы добавили значения выбранных фильтров вGET-запросы затайлами. Реализация нафронте свелась кнескольким строкам кода:


const createTilesUrl = (tileNumber, tileZoom) => {// params - выбранные фильтры в формате строки параметров, которые можно передать в GET-запросreturn `/web/1/map/tiles?${params}&z=${tileZoom}&x=${tileNumber[0]}&y=${tileNumber[1]}`;};const tilesLayer = new window.ymaps.Layer(createTilesUrl, { tileTransparent: true });ymap.layers.add(tilesLayer);

В итоге карта стайлами, подготовленными набэкенде и отрисованными черезLayer, выглядит так:



Как оптимизировали бэкенд


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


Решая проблему сетевых походов вдругой сервис, мы придумали запрашивать данные дляобласти внесколько раз больше, чем реально отображаемая область. Будем называть её большой областью. Приэтом дляразных уровней зума мы установили разный коэффициент. Например, дляуровня, когда отображается вся Россия, это 4, а максимальное значение равно 25.


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



Ответ побольшой области отсервиса поиска мы складываем вRedis схэш-ключом, содержащим всебе фильтры, диапазон тайлов и зум. Длякаждого запроса бэкенд проверяет, есть ли вкэше данные дляэтих фильтров и тайлов, и если есть, они отдаются изкэша. Если соответствий не нашлось, то дляэтих тайлов строится новая большая область и выполняется запрос впоиск поней.


Большая область геостационарна, то есть она строится всегда одинаково, независимо оттого, накакой тайл пришёлся первый запрос. Это избавляет отнакладок больших областей, чем обеспечивает консистентность данных и уменьшает размер кэша.


Время жизни разных запросов вRedis отличается. Дляшироких и популярных запросов, например, повсей России безфильтров, оно больше, чем длязапросов сузкими фильтрами. Кроме долгого кэша вRedis есть быстрый кэш непопулярных запросов вin-memory. Он позволяет уменьшить нагрузку насеть и освободить место вRedis.


Поскольку наш сервис горизонтально масштабирован и поднят нанескольких десятках подов, важно, чтобы параллельные запросы отодного пользователя попали наодин под. Тогда мы можем взять эти данные изin-memory cache пода, и не хранить одну и ту же большую область наразных подах. Этот механизм называется стики-сессиями. Насхеме его можно представить так:



Сейчас среднее время ответа запроса тайла на99перцентиле составляет ~140ms. То есть 99% измеряемых запросов выполняются за это или меньшее время. Длясравнения: вреализации черезкластеры запрос выполнялся ~230ms натом же перцентиле.


Работу пода упрощённо можно представить следующим образом: навход поступает запрос затайлом, строится большая область, проверяется кэш. Если вкэше есть данные, поним рисуется svg. Если данных дляэтой большой области нет, происходит запрос всервис поиска.



Итак, мы решили проблему сотрисовкой большого числа объектов накарте. Осталось разобраться синтерактивностью.


Кликабельность, ховер и просмотренность точек


Кликабельность. Самой критичной длянас была кликабельность, поэтому мы начали снеё. Врамках ресёрча мы сделали простое решение отправку запроса скоординатами набэк, бэк проверял, есть ли вкэше объявления поэтим координатам срадиусом 50метров. Если объявление находилось, рисовался пин. Если вкэше не было данных по области, вкоторой находились координаты, то есть истекло время хранения кэша, бэк запрашивал данные изсервиса поиска. Это решение оказалось нестабильным иногда пин рисовался втом месте, где не было точки как объекта накарте. Так происходило потому, что кэш набэке протухал, и появлялись новые объявления данные расходились стем, что есть накарте.


Мы поняли, что стабильнее будет реализовать кликабельность нафронте. Помимо запросов затайлами, унас всегда отправлялся один запрос запинами. Пины мы рисуем нафронте, и фронт ничего не знает прото, рисовать вданный момент времени пины или точки. Запросы запинами и тайлами уходят всегда накаждый сдвиг или изменение уровня зума. Чтобы не усложнять и рисовать всё быстрее, тайлы длянепустых выдач всегда возвращаются сточками. Если нужно рисовать пины, они рисуются поверх точек, перекрывая их. Поэтому всё, что нам оставалось длякликабельности точек, добавить вответ запроса запинами объект точек, который будет содержать координаты, id и количество объявлений вэтой точке. Этих данных достаточно для того, чтобы нарисовать поклику наточку пин.



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



Просмотренность. Просмотренность пинов накарте уже была реализована наклиенте. Мы хранили вlocalStorage стек из1000id объявлений. Ids вытеснялись более свежими, которые были просмотрены позже других. Бэкенд ничего не знал пропросмотренные объявления, отдавал одинаковые данные всем пользователям, а клиент делал пин просмотренным наосновании данных изlocalStorage.


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


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


В целевом состоянии мы планируем перевести хранение просмотренных объявлений набэкенд и обогащать данные наэтапе рисования svg и формирования ответа запроса запинами. Тогда тайлы будут рисоваться сразу сбледно-голубыми точками.



Просмотренный пин выделен бледно-голубым



Просмотренная точка выделена бледно-голубым


Заключение


Качественные и количественные исследования показали, что решение сточками вместо кластеров облегчило поиск покарте дляпользователей выросло использование карты и сократились трудозатраты досовершения контакта.

Подробнее..

О нетривиальном дураке

08.09.2020 22:18:39 | Автор: admin
image

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

Однако я решил, что останавливаться при таком таланте нести чушь это как останавливать поезд на магнитной подушке стоп-краном (что чревато преобразованием больших сонмов потенциальных энергий в кинетическую), поэтому я собираюсь это сделать, но где-то в будущем и не так быстро.

В данный момент я собираюсь представить вам самый нетривиальный гейм-дизайн карточный игры в дурака. Скорее всего, до него додумывались, но не так часто, чтобы это стало одной из моих единиц копилки общих сведений о мире. Все очень просто:

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

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

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

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

О нетривиальном дураке (еще под катом разгадана этимология названия KUJI-подкаста)

09.09.2020 00:23:17 | Автор: admin
image

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

Однако я решил, что останавливаться при таком таланте нести чушь это как останавливать поезд на магнитной подушке стоп-краном (что чревато преобразованием больших сонмов потенциальных энергий в кинетическую), поэтому я собираюсь это сделать, но где-то в будущем и не так быстро.

В данный момент я собираюсь представить вам самый нетривиальный гейм-дизайн карточный игры в дурака. Скорее всего, до него додумывались, но не так часто, чтобы это стало одной из моих единиц копилки общих сведений о мире. Все очень просто:

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

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

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

PS: подкаст KUJI так называется, потому что его записывают в девять вечера. По-японски в транслитерацию на ромаджи KUJI это девять часов (как времени). Я не имею ничего общего с Коняевым, но я бы свел их с Савватеевым ради фана. Например, сыграть в вышеизложенного дурака. Потому что это нетривиально.
Подробнее..
Категории: Карты , Чулан

Из песочницы Геомаркетинг как инструмент повышения качества проектов

09.11.2020 02:23:12 | Автор: admin

*Меня зовут Алексей Козыкин, я работаю в департаменте аналитических решений КОРУС Консалтинг, где мы реализовываем проекты по управлению данными и геомаркетинговому анализу. Геоданные способны дать дополнительную информацию о ваших клиентах и пользователях и объяснить отклонения. Но есть предубеждение, что использование пространственных данных сопряжено с высокой технической подготовкой и огромными трудозатратами, поэтому проекты по их сбору и использованию часто не выходят за рамки пилотного проекта.


Крупные компании, работающие на В2С-рынке, активно используют геоданные в своих маркетинговых исследованиях. В большинстве случаев не возникает вопроса, зачем и как используется эта информация. В современном мире мы не можем представить себе сервис такси без анализа маршрутов и навигации или крупную торговую компанию, проводящую экспансию без детального анализа потенциальной целевой аудитории на местности. И присмотреться к этому виду данных стоит каждому.*


Что такое геомаркетинговый анализ


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


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


  • Анализ эффективности размещения объекта
    Базовый алгоритм определяет влияние социально-экономических процессов в районе на KPI объекта. Если он изменяется в зависимости от расстояния между ними, то можно определить, насколько оптимально размещен данный объект.
  • Кластеризация объектов
    Часто объекты объединяют для дальнейшего анализа по схожим показателям или внутренней специфике; геоданные улучшают эту группировку, добавляя в число характеристик внешние процессы. Чем лучше кластеризация, тем эффективнее ассортиментное планирование, прогнозирование продаж, маркетинг и другие активности.
  • Оценка конкуренции
    Инструмент позволяет понять, какой процент вашей целевой аудитории забирают к себе ваши конкуренты. На основе полученных данных можно построить модель пространственной дифференциации Хотеллинга, оптимизировать цены на продукты.
  • Выявление трафикообразующих полигонов
    Как и в задаче анализа эффективности размещения, алгоритм определяет показатели влияния различных типов зданий и достопримечательностей на деятельность объектов. При этом можно получить дополнительную информацию о целевой аудитории (например, как она сформировалась в данном районе или что ей интересно рядом с вашим объектом).
  • Сегментация целевой аудитории
    Часто компании разделяют своих клиентов на группы для более качественной работы с ними. Для них можно создать персональные рекомендации, улучшать сервис, выявлять потребности, предсказывать отток и многое другое. Для этого используются данные, полученные внутри торговой точки: историю покупок, персональные данные участников программы лояльности. Также проводить сегментацию целевой аудитории можно с помощью геоданных. Вероятностные модели позволяют определить финансовые возможности клиентов, демографическую сегментацию и многое другое.
  • Определение оптимального ассортимента и/или формата объекта
    Геоданные помогают охарактеризовать вашу целевую аудиторию в конкретном районе с точки зрения демографии, социальных и духовных потребностей, финансовых возможностей и так далее. Это позволяет качественнее выстроить стратегию продаж.
  • Прогноз размера целевой аудитории
    Вышеуказанные инструменты позволяют построить вероятностные модели посещения магазина. Имея множество характеристик районов и торговых точек, можно определить размер целевой аудитории на основе сравнения этих характеристик для нового района или на основе модели Хаффа.
  • Определение каналов коммуникации с целевой аудиторией
    Геоплатформы собирают данные о поисковых запросах определенных товаров и услуг с привязкой к местности это упрощает поиск каналов коммуникаций с клиентами.
  • Прогнозирование объёмов продаж товаров/услуг
    Перечисленные инструменты наполняют модели прогнозирования дополнительной информацией, позволяя более обоснованно агрегировать продажи товаров в разных магазинах, определять предельный спрос и многое другое. Это дает полноценную информацию о распределении временных рядов продаж и улучшает качество прогнозов.
  • Оценка скорости экспансии
    Как и при анализе эффективности размещения, модель определяет влияние процессов на KPI объекта. В данном случае под KPI понимаются показатели, соответствующие стратегии экспансии компании.

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


Дьявол в деталях: как производится анализ


Шаг первый. Формируем гипотезу и выстраиваем структуру данных


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


Чтобы не довольствоваться усеченными сведениями вне зависимости от выбранной гипотезы необходимо построить базовую структуру данных: найти исследуемые объекты, определить их расположение, название. Для этого используются API ГИС (платные или с открытым доступом например, сервис OpenStreetMap). Платные API обрабатывают запросы быстрее, это их ключевое достоинство. Но некоторые задачи подразумевают сотни тысяч запросов, что увеличивает время поиска.


По набору функций API можно разделить на четыре типа:


  1. Справочник позволяет находить нужную информацию об объектах по заданным параметрам (по наименованию, месторасположению, рубрике, в заданном радиусе и т.д.);
  2. Геокодинг позволяет преобразовывать адреса в координаты и наоборот;
  3. Маршрутизация позволяет найти оптимальный маршрут по заданным параметрам;
  4. Визуализация позволяет использовать графическое представление данных.

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


Шаг второй. Проверяем гипотезы на моделях


На основе построенной базовой структуры можно проверять гипотезы. Чаще всего в первую очередь моделируют следующие процессы:


  • Влияние трафикообразующих объектов (потребителей, поставщиков, кинотеатров, метро и так далее).
  • Модель конкуренции (модель Хотеллинга и аналоги).
  • Модель, определяющая соотношение уникальности предложения конкурента к его доступности.
  • Гравитационная модель притяжения (модель Хаффа или дрeubt модели).
  • Вероятностная модель, предсказывающая приток клиентов в конкретную торговую точку из конкретного полигона.
  • Доступность объектов (пешая, автомобильная).
  • Количество населения в районе.
  • Качество инфраструктуры и элитности района.

Отдельно выделенные модели для классификации районов на основе сложных социально-экономических процессов. Часто такие модели требуют специфических данных из специализированных источников, а их влияние на исследуемые объекты могут быть не очевидны (например, миграция населения и изменение стоимости квартир или аренды).


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


Шаг третий. Уточняем модели


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


Геоаналитические платформы это особые системы и компании, в которых эксперты и аналитики собирают данные из большого количества источников, анализируют их и визуализируют различные социально-экономические (и не только) показатели районов всё это не только на текущий момент, но и в ретроспективе нескольких лет. Их базы данных хранят информацию об игроках рынка, итоги переписи населения, исторический срез погодных условий, данные от сотовых операторов, информацию о стоимости квартир, пробки на дорогах, запросы в поисковой системе и многое другое. В некоторых сервисах даже можно получить конкретные ответы на конкретные вопросы: где чаще проводит время ваша целевая аудитория, где чаще совершается онлайн поиск ваших продуктов.


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


image


Несмотря на стоимость подобных инструментов, самостоятельно собирать такие данные в рамках одного проекта попросту бессмысленно: расходы на это попросту не окупятся.
Геоаналитические платформы помогут уточнить уже построенные вами модели или разработать более сложные:


  • Миграция населения;
  • Средний заработок в районе;
  • Предрасположенность района к увеличению преступности;
  • Предрасположенность к переходу на доставку продуктов;
  • Средний доход в доме;
  • И так далее.

Как запустить в компании геомаркетинг


Рациональнее привлекать на геомаркетинг отдельного специалиста-аналитика.
Собирать данные для геомаркетинга можно параллельно проекту, не привязываясь к его особенностям. Это значит, привлеченный специалист не обязательно должен быть глубоко интегрирован в вашу деятельность. Для большей части задач достаточно минимальной информации о вас (адреса точек и вид деятельности), которые позволяют определить необходимый набор инструментов.


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


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

Подробнее..

Кэшбэк 5 на всё и бесплатные бизнес-залы рассказываю, как выбрать лучшее премиальное банковское обслуживание

14.02.2021 12:17:37 | Автор: admin

Я проанализировал все топовые предложения банков для обеспеченных людей в этой статье я рассказываю о том, как правильно подходить к выбору премиальных пакетов обслуживания, и как получить безлимитные 5% кэшбэка на все покупки + 10% на расходы в любых ресторанах, кафе и заправках. Актуально для тех, кто получает высокую зарплату, но раньше не особо интересовался, что с учётом этого можно стрясти с банков (на самом деле, довольно много!).

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

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

Сразу оговорюсь: статья ниже направлена именно на анализ премиального сегмента банковских тарифов. Грубо говоря, наибольшую практическую пользу из неё смогут извлечь те, у кого ежемесячный оборот по карте составляет более 100 000 , и/или ликвидный капитал составляет пару миллионов рублей (например, на брокерском счёте/ИИС). Если ваши финансовые потоки и остатки несколько ниже то воспользоваться большинством указанных ниже предложений вы не сможете (но, возможно, вам будет интересен описываемый мной общий подход к анализу и выбору тарифов).

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

И ещё один момент: я не очень понимаю логику людей, которые говорят если уж ты так много зарабатываешь, то зачем тебе париться насчёт каких-то нескольких лишних процентов кэшбэка? На мой взгляд, в этом нет совершенно ничего зазорного: если есть возможность выбрать тариф, который позволяет получать дополнительную выгоду или экономию почему я должен от неё отказываться? Так что стремиться получать от банка лишние ~70 000 в год это абсолютно нормальное желание, независимо от размера твоего дохода.

Что мне нужно от банка

Когда я попробовал сформулировать, какие конкретно преимущества являются для меня наиболее критичными в пакете банковского обслуживания, я понял, что их можно разделить на две функциональные группы. Которые, кстати, совершенно не обязательно пытаться совместить в рамках одного тарифа. Итак, в моём идеальном мире мне нужно два банка:

1. Банк для самых выгодных покупок

Основное его предназначение позволять мне наиболее эффективно и удобно совершать покупки и расходы. Так что здесь мне важны следующие факторы:

  • Максимально высокий процент кэшбэка. Лучше, если это будет ковровый кэшбэк на все покупки, а не на отдельные категории. Но дополнительный повышенный (сверх базового уровня) кэшбэк в ходовых категориях, вроде супермаркетов или ресторанов, конечно, тоже приветствуется.

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

  • Возможность удобно и выгодно совершать траты в валюте (Amazon, зарубежные поездки и т.д.). Чтобы не было каких-нибудь диких валютных конвертаций с наценкой в несколько процентов. И, конечно, чтобы кэшбэк с таких трат тоже начислялся.

2. Банк-хаб для управления денежными потоками

Этот банк нужен для того, чтобы удобно и дёшево конвертировать свои средства в нужную валюту и переводить их туда, куда нужно (на вклад, на брокерский счёт, в другой банк и т.д.). Здесь важно:

  • Бесплатные платежи из интернет-банка по реквизитам, в рублях и в валюте, без ограничения по сумме. (Уточню: это совсем не то же самое, что бесплатные переводы по системе быстрых платежей в пределах ~100 000 в месяц.)

  • Дешёвая конвертация из рублей в валюту (USD/EUR) и обратно по текущему рыночному (биржевому) курсу, чтобы не менять валюту напрямую в банках по грабительским курсам со спредами в несколько процентов.

  • Выгодные накопительные счета с хорошей процентной ставкой на остаток, которые позволяют без ограничений в любой момент довносить и снимать деньги. Это нужно для того, чтобы эффективно парковать средства на то время, пока они не дошли до конечного пункта назначения (тот же самый вклад/брокерский счёт).

Сразу скажу: идеального варианта, который отвечает прямо всем критериям, я в итоге не нашёл. Но мой текущий сетап, который я описываю ниже, всё равно получился сильно выгоднее того, которым я пользовался раньше.

Максимизируем кэшбэк!

Самым лучшим предложением с точки зрения кэшбэка с большим отрывом оказалась дебетовая карта Ситибанка Citi Priority. (Здесь и далее все условия актуальны на момент написания статьи 14.02.2021, дальше всё может поменяться внимательно уточняйте в банках!) Вот её плюсы:

  • Эффективная ставка кэшбэка 5% на любые покупки, повышенный кэшбэк 10% в категориях рестораны и АЗС (есть ещё сувениры но кому они нужны?)

  • Нет ограничения на объём начисленного кэшбэка в месяц. Вы можете, условно, купить машину, расплатившись картой и получить со всей суммы покупки возврат в размере 5%.

  • При включении бесплатной опции мультивалютный кошелёк можно спокойно делать покупки в USD/EUR они автоматически будут списываться со счетов в соответствующей валюте без лишних конвертаций (конечно, эти счета должны быть открыты заранее, и там должны лежать деньги). Кэшбэк при этом будет начисляться.

Минусы, к сожалению, тоже есть:

  • Кэшбэк начисляется не живыми деньгами, а баллами в размере 1% от оборота (2% для повышенных категорий). Чтобы получить эффективный кэшбэк 5%, нужно накопить 15 000 баллов тогда их можно обменять на 75 000 .

  • Не менее неприятная штука: баллы сгорают через год. То есть, реальный кэшбэк в размере 5% можно получить, только если вы тратите по карте полтора миллиона рублей в год (или 125 000 в месяц). Если вы регулярно и много тратите в повышенных категориях (общепит/заправки), то это несколько снижает требуемую сумму оборотов.

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

Я больше четырёх лет пользовался по похожей схеме кредиткой Райффайзена Всё и сразу, где для получения кэшбэка 5% надо было тоже накопить примерно за год требуемое количество баллов в итоге, я успел три раза получить по 50 000 , как и рассчитывал, пока программу не свернули в конце прошлого года. Но тем, кто начал копить баллы незадолго до закрытия программы, повезло чуть меньше.

Ещё несколько нюансов по премиальным пакетам Ситибанка:

  • Для повышенного кэшбэка 10% в категориях (рестораны/АЗС) необходимо выполнение условий тарифа Эксперт: поступление зарплаты от 250 000 в месяц + покупки от 75 000 в месяцилисреднемесячный баланс по счетам от 1 500 000 .

  • Если у вас так не получается, то вам выдадут дебетовую карту попроще (обычную MasterClass World), где базовый кэшбэк 5% сохранится, но в повышенных категориях будет всего 7,5%.

  • Если вы не удовлетворяете минимальным требованиям для тарифа Профессионал (зарплатные поступления от 80 000 в месяцилипокупки от 30 000 в месяцилисреднемесячный баланс по счетам от 300 000 ), то с вас будут брать 300 ежемесячно за обслуживание.

Помимо повышенного кэшбэка, премиальный пакет Эксперт даёт ещё некоторые приятные ништяки:

  • Два бесплатных прохода в бизнес-залы аэропортов в месяц.

  • Бесплатная международная страховка для путешествий (можно при желании открыть дополнительную карту на своего партнёра и вписать его в страховку).

  • Снятие рублей/валюты в сторонних банкоматах без комиссии, до 2 000 000 в месяц.

И ещё одно, чтобы не было иллюзий: Сити это ни разу не модный молодёжный банк. У них весьма кондовые бизнес-процессы, страшненькое приложение, а Apple Pay они смогли с большим трудом подключить только в прошлом году. Если у вас остро развито чувство прекрасного возможно, с этим банком вам не по пути.)

Альтернативные варианты банковских предложений по кэшбэку

Если предложение от Сити вам по какой-то причине не подходит, то вот ещё несколько неплохих вариантов, где высокий кэшбэк можно получать на все траты, а не на отдельные категории:

  • Открытие.Эффективный кэшбэк 4% живыми деньгами на все покупки по карте Opencard, если у вас остаток по всем счетам (в банке и у брокера включая ИИС) больше 2 000 000 (для Москвы 3 000 000 ). При невыполнении условия по остаткам кэшбэк получится 3%. Открытие Брокер недавно довольно приятно обновили линейку брокерских тарифов, так что держать у них деньги для инвестиций на бирже не самый плохой вариант, на мой взгляд.

  • Альфа-Банк.Карта Premium даёт 2% кэшбэка живыми деньгами на всё при сумме покупок свыше 10 000 в месяц, и 3% при покупках свыше 150 000 в месяц. Но при этом, чтобы премиальный тариф был бесплатным, нужно иметь средние остатки на счетах 1 500 000 + покупки более 100 000 в месяц,илиостатки на счетах свыше 3 000 000 .

Выбираем банк-хаб с бесплатными безналичными платежами

С бесплатными рублёвыми платёжками никаких проблем нет я бы сказал, что сложнее найти премиальный тариф, где они не предоставляются, чем наоборот. А вот бесплатные безналичные переводы в валюте зверь гораздо более редкий, поэтому ниже я буду перечислять только те банки, где эта фишка есть. В целом, если у вас нет необходимости постоянно делать перечисления в валюте (например, в адрес зарубежного брокера), то можете на эту тему сильно не заморачиваться.

Вторым важным критерием для нас будет возможность конвертации валюты по биржевому курсу. Ну и напоследок хотелось бы приятные ставки по накопительным счетам. Поехали!

  • Ситибанк.Позволяет делать два бесплатных валютных перевода в месяц для тарифа Гуру (там нужно получать входящую зарплату не меньше 400 000 в месяц). При этом валютную конвертацию в Сити вы никак нормально не сделаете доступ на биржу банк не даёт, конвертация в приложении и по звонку будет происходить по курсам разной степени грабительности.

  • Альфа-Банк.Бесплатные валютные платежи по реквизитам на премиальном тарифе. Лично меня здесь смутили условия для бесплатного премиального обслуживания: поступление зарплаты свыше 400 000 здесь работает, но только первые несколько месяцев. Потом нужно поддерживать остатки по всем счетам свыше 3 000 000 что там с ними делать, не очень понятно (ни накопительные счета, ни брокерское обслуживание своими условиями в Альфе особо не привлекают).

  • Юникредит.Бесплатные валютные платежи на премиальном тарифе (остатки свыше 3 000 000 ,илиостатки свыше 1 500 000 + ежемесячные поступления на карту свыше 100 000 ). Но без доступа на валютную биржу, возникают аналогичные Сити проблемы с конвертацией валюты.

  • Тинькофф.На премиальном тарифе (остатки свыше 3 000 000 ,илиостатки свыше 1 000 000 + покупки от 200 000 в месяц) валютные платежи стоят 15 USD/EUR за штуку. Периодически объявляют акции, в рамках которых валютные платежи вообще бесплатные, но как долго их будут продлять непонятно. Зато у Тинькофф всё прекрасно с конвертацией валюты: это легко и просто сделать на бирже.

В общем-то и всё. Идеального варианта для себя я, к сожалению, так и не нашёл везде были какие-то недостатки. В итоге моим банком-хабом также стал Ситибанк минимально мне необходимые бесплатные валютные переводы там есть, а к вопросу конвертации валюты пришлось подойти изобретательно (см. следующий раздел). Плюс у Сити есть так называемый хороший (no kidding, официальное наименование) накопительный счёт, по которому можно размещать под 5% до 1 000 000 с возможностью пополнять/снимать в любой момент, что довольно удобно для целей управления остатками кэша.

Меняем валюту без регистрации и смс (почти)

Итак, премиальный пакет в Ситибанке закрыл почти все мои потребности, кроме одной: он не даёт возможности быстро и удобно обменивать рубли на доллары/евро (и обратно) по выгодному биржевому курсу.

Но тут есть один крутой лайфхак, решающий эту проблему. Дело в том, что Яндекс позволяет легко и быстро открыть любому брокерский счёт черезЯндекс.Плюс(Яндекс здесь, по сути, предоставляет только оболочку реальное обслуживание счёта делает ВТБ). С одним важным нюансом: вывод средств с этого счёта можно сделать совершенно бесплатно в рублях или в валюте по платёжным реквизитам.

Таким образом, счёт в Яндекс.Плюсе по факту можно использовать для дешёвой конвертации рублей из любого банка, который позволяет вам делать бесплатные платежи по реквизитам в рублях: бесплатно кидаем рубли на Яндекс, конвертируем в валюту, и бесплатно же выводим куда хотим. Сами биржевые тарифы на валютные операции у Плюса немного напоминают Тинькофф, там есть два варианта:

  • Базовый тариф: 0,3% со сделки, без ежемесячного платежа; либо

  • Продвинутый тариф: 0,025% со сделки, ежемесячный платёж 650 .

Несложно посчитать, что базовый тариф будет выгоднее при конвертации небольших сумм (до 236 000 ), а при крупных операциях лучше уже подключать продвинутый тариф. В любом случае, даже на базовом тарифе курс конвертации будет сильно выгоднее любых вариантов, которые банки предлагают в обменниках или в приложениях.

Полезные ссылки

В этой статье я поделился своими соображениями о самых выгодных премиальных тарифах банков этот анализ я делал для себя, оплаты за рекламу ни от одного из банков я не получал. Единственное: в своём Телеграм-каналеRationalAnswerя выложил несколько пригласительных ссылок, которые позволяют при регистрации получить приятные бонусы.

Помните: тарифы банков со временем меняются. Всё написанное выше актуально по состоянию на 14.02.2021, но уже через полгода (или раньше) предложения банков могут сильно поменяться. Ниже я привожу ссылки на те ресурсы, которыми я пользовался, когда анализировал сравнительную привлекательность премиальных пакетов для себя их можно использовать, чтобы отслеживать изменения ситуации в будущем.

  • Началось всё сэтого видеоот Finindie до этого мне вообще не приходило в голову искать премиальные тарифы банков (а те банки/брокеры, где я и так обслуживался и выполнял нужные условия, почему-то не спешили мне предложить перейти на них).

  • Много полезной информации наэтом подфорумеBanki.ru, и конкретно вот вэтой теме. В частности, один из участников этого форума ведётвот такую сравнительную таблицу(за актуальность всей информации не ручаюсь, но как стартовая точка для анализа может быть полезной).

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

Если статья показалась вам интересной, то буду благодарен за подписку на мойТГ-канал RationalAnswer, где я пытаюсь найти разумные подходы к личным финансам и инвестициям. В частности, всё самое важное, что нужно знать про инвестирование, попробовал ужать в 40 минут в этой лекцииЛичные финансы для разумного человека.

Подробнее..

Перевод Как культура жителей города влияет на дизайн карт метро Нью-Йорк

13.06.2021 14:11:44 | Автор: admin
Что бы вы порекомендовали тому, кто впервые приезжает в Нью-Йорк? Посетить Центральный парк? Посмотреть шоу на Бродвее? Увидеть Статую Свободы?

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

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

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


Самая новая карта Нью-Йоркского метрополитена

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


Карта метрополитена Стамбула


Карта метрополитена Афин


Карта лондонского метрополитена

Менялась ли карта одной из старейших транспортных систем мира?


Задавшись этим вопросом, я отправилась по линии F в Музей транспорта Нью-Йорка. В нём представлено множество карт метрополитена, начиная от самой первой, спроектированной в 1904 году, до самой последней, выпущенной в 2020 году. Как изменились эти карты за последние 116 лет?


Слева направо: IRT 1904 года, BMT 1924 года, IND 1939 года

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


Карта Нью-Йоркского метрополитена, Массимо Виньелли, 1972 год

В течение короткого периода использования карты Виньелли она не была популярной среди пассажиров.

Почему эта карта не нравилась нью-йоркцам?


Главная проблема заключалась в том, что на карте Виньелли не были отображены реальные расстояния и места, находящиеся на поверхности. Были и другие важные факторы, из-за которых карта казалась чрезвычайно непонятной:

  • Оттенки цветов линий были близки друг к другу, поэтому их трудно было различать;
  • Водоёмы не были окрашены в синий (они были бежевыми);
  • Парки не были окрашены в зелёный, как в реальной жизни;
  • Станции были расположены рядом друг с другом, даже если переход между ними был невозможен.

То есть, на бумаге карта метро и реальный мир не совпадали, что было неудобно пассажирам.

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

После того, как карту Виньелли перестали использовать, Нью-Йорк вернулся к географической карте, которая используется и сегодня. Майкл Херц спроектировал и разработал карту совместно с Комитетом карт метрополитена, которым руководил Джон Тауранак; Херц сыграл важнейшую роль в создании дизайна новой карты. Он добавил на неё названия улиц и достопримечательностей. Несмотря на критику, которой Херц подверг карту Виньелли, в конечном итоге они с Тауранаком воспользовались восьмицветной палитрой Виньелли.

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

Как культура влияет на ощущение от продукта?


Ощущения и дизайн равно важны для продукта. Он может быть спроектирован приятным глазу образом. Но удовлетворяет ли этот продукт потребностям людей и даёт ли нужное решение?

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

Какие основные факторы влияют на карту?


  1. Город Нью-Йорк обладает мультикультурной структурой:

Живущие в Нью-Йорке люди происходят из различных социоэкономических контекстов. Районы, в которых они живут, разделены по расам, этносам, доходу, паттернам иммиграции и различным другим социальным факторам. Из-за этого у жителей города возникла тесная связь с районом их проживания. Это чувство принадлежности позволяет им ощущать себя своими в городе.

Также карта отражает связь, которую пассажиры имеют со своими сообществами. Эти сообщества представлены на карте косвенным образом. Это ощущение принадлежности отражено на карте Херца посредством названий районов: Бронкс, Чайна-таун, Мотт-Хейвен. Все они позволяют пассажирам не только понять то, куда они едут, но и увидеть на карте важную часть своей жизни.

Нью-Йоркский метрополитен является местом встречи нью-йоркцев с совершенно разным культурным багажом. Он обеспечивает своеобразную социальную среду равенства. В поездке ты запросто можешь увидеть сидящими напротив тебя знаменитостей наподобие Киану Ривза и Мэрайи Кэри.

В этой мультикультурной среде подземка предоставляет общее пространство для социализации с другой стороной города. Метро это сцена для танцоров и убежище для тех, кто оказался в сложной жизненной ситуации. А иногда это транспорт для перевозки мебели, как однажды это было в моём случае.


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

2. Город имеет структуру сетки улиц:

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

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


В первые полгода жизни в Нью-Йорке мои друзья часто спрашивали меня, привыкла ли я к метрополитену. Нью-йоркцы были удивлены той скоростью, с которой я освоила все подробности метрополитена. Ориентирование в географии места основной фактор принадлежности к нему. Нью-йоркцы горды тем, что знают местоположение станций метро. Местный житель готов помочь другому пассажиру, с гордостью сообщив ему все способы добраться с Манхэттена до Кони-Айленда.


New York Times, 2012: Туристы испытывали сложности с сопоставлением своих маршрутов с обозначениями на карте. В эпоху до Google Maps её художественное оформление делало поездки в чреве города более пугающими.

На карте Виньелли казалось, что Колумбус-Серкл на 59-й улице всего в паре кварталов от Центрального парка. На первый взгляд, линии 1, 2 и 3 представляли отдельные станции, однако это не так. Станция всех трёх линий расположена под входом в Центральный парк. Поезда линий 1, 2 и 3 останавливаются на той же станции, что и остальные. Это создавало разрыв между картой метро и реальным миром.

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

Карта Нью-Йоркского метрополитена тоже часть этих общих привычек, поведений и смыслов. Это часть культуры, и эти факторы влияют на восприятие карты. Нью-Йорк, как и другие города, имеет собственный уникальный характер, и описывающая его карта должна проектироваться с учётом этого характера.

Как повысить удобство продукта для пользователей?


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

Чтобы повысить удобство, необходимо знать пользователей. Для этого необходимо начать с определения и понимания своих целевых пользователей. Наблюдение самый мощный и фундаментальный навык для понимания общества и пользователей. Этот способ позволяет исследователям определять потребности, проблемы, привычки, ожидания, реакции, поведения и мысли городской культуры. Если уделить время пониманию этих факторов, то мы глубже поймём естественную среду обитания целевых пользователей.

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

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

В октябре 2020 года MTA выпустил новый дизайн карты, объединяющий в себе лучшие стороны карт Виньелли и Херца. Цветовая схема и черты диаграммы были взяты из карты Виньелли, а интеграция с ориентирами и географической картой из карты Херца.

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

Источники


Tylor, E. B. (1889). Primitive culture: Researches into the development of mythology, philosophy, religion, language, art and custom. New York: H. Holt.

Norman, D. A. (2004). Emotional design: Why we love (or hate) everyday things. New York: Basic Books.

Norman, D. A. (2013). The design of everyday things. MIT Press.

Kottak, Conrad Phillip. (2013). Cultural anthropology: appreciating human diversity. New York: McGraw-Hill.

Moalosi, R., Popovic, V. & Hickling-Hudson, A. Culture-orientated product design. Int J Technol Des Educ 20, 175190 (2010). https://doi.org/10.1007/s10798-008-9069-1

Tejada, Soledad O., The Public and the Personal: Mapping the NYC Subway System as an Urban Memoryscape (2020). Library Map Prize. 7. https://elischolar.library.yale.edu/library_map_prize/7

https://www.nngroup.com/articles/ten-usability-heuristics/

https://www.nytimes.com/interactive/2019/12/02/nyregion/nyc-subway-map.html

https://www.oreilly.com/content/redesigning-the-new-york-city/

http://www.culturelookingsideways.com/subway-civility-intro



На правах рекламы


Наша компания предлагает VDS в аренду с Windows или Linux. Не экономим на железе только современное оборудование и одни из лучших дата-центров в России и ЕС.

Подписывайтесь на наш чат в Telegram.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru