Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / C++ |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 7 8 вперед Ctrl→ все |
mayton Member Откуда: loopback Сообщений: 51019 |
Здарова други! Кодеры. Программеры. Арифметики и счетоводы. И сочувтвующие. Значит есть у меня база. В формате csv. И прогружена в БД для удобства. Диапазоны IPv4 адресов и привязка к странам. 2.92.0.0,2.95.255.255,"RU","48","Moscow","",55.7522,37.6156,, 2.96.0.0,2.96.23.255,"GB","H8","Liverpool","",53.4167,-3.0000,, 2.96.24.0,2.96.27.255,"GB","N1","Saint Helens","",53.4500,-2.7333,, 2.96.28.0,2.96.47.255,"GB","H8","Liverpool","",53.4167,-3.0000,, 2.96.48.0,2.96.51.255,"GB","H2","Skelmersdale","",53.5333,-2.8000,, 2.96.52.0,2.96.55.255,"GB","H8","Liverpool","",53.4167,-3.0000,, 2.96.56.0,2.96.59.255,"GB","H2","Skelmersdale","",53.5333,-2.8000,, 2.96.60.0,2.96.61.255,"GB","N1","Saint Helens","",53.4500,-2.7333,, 2.96.62.0,2.96.63.255,"GB","I2","Manchester","",53.5000,-2.2167,, 2.96.64.0,2.96.65.255,"GB","H2","Ormskirk","",53.5667,-2.9000,, 2.96.66.0,2.96.67.255,"GB","H2","Skelmersdale","",53.5333,-2.8000,, ..... Тоесть скруль к примеру (89.188.113.172) попадает в диапазон [89.188.106.244 89.188.127.255] - Ru/Moscow. Задача - визуализировать ВСЕ адреса на картинке. Каждый пиксел - 1 уникальный адрес. Каждая страна - отдельный цвет.. По сути - получить мозаику из стран. Прошу мозговой штурм. Чо. Как. Трудности. Количественные оценки. Примеры хард-кода. Доп. цифры могу предоставить. Сколько адресов. Сколько диапазонов и стран. (Сформирую отчётики) ----- Спасибо. |
13 мар 15, 13:36 [17380387] Ответить | Цитировать Сообщить модератору |
Leonid Kudryavtsev Member Откуда: Сообщений: 9478 |
А смысл? Может взять какую нибудь карту мира и на ней раскрасить? |
13 мар 15, 14:18 [17380660] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51019 |
Смысл - пятничное обсуждение. Чуть позже дам цифирки. |
13 мар 15, 14:31 [17380766] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51019 |
Хопа! А вот и цифирки. Значит так. Количество диапазонов. SQL> select count(*) from geoipcity; COUNT(*) ---------- 5748952 Всего аллоцировано IPv4 адресов. SQL> select sum(n_endip-n_startip) from geoipcity; SUM(N_ENDIP-N_STARTIP) ---------------------- 3155268734 Это чуть меньше адресации 32х бит. Всего стран. SQL> select count(*) from (select distinct country from geoipcity); COUNT(*) ---------- 239 Топ 10 стран по количеству аллоцированных адресов. SQL> select * from (select country,sum(n_endip-n_startip) "SUM" from geoipcity group by country order by 2 desc) where rownum<=10; COUNT SUM ----- ---------- US 1507673738 CN 267741269 JP 186372005 GB 115678470 DE 111001300 KR 99794924 CA 79731827 FR 71670825 AU 47299268 IT 45215782 |
13 мар 15, 15:34 [17381336] Ответить | Цитировать Сообщить модератору |
SashaMercury Member Откуда: Москва Сообщений: 2653 |
Проблема с тем, чтобы понять какие страны граничат друг с другом, и исходя из этого определиться с тем, как их можно раскрашивать. Если я правильно понял. Определить это можно только по географическим координатам. Полный перебор очевидно не подходит. Нужно найти подходящий способ определения контура каждой страны. Определить метрику между контурами, и исходя из этого делать выводы об общей границы. Либо, построить все(либо достаточное количество) точки. Провести триангуляцию области. Сделать выводы о границах, и провести раскраску |
13 мар 15, 15:47 [17381420] Ответить | Цитировать Сообщить модератору |
miksoft Member Откуда: Сообщений: 38773 |
В порядке пятничного бреда - а что если попытаться скормить все или часть адресов кластеризации в яндекс.картах ? Они, помнится, где-то писали, что довольно много точек могут прожевать. Правда, вряд ли 5 миллионов смогут. Кстати, если сделать группировку по координатам, то сколько останется? |
||
13 мар 15, 15:57 [17381487] Ответить | Цитировать Сообщить модератору |
SashaMercury Member Откуда: Москва Сообщений: 2653 |
вероятно должна получиться реальная карта стран построенная только на основе IP - адресов. Тут больше 3 миллиардов, где вы тут 5 миллионов увидели не понял:) |
||||
13 мар 15, 16:01 [17381510] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51019 |
Нет. Никакой географии пока не нужно. В этой базе нет информации о границах государств. А сервисы визуализирующие трафик клиентов на сайте с точки зрения гео-локаций уже существуют. И я не буду их повторять. Мне вообще всегда скушно любое повторение. А вот отобразить over 3 млрд цветных точек на большом квадрате. Каждая из которых - 1 адрес. Это мне кажется задачей любопытной. И вовсе не такой однозначной. |
||
13 мар 15, 16:05 [17381542] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51019 |
Думаю - да. Это (предположительно) квадрат со стороной >= 64К пикселов. Разумно будет с точки зрения дизайна заполнить его нейтральным серым цветом. Это будет маркировка не использованых или потерянных адресов. Или адресов локальных сетей. А over 200 стран(государств) раскрасить в цвета радуги от синего до красного. |
||||
13 мар 15, 16:07 [17381554] Ответить | Цитировать Сообщить модератору |
SashaMercury Member Откуда: Москва Сообщений: 2653 |
А в чём проблема раскрасить каждую точку? Их нужно раскрашивать определенным цветом в зависимости от государства ? |
||||
13 мар 15, 16:08 [17381563] Ответить | Цитировать Сообщить модератору |
MasterZiv Member Откуда: Питер Сообщений: 34688 |
Э... Может карта Кохонена ? |
||
13 мар 15, 16:09 [17381568] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51019 |
По поводу яндекса - я не вкурсе. Наверное речь идёт о каком-то сервисе кластеризации которого я просто не знаю. Но в порядке пятничного бреда - даже для пикселов в квадрате мне понадобится какой-то инструмент для идентификации диапазона. Например можно сделать приложение. Ты навёл мышкой над цветной областью - и тебе пишут дескыть [89.188.106.244 - 89.188.127.255] - Ru/Moscow. |
13 мар 15, 16:09 [17381571] Ответить | Цитировать Сообщить модератору |
MasterZiv Member Откуда: Питер Сообщений: 34688 |
Так а какова цель визуализации ? Какие параметры нужно визуализировать на картинке? |
||
13 мар 15, 16:11 [17381584] Ответить | Цитировать Сообщить модератору |
SashaMercury Member Откуда: Москва Сообщений: 2653 |
то есть всё-таки с метриками придётся разобраться |
||||
13 мар 15, 16:12 [17381588] Ответить | Цитировать Сообщить модератору |
MasterZiv Member Откуда: Питер Сообщений: 34688 |
Ну да, поскольку есть критерий пространственной близости-удалённости (расстояние между коорд., заданными широтой и долготой), то да, можно построить карту Кохонена. p.s. если не секрет, где берёте IPGEODATA ? (можно в приват). |
||||
13 мар 15, 16:14 [17381607] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51019 |
Давай порассуждаем. Какого размера картинки ты вообще встречал в природе? Я знаю что современные зеркалки шлёпают сырые фотки до 16 мегапикселов. Это (примерно) 4000 на 4000 цветных элементов каждый из которых занимает 24/32 бита в зависимости от способа хранения. И это далеко не тривиальная задача даже просто создать подобную картинку 64К на 64К. Это софт - эксклюзивный. Штучный. И думаю что создавать ее придется частями. Панорамой. Это придает задаче определенный трудный старт. Кстати я год назад гуглил сервис который хранит гига-пиксельные фотки. Кажется там было фото Эвереста отснятое большим количеством панорамок. |
||
13 мар 15, 16:14 [17381612] Ответить | Цитировать Сообщить модератору |
miksoft Member Откуда: Сообщений: 38773 |
|
||
13 мар 15, 16:14 [17381616] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51019 |
Это должна быть цветная диаграмма. На которой должны быть видны все 200+ стран. В виде прямоугольничков. Или полосок. Или просто каких-то сложных областей. Типа многоугольников. И должно соблюдаться отдельное условие которое я специально сам себе задал. (Только что) - Два соседних IPv4 адреса должны быть двумя соседними пикселами на картинке. |
||
13 мар 15, 16:17 [17381635] Ответить | Цитировать Сообщить модератору |
miksoft Member Откуда: Сообщений: 38773 |
Кстати, наверняка есть смысл "причесать" этот список диапазонов - слить соседние одинаковые, разобраться с пересечениями, удалить мелкие диапазоны, входящие в идентичные более крупные и т.п. |
13 мар 15, 16:19 [17381664] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51019 |
Э.... здесь я зависну на пару недель. Мне знаком термин карта Кохонена. Кажется в универе мы изучали это на курсе нейросетей. Не хочу показаться незнающим поэтому пока поскипаем. Чуть позже я попробую осмыслить предложение и дать ответ.
Нет не секрет. ПО находится здесь. Там же торгуют базами или сервисом гео-локаций. https://www.maxmind.com/en/geoip2-services-and-databases Тестовую базу в разрезе крупных городов можно там скачать (так было года 2 назад. Щас не знаю). Моя выборка CSV (более полная я так думаю) легко находися на http://rutracker.org по ключевым словам maxmind, geoip, geolocation Там много бинарей (уже legacy формат) и есть выборка *.csv (файлик размером 400М). Впрочем если что я могу скинуть. |
||||
13 мар 15, 16:25 [17381705] Ответить | Цитировать Сообщить модератору |
miksoft Member Откуда: Сообщений: 38773 |
Я бы для начала предложил не мудрить, а построить прямоугольник 3584х4096. В качестве координат - первые 12 разрядов и следующие 12 разрядов ip-адресов. Младший октет игнорировать. Сильно подозреваю, что, за небольшим исключением вкраплений старых крупных диапазонов, это будет абсолютно хаотичная картинка. |
||
13 мар 15, 16:26 [17381715] Ответить | Цитировать Сообщить модератору |
SashaMercury Member Откуда: Москва Сообщений: 2653 |
Марк, как будут раскрашиваться точки ? Цвет точек принадлежащих одной стране одинаковый ? Рядом не должны быть расположены 2 страны с одинаковым цветом ? |
13 мар 15, 16:30 [17381746] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51019 |
Да я щас думаю над этим. Самое сложное - обеспечить кластеризацию или скопление точек в одном месте. Не хочется диаграмму превращять в полосатый шум. Всё таки визуализация должна быть наглядной. Я подумал вот над чем. Если диапазон адресов перевести в коды Грея то между соседними адресами не будет скачков и если взять 32 битное целое (адрес) и разбить его на 16+16 битов Грея то эта пара координат в (x,y) будет достаточно плотно лежать с соседями.
Мысль инетересная. Думаю что для чернового варианта диаграммы я так и сделаю. Минут через 15 подкину еще цифр по длинам диапазонов. |
||||
13 мар 15, 16:33 [17381759] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51019 |
Ну.... top10 стран ты видел. Надо чтобы хотя-бы эти "толстяки" не пересекались по HSV палитре. А на всякие там республики Тувалу или Мауру мне будет пофигу. Пускай цвета похожи. |
||
13 мар 15, 16:36 [17381782] Ответить | Цитировать Сообщить модератору |
miksoft Member Откуда: Сообщений: 38773 |
|
||||
13 мар 15, 16:37 [17381786] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 7 8 вперед Ctrl→ все |
Все форумы / C++ | ![]() |