Нормализованные данные с портала открытых данных Москвы: различия между версиями
Строка 1982: | Строка 1982: | ||
1. batch_download.py - Загружаем данные в папку data. Скрипт использует http://gis-lab.info/data/mos.ru/data/_listings/_general.csv как источник кодов для ссылок: | 1. batch_download.py - Загружаем данные в папку data. Скрипт использует http://gis-lab.info/data/mos.ru/data/_listings/_general.csv как источник кодов для ссылок: | ||
python batch_download.py | env/Scripts/python batch_download.py | ||
2. Архивируем всё для истории | 2. Архивируем всё для истории | ||
for %i in (*.csv) do C:/tools/7-Zip/7z.exe a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on %~ni.7z %i | for %i in (*.csv) do C:/tools/7-Zip/7z.exe a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on %~ni.7z %i | ||
Строка 1988: | Строка 1988: | ||
3. batch_field_sanitizer_read.py - Экстрагируем названия полей из CSV файлов | 3. batch_field_sanitizer_read.py - Экстрагируем названия полей из CSV файлов | ||
python batch_field_sanitizer_read.py data\ fields.csv yes yes | env/Scripts/python batch_field_sanitizer_read.py data\ fields.csv yes yes | ||
*fields.csv - все названия полей данных | *fields.csv - все названия полей данных | ||
*yes - обновлять существующий файл замен имен полей | *yes - обновлять существующий файл замен имен полей | ||
Строка 1994: | Строка 1994: | ||
4. Вручную редактируем файл fields.csv добавляя замены<br> | 4. Вручную редактируем файл fields.csv добавляя замены<br> | ||
5. batch_field_sanitizer_write.py - Нормализуем поля CSV файлов с данными, используя fields.csv | 5. batch_field_sanitizer_write.py - Нормализуем поля CSV файлов с данными, используя fields.csv | ||
python batch_field_sanitizer_write.py data\ data-norm fields.csv | env/Scripts/python batch_field_sanitizer_write.py data\ data-norm fields.csv | ||
6. batch_process.py - подготовщик данных, конвертация, и т.п. Использует GDAL/OGR, использует wgs84.prj. | 6. batch_process.py - подготовщик данных, конвертация, и т.п. Использует GDAL/OGR, использует wgs84.prj. | ||
python batch_process.py | env/Scripts/python batch_process.py | ||
*wgs84.prj - файл описания результирующей нормализованной системы координат | *wgs84.prj - файл описания результирующей нормализованной системы координат | ||
7. batch_table.py - Формируем таблицу в вики-формате (для этой страницы), использует http://gis-lab.info/data/mos.ru/data/_listings/_general.csv | 7. batch_table.py - Формируем таблицу в вики-формате (для этой страницы), использует http://gis-lab.info/data/mos.ru/data/_listings/_general.csv | ||
python batch_table.py > table.wiki | env/Scripts/python batch_table.py > table.wiki |
Версия от 21:25, 6 августа 2013
по адресу http://gis-lab.info/qa/data-mos.html
Описание данных и копия данных в более удобном для ГИС формате
Источник данных: Портал открытых данных г. Москва http://data.mos.ru
Об исходных данных
Системы координат данных:
- EPSG: 4326 (latlon/WGS84)
- EPSG: 3857 (Web Mercator/WGS84)
- Местная московская система координат (ПМСК 1, 2)
Формат данных: CSV
Кодировка: UTF-8
Формат хранения геометрий: WKT или пара полей с координатами.
Лицензия данных разрешает любое использование (включая коммерческое) при условии наличия ссылки на первоисточник.
Условия использования набора данных не предполагают ограничений использования набора данных в некоммерческих и коммерческих целях.
Лицензия не указывает явным образом согласие с CT OpenStreetMap.
Сомнительные места организации исходных данных
Уровень проблемности этих пунктов разный. Некоторые из них не позволят даже начать работу с данными, многие улучшили бы данные, но не помешают их использовать специалисту. Пометка "-> исправлено" означает, что данная проблема исправлена в производной версии данных представленной в этом описании ниже.
- Служебная информация в названиях полей -> исправлено
- Исходные данные в системе координат: EPSG:3857 (плохая СК для распространения векторных данных) -> исправлено
- Исходные данные в системе координат: ПМСК (местная система координат г. Москвы) (ужасная СК для распространения векторных данных) -> исправлено
- Смешивание данных в разных системах координат в одних и тех же столбцах в одном наборе данных -> исправлено
- Непоследовательное применение WKT представлений координат, то используется, то не используется.
- Названия полей на кириллице (проблемы с конвертацией в ESRI Shape) -> исправлено
- Названия полей очень длинные (проблемы с конвертацией в ESRI Shape) -> исправлено
- Названия полей содержат спецсимволы (например "№", "/", "," - проблемы с конвертацией) -> исправлено
- Одни и те же названия полей то в кавычках, то без (просто некрасиво) -> исправлено
- Одни и те же названия полей то с пробелами, то с "_" вместо пробелов (просто некрасиво) -> исправлено
- Названия полей с опечатками (например "1_Дополнителтная информация", "0_Дифицит_профицит", просто некрасиво) -> исправлено
- Варианты в названиях полей обозначающие одно и тоже (например "0_POINT_X", "0_X", просто некрасиво) -> исправлено
- Отсутствуют вспомогательные файлы описания системы координат данных -> исправлено
- Отсутствуют файлы csvt (проблемы с конвертацией с распознаванием корректного типа значений) -> исправлено
- Отсутствуют файлы vrt (проблемы с немедленной подгрузкой данных в ГИС) -> исправлено
- Многочисленные неоправданные последовательности символов "пробел" в атрибутике -> исправлено
- Пустые поля. ";" в конце заголовка и ";" в конце каждой записи (пример: 619), иногда нерегулярно встречается "; " -> исправлено
- На данный момент (20130609) многие наборы данных, ранее имевшие геопривязку, ее потеряли - используйте архивные версии.
- Неоправданные разрывы строк в записях (например: 493.csv от 20130611, форум) -> исправлено
TODO
- *.csvt файлы пока рассматривают все поля как тип String(255). Нужно пройтись по всем полям и выяснить их тип, добавив его в fields.csv
- создать *.qml
- сконвертировать все в GeoJSON
- обновлять только обновившееся, дату можно взять из метаданных, (но вдруг нас обманут? :) либо побайтово сравнивать с пред.версией CSV
Актуальность производных данных и архив
Текущая версия данных расположенная здесь: 22 мая 2013.
Чтобы посмотреть архивную версию данных, возьмите ссылку из таблице ниже и добавьте дату в формате YYYYMMDD. Например:
Актуальная версия:
http://gis-lab.info/data/mos.ru/493_shp.7z
Архивная:
http://gis-lab.info/data/mos.ru/20130213/493_shp.7z
Доступны архивы за следующие числа:
20130213,20130222,20130503,20130522,20130611,20130626
Вы можете также воспользоваться специальным сервисом, который следит за обновлениями исходных данных на data.mos.ru и архивирует все версии. Пока этот сервис не занимается нормализацией данных. Планируется объединить эти два сервиса.
Что делать если в свежей версии поломаны данные?
ДИТ периодически "ломает" выкладываемые данные (см. перечень проблем выше). Возможно данные или геоданные не поломаны в архивной версии. Соответственно, чтобы восстановить данные, нужно взять их предыдущую версию. Для этого нужно:
- Выбрать одну из архивных версий выше, например 20130222.
- Определить старый номер набора данных (да, у ДИТа нестабильные номера наборов данных), посмотрев в файл _list.csv лежащий в папке архива. Если такого файла не, то нужно посмотреть список наборов по этой ссылке.
- Определить старый номер этого набора (если он изменился) и скачать соответствующий набор из папки архива.
Нормализованные данные
О нормализованных данных
Все данные - в UTF-8, геометрии - в EPSG:4326. Дополнительно 2 поля: LAT, LON содержащие координаты исходно хранящиеся в 3 разных системах (см. выше), приведенные в эту систему координат в преобразованных данных.
В таблице в поле Источник и Данные данные для скачивания:
- csv - исходные данные 'как есть' на data.mos.ru.
- csv-norm - данные в формате CSV, с нормализованными названиями полей, *.csvt, *.prj, *.vrt файлами.
- shp - данные в формате ESRI Shape (максимальная длина строк 255 символов).
- osm - данные в формате OSM XML, без обрезки атрибутики.
Полный перечень названий полей и их замен для нормализованых данных.
Скачать данные
Поле "изменение" показывает сравнение с версией от 20130611.
Цветами показаны: увеличение или уменьшение количества объектов, новый набор (отсутствовавший 20130611)
Известные проблемы нормализации
1. Закавыченные строки с "разделителем" слепятся, например (исходник, результат 529.csv #64):
;"www.tretyakovgallery.ru;tretyakov.ru"; -> ;www.tretyakovgallery.rutretyakov.ru;
2. Пока не обрабатываются значения вида (пример 821.csv)
55.735571:37.616719,55.735571:37.61672,55.735572:37.616719
Использованные скрипты и сопутствующие файлы, процесс обновления
Язык - Python. Все скрипты можно взять на Github.
По шагам:
1. batch_download.py - Загружаем данные в папку data. Скрипт использует http://gis-lab.info/data/mos.ru/data/_listings/_general.csv как источник кодов для ссылок:
env/Scripts/python batch_download.py
2. Архивируем всё для истории
for %i in (*.csv) do C:/tools/7-Zip/7z.exe a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on %~ni.7z %i
и выгружаем на FTP в качестве исходников.
3. batch_field_sanitizer_read.py - Экстрагируем названия полей из CSV файлов
env/Scripts/python batch_field_sanitizer_read.py data\ fields.csv yes yes
- fields.csv - все названия полей данных
- yes - обновлять существующий файл замен имен полей
- yes - использовать транслит для новых полей
4. Вручную редактируем файл fields.csv добавляя замены
5. batch_field_sanitizer_write.py - Нормализуем поля CSV файлов с данными, используя fields.csv
env/Scripts/python batch_field_sanitizer_write.py data\ data-norm fields.csv
6. batch_process.py - подготовщик данных, конвертация, и т.п. Использует GDAL/OGR, использует wgs84.prj.
env/Scripts/python batch_process.py
- wgs84.prj - файл описания результирующей нормализованной системы координат
7. batch_table.py - Формируем таблицу в вики-формате (для этой страницы), использует http://gis-lab.info/data/mos.ru/data/_listings/_general.csv
env/Scripts/python batch_table.py > table.wiki