Как стать автором
Обновить

Комментарии 57

Буду очень благодарен, если кто-нибудь подскажет, где можно взять подобную базу данных. Нужен список городов Земли (штук 10000-50000) с координатами, высотой и часовым поясом.
напишите парсер с настройками. т.е. чтобы можно было бы указать диапазон.
я помогу выкачать.

— часовой пояс
— используется ли летнее/декретное время

Что то не увидел


— ориентировочное количество жителей (обычно, сильно заниженное)


в 5 раз :)
и правда, просто парсер самому писать не когда, а так присоединюсь к парсингу, я думаю если наберется человек 20 то проблема уже станет разрешимой.
хм... попробую написать парсер... недавно нечто подобное писалось... но тут конечно посложнее будет)
Сейчас пробую на свой сервер залить используя wget. Пока всё идет хорошо.
Если на сайте нет защиты от скачивания всего-всего, то к утру будет все населенные пункты России.

У меня же на сервере можно будет запустить парсер. Лишь бы скачалось...
думаю скачается, кудаж оно денется )
Процесс пошел. 500 страниц закачались за 20 минут.
Надеюсь, сайт примет меня за ГуглБота :-)
Утром напишу о результатах.
Тоже сразу захотелось скачать - подумал, что главное - "не спугнуть" :) Как докачаете страницы - выложите где-нибудь исходники? А потом уж совместными усилиями распарсим.
Ресурс имеет PR=6 и 840 000 страниц с ненулевым PR в индексе Google.
Куда он от нас денется..?

Может, скинуть им ссылку на SAPE? ))
Больше половины населенных пунктов России закачалось. К вечеру будут готовы остальные. Дальше я захвачу весь мир :-)

По данных Гугла всего на сайте около 1.2 млн страниц.
как захватите весь мир - не поделитесь ли данными? :)
Запросто.
обещаете? =)
Часовой пояс есть на странице населенного пункта (а не в общей таблице):
Time zone (est) UTC+3(+4DT)

С количеством жителей что-то непонятное... В разных странах ошибки разные.
Когда-то я качал данные для Америки и Европы (или только Германии, не помню). С каких-то других сайтов, но слово Gazetteer узнаю. Размеры огромные (ок. гигабайта), формат, мягко говоря, странный. Так ничего с этим и не сделал. Я к тому, что эти базы данных почти наверняка можно найти.
Давно ищу... Мне даже такие подробные не нужны. Самая большая проблема с часовым поясом. На данный момент у меня есть база координат 1300 городов по России (многие с численностью населения из недавней переписи, русские названия) и 4500 городов остального мира. Это всё собиралось из разных источников (парсилось). Готовую базу данных нигде не встречал.
нашел в перу замечательный город:
http://www.fallingrain.com/world/PE/8/Nahui.html
Там рядом озеро какое-то... Случайно, не Титикака? ))
Странные карты на этом сайте координат. Впечатление, что они создавались на основе карты начала прошлого века. Просто деревни и города до 50х годов там отмечены хоть как-то, а после не отмечены даже водохранилища. Сужу на основе своего города, которому уже 50 лет.
По Нижегородской области, вроде бы, современные населенные пункты есть...
Но численность населения из 30-х годов. Так что информация явно древняя.
Для моего родного города есть неточность. Точнее, там есть ещё один город с такими же данными, но название у него не Ижевск, а Ишевск.
Есть такое. Для моего города там штук 10 вариантов названия, но все они объединены по координате и файл описания один, как и для Ижевска (Izhevsk.html).
Берется база GeoIP от MaxMind
по ней можно узнать имя города\регион и координаты.
А далее есть википедия.
Я в данный момент обьдиняю эти две базы, плюс КЛАДР и гугл.
Получается гдето 4.2 крупных обьектов на територии россии( в зоне дейсвия КЛАДР) и 4059 вики статей..
Для большинсва обьектов есть история, часовой пояс, население, в том числе и по национальностям.. блин да что же я расказываю - это же ВИКИ!
Сейчас все еше идет сведение таблиц, через недельку будет финал.
Будет актуально - выложу
Еще есть алфавитный указатель наименований географических объектов и таблица численность и размещение населения на сайте переписи 2002 года. Таблица есть в виде excel-документа.

