russia-cities-data 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +13 -0
- package/README.md +226 -0
- package/index.js +3 -0
- package/package.json +40 -0
- package/russia-cities.json +87496 -0
- package/russia-regions.json +3093 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Copyright (c) 2026 Timur Arbaev
|
|
2
|
+
|
|
3
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
4
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
5
|
+
copyright notice and this permission notice appear in all copies.
|
|
6
|
+
|
|
7
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
8
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
9
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
10
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
11
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
12
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
13
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# Города и регионы России со склонениями
|
|
2
|
+
|
|
3
|
+
> Russia cities and regions JSON dataset
|
|
4
|
+
|
|
5
|
+
## Описание файлов
|
|
6
|
+
|
|
7
|
+
- `russia-regions.json` - регионы Российской Федерации: **86 субъектов**
|
|
8
|
+
- `russia-cities.json` - населённые пункты со статусом города: **1205 городов**, включая регион каждого из них
|
|
9
|
+
|
|
10
|
+
В списки входят коды ФИАС, принадлежность регионам и столицам, склонения названий по падежам и много другой информации.
|
|
11
|
+
|
|
12
|
+
Названия географических объектов указаны с буквой «Ё», где это необходимо. В поле `name_alt` указано название города с заменой буквы «ё» на «е».
|
|
13
|
+
|
|
14
|
+
Москва и Санкт-Петербург являются городами федерального значения, поэтому регионом для них указаны сами города.
|
|
15
|
+
|
|
16
|
+
Города в составе городов федерального значения (Зеленоград, Троицк и т.п.) в список не входят.
|
|
17
|
+
|
|
18
|
+
## Актуальность данных
|
|
19
|
+
|
|
20
|
+
Основной список: 1102 города — данные на 2023 год. В 2023 году статус города получили населённые пункты Колтуши Ленинградской области и Ачхой-Мартан Чеченской Республики.
|
|
21
|
+
|
|
22
|
+
Дополнение: 103 города Донецкой Народной Республики, Луганской Народной Республики и Запорожской области (данные по переименованиям 2024 года).
|
|
23
|
+
|
|
24
|
+
Численность населения указана по итогам переписи населения на 1 октября 2021 года.
|
|
25
|
+
|
|
26
|
+
## Как воспроизвести или дополнить данные
|
|
27
|
+
|
|
28
|
+
Набор формируется конвейером в `scripts/` и может быть переиспользован для повторного обогащения новыми городами.
|
|
29
|
+
|
|
30
|
+
1. **Конфигурация** — `scripts/enrichment-config.json`: список регионов и городов для добавления (включая значения переименований).
|
|
31
|
+
2. **Сбор данных** (нужен API-ключ DaData в переменной окружения `DADATA_TOKEN`):
|
|
32
|
+
```bash
|
|
33
|
+
npm run enrich:fetch
|
|
34
|
+
```
|
|
35
|
+
Результат: `dadata-fetch-results.json`, `dadata-renamed-results.json`.
|
|
36
|
+
3. **Сборка** записей из конфигурации и результатов DaData:
|
|
37
|
+
```bash
|
|
38
|
+
npm run enrich:build
|
|
39
|
+
```
|
|
40
|
+
Результат: `new-cities.json`, `new-regions.json`.
|
|
41
|
+
4. **Применение** к основным спискам (идемпотентно — при повторном запуске новые записи не дублируются, а обновляются):
|
|
42
|
+
```bash
|
|
43
|
+
npm run enrich:apply
|
|
44
|
+
```
|
|
45
|
+
5. **Нормализация** признака `isDualName` (пересчёт по реальному количеству вхождений имени):
|
|
46
|
+
```bash
|
|
47
|
+
npm run dual:normalize
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Шаги 3–5 можно выполнить одной командой:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
npm run enrich
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Проверить склонения сгенерированных названий:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npm run namecase:check
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Генератор склонений вынесен в переиспользуемые модули: `scripts/lib/namecase.js` (7 падежей, сохранение «ё») и `scripts/lib/translit.js` (translit-метки).
|
|
63
|
+
|
|
64
|
+
## Описание полей
|
|
65
|
+
|
|
66
|
+
В квадратных скобках указан номер в списке источников данных
|
|
67
|
+
|
|
68
|
+
```jsonc
|
|
69
|
+
{
|
|
70
|
+
"name": "Олёкминск", // название города на русском языке [2]
|
|
71
|
+
"name_alt": "Олекминск", // название города на русском языке с заменой буквы «ё» [2]
|
|
72
|
+
"label": "olyokminsk", // уникальная метка города, дефисы и пробелы заменены на подчёркивания. Может использоваться в url, разметке рекламных кампаний и подобных задачах
|
|
73
|
+
"type": "Город", // тип объекта полностью [1]
|
|
74
|
+
"typeShort": "г", // тип объекта кратко [1]
|
|
75
|
+
"contentType": "city", // тип объекта [1]
|
|
76
|
+
"id": "1402300100000", // КЛАДР код объекта [1]
|
|
77
|
+
"okato": "98241501000", // код ОКАТО [1]
|
|
78
|
+
"oktmo": "98641101001", // код ОКТМО [1]
|
|
79
|
+
"guid": "c3aba7f3-caf7-443f-a906-8d79e6ec37f6", // ФИАС код объекта [1]
|
|
80
|
+
"isDualName": false, // признак города с неуникальным названием
|
|
81
|
+
"isCapital": false, // признак столицы региона
|
|
82
|
+
"zip": 678100, // почтовый индекс [1]
|
|
83
|
+
"population": 8398, // население [2]
|
|
84
|
+
"yearFounded": 1635, // год основания или первое упоминание (не для всех городов это цифровое значение) [2]
|
|
85
|
+
"yearCityStatus": 1783, // год присвоения статуса города. При неоднократном присвоении статуса указан год последнего присвоения [2]
|
|
86
|
+
"name_en": "Olyokminsk", // название на английском языке [5]
|
|
87
|
+
"namecase": {
|
|
88
|
+
// склонение названия по падежам [6]
|
|
89
|
+
"nominative": "Олёкминск", // именительный
|
|
90
|
+
"genitive": "Олёкминска", // родительный
|
|
91
|
+
"dative": "Олёкминску", // дательный
|
|
92
|
+
"accusative": "Олёкминск", // винительный
|
|
93
|
+
"ablative": "Олёкминском", // творительный
|
|
94
|
+
"prepositional": "Олёкминске", // предложный
|
|
95
|
+
"locative": "Олёкминске" // местный (для ответа на вопрос «где?» следует использовать его)
|
|
96
|
+
},
|
|
97
|
+
"coords": { "lat": 60.3758006, "lon": 120.4060878 }, // координаты [7]
|
|
98
|
+
"timezone": { // часовой пояс [8]
|
|
99
|
+
"tzid": "Asia/Yakutsk",
|
|
100
|
+
"abbreviation": "YAKT",
|
|
101
|
+
"utcOffset": "UTC+09:00",
|
|
102
|
+
"mskOffset": "MSK+06"
|
|
103
|
+
},
|
|
104
|
+
"region": {
|
|
105
|
+
// информация о регионе объекта, эта часть также выделена в отдельный список регионов
|
|
106
|
+
"name": "Саха /Якутия/", // название на русском языке [1]
|
|
107
|
+
"label": "yakutiya", // человекочитаемая уникальная метка
|
|
108
|
+
"type": "Республика", // тип объекта полностью [1]
|
|
109
|
+
"typeShort": "Респ", // тип объекта кратко [1]
|
|
110
|
+
"contentType": "region", // тип объекта [1]
|
|
111
|
+
"id": "1400000000000", // КЛАДР код объекта [1]
|
|
112
|
+
"okato": "98000000000", // код ОКАТО [1]
|
|
113
|
+
"oktmo": "98000000", // код ОКТМО [1]
|
|
114
|
+
"guid": "c225d3db-1db6-4063-ace0-b3fe9ea3805f", // ФИАС код объекта [1]
|
|
115
|
+
"code": "14", // порядковый код региона [3]
|
|
116
|
+
"iso_3166-2": "RU-SA", // код ISO 3166-2 [4]
|
|
117
|
+
"population": 995686, // население [3]
|
|
118
|
+
"yearFounded": 1922, // год образования [3]
|
|
119
|
+
"area": 3083523, // площадь в км² [3]
|
|
120
|
+
"fullname": "Республика Саха /Якутия/", // полное официальное наименование
|
|
121
|
+
"unofficialName": "Якутия", // неофициальное наименование (необязательное поле)
|
|
122
|
+
"name_en": "Republic of Sakha (Yakutia)", // название на английском языке [5]
|
|
123
|
+
"district": "Дальневосточный", // принадлежность к федеральному округу [2]
|
|
124
|
+
"namecase": {
|
|
125
|
+
// склонения полного наименования [6]
|
|
126
|
+
"nominative": "Республика Саха /Якутия/",
|
|
127
|
+
"genitive": "Республики Саха /Якутия/",
|
|
128
|
+
"dative": "Республике Саха /Якутия/",
|
|
129
|
+
"accusative": "Республику Саха /Якутия/",
|
|
130
|
+
"ablative": "Республикой Саха /Якутия/",
|
|
131
|
+
"prepositional": "Республике Саха /Якутия/",
|
|
132
|
+
"locative": "Республике Саха /Якутия/"
|
|
133
|
+
},
|
|
134
|
+
"capital": {
|
|
135
|
+
// столица или административный центр региона, значения полей как у города
|
|
136
|
+
"name": "Якутск",
|
|
137
|
+
"label": "yakutsk",
|
|
138
|
+
"id": "1400000100000",
|
|
139
|
+
"okato": "98401000000",
|
|
140
|
+
"oktmo": "98701000001",
|
|
141
|
+
"contentType": "city"
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Источники данных
|
|
148
|
+
|
|
149
|
+
1. [База ФИАС](https://fias.nalog.ru/) через сервис [ФИАС в облаке](https://kladr-api.ru/)
|
|
150
|
+
2. [Список городов России - Wikipedia](https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%B3%D0%BE%D1%80%D0%BE%D0%B4%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8)
|
|
151
|
+
3. [Список субъектов России - Wikipedia](https://en.wikipedia.org/wiki/Federal_subjects_of_Russia#List)
|
|
152
|
+
4. [ISO 3166-2:RU - Wikipedia](https://ru.wikipedia.org/wiki/ISO_3166-2:RU)
|
|
153
|
+
5. [List of cities and towns in Russia - Wikipedia](https://en.wikipedia.org/wiki/List_of_cities_and_towns_in_Russia)
|
|
154
|
+
6. [Morphos](https://github.com/wapmorgan/Morphos)
|
|
155
|
+
7. [ru-cities - Github](https://github.com/epogrebnyak/ru-cities)
|
|
156
|
+
8. [Time in Russia - Wikipedia](https://en.wikipedia.org/wiki/Time_in_Russia)
|
|
157
|
+
|
|
158
|
+
## Города с неуникальными названиями
|
|
159
|
+
|
|
160
|
+
Обратите внимание на города с одинаковыми названиями, поиск по первому вхождению названия сыграет злую шутку, не делайте так. Каждый город с неуникальным названием имеет признак `isDualName: true`
|
|
161
|
+
|
|
162
|
+
Список городов с повторяющимися названиями:
|
|
163
|
+
|
|
164
|
+
- Александровск - Пермский край
|
|
165
|
+
- Александровск - Луганская Народная
|
|
166
|
+
- Артёмовск - Красноярский край
|
|
167
|
+
- Артёмовск - Донецкая Народная
|
|
168
|
+
- Артёмовск - Луганская Народная
|
|
169
|
+
- Берёзовский - Кемеровская область
|
|
170
|
+
- Берёзовский - Свердловская область
|
|
171
|
+
- Благовещенск - Амурская область
|
|
172
|
+
- Благовещенск - Республика Башкортостан
|
|
173
|
+
- Горняк - Алтайский край
|
|
174
|
+
- Горняк - Донецкая Народная
|
|
175
|
+
- Гурьевск - Калининградская область
|
|
176
|
+
- Гурьевск - Кемеровская область
|
|
177
|
+
- Дзержинск - Нижегородская область
|
|
178
|
+
- Дзержинск - Донецкая Народная
|
|
179
|
+
- Донецк - Ростовская область
|
|
180
|
+
- Донецк - Донецкая Народная
|
|
181
|
+
- Железногорск - Красноярский край
|
|
182
|
+
- Железногорск - Курская область
|
|
183
|
+
- Заречный - Пензенская область
|
|
184
|
+
- Заречный - Свердловская область
|
|
185
|
+
- Киров - Калужская область
|
|
186
|
+
- Киров - Кировская область
|
|
187
|
+
- Кировск - Ленинградская область
|
|
188
|
+
- Кировск - Мурманская область
|
|
189
|
+
- Кировск - Луганская Народная
|
|
190
|
+
- Красноармейск - Московская область
|
|
191
|
+
- Красноармейск - Саратовская область
|
|
192
|
+
- Красноармейск - Донецкая Народная
|
|
193
|
+
- Краснознаменск - Калининградская область
|
|
194
|
+
- Краснознаменск - Московская область
|
|
195
|
+
- Краснослободск - Волгоградская область
|
|
196
|
+
- Краснослободск - Республика Мордовия
|
|
197
|
+
- Мирный - Архангельская область
|
|
198
|
+
- Мирный - Республика Саха (Якутия)
|
|
199
|
+
- Михайловск - Свердловская область
|
|
200
|
+
- Михайловск - Ставропольский край
|
|
201
|
+
- Никольск - Вологодская область
|
|
202
|
+
- Никольск - Пензенская область
|
|
203
|
+
- Озёрск - Калининградская область
|
|
204
|
+
- Озёрск - Челябинская область
|
|
205
|
+
- Первомайск - Нижегородская область
|
|
206
|
+
- Первомайск - Луганская Народная
|
|
207
|
+
- Приморск - Калининградская область
|
|
208
|
+
- Приморск - Ленинградская область
|
|
209
|
+
- Приморск - Запорожская
|
|
210
|
+
- Радужный - Владимирская область
|
|
211
|
+
- Радужный - Ханты-Мансийский АО
|
|
212
|
+
- Северск - Томская область
|
|
213
|
+
- Северск - Донецкая Народная
|
|
214
|
+
- Советск - Калининградская область
|
|
215
|
+
- Советск - Кировская область
|
|
216
|
+
- Советск - Тульская область
|
|
217
|
+
- Углегорск - Сахалинская область
|
|
218
|
+
- Углегорск - Донецкая Народная
|
|
219
|
+
- Фокино - Брянская область
|
|
220
|
+
- Фокино - Приморский край
|
|
221
|
+
|
|
222
|
+
## Contributions
|
|
223
|
+
|
|
224
|
+
Исправления, дополнения, идеи с благодарностью принимаю в issue или PR, пишите!
|
|
225
|
+
|
|
226
|
+
Created by Timur Arbaev https://github.com/arbaev
|
package/index.js
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "russia-cities-data",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Data of Russian cities and regions with declensions",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"enrich:fetch": "node scripts/enrich-fetch.js",
|
|
8
|
+
"enrich:build": "node scripts/enrich-build.js",
|
|
9
|
+
"enrich:apply": "node scripts/apply-patch.js",
|
|
10
|
+
"dual:normalize": "node scripts/normalize-dual-names.js",
|
|
11
|
+
"enrich": "npm run enrich:build && npm run enrich:apply && npm run dual:normalize",
|
|
12
|
+
"namecase:check": "node scripts/namecase-check.js",
|
|
13
|
+
"validate": "node scripts/validate.js",
|
|
14
|
+
"test": "npm run validate"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"russia",
|
|
18
|
+
"cities",
|
|
19
|
+
"regions",
|
|
20
|
+
"data"
|
|
21
|
+
],
|
|
22
|
+
"author": "Timur Arbaev",
|
|
23
|
+
"license": "ISC",
|
|
24
|
+
"repository": {
|
|
25
|
+
"type": "git",
|
|
26
|
+
"url": "https://github.com/arbaev/russia-cities.git"
|
|
27
|
+
},
|
|
28
|
+
"homepage": "https://github.com/arbaev/russia-cities#readme",
|
|
29
|
+
"files": [
|
|
30
|
+
"index.js",
|
|
31
|
+
"README.md",
|
|
32
|
+
"russia-cities.json",
|
|
33
|
+
"russia-regions.json"
|
|
34
|
+
],
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"lvovich": "^2.1.0",
|
|
37
|
+
"morphos": "^2.0.2",
|
|
38
|
+
"russian-nouns-js": "^2.5.0"
|
|
39
|
+
}
|
|
40
|
+
}
|