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, 'Луганская обл.');
еще и половины областей нет:)
Ого, обычно только при маппинге перечислений видишь нуль в 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 landed and left these words here
UFO landed and left these words here
Из Вашей статьи узнал, что появилась страна Арулько. :)

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

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

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

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

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

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

Справочник написать можно, только, что за задачи он должен выполнять? То есть вообще не понимаю, что должно быть в ТЗ данного справочника.
UFO landed and left these words 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