MaxMind для России я бы не стал использовать... Неизвестно, откуда они это всё насобирали. По их данным город Нижний Новгород называется Novgorod и находится где-то рядом с Владивостоком.

Ваш БД очень интересна. Какая информация туда в итоге буедт входить? Будут ли названия на русском/английском?
Базу я собирал для проекта типа МирТесен.
Все на русском языке.
Названия МаксМинда уточнялись через КЛАДР, координаты через гугль-геокодинг.
(если точнее - плясало все от КЛАДРа)
Проблема в том что великого города Рыбинкс( там проживает отписавшийся тут Vass) в гугле НЕТ.
В Максе есть его координаты. В кладре - название.
Как информация будет входить...ммм
Иеархия адресов до улиц, вики инфо, координаты. Названия на русском, но только Россия
Рыбинск
Всеравно нет :)
да, было бы отлично!
а откуда, если не секрет, вы брали данные по прогнозам?
Это данные GFS-модели. Ищите и найдёте :-)
GisMеtеo, например, активно торгует этими данными.
А кто-нибудь собирается скачивать оттуда весь мир? ;) А то я подумываю этим заняться.
Через пару часов у меня закончится загрузка российских населенных пунктов. Смогу выложить архив. Поставлю на загрузку всё остальное.

Просьба ко всем заинтересованным лицам:
Пока ничего не мешает мне продолжать качать страницы сайта. Озадачтесь, пожалуйста, парсером. Структуру парсить не нужно, т.к. она получается довольно логичная:
/world/{код_страны}/{номер_региона}/{название_населенного_пункта}.html
Сейчас занят проектами, в конце этой недели, начале следующей могу написать парсер, если до этого времени он еще будет нужен обращайтесь.
Отлично, давайте организуемся. Предлагаю такой принцип: выкачиваем страницы как есть (без картинок) и сохраняем их в сыром виде. Потом сливаем и распарсиваем.

Я сделал список стран, которые надо выкачать, прямо в виде команд wget. Размещен тут: http://www.plaxo.ru/fallingrain (plaxo тут не при чем - просто первое что подвернулось). Давайте там организовываться.

С такой формой выкачивания все согласны?
Как вам данные http://www.geonames.org?
Я докачаю RS и буду разбираться с geonames. А дальше — посмотрим.
Да, уже тоже прочитал и обрадовался :) Наверное, выкачивание отменяется :)
Хабрахабр — великий ресурс! Больше года я искал эту информацию. И вот! :)
так насколько эта база лучше хуже чем та, которую надо скачивать и парсить?

у меня древнерусская привычка иметь самое большое и лучшее :)
Geonames немного больше + там есть родные наименования объектов на различных языках.
И даже не знаю, зачем может понадобится столько объектов.
Сам добавил только WHERE `population` > 1000. Это >80000 точек :-)
Люди!
есть уже готовая база, с координатами и почти актуальным населением даже
http://www.world-gazetteer.com/wg.php?x=…
Примечание по координатам: напирмер в гугл-мапс цифры вида 5079 надо преобразовывать в 50.79, то есть последние две всегда после запятой
ох! Как раз искал именно это! А какая в итоге самая полная база с русскоязычными названиями?
Если нужна совсем полная и хорошая база с русскоязычными названиями, то придется объединять несколько баз. В базе geonames названия на нескольких языках указаны для небольшого количества объектов. Но никто не мешает приделать к ней русские/олбанские/кетайские названия по координатам...
а откуда взять эти названия? :-/
В таблице названий на всяких-разных языках нашлось около 80000 имен в кириллице. Сколько из них относится к России — не могу сказать. Но этого должно хватить для многих задач. Тем более, большего количества русских наименований я нигде не встречал. Так что в geonames уже всё приделано ))
Имеется в наличии вот эта база:
http://www.geodatasource.com/cities-gold.html

