Comments 45
прошу прощения за сбитый формат после кода на перле, очень похоже, на то что тег code не закрыт, но найти причину пока не могу.
Можно было ещё залить данные в Fusion Tables, они для подобных задач и были созданы. Красивые визуализации прилагаются.
Вот например небольшая база айпишников по США.
Вот например небольшая база айпишников по США.
Простите за занудство, но раз уж на нерусском, то наверное не Kolvo, а Amount, например.
И в Антарктиде точка,
или это битый пиксель у меня на мониторе?))
или это битый пиксель у меня на мониторе?))
В Антарктиде есть интернет, я с коллегой по аське общался, когда он там был. Задержка была ощутима — секунда туда, секунда обратно.
как до Луны :)
да, я знал, пингвины активно используют интернет
ну а если серьезно, не подскажете, как проложена до данных широт связь.
ну а если серьезно, не подскажете, как проложена до данных широт связь.
спутник, как еще
1) тогда странно «точная» координата для спутникового приемо-передатчика
2) секунда задержки, это еще хорошо в данном случае :)
2) секунда задержки, это еще хорошо в данном случае :)
1) а вы уверены, что она точная? Меня вот обычно в центр Москвы помещают по IP. А я там уже с полгода не бывал.
2) чтож хорошего, за секунду сигнал проходит 300 000 км, это несколько раз до телекоммуникационного спутника и обратно. Значит много времени теряется на различных маршрутизаторах, есть к чему стремиться
2) чтож хорошего, за секунду сигнал проходит 300 000 км, это несколько раз до телекоммуникационного спутника и обратно. Значит много времени теряется на различных маршрутизаторах, есть к чему стремиться
Так не только в Антарктиде! Насколько я знаю в Норильск тоже нету никаких наземных каналов, и вся связь 100 тысячного города с миром происходит через спутник…
А что вас так смущает?
Это феерично! Хотелось бы только разрешение побольше, эдак 1280х1024 и соответственно более детализированно
А всего-то нужно было для импорта CVS в базу использовать mysqlimport. А дальше в базе всё пошло бы гораздо быстрее. Очень сэкономили бы во времени.
т.е. импортировать svs в БД, а потом парсить БД для необходимого результата?
Через mysqlimport огромные CVS можно превратить в таблицу в базе за очень короткое время, а далее, изменениями параметров полей, добавлением индексов и простейшими запросами добиться необходимого вида базы (чего собственно и делать для такой задачи не обязательно). В итоге перл-скрипт будет лишним + экономия времени не сопоставимая. По опыту скажу, CSV в 10+ гигабайт вскочил в базу за минуты (порядка 5-8), попытки же парсить его скриптами показывали порядка пары недель на той же машине.
даешь серые ИП Европе и Японии!
При чем здесь серые IP?
Правда она считает, что я из бутово переехал в Александровский сад. Но ничего, нам такая точность не к чему.
Видимо координаты центра города просто указаны :)
Я в свое время тоже таким развлекался: d1.fenrirko.aumi.ru/fansub/testmap.jpg
А для GeoIP в цпане есть модуль с логичным названием Geo::IP
А для GeoIP в цпане есть модуль с логичным названием Geo::IP
запрашивать координаты для определенных ипов из всего диапазона?
Не понял вопроса.
>есть модуль с логичным названием Geo::IP
насколько я помню данный модуль возвращает координату, и прочие данные при запросе к нему ip адреса.
т.е. вы предлагаете поочередно спросить у данного модуля все возможные варианты ip адресов?
насколько я помню данный модуль возвращает координату, и прочие данные при запросе к нему ip адреса.
т.е. вы предлагаете поочередно спросить у данного модуля все возможные варианты ip адресов?
А можно то же самое, только яркость (цвет, оттенок,...) точек в зависимости от поля kol?
Осталось разбивку по цветам и страну+количество адресов.
Вот на Ruby:

Код:

Код:
require 'geoip'
require 'RMagick'
LAT, LON, WIDTH, HEIGHT, BORDER = 180, 360, 2000, 1200, 70
OFFSET_X = (WIDTH.to_f - BORDER.to_f) / LON.to_f
OFFSET_Y = (HEIGHT.to_f - BORDER.to_f) / LAT.to_f
c = Magick::Image.new(WIDTH, HEIGHT, Magick::GradientFill.new(0, 0, HEIGHT, 0, "#24302F", "#1A2423")) do |img|
#img.background_color = "#1A2423"
end
cache = {}
GeoIP.new(File.dirname(__FILE__) + '/GeoLiteCity.dat').each do |r|
x = (180.to_f + r.longitude.to_f) * OFFSET_X
y = (90.to_f - r.latitude.to_f) * OFFSET_Y
z = x.to_i * y.to_i
cache[z] ||= 0
gc = Magick::Draw.new
gc.fill(cache[z].to_i > 0 ? "#7D762B" : "#EBE3AF")
gc.point x, y
gc.draw c
cache[z] += 1
end
c.write File.dirname(__FILE__) + '/map.png'
Sign up to leave a comment.
GeoIP, попытки нетрадиционного использования