LINUX.ORG.RU

Вопрос про населенные пункты России

 , , ,


0

2

Я залил базу openstreetmap Россию, Украину, Беларусию. Украина и Беларусия имеют области и всё. В областях есть населенные пункты. Начинаю выводить области в России, у меня получается следующее

"Автономна Республіка Крим"
"Адыгея"
"Алтайский край"
"Амурская область"
"Астраханская область"
"Башкортостан"
"Белгородская область"
"Брянская область"
"Владимирская область"
"Волгоградская область"
"Воронежская область"
"Еврейская автономная область"
"Забайкальский край"
"Ивановская область"
"Ингушетия"
"Иркутская область"
"Кабардино-Балкария"
"Калининградская область"
"Калужская область"
"Камчатский край"
"Карачаево-Черкесия"
"Кемеровская область"
"Кировская область"
"Костромская область"
"Краснодарский край"
"Красноярский край"
"Курганская область"
"Курская область"
"Ленинградская область"
"Липецкая область"
"Магаданская область"
"Марий Эл"
"Мордовия"
"Москва"
"Московская область"
"Мурманская область"
"Ненецкий автономный округ"
"Нижегородская область"
"Новгородская область"
"Новосибирская область"
"Омская область"
"Оренбургская область"
"Орловская область"
"Пензенская область"
"Пермский край"
"Приморский край"
"Псковская область"
"Республика Алтай"
"Республика Бурятия"
"Республика Калмыкия"
"Республика Карелия"
"Республика Коми"
"Республика Крым"
"Республика Саха (Якутия)"
"Республика Тыва"
"Республика Хакасия"
"Ростовская область"
"Рязанская область"
"Самарская область"
"Санкт-Петербург"
"Саратовская область"
"Сахалинская область"
"Свердловская область"
"Севастополь"
"Северная Осетия — Алания"
"Смоленская область"
"Ставропольский край"
"Тамбовская область"
"Татарстан"
"Тверская область"
"Томская область"
"Тульская область"
"Тюменская область"
"Удмуртия"
"Ульяновская область"
"Хабаровский край"
"Ханты-Мансийский автономный округ — Югра"
"Челябинская область"
"Чечня"
"Чувашия"
"Ямало-Ненецкий автономный округ"
"Ярославская область"

