Страны | 218 |
Регионы | 1611 |
Города | 17287 |
Страна | Количество регионов | Количество городов |
Абхазия | 1 | 10 |
Австралия | 9 | 208 |
Австрия | 9 | 186 |
Азербайджан | 3 | 76 |
Албания | 12 | 41 |
Алжир | 1 | 10 |
Ангола | 1 | 7 |
Ангуилья | 1 | 2 |
Андорра | 8 | 19 |
Антигуа и Барбуда | 1 | 8 |
Антильские о-ва | 1 | 1 |
Аргентина | 24 | 184 |
Армения | 12 | 247 |
Арулько | 1 | 1 |
Афганистан | 1 | 6 |
Багамские о-ва | 1 | 1 |
Бангладеш | 1 | 2 |
Барбадос | 1 | 1 |
Бахрейн | 1 | 2 |
Беларусь | 6 | 153 |
Белиз | 1 | 1 |
Бельгия | 11 | 203 |
Бенин | 1 | 1 |
Бермуды | 1 | 1 |
Болгария | 29 | 371 |
Боливия | 8 | 34 |
Босния/Герцеговина | 3 | 26 |
Ботсвана | 1 | 3 |
Бразилия | 21 | 99 |
Британские Виргинские о-ва | 1 | 1 |
Бруней | 1 | 1 |
Буркина Фасо | 1 | 2 |
Бурунди | 1 | 1 |
Бутан | 1 | 1 |
Валлис и Футуна о-ва | 1 | 1 |
Вануату | 1 | 2 |
Великобритания | 17 | 468 |
Венгрия | 23 | 83 |
Венесуэла | 23 | 72 |
Восточный Тимор | 1 | 1 |
Вьетнам | 6 | 11 |
Габон | 1 | 2 |
Гаити | 6 | 6 |
Гайана | 1 | 1 |
Гамбия | 1 | 1 |
Гана | 1 | 1 |
Гваделупа | 2 | 2 |
Гватемала | 11 | 20 |
Гвинея | 1 | 2 |
Гвинея-Бисау | 1 | 1 |
Германия | 16 | 2080 |
Гернси о-в | 1 | 1 |
Гибралтар | 1 | 6 |
Гондурас | 1 | 1 |
Гонконг | 1 | 1 |
Гренада | 1 | 1 |
Гренландия | 1 | 1 |
Греция | 51 | 333 |
Грузия | 2 | 66 |
Дания | 16 | 318 |
Джерси о-в | 1 | 1 |
Джибути | 1 | 1 |
Доминиканская республика | 1 | 1 |
Египет | 8 | 10 |
Замбия | 1 | 3 |
Западная Сахара | 1 | 2 |
Зимбабве | 1 | 2 |
Израиль | 8 | 71 |
Индия | 22 | 63 |
Индонезия | 1 | 1 |
Иордания | 1 | 1 |
Ирак | 3 | 3 |
Иран | 12 | 16 |
Ирландия | 26 | 131 |
Исландия | 11 | 17 |
Испания | 52 | 590 |
Италия | 100 | 814 |
Йемен | 1 | 2 |
Кабо-Верде | 1 | 1 |
Казахстан | 19 | 251 |
Камбоджа | 1 | 1 |
Камерун | 4 | 4 |
Канада | 13 | 248 |
Катар | 1 | 1 |
Кения | 5 | 12 |
Кипр | 2 | 6 |
Кирибати | 1 | 9 |
Китай | 30 | 255 |
Колумбия | 19 | 54 |
Коморские о-ва | 1 | 1 |
Конго (Brazzaville) | 1 | 3 |
Конго (Kinshasa) | 1 | 1 |
Коста-Рика | 7 | 32 |
Кот-д''Ивуар | 1 | 2 |
Куба | 15 | 69 |
Кувейт | 2 | 2 |
Кука о-ва | 1 | 1 |
Кыргызстан | 5 | 73 |
Лаос | 1 | 1 |
Латвия | 1 | 57 |
Лесото | 1 | 1 |
Либерия | 1 | 1 |
Ливан | 1 | 2 |
Ливия | 2 | 2 |
Литва | 1 | 81 |
Лихтенштейн | 6 | 6 |
Люксембург | 4 | 38 |
Маврикий | 1 | 1 |
Мавритания | 1 | 1 |
Мадагаскар | 1 | 6 |
Македония | 24 | 28 |
Малави | 1 | 1 |
Малайзия | 1 | 1 |
Мали | 1 | 3 |
Мальдивские о-ва | 1 | 1 |
Мальта | 1 | 40 |
Марокко | 2 | 2 |
Мартиника о-в | 1 | 1 |
Мексика | 32 | 170 |
Мозамбик | 1 | 4 |
Молдова | 1 | 61 |
Монако | 1 | 7 |
Монголия | 1 | 3 |
Мьянма (Бирма) | 1 | 2 |
Мэн о-в | 1 | 6 |
Намибия | 1 | 3 |
Науру | 1 | 3 |
Непал | 1 | 1 |
Нигер | 1 | 5 |
Нигерия | 1 | 2 |
Нидерланды (Голландия) | 12 | 280 |
Никарагуа | 4 | 7 |
Новая Зеландия | 14 | 21 |
Новая Каледония о-в | 1 | 1 |
Норвегия | 20 | 248 |
Норфолк о-в | 1 | 1 |
О.А.Э. | 2 | 2 |
Оман | 1 | 3 |
Пакистан | 1 | 3 |
Панама | 5 | 13 |
Папуа Новая Гвинея | 1 | 2 |
Парагвай | 5 | 9 |
Перу | 23 | 62 |
Питкэрн о-в | 1 | 1 |
Польша | 60 | 325 |
Португалия | 21 | 277 |
Пуэрто Рико | 1 | 15 |
Реюньон | 1 | 1 |
Россия | 78 | 2533 |
Руанда | 1 | 1 |
Румыния | 42 | 264 |
Сальвадор | 6 | 6 |
Самоа | 1 | 2 |
Сан-Марино | 3 | 4 |
Сан-Томе и Принсипи | 1 | 1 |
Саудовская Аравия | 1 | 6 |
Свазиленд | 1 | 1 |
Святая Люсия | 1 | 1 |
Святой Елены о-в | 1 | 1 |
Северная Корея | 1 | 1 |
Сейшеллы | 1 | 1 |
Сен-Пьер и Микелон | 1 | 1 |
Сенегал | 1 | 1 |
Сент-Винсент и Гренадины | 1 | 1 |
Сент Китс и Невис | 1 | 1 |
Сербия | 3 | 20 |
Сингапур | 1 | 1 |
Сирия | 1 | 1 |
Словакия | 7 | 16 |
Словения | 3 | 12 |
Соломоновы о-ва | 1 | 1 |
Сомали | 1 | 1 |
Судан | 1 | 8 |
Суринам | 1 | 1 |
США | 53 | 1591 |
Сьерра-Леоне | 1 | 1 |
Таджикистан | 5 | 58 |
Таиланд | 3 | 3 |
Тайвань | 1 | 1 |
Танзания | 1 | 4 |
Того | 1 | 1 |
Токелау о-ва | 1 | 1 |
Тонга | 1 | 1 |
Тринидад и Тобаго | 1 | 1 |
Тувалу | 1 | 1 |
Тунис | 1 | 1 |
Туркменистан | 5 | 40 |
Туркс и Кейкос | 1 | 2 |
Турция | 36 | 37 |
Уганда | 2 | 2 |
Узбекистан | 13 | 108 |
Украина | 26 | 765 |
Уругвай | 11 | 20 |
Фарерские о-ва | 1 | 1 |
Фиджи | 1 | 2 |
Филиппины | 1 | 7 |
Финляндия | 7 | 301 |
Франция | 93 | 546 |
Французская Гвинея | 1 | 3 |
Французская Полинезия | 1 | 1 |
Хорватия | 12 | 32 |
Чад | 1 | 3 |
Черногория | 1 | 7 |
Чехия | 15 | 116 |
Чили | 13 | 63 |
Швейцария | 26 | 222 |
Швеция | 22 | 285 |
Шри-Ланка | 1 | 1 |
Эквадор | 13 | 28 |
Экваториальная Гвинея | 1 | 1 |
Эритрея | 1 | 1 |
Эстония | 1 | 39 |
Эфиопия | 1 | 3 |
ЮАР | 1 | 1 |
Южная Корея | 17 | 31 |
Южная Осетия | 1 | 2 |
Ямайка | 1 | 1 |
Япония | 38 | 122 |
Комментарии (45)
joger
06.12.2016 19:00+1и чем это лучше geonames?
http2
07.12.2016 14:17Я чет в geonames нашел только названия стран, на английском. :)
Так чем geonames лучше? :)jced
07.12.2016 15:31Очень плохо искали!
Вот Вам пакет для РНР: http://pear.php.net/manual/en/package.webservices.services-geonames.examples.php
Там Вы найдете примеры и с языком, и с городами.
Вот пример инфы по городу: http://api.geonames.org/search?q=london&maxRows=10&username=demo
Вот то же самое, но на русском: http://api.geonames.org/search?q=london&maxRows=10&username=demo&lang=ru
Так чем geonames хуже? :)http2
07.12.2016 16:36Это мне по памяти вытягивать все города из него? :)
jced
07.12.2016 17:17Нет, я привел пример города потому что Вы сказали, что их там нет.
А функционала там гораздо больше, почитайте. Ничего помнить не придется ;)http2
07.12.2016 17:39Таки, да, есть города.
Но оно все какое-то не юзер-френдли, согласитесь :)
Ну и нету регионов. :)jced
07.12.2016 18:24Я конечно не профессиональный географ, но мне кажется, что это области (регионы), поправьте, если я не прав:
http://api.geonames.org/children?geonameId=2017370&username=demo&lang=ru
А насчет «юзер-френдли», то мне кажется, что Вам скорее не понятно, чем не удобно и Вы, как я заметил, не стараетесь найти решение.
VLegostaev
07.12.2016 16:52Сравнение лучше хуже в этом случае не совсем подходит.
Предлагаю взглянуть на проблему под другим углом. Есть люди которые владеют geonames. Например завтра они захотят ввести плату за сервис в том или ином объеме. Или просто начнут отключать тех или иных пользователей аргументирую это теми или иным правилами.
Т.е риск существует. Вроде мы как бы все пользуемся и нам кажется, что это все постоянно, но в любой момент по независимым от нас (разработчиков) причинам все может измениться.
Я полагаю, что для того, чтобы различные ИТ продукты могли развиваться нормально и независимо — должен существовать выбор.
Например все справочники должны быть доступны в открытом доступе каждому разработчику.
В этом случае каждый сможет выбрать что ему удобнее. Например, если хочется подключил через geonames, возникли трудности, скачал справочник и развернул его у себя.jced
07.12.2016 17:15Вообще-то, там можно скачать ВСЮ базу в zip, абсолютно открыто и никто ее уже не заберет, и будет она Ваша навеки, больше, чем эта в сотни раз. И ее можно развивать. Не понимаю смысла изобретать велосипед.
VLegostaev
07.12.2016 18:32Возможно в будущем появится человек который возьмет и добавит в geonames связку городов и областей.
Возможно в будущем появятся люди которые сделают базу данных которая будет отражать административно территориальное деление каждой страны в соответствии с ее законами.
Будет очень здорово если эта база будет доступна каждому разработчику без любых ограничений.
Я полагаю, что лучше всего для этого подходит лицензия MIT.jced
07.12.2016 18:53Первое: Не надо добавлять, связку города-области потому, что они там уже есть. Почитайте мой коммент выше, там даже ссылка есть.
Второе: У них и так открытая лицензия. http://www.geonames.org/about.html
Вы наверное не поняли принцип: база бесплатная, Вы можете скачать ее всю! Логин и ограничение на вебсервис у них есть просто потому, что им нужно содержать как-то сервера и регламентировать нагрузку на них! Не нравится — скачайте локально и юзайте как хотите. Более того, там есть комьюнити, где Вы можете внести свою лепту в проект и сделать его лучше.
Странно, что Вы выдумываете нелепые надуманные оправдания своему «велосипеду», и не желаете разобраться в вопросе.VLegostaev
07.12.2016 19:11База распространяется под лицензией Creative Commons Attribution 3.0 License. (https://creativecommons.org/licenses/by/3.0/)
В этой лицензии есть раздел Under the following terms.
В котором есть требования указывать автора. (см appropriate credit). В противном случае Вы не имеете права ее использовать. Если в комьюнити люди участвуют в создании базы данных, то они так же являются соавторами. Соответственно вы должны их всех указать.
У Вас есть этот список авторов?
Возможно он где-то есть на сайте?
А вот без этого списка лицензия Ваша не имеет силы. Т.е если Вы просто скачаете и установите, то формально Вы нарушаете. А в некоторых странах за это ответственность очень серьезная.
Более того когда вы будет обрабатывать файлы, то Вы будете видоизменять информацию. Например если Вы хотите преобразовать ее в SQL формат. Чисто формально Вы должны указать все сделанные преобразования, иначе лицензия не действительна. (см indicate if changes were made)
Такой тип лицензирования создает массу проблем. Поэтому я полагаю что для таких объектов как справочники лучше всего подходит лицензия MIT.
Возможно через api их сайта предоставляется больше информации чем содержится в файле RU.zip. К сожалению Ваш запрос вернул следующий ответ:
the daily limit of 30000 credits for demo has been exceeded. Please use an application specific account. Do not use the demo account for your application.
В файле RU.zip, RU.txt возможно для каких-то объектов и задана связь, но к сожалению мне таких не попалось.
jced
07.12.2016 18:58Наивно полагать, что Ваш статичный файлик на хабре через полгода-год будет хоть сколько-то актуальным. Думаете, его содержимое надежнее, чем сервис, который поддерживает огромное комьюнити и которое можно синхронизировать и хранить локально?
VLegostaev
07.12.2016 19:54Файл находится на github. Git предоставляет достаточно широкий функционал.
Административно территориальное деление стран меняется не так часто.
jced
06.12.2016 19:02+1Зачем это? Для формы регистрации в собственной принципиально новой социальной сети? Геонэймс ведь есть…
gearbox
06.12.2016 22:12судя по соседним значениям — ради вот этого:
insert into region(id, country_id, name) values (87, 1, 'Кировоградская обл.');
insert into region(id, country_id, name) values (88, 0, 'Крым АР.');
insert into region(id, country_id, name) values (89, 1, 'Луганская обл.');
Varim
06.12.2016 23:11Ого, обычно только при маппинге перечислений видишь нуль в Id
insert into country(id, name) values (0, 'Россия');
Спасибо
http2
06.12.2016 23:29Из Вашей статьи узнал, что появилась страна Арулько. :)
Ну и данная база практически не интегрируема с другими базами. :)
П.С.
Как планируются обновления? :)
plushka
06.12.2016 23:57Арулько? Из Jagged Alliance 2? Серьёзно? Может быть, всё таки Аруба?
QDeathNick
07.12.2016 00:23И уже если внесли Арулько, могли бы хоть столицу правильно указать — Медуна. :)
anitspam
07.12.2016 04:51справедливости ради на сайте мчс
http://www.mchs.gov.ru/dop/mfeedback/form/?agree=1greabock
07.12.2016 01:14-2Очередной хабрасуицид?
VLegostaev
07.12.2016 01:29+3Не так все грустно. Посмотрим на ситуацию с другой стороны.
Я написал автомат, который собрал все эти данные. Судя по всему он так же нашел такие страны как Арулько. Но тем не менее, он собрал данные о большом количестве стран, областей и городов.
Возможно в будущем появится человек, который решит уточнить этот список и как результат этого появиться более точная база данных. Лицензия MIT вполне позволяет это сделать.
И таким образом появится бесплатный offline справочник, который будет доступен каждому разработчику.azsx
07.12.2016 04:32Я написал автомат, который собрал все эти данные.
А вот можно, пожалуйста, подробнее об автомате? Откуда собирали данные, принцип сбора? Например, почему именно такая ошибка и следовательно какие ошибки ещё ожидать?
И таким образом появится бесплатный offline справочник, который будет доступен каждому разработчику.
Справочник написать можно, только, что за задачи он должен выполнять? То есть вообще не понимаю, что должно быть в ТЗ данного справочника.
KlimovDm
07.12.2016 10:06Я написал автомат, который собрал все эти данные.
Действительно, соглашусь с azsx, описание «автомата», который эти данные собирает, было бы гораздо более интересной и содержательной темой. А так вы вывалили сырые данные, непонятно по какому алгоритму собранные. Как следствие — доверять этим данным нельзя по определению.
Ranckont
07.12.2016 17:00Может дополнить справочник полями
— альтернативное название, например Башкортостан
— английское название
— родное название
И файлик распотрошить на страны?
lexore
08.12.2016 05:57-1Ну что-ж, можно поблагодарить автора за вклад в свободные знания.
Косяки:
- Названия на одном языке, либо на русском, либо на английском, т.е. там нет "Лондон" и нет "Moscow".
- База уже не актуальна, в ней есть "Камчатская обл.", но нету "Камчатский край" (изменение произошло аж 1 июля 2007). В geonames край есть
- Обновление — да, такие вещи нечасто обновляются, но когда идет разговор о паре сотен стран, получается пара сотен источников данных. Каждый может быть на своем языке.
Вклад получился одноразовый — запустили скрипт, получили выхлоп, отдали сообществу, нате, пользуйтесь.
Если вы действительно хотите сделать вклад, может быть выложите на гитхаб скрипт, которым это было сделано?
Это бы упростило задачи изменения и актуализации данных.
markmariner
08.12.2016 09:46А Крым-то наш?
Если серьёзно, то страны и регионы признаются далеко не всеми другими странами. По какому критерию сделан выбор? Почему Южная Осетия есть, а Палестины нет?
Linfuby
09.12.2016 10:39Устаревшие данные
Грозный принадлежит региону «Чечено-Ингушетия». Серьезно?
А Крым в списке Украинских регионов (между Кировоградской обл. и Луганской обл.), у него только страна изменена на Россия. И что значит АР., Автономная республика? А почему у остальных нет такого описания? Например написано просто «Татарстан», а не «Республика Татарстан».
Получается такая каша-малаша из данных.
bluetooth
09.12.2016 10:391. Как быть со спорными территориями? Кашмир, например, своим считают аж целых 3 страны. Тайвань, Палестина, Абхазия с Южной Осетией признаются не всеми странами и т.д.;
2. Почему только трехуровневая система административного деления (страна, регион, город)? Во многих странах деление намного сложнее. Например, в той же Германии, в отдельных регионах свое деление на меньшие единицы. Поэтому не хватает отдельной таблицы с названиями регионов и таблицы с иерархией регионов;
3. Во многих странах есть города прямого подчинения, не входящие в какой-либо регион. Например, Москва, Санкт-Петербург, Ташкент и т.д. Ваша таблица city этого не учитывает. К тому же вы вышли из ситуации с Москвой и Питером не самым элегантным способом. Я бы города вообще не выносил в отдельную таблицу, а сделал частью таблицы region и связал с таблицей с названиями регионов;
4. Указывать в скобках принадлежность города к какому-либо региону излишне, т.к. вы уже связываете город с регионом посредством стоблца region_id;
5. Как уже вам указали, у вас названия вперемешку на русском и английском. Нужно продумать систему переводов на разные языки.
johnnymmc
09.12.2016 10:39Спасибо, конечно, полезная штука, но…
В Германии (2080) больше городов, чем в США (1591)? Серьёзно? Банальный запрос «number of cities in the us» выдаёт «As of 2013, the United States has 3,007 counties and 137 county equivalents for a total of 3,144 counties and county equivalents. Cities and towns: According to the U.S. Census Bureau, there are 19,354 „incorporated places“ in the United States.» Т.е. одних только «графств» (county — следующий уровень административного деления после штата, в одном county может быть несколько городов) там 3144 штуки а населённых пунктов вообще 19354.
Ещё мне кажется такой базе следовало бы включать стандартные коды стран по ISO 3166-1 alpha-2 и (например Россия — RU, США — US, Великобритания — GB и т.д.) и стандартные коды регионов («штатов») по ISO 3166-2 (например Алабама — US-AL, Алтайский край — RU-ALT, Полтавская область — UA-53 и т.д.).
antirek
09.12.2016 12:47А почему данные в sql?
Можно их положить в json, csv, описав структуру. Тогда их можно удобно загружать в любое ПО для использования или «на лету», или импортируя в свою БД.
garex
10.12.2016 21:30- Люди давно уже придумали просто-SQL, а не VendorSQL. Попробуйте его использовать.
- crt_date. Рука-лицо… Зачем это в справочниках, которые раз в век меняются? Причём такое название. Сразу вспоминается крутой нэйминг типа pIdOrName.
- Как уже выше сказали — формат "только SQL" в наш век JS'а как-то не комильфо.
- А где для стран коды по типу ISO?
johnnymmc
16.12.2016 00:24+1А где для стран коды по типу ISO?
Рад, что хоть кто-то заметил. Тем не менее все почему-то помнят в лучшем случае о странах, при этом забывают, что для каждого штата/земли/республики/области/итп тоже есть ISO-код по стандарту ISO 3166-2. Таким образом мы фактически имеемт все страны и их териториальные подразделения перечисленными и кодифицированными в стандарте, на самодеятельность остаются только непосредственно населённые пункты (города, посёлки, деревни и т.п.).
PapaBubaDiop
Геопозиции?
wscms
Отсутствуют, судя по SQL-файлу на гитхабе
id, region_id, name, crt_date