Интерактивная карта · Oʻzbekcha (lotin) · English
Набор данных о 9 471 махаллях Узбекистана. Для каждой махалли есть оценка населения на 01.01.2026, площадь, плотность, точка-центроид и контур-полигон (EPSG:4326). Махалли привязаны к СОАТО до уровня района (7-значный код). Охват: 14 регионов, 205 районов, 38 236 700 человек. Суммы по районам равны официальным (в пределах одного человека).
Население по махаллям — оценка модели (GHS-POP и здания OSM), приведённая к официальным итогам по районам. Это не официальная статистика.
Статус: в разработке.
data/
mahallas/<регион>/<район>.csv таблица махаллей района
points/<регион>/<район>.geojson центроиды махаллей района
polygons/<регион>/<район>.geojson контуры махаллей района (MultiPolygon, по одной махалле на объект)
districts/<регион>/<район>.json метаданные района (официальное население, метод, калибровка)
regions/<регион>.json метаданные региона
regions/regions.geojson границы 14 регионов (Natural Earth)
layers/mahallas_2026_simplified.geojson готовый слой для QGIS/ArcGIS: контуры и цифры (9 471 махалля)
schema/ описание полей и JSON Schema
tools/build_map.py сборка страницы карты в docs/index.html
tools/build_web_polygons.py облегчённые контуры для карты (docs/polygons/)
tools/build_gis_layer.py сборка слоя для QGIS/ArcGIS
tools/translit.py транслитерация названий в латиницу
tools/split_polygons.py раскладка исходного GeoJSON с контурами по районам
tests/ проверки целостности данных (запускаются в CI)
Имена файлов районов — это СОАТО-код района; знак + в коде заменён на _.
| Колонка | Смысл |
|---|---|
mahalla_id |
идентификатор махалли |
name |
название |
district_soato |
СОАТО-код района (7 цифр) |
area_km2 |
площадь махалли, км² |
populated_area_km2 |
заселённая часть площади, км² |
pop_2026_est |
оценка населения на 01.01.2026, человек |
density_gross |
плотность на всю площадь, чел./км² |
density_populated |
плотность на заселённую площадь, чел./км² |
method |
на чём построена оценка: здания OSM, GHS-POP или GHS-POP (дыра в OSM) |
quality_flags |
флаги качества, через ; (см. ниже) |
Пустое значение означает «данных нет», а не ноль. Подробнее: schema/README.md.
Официальное население района на 01.01.2026 распределено по махаллям района. Распределение опирается на растр GHS-POP или на здания OpenStreetMap (колонка method). Итог каждого района приведён к официальной цифре; коэффициент хранится в district.calibration_factor. Скрипта расчёта в репозитории нет, поэтому оценку нельзя воспроизвести из этих файлов.
| Флаг | Строк | Что означает |
|---|---|---|
no_data |
188 | строка-заглушка: махалля есть в списке района, но оценки, метода и точки нет |
district_ghs_diverges_2x |
189 | в районе GHS-POP расходится с официальным итогом примерно вдвое или больше |
district_buildings_diverge_50pct |
64 | в районе здания OSM расходятся с официальным итогом на 50 % и больше |
small_polygon |
46 | очень маленький контур махалли в источнике, оценка менее надёжна |
Строки no_data нужно отфильтровывать. Без них остаётся 9 471 махаллей, и именно по ним построены точки и карта. Названия флагов даны как в данных; расчётного кода в репозитории нет.
import csv
with open("data/mahallas/1735/1735401.csv", encoding="utf-8", newline="") as f:
rows = [r for r in csv.DictReader(f) if r["quality_flags"] != "no_data"]
print(len(rows), rows[0]["name"], rows[0]["pop_2026_est"]) # 71 Өрнек МФЙ 3663.0- Контуры махаллей: 9 471 объект, по одному на каждую махаллю с оценкой. Две тестовые записи исходного файла (TEST, районы Олмазор и Яшнобод) удалены, население этих двух районов пересчитано до официальных сумм. Строка
no_dataбез контура есть только в районе Чуст тумани (1714237, махалля Янгичак). Все центроиды лежат внутри своих контуров, площади контуров совпадают сarea_km2в пределах 1 %. - Данные о населении хранятся только в CSV, в контурах их нет. Все файлы контуров занимают около 75 МБ.
- Контуры соседних махаллей местами перекрываются: у 365 махаллей (около 4 %) внутренняя точка лежит внутри контура другой махалли. Геометрия оставлена как в исходном файле.
- Границы регионов взяты из Natural Earth. Граница Тошкент шаҳри там устарела и не охватывает, например, Яшнобод, поэтому часть городских точек на карте лежит вне полигона города.
- Оценки по отдельным махаллям приблизительны. Надёжны только суммы по районам, они равны официальным.
Файл data/layers/mahallas_2026_simplified.geojson (EPSG:4326, около 29 МБ) содержит контуры махаллей и цифры в одной таблице атрибутов: идентификатор, название (кириллицей и латиницей), район, регион, площади, население, плотности, метод и флаги. Контуры упрощены с допуском 2,5 м. Записи no_data в слой не входят. Слой с полными контурами (около 80 МБ) собирается командой python3 tools/build_gis_layer.py --full OUT.geojson. Латинские названия получены автоматической транслитерацией и могут отличаться от официального написания.
Интерактивная карта: https://pdlpad.github.io/SOATO/ (границы регионов, фильтры по регионам и районам, поиск махалли, инфографика). При приближении к району или городу карта подгружает контуры махаллей и красит их по населению.
python3 tools/build_web_polygons.py # облегчённые контуры для карты: docs/polygons/
python3 tools/build_map.py # пересобрать docs/index.html
python3 -m unittest discover -s tests -v # проверки целостности данных- Данные: CC BY 4.0. Код: MIT.
- Население районов — официальная статистика. Оценка по махаллям использует здания OpenStreetMap (© OpenStreetMap contributors, ODbL) и GHS-POP (JRC, Европейская комиссия). Границы регионов — Natural Earth (public domain).
- Контуры махаллей: файл
mahallalar_2026.geojsonот владельца репозитория; владелец подтвердил право публикации и сообщил, что границы махаллей — общедоступная информация. Происхождение исходных границ в файле не указано (см. SOURCES.md). - Подробнее: SOURCES.md, DATA_LICENSE.md.
Пока нет DOI, ссылайтесь на репозиторий: https://github.com/pdlpad/SOATO
Oʻzbekistonning 9 471 ta mahallasi haqidagi maʼlumotlar toʻplami. Har bir mahalla uchun 2026-yil 1-yanvar holatiga aholi sonining bahosi, maydoni, zichligi, markaz nuqtasi (sentroid) va kontur-poligoni (EPSG:4326) berilgan. Mahallalar SOATO bilan tuman darajasigacha (7 xonali kod) bogʻlangan. Qamrov: 14 ta viloyat, 205 ta tuman, 38 236 700 kishi. Tumanlar boʻyicha yigʻindilar rasmiy raqamlarga teng (bir kishi aniqligida).
Mahallalar boʻyicha aholi soni — model bahosi (GHS-POP va OSM binolari asosida), tumanlar boʻyicha rasmiy yakunlarga moslashtirilgan. Bu rasmiy statistika emas.
Holati: ishlab chiqilmoqda.
data/
mahallas/<viloyat>/<tuman>.csv tuman mahallalari jadvali
points/<viloyat>/<tuman>.geojson tuman mahallalarining markaz nuqtalari
polygons/<viloyat>/<tuman>.geojson tuman mahallalarining konturlari (MultiPolygon, har bir mahalla alohida obyekt)
districts/<viloyat>/<tuman>.json tuman metamaʼlumotlari (rasmiy aholi, usul, kalibrlash)
regions/<viloyat>.json viloyat metamaʼlumotlari
regions/regions.geojson 14 ta viloyat chegaralari (Natural Earth)
layers/mahallas_2026_simplified.geojson QGIS/ArcGIS uchun tayyor qatlam: konturlar va raqamlar (9 471 ta mahalla)
schema/ maydonlar tavsifi va JSON Schema
tools/build_map.py xarita sahifasini yigʻish (docs/index.html)
tools/build_web_polygons.py xarita uchun yengil konturlar (docs/polygons/)
tools/build_gis_layer.py QGIS/ArcGIS uchun qatlamni yigʻish
tools/translit.py nomlarni lotin yozuviga transliteratsiya qilish
tools/split_polygons.py konturlarning manba GeoJSON faylini tumanlar boʻyicha ajratish
tests/ maʼlumotlar yaxlitligini tekshirish (CI orqali ishga tushiriladi)
Tuman fayllarining nomi — tumanning SOATO kodi; koddagi + belgisi _ bilan almashtirilgan.
| Ustun | Maʼnosi |
|---|---|
mahalla_id |
mahalla identifikatori |
name |
nomi |
district_soato |
tumanning SOATO kodi (7 raqam) |
area_km2 |
mahalla maydoni, km² |
populated_area_km2 |
aholi yashaydigan qismining maydoni, km² |
pop_2026_est |
2026-yil 1-yanvar holatiga aholi soni bahosi, kishi |
density_gross |
butun maydon boʻyicha zichlik, kishi/km² |
density_populated |
aholi yashaydigan maydon boʻyicha zichlik, kishi/km² |
method |
baho nimaga asoslangan: здания OSM, GHS-POP yoki GHS-POP (дыра в OSM) |
quality_flags |
sifat belgilari, ; bilan ajratilgan (pastga qarang) |
Boʻsh qiymat «maʼlumot yoʻq» degani, nol emas. Batafsil: schema/README.md.
Tumanning 2026-yil 1-yanvar holatidagi rasmiy aholisi tuman mahallalari oʻrtasida taqsimlangan. Taqsimot GHS-POP rastriga yoki OpenStreetMap binolariga tayanadi (method ustuni). Har bir tuman yigʻindisi rasmiy raqamga keltirilgan; koeffitsient district.calibration_factor maydonida saqlanadi. Hisoblash skripti repozitoriyda yoʻq, shuning uchun bahoni bu fayllardan qayta hisoblab boʻlmaydi.
| Belgi | Qatorlar | Maʼnosi |
|---|---|---|
no_data |
188 | oʻrin egallovchi qator: mahalla tuman roʻyxatida bor, ammo baho, usul va nuqta yoʻq |
district_ghs_diverges_2x |
189 | tumanda GHS-POP rasmiy yakundan taxminan ikki baravar yoki undan koʻp farq qiladi |
district_buildings_diverge_50pct |
64 | tumanda OSM binolari rasmiy yakundan 50 % va undan koʻp farq qiladi |
small_polygon |
46 | manbada mahalla konturi juda kichik, baho kamroq ishonchli |
no_data qatorlarini filtrlab tashlash kerak. Ularsiz 9 471 ta mahalla qoladi, nuqtalar va xarita aynan shular boʻyicha qurilgan. Belgilar nomi maʼlumotlardagidek berilgan; hisoblash kodi repozitoriyda yoʻq.
import csv
with open("data/mahallas/1735/1735401.csv", encoding="utf-8", newline="") as f:
rows = [r for r in csv.DictReader(f) if r["quality_flags"] != "no_data"]
print(len(rows), rows[0]["name"], rows[0]["pop_2026_est"]) # 71 Өрнек МФЙ 3663.0- Konturlar: 9 471 ta obyekt, bahosi bor har bir mahalla uchun bittadan. Manba faylidagi ikkita sinov yozuvi (TEST, Olmazor va Yashnobod tumanlari) oʻchirilgan, bu ikki tumanning aholisi rasmiy yigʻindilargacha qayta hisoblangan. Konturi yoʻq
no_dataqatori faqat Chust tumanida (1714237, Yangichak mahallasi) bor. Barcha sentroidlar oʻz konturi ichida yotadi, kontur maydonlariningarea_km2dan farqi 1 % dan oshmaydi. - Aholi haqidagi maʼlumotlar faqat CSV faylida saqlanadi, konturlarda yoʻq. Kontur fayllari jami taxminan 75 MB joy egallaydi.
- Qoʻshni mahallalarning konturlari baʼzi joylarda ustma-ust tushadi: 365 ta mahallaning (taxminan 4 %) ichki nuqtasi boshqa mahalla konturi ichida yotadi. Geometriya manba faylidagidek qoldirilgan.
- Viloyat chegaralari Natural Earth maʼlumotlaridan olingan. Toshkent shahri chegarasi u yerda eskirgan va, masalan, Yashnobodni qamrab olmaydi, shu sababli xaritada baʼzi shahar nuqtalari shahar poligonidan tashqarida yotadi.
- Alohida mahallalar boʻyicha baholar taxminiy. Faqat tuman yigʻindilari ishonchli, ular rasmiy raqamlarga teng.
data/layers/mahallas_2026_simplified.geojson fayli (EPSG:4326, taxminan 29 MB) mahalla konturlari va raqamlarini bitta atributlar jadvalida beradi: identifikator, nomi (kirill va lotin yozuvida), tuman, viloyat, maydonlar, aholi soni, zichliklar, usul va belgilar. Konturlar 2,5 m yoʻl qoʻyiladigan chetlanish bilan soddalashtirilgan. no_data yozuvlari qatlamga kiritilmagan. Toʻliq konturli qatlam (taxminan 80 MB) python3 tools/build_gis_layer.py --full OUT.geojson buyrugʻi bilan yigʻiladi. Lotin yozuvidagi nomlar avtomatik transliteratsiya natijasi boʻlib, rasmiy yozilishdan farq qilishi mumkin.
Interaktiv xarita: https://pdlpad.github.io/SOATO/ (viloyat chegaralari, viloyat va tumanlar boʻyicha filtrlar, mahalla qidiruvi, infografika). Tuman yoki shaharga yaqinlashtirilganda xarita mahalla konturlarini yuklaydi va ularni aholi soni boʻyicha boʻyaydi.
python3 tools/build_web_polygons.py # xarita uchun yengil konturlar: docs/polygons/
python3 tools/build_map.py # docs/index.html faylini qayta yigʻish
python3 -m unittest discover -s tests -v # maʼlumotlar yaxlitligini tekshirish- Maʼlumotlar: CC BY 4.0, kod: MIT.
- Tumanlar aholisi — rasmiy statistika. Mahallalar boʻyicha baho OpenStreetMap binolaridan (© OpenStreetMap contributors, ODbL) va GHS-POP rastridan (JRC, Yevropa komissiyasi) foydalanadi. Viloyat chegaralari — Natural Earth (public domain).
- Mahalla konturlari: repozitoriy egasi taqdim etgan
mahallalar_2026.geojsonfayli. Ega nashr etish huquqini tasdiqlagan va mahalla chegaralari ommaga ochiq maʼlumot ekanini bildirgan; fayldagi dastlabki chegaralarning kelib chiqishi koʻrsatilmagan (qarang: SOURCES.md). - Batafsil: SOURCES.md, DATA_LICENSE.md.
Hozircha DOI yoʻq, repozitoriyga havola qiling: https://github.com/pdlpad/SOATO
Reference dataset of 9,471 mahallas (neighbourhoods) of Uzbekistan, linked to SOATO district codes (7-digit, district level). For each mahalla: area, populated area, estimated population as of 01.01.2026, gross and populated density, and a centroid point (EPSG:4326). Coverage: 14 regions, 205 districts, 38,236,700 people; district sums equal the official figures (within one person).
Population by mahalla is a model estimate (GHS-POP and OSM buildings), not official statistics. Each district's total is calibrated to its official 2026 population.
data/mahallas/<region>/<district>.csv: mahalla table. Column descriptions are inschema/.data/points/<region>/<district>.geojson: centroids.data/polygons/<region>/<district>.geojson: mahalla boundary polygons (9,471 features, ~75 MB).data/districts/anddata/regions/hold metadata.- Rows with
quality_flags = no_data(188) are placeholders: no estimate, no point. Filter them out. Two test records of the source (TEST, Olmazor and Yashnobod) were removed and those two districts were recalibrated to their official totals. data/layers/mahallas_2026_simplified.geojson: ready-to-use layer for QGIS/ArcGIS (polygons plus attributes, Cyrillic and Latin names, ~29 MB). A full-detail layer:python3 tools/build_gis_layer.py --full OUT.geojson.methodisздания OSM,GHS-POPorGHS-POP (дыра в OSM). The estimation script is not in this repository.- Polygons carry only
mahalla_id,nameanddistrict_soato; population lives in the CSV. Region boundaries (Natural Earth, public domain) are indata/regions/regions.geojson; the Tashkent city boundary there is outdated. - Interactive map (region boundaries, filters by region and district, search): https://pdlpad.github.io/SOATO/. Rebuild with
python3 tools/build_map.py; run the checks withpython3 -m unittest discover -s tests -v. - Licence: data under CC BY 4.0, code under MIT. The data contains OpenStreetMap-derived values: © OpenStreetMap contributors. Sources: SOURCES.md.
A Python example (reading a district CSV and dropping no_data rows) is in the Russian section above. Until a DOI is assigned, cite the repository: https://github.com/pdlpad/SOATO