Именно ГОЛД ЭДИШН
GeoDataSource™ Cities Database Gold Edition

Рар-Архив 57 метров (экстракт 400 метров)
можешь куда-нибудь закачать? интересно на нее взглянуть ;)
На сайте дают скачать небольшой образец.
Залил сюда: http://ifolder.ru/5294563

GeoDataSource™ Cities Database Gold Edition (та которая стоит на сайте $1000+)
Сразу предупреждаю: база краденная и соответственно пиратская ну и т.д. и т.п.
Вот спасибо!
Хорошая штука, но база от geonames.org лучше в некоторых мелочах. Например, у geonames есть информация о переходе на летнее время. И русскоязычных названий гораздо больше. Есть корректная информация о численности населения. Суммарный объем данных 750 Мб.
странно, сегодня скачал, запакованное все весит 370МБ, или вы распакованный размер указали?
Да, я имел ввиду распакованный размер файла со всеми населенными пунктами (allCountries.txt). Без альтернативных языков. Они еще на 80Mb потянут (alternateNames.txt).
Большое спасибо! Давно искала что-нибудь такое.
Да, списки хорошие, но, к сожалению? в них используется какая-то мутная нестандартная транслитерация и неизвестно вообще есть ли в ней твёрдое правило. Так что под сомнением то, можно ли это использовать в публичном проекте.

Я-то было уже транслитератор сделал, который по госту работает, а тут такая лажа. Кто-нибудь продвинулся в этом вопросе?


