HeavyTechRuby / history

History of every building
GNU General Public License v3.0
7 stars 8 forks source link

Интеграция с PastVu #101

Closed projecteurlumiere closed 3 months ago

projecteurlumiere commented 3 months ago

Всем привет!

Очень приятно видеть опен-сорсные проекты на Рельсах, да ещё и в России.

У меня в какой-то момент была похожая идея с историческими местами, которая (пока ещё) не взлетела. Для неё я сделал небольшой гем Pastvu, который делает запросы на сайт PastVu и возвращает исторические фотографии с описаниями и другой информацией возле нужной координаты или в пределах нужных координат.

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

Если принципиально, можно более точно предсказать, будет ли искомое здание на фотографиях: у каждой фотографии на PastVu есть указание направления съёмки (сторона света: север, северо-запад, запад, и так далее).

Единственное, надо иметь в виду, что PastVu не резиновый - иногда сайт лежит, поэтому пользоваться их API необходимо ответственно.

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

sergio-fry commented 3 months ago

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

sergio-fry commented 3 months ago

У нас пока адрес - это строка и мы пока не умеем кодировать это в координаты. Что-то тут можешь посоветовать?

projecteurlumiere commented 3 months ago

У нас пока адрес - это строка и мы пока не умеем кодировать это в координаты. Что-то тут можешь посоветовать?

Могу сказать, что комбинация из OSM, их Nominatim API и LeafletJS в принципе работает.

В OSM'овский Номинатим можно делать как структурированный, так и не структурированный запрос. На него он возвращает один из трёх типов объектов на карте: node (точка на карте), way (линия) или relation (многогранник-полигон, очерчивающий границы объекта). Для зданий это будет или node, или relation, но иногда попадается и way. Кроме отображения на карте они ничем не отличаются: у них есть название, тип, уникальный osm_id и ещё всякие сопроводительные данные. Node конвертируется в координату; из полигона relation'а можно высчитать координату центра полигона или ничего не трогать, оставив в виде geojson, и показывать на карте сам полигон; с way'ем может быть посложнее.

Из плюсов:

В любом случае, и это минусы, нужно ручное вмешательство, потому что:

В целом, я бы сказал, что при создании здания следует дать юзеру/модератору карту на leaflet'е и дать ему возможность видеть на эту карту и тыкать на неё, если что-то не получается. Общий порядок действий при этом следующий:

projecteurlumiere commented 3 months ago

адрес - это строка

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

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

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

Но главное - я так понял, это планируется и здесь, - под каждым зданием есть секция с комментариями, в которой люди обмениваются фактами, своими личными впечатлениями, историями и так далее - вероятно, не менее ценная информация, чем сами описания домов. Описания, кстати, сделаны через функционал, который можно было бы взять из Action Text'а: текст форматируется, картинки прикладываются и сортируются. Я так понял здесь это планируется, но ещё не сделано.

projecteurlumiere commented 3 months ago

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

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

Из альтернатив, которые не были названы в #58 и выше, упомяну, что в некоторых городах и на конкретные тематики можно найти государственные/муниципальные географические данные. Я так искал информацию по действующим и утраченным кладбищам - нужны были их полигоны, чтобы отображать поверх современной карты города. На OSM'е было многое, но далеко не всё. А потом вдруг нашлась какая-то официальная городская рабочая группа по кладбищам, и их данные были полные, в открытом доступе, с уникальной дополнительной информацией, и отформатированные - всё красиво. Доступность таких данных очень зависит от города, страны и тематики, но иногда можно отыскать очень достойные источники.

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

sergio-fry commented 3 months ago

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

projecteurlumiere commented 3 months ago

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

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

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

sergio-fry commented 3 months ago

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