База данных стран, регионов и городов под лицензией MIT. База данных представлена в виде sql скрипта для PostgreSQL. При запуске скрипт создает необходимые таблицы и заполняет их данными. База данных содержит:
Страны 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)


  1. PapaBubaDiop
    06.12.2016 18:53
    +1

    Геопозиции?


    1. wscms
      06.12.2016 18:55

      Отсутствуют, судя по SQL-файлу на гитхабе
      id, region_id, name, crt_date


  1. joger
    06.12.2016 19:00
    +1

    и чем это лучше geonames?


    1. http2
      07.12.2016 14:17

      Я чет в geonames нашел только названия стран, на английском. :)

      Так чем geonames лучше? :)


      1. 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 хуже? :)


        1. http2
          07.12.2016 16:36

          Это мне по памяти вытягивать все города из него? :)


          1. jced
            07.12.2016 17:17

            Нет, я привел пример города потому что Вы сказали, что их там нет.
            А функционала там гораздо больше, почитайте. Ничего помнить не придется ;)


            1. http2
              07.12.2016 17:39

              Таки, да, есть города.
              Но оно все какое-то не юзер-френдли, согласитесь :)
              Ну и нету регионов. :)


              1. jced
                07.12.2016 18:24

                Я конечно не профессиональный географ, но мне кажется, что это области (регионы), поправьте, если я не прав:
                http://api.geonames.org/children?geonameId=2017370&username=demo&lang=ru

                А насчет «юзер-френдли», то мне кажется, что Вам скорее не понятно, чем не удобно и Вы, как я заметил, не стараетесь найти решение.


        1. VLegostaev
          07.12.2016 16:52

          Сравнение лучше хуже в этом случае не совсем подходит.

          Предлагаю взглянуть на проблему под другим углом. Есть люди которые владеют geonames. Например завтра они захотят ввести плату за сервис в том или ином объеме. Или просто начнут отключать тех или иных пользователей аргументирую это теми или иным правилами.

          Т.е риск существует. Вроде мы как бы все пользуемся и нам кажется, что это все постоянно, но в любой момент по независимым от нас (разработчиков) причинам все может измениться.

          Я полагаю, что для того, чтобы различные ИТ продукты могли развиваться нормально и независимо — должен существовать выбор.

          Например все справочники должны быть доступны в открытом доступе каждому разработчику.
          В этом случае каждый сможет выбрать что ему удобнее. Например, если хочется подключил через geonames, возникли трудности, скачал справочник и развернул его у себя.


          1. jced
            07.12.2016 17:15

            Вообще-то, там можно скачать ВСЮ базу в zip, абсолютно открыто и никто ее уже не заберет, и будет она Ваша навеки, больше, чем эта в сотни раз. И ее можно развивать. Не понимаю смысла изобретать велосипед.


            1. VLegostaev
              07.12.2016 18:32

              Возможно в будущем появится человек который возьмет и добавит в geonames связку городов и областей.

              Возможно в будущем появятся люди которые сделают базу данных которая будет отражать административно территориальное деление каждой страны в соответствии с ее законами.

              Будет очень здорово если эта база будет доступна каждому разработчику без любых ограничений.

              Я полагаю, что лучше всего для этого подходит лицензия MIT.


              1. jced
                07.12.2016 18:53

                Первое: Не надо добавлять, связку города-области потому, что они там уже есть. Почитайте мой коммент выше, там даже ссылка есть.
                Второе: У них и так открытая лицензия. http://www.geonames.org/about.html
                Вы наверное не поняли принцип: база бесплатная, Вы можете скачать ее всю! Логин и ограничение на вебсервис у них есть просто потому, что им нужно содержать как-то сервера и регламентировать нагрузку на них! Не нравится — скачайте локально и юзайте как хотите. Более того, там есть комьюнити, где Вы можете внести свою лепту в проект и сделать его лучше.
                Странно, что Вы выдумываете нелепые надуманные оправдания своему «велосипеду», и не желаете разобраться в вопросе.


                1. 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 возможно для каких-то объектов и задана связь, но к сожалению мне таких не попалось.


                  1. jced
                    07.12.2016 19:36

                    Вы сильно заблуждаетесь.


              1. jced
                07.12.2016 18:58

                Наивно полагать, что Ваш статичный файлик на хабре через полгода-год будет хоть сколько-то актуальным. Думаете, его содержимое надежнее, чем сервис, который поддерживает огромное комьюнити и которое можно синхронизировать и хранить локально?


                1. VLegostaev
                  07.12.2016 19:54

                  Файл находится на github. Git предоставляет достаточно широкий функционал.

                  Административно территориальное деление стран меняется не так часто.


  1. jced
    06.12.2016 19:02
    +1

    Зачем это? Для формы регистрации в собственной принципиально новой социальной сети? Геонэймс ведь есть…


    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, 'Луганская обл.');


  1. jced
    06.12.2016 19:05
    -1

    В Украине 26 областей? В Черногории тоже далеко не 1 община. Многовато ошибок :(


    1. mc2
      07.12.2016 17:00

      еще и половины областей нет:)


  1. Varim
    06.12.2016 23:11

    Ого, обычно только при маппинге перечислений видишь нуль в Id

    insert into country(id, name) values (0, 'Россия');
    

    Спасибо


  1. dvsx86
    06.12.2016 23:11
    -1

    insert into country(id, name) values (1, 'Украина');
    insert into region(id, country_id, name) values (88, 1, 'Крымская обл.');

    эээ, ну оно, конечно, верно что Крым в составе Украины, но это не "Крымская область" ну никак.


  1. ktretyak
    06.12.2016 23:11
    -5

    О Крым, как и должно быть, в Украине, а не на Росии!


    1. scronheim
      07.12.2016 07:52

      Должно быть для кого?


  1. http2
    06.12.2016 23:29

    Из Вашей статьи узнал, что появилась страна Арулько. :)

    Ну и данная база практически не интегрируема с другими базами. :)

    П.С.
    Как планируются обновления? :)


    1. VLegostaev
      06.12.2016 23:29

      Веки живи, век учись.


  1. plushka
    06.12.2016 23:57

    Арулько? Из Jagged Alliance 2? Серьёзно? Может быть, всё таки Аруба?


    1. QDeathNick
      07.12.2016 00:23

      И уже если внесли Арулько, могли бы хоть столицу правильно указать — Медуна. :)


    1. anitspam
      07.12.2016 04:51

      справедливости ради на сайте мчс

      http://www.mchs.gov.ru/dop/mfeedback/form/?agree=1
      Арулько


  1. greabock
    07.12.2016 01:14
    -2

    Очередной хабрасуицид?


    1. VLegostaev
      07.12.2016 01:29
      +3

      Не так все грустно. Посмотрим на ситуацию с другой стороны.

      Я написал автомат, который собрал все эти данные. Судя по всему он так же нашел такие страны как Арулько. Но тем не менее, он собрал данные о большом количестве стран, областей и городов.

      Возможно в будущем появится человек, который решит уточнить этот список и как результат этого появиться более точная база данных. Лицензия MIT вполне позволяет это сделать.

      И таким образом появится бесплатный offline справочник, который будет доступен каждому разработчику.


      1. azsx
        07.12.2016 04:32

        Я написал автомат, который собрал все эти данные.

        А вот можно, пожалуйста, подробнее об автомате? Откуда собирали данные, принцип сбора? Например, почему именно такая ошибка и следовательно какие ошибки ещё ожидать?
        И таким образом появится бесплатный offline справочник, который будет доступен каждому разработчику.

        Справочник написать можно, только, что за задачи он должен выполнять? То есть вообще не понимаю, что должно быть в ТЗ данного справочника.


      1. KlimovDm
        07.12.2016 10:06

        Я написал автомат, который собрал все эти данные.
        Действительно, соглашусь с azsx, описание «автомата», который эти данные собирает, было бы гораздо более интересной и содержательной темой. А так вы вывалили сырые данные, непонятно по какому алгоритму собранные. Как следствие — доверять этим данным нельзя по определению.


      1. Ranckont
        07.12.2016 17:00

        Может дополнить справочник полями
        — альтернативное название, например Башкортостан
        — английское название
        — родное название
        И файлик распотрошить на страны?


  1. negodnik
    07.12.2016 23:54

    Как насчёт поддержки актуальности?


  1. lexore
    08.12.2016 05:57
    -1

    Ну что-ж, можно поблагодарить автора за вклад в свободные знания.
    Косяки:


    • Названия на одном языке, либо на русском, либо на английском, т.е. там нет "Лондон" и нет "Moscow".
    • База уже не актуальна, в ней есть "Камчатская обл.", но нету "Камчатский край" (изменение произошло аж 1 июля 2007). В geonames край есть
    • Обновление — да, такие вещи нечасто обновляются, но когда идет разговор о паре сотен стран, получается пара сотен источников данных. Каждый может быть на своем языке.

    Вклад получился одноразовый — запустили скрипт, получили выхлоп, отдали сообществу, нате, пользуйтесь.
    Если вы действительно хотите сделать вклад, может быть выложите на гитхаб скрипт, которым это было сделано?
    Это бы упростило задачи изменения и актуализации данных.


    1. azsx
      08.12.2016 06:01

      Да пофиг на скрипт, если он автору важен, откуда данные?


  1. markmariner
    08.12.2016 09:46

    А Крым-то наш?

    Если серьёзно, то страны и регионы признаются далеко не всеми другими странами. По какому критерию сделан выбор? Почему Южная Осетия есть, а Палестины нет?


  1. Linfuby
    09.12.2016 10:39

    Устаревшие данные
    Грозный принадлежит региону «Чечено-Ингушетия». Серьезно?

    А Крым в списке Украинских регионов (между Кировоградской обл. и Луганской обл.), у него только страна изменена на Россия. И что значит АР., Автономная республика? А почему у остальных нет такого описания? Например написано просто «Татарстан», а не «Республика Татарстан».

    Получается такая каша-малаша из данных.


  1. bluetooth
    09.12.2016 10:39

    1. Как быть со спорными территориями? Кашмир, например, своим считают аж целых 3 страны. Тайвань, Палестина, Абхазия с Южной Осетией признаются не всеми странами и т.д.;
    2. Почему только трехуровневая система административного деления (страна, регион, город)? Во многих странах деление намного сложнее. Например, в той же Германии, в отдельных регионах свое деление на меньшие единицы. Поэтому не хватает отдельной таблицы с названиями регионов и таблицы с иерархией регионов;
    3. Во многих странах есть города прямого подчинения, не входящие в какой-либо регион. Например, Москва, Санкт-Петербург, Ташкент и т.д. Ваша таблица city этого не учитывает. К тому же вы вышли из ситуации с Москвой и Питером не самым элегантным способом. Я бы города вообще не выносил в отдельную таблицу, а сделал частью таблицы region и связал с таблицей с названиями регионов;
    4. Указывать в скобках принадлежность города к какому-либо региону излишне, т.к. вы уже связываете город с регионом посредством стоблца region_id;
    5. Как уже вам указали, у вас названия вперемешку на русском и английском. Нужно продумать систему переводов на разные языки.


  1. 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 и т.д.).


  1. antirek
    09.12.2016 12:47

    А почему данные в sql?
    Можно их положить в json, csv, описав структуру. Тогда их можно удобно загружать в любое ПО для использования или «на лету», или импортируя в свою БД.


  1. garex
    10.12.2016 21:30

    1. Люди давно уже придумали просто-SQL, а не VendorSQL. Попробуйте его использовать.
    2. crt_date. Рука-лицо… Зачем это в справочниках, которые раз в век меняются? Причём такое название. Сразу вспоминается крутой нэйминг типа pIdOrName.
    3. Как уже выше сказали — формат "только SQL" в наш век JS'а как-то не комильфо.
    4. А где для стран коды по типу ISO?


    1. johnnymmc
      16.12.2016 00:24
      +1

      А где для стран коды по типу ISO?

      Рад, что хоть кто-то заметил. Тем не менее все почему-то помнят в лучшем случае о странах, при этом забывают, что для каждого штата/земли/республики/области/итп тоже есть ISO-код по стандарту ISO 3166-2. Таким образом мы фактически имеемт все страны и их териториальные подразделения перечисленными и кодифицированными в стандарте, на самодеятельность остаются только непосредственно населённые пункты (города, посёлки, деревни и т.п.).