Тяпничная география

mayton
Дата: 13.03.2015 13:36:28
Здарова други!

Кодеры. Программеры. Арифметики и счетоводы. И сочувтвующие.

Значит есть у меня база. В формате 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 уникальный адрес.
Каждая страна - отдельный цвет.. По сути - получить
мозаику из стран.

Прошу мозговой штурм.

Чо. Как. Трудности. Количественные оценки.
Примеры хард-кода.

Доп. цифры могу предоставить. Сколько адресов. Сколько диапазонов и стран. (Сформирую отчётики)
-----

Спасибо.
Leonid Kudryavtsev
Дата: 13.03.2015 14:18:03
А смысл? Может взять какую нибудь карту мира и на ней раскрасить?
mayton
Дата: 13.03.2015 14:31:05
Смысл - пятничное обсуждение. Чуть позже дам цифирки.
mayton
Дата: 13.03.2015 15:34:23
Хопа! А вот и цифирки.

Значит так.

Количество диапазонов.
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
SashaMercury
Дата: 13.03.2015 15:47:02
Проблема с тем, чтобы понять какие страны граничат друг с другом, и исходя из этого определиться с тем, как их можно раскрашивать.
Если я правильно понял.

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

Либо, построить все(либо достаточное количество) точки. Провести триангуляцию области. Сделать выводы о границах, и провести раскраску
miksoft
Дата: 13.03.2015 15:57:59
mayton
Задача - визуализировать ВСЕ адреса на картинке.
Так на что должна эта картинка походить? Реальная карта стран? Или тупо прямоугольник 64Кх64К?

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

Кстати, если сделать группировку по координатам, то сколько останется?
SashaMercury
Дата: 13.03.2015 16:01:22
miksoft
mayton
Задача - визуализировать ВСЕ адреса на картинке.
Так на что должна эта картинка походить? Реальная карта стран? Или тупо прямоугольник 64Кх64К?

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

Кстати, если сделать группировку по координатам, то сколько останется?


вероятно должна получиться реальная карта стран построенная только на основе IP - адресов. Тут больше 3 миллиардов, где вы тут 5 миллионов увидели не понял:)
mayton
Дата: 13.03.2015 16:05:01
SashaMercury
Проблема с тем, чтобы понять какие страны граничат друг с другом, и исходя из этого определиться с тем, как их можно раскрашивать.
Если я правильно понял.

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

Либо, построить все(либо достаточное количество) точки. Провести триангуляцию области. Сделать выводы о границах, и провести раскраску

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

А вот отобразить over 3 млрд цветных точек на большом квадрате. Каждая из которых - 1 адрес.
Это мне кажется задачей любопытной. И вовсе не такой однозначной.
mayton
Дата: 13.03.2015 16:07:26
miksoft
mayton
Задача - визуализировать ВСЕ адреса на картинке.
Так на что должна эта картинка походить? Реальная карта стран? Или тупо прямоугольник 64Кх64К?

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

Кстати, если сделать группировку по координатам, то сколько останется?

Думаю - да. Это (предположительно) квадрат со стороной >= 64К пикселов.

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

А over 200 стран(государств) раскрасить в цвета радуги от синего до красного.
SashaMercury
Дата: 13.03.2015 16:08:55
mayton
SashaMercury
Проблема с тем, чтобы понять какие страны граничат друг с другом, и исходя из этого определиться с тем, как их можно раскрашивать.
Если я правильно понял.

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

Либо, построить все(либо достаточное количество) точки. Провести триангуляцию области. Сделать выводы о границах, и провести раскраску

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

А вот отобразить over 3 млрд цветных точек на большом квадрате. Каждая из которых - 1 адрес.
Это мне кажется задачей любопытной. И вовсе не такой однозначной.



А в чём проблема раскрасить каждую точку? Их нужно раскрашивать определенным цветом в зависимости от государства ?