Pull to refresh

Comments 46

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

Так чем geonames лучше? :)
Очень плохо искали!
Вот Вам пакет для РНР: 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 хуже? :)
Это мне по памяти вытягивать все города из него? :)
Нет, я привел пример города потому что Вы сказали, что их там нет.
А функционала там гораздо больше, почитайте. Ничего помнить не придется ;)
Таки, да, есть города.
Но оно все какое-то не юзер-френдли, согласитесь :)
Ну и нету регионов. :)
Я конечно не профессиональный географ, но мне кажется, что это области (регионы), поправьте, если я не прав:
http://api.geonames.org/children?geonameId=2017370&username=demo&lang=ru

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

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

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

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

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

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

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

Я полагаю, что лучше всего для этого подходит лицензия MIT.
Первое: Не надо добавлять, связку города-области потому, что они там уже есть. Почитайте мой коммент выше, там даже ссылка есть.
Второе: У них и так открытая лицензия. http://www.geonames.org/about.html
Вы наверное не поняли принцип: база бесплатная, Вы можете скачать ее всю! Логин и ограничение на вебсервис у них есть просто потому, что им нужно содержать как-то сервера и регламентировать нагрузку на них! Не нравится — скачайте локально и юзайте как хотите. Более того, там есть комьюнити, где Вы можете внести свою лепту в проект и сделать его лучше.
Странно, что Вы выдумываете нелепые надуманные оправдания своему «велосипеду», и не желаете разобраться в вопросе.
База распространяется под лицензией 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 возможно для каких-то объектов и задана связь, но к сожалению мне таких не попалось.
Вы сильно заблуждаетесь.
Наивно полагать, что Ваш статичный файлик на хабре через полгода-год будет хоть сколько-то актуальным. Думаете, его содержимое надежнее, чем сервис, который поддерживает огромное комьюнити и которое можно синхронизировать и хранить локально?
Файл находится на github. Git предоставляет достаточно широкий функционал.

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

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, 'Луганская обл.');
В Украине 26 областей? В Черногории тоже далеко не 1 община. Многовато ошибок :(
еще и половины областей нет:)
Ого, обычно только при маппинге перечислений видишь нуль в Id
insert into country(id, name) values (0, 'Россия');

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

эээ, ну оно, конечно, верно что Крым в составе Украины, но это не "Крымская область" ну никак.
UFO just landed and posted this here
Из Вашей статьи узнал, что появилась страна Арулько. :)

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

П.С.
Как планируются обновления? :)
Арулько? Из Jagged Alliance 2? Серьёзно? Может быть, всё таки Аруба?
И уже если внесли Арулько, могли бы хоть столицу правильно указать — Медуна. :)
справедливости ради на сайте мчс
http://www.mchs.gov.ru/dop/mfeedback/form/?agree=1
Арулько
Не так все грустно. Посмотрим на ситуацию с другой стороны.

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

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

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

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

Справочник написать можно, только, что за задачи он должен выполнять? То есть вообще не понимаю, что должно быть в ТЗ данного справочника.
UFO just landed and posted this here
Может дополнить справочник полями
— альтернативное название, например Башкортостан
— английское название
— родное название
И файлик распотрошить на страны?
Как насчёт поддержки актуальности?

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


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

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

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

Если серьёзно, то страны и регионы признаются далеко не всеми другими странами. По какому критерию сделан выбор? Почему Южная Осетия есть, а Палестины нет?
Устаревшие данные
Грозный принадлежит региону «Чечено-Ингушетия». Серьезно?

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

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

В Германии (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 и т.д.).
А почему данные в sql?
Можно их положить в json, csv, описав структуру. Тогда их можно удобно загружать в любое ПО для использования или «на лету», или импортируя в свою БД.
а что может быть проще импорта script.sql в абсолютно любой базе данных?
  1. Люди давно уже придумали просто-SQL, а не VendorSQL. Попробуйте его использовать.
  2. crt_date. Рука-лицо… Зачем это в справочниках, которые раз в век меняются? Причём такое название. Сразу вспоминается крутой нэйминг типа pIdOrName.
  3. Как уже выше сказали — формат "только SQL" в наш век JS'а как-то не комильфо.
  4. А где для стран коды по типу ISO?
А где для стран коды по типу ISO?

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

Articles