$from = array('/shh/', '/Shh/', '/jo/', '/zh/', '/jj/', '/kh/', '/ch/', '/sh/', '/eh/', '/yu/', '/ya/', '/Jo/', '/Zh/', '/Jj/', '/Kh/', '/Ch/', '/Sh/', '/Eh/', '/Yu/', '/Ya/', '/a/', '/b/', '/v/', '/g/', '/d/', '/e/', '/z/', '/i/', '/k/', '/l/', '/m/', '/n/', '/o/', '/p/', '/r/', '/s/', '/t/', '/u/', '/f/', '/c/', '/"/', '/y/', "/'/", '/A/', '/B/', '/V/', '/G/', '/D/', '/E/', '/Z/', '/I/', '/K/', '/L/', '/M/', '/N/', '/O/', '/P/', '/R/', '/S/', '/T/', '/U/', '/F/', '/C/', '/Y/');
$to = array('щ', 'Щ', 'ё', 'ж', 'й', 'х', 'ч', 'ш', 'э', 'ю', 'я', 'Ё', 'Ж', 'Й', 'Х', 'Ч', 'Ш', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'з', 'и', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'ц', 'ъ', 'ы', 'ь', 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'З', 'И', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Ц', 'Ы');


$text = 'Varim shhi';

ksort($from);
ksort($to);

$text = preg_replace($from, $to, $text);
echo $text;
Вот так выходит:

$lenName = strlen($arrRows[1]);
$trans0 = array (
"-Moscow" => "-Московский",
"Moscow" => "Москва",
"Queen Victoria Sea" => "Море Королевы Виктории",
"Africa" => "Африка",
"Vulcan" => "Вулкан",
"Blecna" => "Блесна",
"Волга-" => "Волго-",
"-Baltic" => "-Балтийский",
"Pokhicstnevskiy Rayon" => "Похвистневский район",
"Il’icehvka" => "Ильечевка",
"Fuyuansanjiao Zhou" => "Большой Уссурийский"
);
$trans1 = array (
"Shch" => "Щ",
"shch" => "щ",
"Yaye" => "Яе",
"yaye" => "яе",
"Yuye" => "Юе",
"yuye" => "юе",
"Yoye" => "Йое",
"yoye" => "йое",
"nnyy" => "нный",
"skyy" => "ский",
"chnyy" => "чный",
"lyy" => "лый",
"vyy" => "вый" );
$trans2 = array (
"que" => "к",
"Eye" => "Ее",
"eye" => "ее",
"Iye" => "Ие",
"iye" => "ие",
"iya" => "ия",
"Oye" => "Ое",
"oye" => "ое",
"Uye" => "Уе",
"uye" => "уе",
"Aye" => "Ае",
"aye" => "ае",
"yye" => "ые",
"yya" => "ия",
'"ye' => 'ъе',
"”ye" => "ъе",
'"ya' => 'ъя',
"”ya" => "ъя",
"''ye" => 'ъе',
"''ye" => "ъе",
"''ya" => 'ъя',
"''ya" => "ъя",
'’ye' => 'ье',
"'ye" => "ье",
'’ya' => 'ья',
"'ya" => "ья" );
$trans3 = array (
"ck" => "х",
"ca" => "ца",
"Cz" => "Ч",
"Ch" => "Ч",
"ch" => "ч",
"jh" => "ж",
"ji" => "жи",
"Kh" => "Х",
"kh" => "х",
"Oy" => "Ой",
"oy" => "ой",
"Qu" => "Ку",
"Ts" => "Ц",
"ts" => "ц",
"Sh" => "Ш",
"sh" => "ш",
"Zh" => "Ж",
"zh" => "ж",
"Yu" => "Ю",
"yu" => "ю",
"Ya" => "Я",
"ya" => "я",
"Yo" => "Йо",
"Jo" => "Йо",
"yo" => "йо",
"Ye" => "Е",
"yy" => "ий",
"iy" => "ий",
"Je" => "Е",
"je" => "е",
"Ja" => "Я",
"ja" => "я",
"ia" => "ия",
"''" => "ъ",
);
$trans4 = array (
"a" => "а",
"b" => "б",
//"c" => "ч",
"d" => "д",
"e" => "е",
"f" => "ф",
"g" => "г",
"h" => "х",
"i" => "и",
"j" => "й",
"k" => "к",
"l" => "л",
"m" => "м",
"n" => "н",
"o" => "о",
"p" => "п",
"r" => "р",
"s" => "с",
"t" => "т",
"u" => "у",
"v" => "в",
"w" => "в",
"x" => "кс",
"y" => "ы",
"z" => "з",
"A" => "А",
"B" => "Б",
"D" => "Д",
"E" => "Е",
"F" => "Ф",
"G" => "Г",
"H" => "Х",
"I" => "И",
"K" => "К",
"L" => "Л",
"M" => "М",
"N" => "Н",
"O" => "О",
"P" => "П",
"R" => "Р",
"S" => "С",
"T" => "Т",
"U" => "У",
"V" => "В",
"W" => "В",
"Y" => "Ы",
"Z" => "З",
'"' => 'ъ',
"”" => "ъ",
"’" => "ь",
"'" => "ь" );
$trans5 = array (
"рний" => "рный",
"яний" => "яный",
"сний" => "сный",
"одний" => "одный",
"ведний" => "ведный",
"ений" => "еный",
"ёний" => "ёный",
"емний" => "емный",
"ёмний" => "ёмный",
"брий" => "брый",
"Старий" => "Старый",
"старий" => "старый",
"стий" => "стый",
"ежний" => "ежный",
"ёжний" => "ёжный",
"ольний" => "ольный",
"ельний" => "ельный" );
for($i=0; $i<$lenName; $i++) {
$arrRows[1] = strtr($arrRows[1], $trans0); }
for($i=0; $i<$lenName; $i++) {
$arrRows[1] = strtr($arrRows[1], $trans1); }
for($i=0; $i<$lenName; $i++) {
$arrRows[1] = strtr($arrRows[1], $trans2); }
for($i=0; $i<$lenName; $i++) {
$arrRows[1] = strtr($arrRows[1], $trans3); }
for($i=0; $i<$lenName; $i++) {
$arrRows[1] = strtr($arrRows[1], $trans4); }
for($i=0; $i<$lenName; $i++) {
$arrRows[1] = strtr($arrRows[1], $trans5); }
$ruName = $arrRows[1];
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории