Anonymous
на тестовое задание
типа джанго, которая выводит на фронт данные из базы?
Anonymous
две недели на соглаосвнаие ТЗ за 150к, а дальше посмотрим
это в Яндексе наверно) для джуниора не слишком круто? с чего бы начать
Pavel
вороной?
Anonymous
что под кластерами понимается?
я не знаю. буду гуглить
Pavel
мдя...
Tishka17
это в Яндексе наверно) для джуниора не слишком круто? с чего бы начать
нет, в яндексе не так, просто идеш ьи делаешь за ЗП
Tishka17
выглядит как будто надо из БД считать табличку и отдать в виде json
Pavel
в общем, без понимания, что в данном случае такое "кластера геообъектов" тут сказать ничего нельзя
Pavel
дык постгис
Pavel
чо тут думать то
Tishka17
слишком
Oleg
или использовать готовые варианты
посмотри https://github.com/biodiv/anycluster
Pavel
ват
Anonymous
это все подробности? пока это то что известно
Pavel
что значит слишком?
Tishka17
я бы начал с двух таблиц - кластеры и объекты
Pavel
геометрию ты как будешь хранить?
Tishka17
геометрию чего?
Pavel
массивом латлонгов что ли?
Tishka17
про геометрию кластера речи не было, возможно нужен просто центр
Tishka17
или даже состав
Сережа
Йо, есть вопрос по джанге, у меня есть 2 модели, например пользователи и купоны, там связь 1 к многим (т.е у одного пользователя много купонов) и мне дают список купонов и надо найти пользователей у которых список купонов совпадает с данным. Как это можно сделать через стандартный джанговский ORM
Pavel
дак геообъектом может быть что угодно, точка, мультиточка, полигон, мультиполигон, линии, ...
Anonymous
в общем, без понимания, что в данном случае такое "кластера геообъектов" тут сказать ничего нельзя
типа это может быть какой то путь на карте или территория да? или не просто координаты?
Pavel
всё что угодно
Pavel
определение "геообъекта" без уточнения
Tishka17
объекты хранить не просили
Pavel
поэтому id и название =)
"объекты хранить в базе"
Сережа
Ну и чтоб такой поиск +- быстро работал на 50к пользователях
Tishka17
а, ок
Pavel
а, ок
мама сказала, деньги в бидоне
Oleg
а еще непонятно какие запросы могут в это апи приходить. Там может быть фильтрация по bbox'у, например, могут быть параметры кластеризации
Pavel
да вообще ничего не понятно
Tishka17
и проверять точное совпадение строки
Oleg
при визуализации, например, для разных разрешений могут потребоваться разные размеры кластеров
Pavel
)
ты где такое задание умудрился раздобыть?
Pavel
при визуализации, например, для разных разрешений могут потребоваться разные размеры кластеров
еще нужно помнить про разные алгоритмы симплификации для облегчения визуализации
Сережа
А, лол у меня сейчас так и есть, просто думал что лучше было бы нормализовать
Oleg
хотя возможно у него там только точки
Сережа
но тут тоже, совпадение не строгое, у пользователя помимо данных могут быть еще купоны
Tishka17
я бы сделал задание по минимуму. Все что не написано - не требуется, но пишем в пояснительноё "возможно развитие блаблабла для поддержки блаблабла"
Pavel
хотя возможно у него там только точки
как раз этого мы не знаем :)
Pavel
прислали с Моего круга
отправь обратно в круг с вопросом "что за хуйня"
Oleg
как раз этого мы не знаем :)
мы вообще ничего не знаем, там даже не факт что postgis должен быть использован
Tishka17
кстати, может задание вообще на то как человек ТЗ умеет согласовывать
Tishka17
софт скиллы и все такое
Pavel
мы вообще ничего не знаем, там даже не факт что postgis должен быть использован
ага, а потом полигоны хранят в виде отдельной таблички для экстерьера и отдельной для дырок, поточечно
Сережа
Есть список купонов, надо найти пользователей у которых есть все требуемые купоны, если у них есть что-то еще кроме них, то пофиг
Сережа
У одного пользователя несколько купонов
Oleg
Tishka17
большой спсиок запрашивают?
Сережа
Нет, максимум штук 5-6
Tishka17
хотя хз как лучше
Pavel
боюсь представить как эти люди потом intersect'ы, например, определяют
я, к примеру, видел такое - def get_cells_pattern_wkt(pattern): p = get_cells_pattern(pattern) # тут они берут, хехе, из базы массив точек for cell in p: poly = 'POLYGON((' for point in p[cell]['coords']: poly += "{0} {1},".format(point[0], point[1]) poly += "))" poly = poly.replace(',))', '))') p[cell].update({'WKT': poly}) return p а потом этим кормят шейпли.вкт.лоадс
Pavel
и интерсектят, да
Сережа
просто если хранить отсортированной строкой, то только полное совпадение получается проверить
Pavel
без шуток, это реальный продакшон код
Pavel
естественно, оно у них падало иногда, потому что закрытие линеарринга не гарантируется )))
Pavel
и всякие там self intersection'ы тоже
проще, пожалуй, сказать, что там гарантировано (и это множество багов)
Oleg
Oleg
КАК?
угадал что ли? )
Pavel
+
Pavel
DELETED, не будем позорить индустрию
Oleg
КАК?
было время работал в гис-сфере и приходилось сталкиваться с разными проектами и самая дичь была именно в роскосмосе