Я так понимаю, что есть области, есть автономные округи, есть край(как например «хабаровский край», есть отдельные субъекты типа «татарстан», есть республики "республика саха(якутия). Все вышеперечисленные объекты - результат выборки admin_level=‘4’ AND boundary=‘administrative’. В украине и в беларуси такая кретериальная выборка выбирает исключительно области. Я исключил из списка (‘Москва’, ‘Севастополь’, ‘Санкт-Петербург’). Что из этого списка еще исключить(сижу вот и думаю, не входит ли какой-то автономный округ в какую-то область? Чтобы не получилось так, что у меня привязка населенных пунктов будет и к области и к какому-то автономному округу. Конечная цель - привязать населенные пункты к областям(и к субъектам, если это имеет быть)

Санкт-петебург и Ленобласть это две разных административных области, при распаде СССР их специально разделили чтобы Ленобласть не смогла иметь деньги для своего развития.

torvn77 ★★★★★ ()
Ответ на: комментарий от torvn77

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

serg002 ()
Последнее исправление: serg002 (всего исправлений: 2)
Ответ на: комментарий от serg002

что нужно исключить из этой выборки

А почему ты считаешь, что нужно убрать?

К примеру у меня прописка: Санкт-Петербург, г. Павловск, пос. Динамо, ул. Пионерская.

И этот посёлок относится к черте города.

А рядом г. Коммунар и там прописка будет: Ленинградская область, г. Коммунар, ул. Ижорская.

Т.е. Санкт-Петербург и Ленинградская область это две самостоятельные административные единицы.

И нельзя сказать, что посёлок Динамо относится к Ленинградской области.

anonymous ()
Ответ на: комментарий от serg002

Я исключил из списка (‘Москва’, ‘Севастополь’, ‘Санкт-Петербург’). Что из этого списка еще исключить(сижу вот и думаю, не входит ли какой-то автономный округ в какую-то область?

Ну и зря. Тебе предыдущий юзер сказал ничего не фильтровать, если ты ещё не понял.

цель - привязать населенные пункты к областям(и к субъектам, если это имеет быть)

Область это подвид субъекта. Твоя задача - привязать к любым субъектам, а не только к областям.

https://www.google.com/search?q=субъекты+рф

не входит ли какой-то автономный округ в какую-то область?

нет

dsxl ()
Ответ на: комментарий от anonymous

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

мос-->

Москва(московская область)
мосчто-тотам1(область)
мосчто-тотамх(оластьх)

Если в полигонах населенные пункты пересекаются, то получится

москва(москва)
москва(московская область)
москва(какой-то там субъект)

Это же не правильно. Верно?

serg002 ()

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

serg002 ()
Ответ на: комментарий от serg002

которая будет клиенту отдавать населенный пункт с областью(как вконтакте).

Ты неправ.

Ещё раз, вот пример

Санкт-Петербург, г. Павловск, пос. Динамо.

Пос. Динамо - отдельный населённый пункт, но относится к Пушкинскому району Санкт-Петербурга. Он НЕ ОТНОСИТСЯ К ЛЕНИНГРАДСКОЙ ОБЛАСТИ.

Поэтому если будут писать Динамо, ул. Пионерская, то это город Санкт-Петербург, а не Лен. область.

Тебе нужно добираться не до областей, а до дочерних контейнеров.

И в одном случае это будет город, в другом область, а в третьем край.

anonymous ()
Ответ на: комментарий от dsxl

не входит ли какой-то автономный округ в какую-то область?

нет

Округ - входит (Например, ХМАО в Тюменскую), Область (например, ЕАО) - сама является субъектом Федерации.

Shadow ★★★★★ ()
Ответ на: комментарий от serg002

В твоём вконтакте для Воронежа, например, возвращается Воронеж (Воронежская область), а для Санкт-Перербурга просто Санкт-Перербург (без области). прочитай вот этот комментарий: Вопрос про населенные пункты России (комментарий)

dsxl ()
Ответ на: комментарий от serg002

ипа полигон ленинградская область больше, чем сантк-петербург, чтобы населенные пукнкты привязать к ленинградской области и не иметь вторичной привязки части населенных пунктов к санкт-петербургу

Посмотри любуй справочник населённых пунктов, например почты России, в нём есть отдельные пункты для контейнера «Ленинградская область» и «Санкт-Петербург.»

anonymous ()
Ответ на: комментарий от anonymous

я выбираю населенные пункты по вхождению в полигон. Если полигон ленинградской области захватывает санкт-петербург, то мне запрос выдаст все населенные пункты включая населенные пункты полигона санкт-петербурга

serg002 ()

Читай https://ru.wikipedia.org/wiki/Классификатор_адресов_Российской_Федерации

Вообще, в субъекте Санкт-Петербург есть города:

Санкт-Петербург
Пушкин
Зеленогорск
и т.п.
Поэтому надо разделять Санкт-Петербург как область и Санкт-Петербург как город.

Shadow ★★★★★ ()
Ответ на: комментарий от anonymous

Да, почта будет иметь отдельные пункты, потому как юридически это разные субъекты. А мне пофигу на юридические аспекты. Мне нужно просто привязать населенные пункты к каким-то общеизвестным зонам, чтобы юзер мог проставить свой город\поселок именно в той локации, в которой живет(такая вот специфика)

serg002 ()
Последнее исправление: serg002 (всего исправлений: 1)
Ответ на: комментарий от serg002

чтобы юзер мог проставить свой город\поселок именно в той локации, в которой живет(такая вот специфика)

К примеру я свою локацию по прописке буду искать в Санкт-Петербурге, а не в Ленинградской области и юзеры тоже.

Поэтому если хочешь сделать - делай правильно.

anonymous ()
Ответ на: комментарий от serg002

Если полигон ленинградской области захватывает санкт-петербург

Он не захватыват Санкт-петрбург, чем там будет Санкт Петрбург, вымкой или отверстием в Ленинградской области вопрос второстепенный.

torvn77 ★★★★★ ()

Пытаюсь сейчас проверить. Делаю выборку -51490;«Московская область» и -102269;«Москва». Оказалось, что москва разбита на несколько полигонов.

  1. Как в ST_Contains подставить
"0103000020E61000000100000063040000AE22ED90AC7142403B408B0002DE4B40F587C157CF7142404E0757E5E7DD4B40BE29519BDD7142408E0CCDD0D3DD4B403B4D0B033B72424082397AFCDEDD4B40A3A76D686F724240470D5CD4DDDD4B40A54DD53DB2724240C50666E0DBDD4B400F69AF99D772424003EF3F8DD6DD4B..."
  1. Как в postgresql в выборке из 8 записей взять record1, record2, record3 отдельно?
serg002 ()

По-хорошему, в случае России имеет смысл смотреть не на OpenStreetMap (при всём моём уважении к труду создателей этого ресурса), а на БД ФИАС. Там иерархия проверена, и не кем-то, а ФНС России. :)

Но там чудовищных размеров XML, парсить его — строго через SAX и желательно многопоточной программой, DOM убьётся сразу. (Это, разумеется, разовая операция, после того, как ты сделаешь выборку с точностью до населённого пункта, база радикально похудеет.)

hobbit ★★★★★ ()

А зачем Москву, Санкт-Петербург и Севастополь удалять? Это такие же регионы, как и все остальные. Москва, например не входит в Московскую область, а является самостоятельным регионом. Автономные округа не входят в состав никаких областей - это тоже самостоятельные регионы. И населенный пункт будет попадать в один и только в один из субъектов РФ. Вот вам первоисточник:

Конституция РФ, статья 5, пункт 1:

Российская Федерация состоит из республик, краев, областей, городов федерального значения, автономной области, автономных округов — равноправных субъектов Российской Федерации.

Конституция РФ, статья 66, пункт 1:

В составе Российской Федерации находятся субъекты Российской Федерации:

Республика Адыгея (Адыгея), Республика Алтай, Республика Башкортостан, Республика Бурятия, Республика Дагестан, Республика Ингушетия, Кабардино-Балкарская Республика, Республика Калмыкия, Карачаево-Черкесская Республика, Республика Карелия, Республика Коми, Республика Крым, Республика Марий Эл, Республика Мордовия, Республика Саха (Якутия), Республика Северная Осетия — Алания, Республика Татарстан (Татарстан), Республика Тыва, Удмуртская Республика, Республика Хакасия, Чеченская Республика, Чувашская Республика — Чувашия;

Алтайский край, Забайкальский край, Камчатский край, Краснодарский край, Красноярский край, Пермский край, Приморский край, Ставропольский край, Хабаровский край;

Амурская область, Архангельская область, Астраханская область, Белгородская область, Брянская область, Владимирская область, Волгоградская область, Вологодская область, Воронежская область, Ивановская область, Иркутская область, Калининградская область, Калужская область, Кемеровская область — Кузбасс, Кировская область, Костромская область, Курганская область, Курская область, Ленинградская область, Липецкая область, Магаданская область, Московская область, Мурманская область, Нижегородская область, Новгородская область, Новосибирская область, Омская область, Оренбургская область, Орловская область, Пензенская область, Псковская область, Ростовская область, Рязанская область, Самарская область, Саратовская область, Сахалинская область, Свердловская область, Смоленская область, Тамбовская область, Тверская область, Томская область, Тульская область, Тюменская область, Ульяновская область, Челябинская область, Ярославская область;

Москва, Санкт-Петербург, Севастополь — города федерального значения;

Еврейская автономная область;

Ненецкий автономный округ, Ханты-Мансийский автономный округ — Югра, Чукотский автономный округ, Ямало-Ненецкий автономный округ.
zx_90 ()

Уже внутри страны есть первый уровень – Субъект РФ. У него атрибут «тип субъекта» с перечислимым типом «город федерального значения, область, республика…». Внутри Субъекта второй уровень…

Веселье будет когда столкнешься с тем, что Ленинградское шоссе в Москве проходит сквозь несколько родителей, ЦАО и САО.

level1 ()