Нормализованные данные с портала открытых данных Москвы: различия между версиями
(→TODO) |
(→TODO) |
||
Строка 51: | Строка 51: | ||
Мы будем рады если кто-то подключится и поможет со следующими делами. | Мы будем рады если кто-то подключится и поможет со следующими делами. | ||
# *.csvt файлы пока рассматривают все поля как тип String(255). Нужно пройтись по всем полям и выяснить их тип, добавив его в fields.csv ''<- вручную'' | # *.csvt файлы пока рассматривают все поля как тип String(255). Нужно пройтись по всем полям и выяснить их тип, добавив его в fields.csv ''<- вручную'' | ||
# создать *.qml <- вручную | # создать *.qml ''<- вручную'' | ||
# сконвертировать все в GeoJSON ''<- скриптом (пока скрипта нет)'' | # сконвертировать все в GeoJSON ''<- скриптом (пока скрипта нет)'' | ||
# обновлять только обновившееся, дату можно взять из метаданных, (но вдруг нас обманут? :) либо побайтово сравнивать с пред.версией CSV ''<- плохая идея'' | # обновлять только обновившееся, дату можно взять из метаданных, (но вдруг нас обманут? :) либо побайтово сравнивать с пред.версией CSV ''<- плохая идея'' | ||
# добавить поле CODE_OLD показывающее как набор данных назывался в предыдущих версиях ''<- вручную'' | # добавить поле CODE_OLD показывающее как набор данных назывался в предыдущих версиях ''<- вручную'' | ||
# добавить отдельную таблицу удаленных (unavailable) наборов данных ''<- скриптом'' | # добавить отдельную таблицу удаленных (unavailable) наборов данных ''<- скриптом (доделать batch_table.py)'' | ||
# добавить поле "Геоданные, вообще" - показывающее есть ли геоданные в любой версии набора <- вручную | # добавить поле "Геоданные, вообще" - показывающее есть ли геоданные в любой версии набора <- вручную | ||
# переделать таблицу замен имен полей ''<- скриптом + вручную'' | |||
==Актуальность производных данных и архив== | ==Актуальность производных данных и архив== |
Версия от 15:29, 3 ноября 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) -> исправлено
- Названия полей содержат спецсимволы (например "№", "/", "," - проблемы с конвертацией) -> исправлено
- Названия полей содержат разрывы строк (например: 782.csv от 20130806) -> исправлено
- Одни и те же названия полей то в кавычках, то без (просто некрасиво) -> исправлено
- Одни и те же названия полей то с пробелами, то с "_" вместо пробелов (просто некрасиво) -> исправлено
- Названия полей с опечатками (например "1_Дополнителтная информация", "0_Дифицит_профицит", просто некрасиво) -> исправлено
- Варианты в названиях полей обозначающие одно и тоже (например "0_POINT_X", "0_X", просто некрасиво) -> исправлено
- Отсутствуют вспомогательные файлы описания системы координат данных -> исправлено
- Отсутствуют файлы csvt (проблемы с конвертацией с распознаванием корректного типа значений) -> исправлено
- Отсутствуют файлы vrt (проблемы с немедленной подгрузкой данных в ГИС) -> исправлено
- Многочисленные неоправданные последовательности символов "пробел" в атрибутике -> исправлено
- Пустые поля. ";" в конце заголовка и ";" в конце каждой записи (пример: 619), иногда нерегулярно встречается "; " -> исправлено
- На данный момент (20130609) многие наборы данных, ранее имевшие геопривязку, ее потеряли - используйте архивные версии.
- Неоправданные разрывы строк в записях (например: 493.csv от 20130806, форум) -> исправлено
- Названия полей отсутствующие в принципе (например пропавшее поле WKT 562.csv от 20130806) -> исправлено
- Различные переносы строк - Windows, UNIX (сравнить например 493.csv и 914.csv от 20130806) -> исправлено
- Поля с координатами называются так, что невозможно понять, что там координаты (например: поля X,Y 501.csv от 201309029 называются "0_Тип Выходного" и "0_Доп информация") -> исправлено
- Поля с координатами называются так, как будто они в одной СК, когда на самом деле они в другой (например: поля X,Y [589.7z 589.csv] от 2013???? называются "X_MSK77;Y_MSK77")
TODO
Мы будем рады если кто-то подключится и поможет со следующими делами.
- *.csvt файлы пока рассматривают все поля как тип String(255). Нужно пройтись по всем полям и выяснить их тип, добавив его в fields.csv <- вручную
- создать *.qml <- вручную
- сконвертировать все в GeoJSON <- скриптом (пока скрипта нет)
- обновлять только обновившееся, дату можно взять из метаданных, (но вдруг нас обманут? :) либо побайтово сравнивать с пред.версией CSV <- плохая идея
- добавить поле CODE_OLD показывающее как набор данных назывался в предыдущих версиях <- вручную
- добавить отдельную таблицу удаленных (unavailable) наборов данных <- скриптом (доделать batch_table.py)
- добавить поле "Геоданные, вообще" - показывающее есть ли геоданные в любой версии набора <- вручную
- переделать таблицу замен имен полей <- скриптом + вручную
Актуальность производных данных и архив
Текущая версия данных расположенная здесь: 6 августа 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,20130806,20130929
Вы можете также воспользоваться специальным сервисом, который следит за обновлениями исходных данных на 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, без обрезки атрибутики.
Полный перечень названий полей и их замен для нормализованых данных.
Скачать данные
Поля:
- "Изменение" - сравнение с версией от 20130806. Цветами показаны: увеличение или уменьшение количества объектов, новый набор (отсутствовавший 20130806)
- "Геоданные, официально" - значится ли, что это геоданные на официальном портале.
- "Геоданные, реально" - есть ли геоданные в последней версии данных, если нет, см. также тут.
Известные проблемы нормализации
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.
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