Парсинг КЛАДР
Работа с файлами базы данных КЛАДР состоит из двух этапов.
1. Получение данных из файлов dbf
2. Обработка полученных данных
1. Получение данных из файлов dbf
Скрипт kladrexporter.php (php с поддержкой dbase)
Скрипт ожидает, что рядом с ним в папку BASE находится файл KLADR.dbf. Скрипт построчно извлекает записи и из них формирует файл KLADR_export.txt в формате csv файла, где каждая строка представлена в виде
название_территориальной единицы;сокращение_типа_единицы;код_единицы
например
Адыгея;Респ;01000000000
Скрипт streetexporter.php (php с поддержкой dbase)
Скрипт ожидает, что рядом с ним в папку BASE находится файл STREET.dbf. Скрипт построчно извлекает записи и из них формирует файл STREET_export.txt в формате csv файла, где каждая строка представлена в виде
название_объекта_географии;сокращение_типа_объекта_географии;код_административной_единицы_содержащей_объект;код_объекта
например
Абадзехская;ул;01000001000;0001
код_административной_единицы_содержащей_объект из файла STREET_export.txt соответствует код_единицы из KLADR_export.txt
Соответственно, зная код КЛАДР для административной единицы, мы можем получить список улиц для него. Данный поиск имеет смысля для городов. Если требуется получить список улиц например республики Адыгея, необходимо собрать списки улиц всех входящих объекто, которые ими располагают.
Результирующие csv файлы весьма громоздки.
2. Обработка полученных данных
Для излечения списка улиц для конкретного города используется файл streetextractor.php (php 5.3 точно, на меньших версиях не проверялось. Поддержка dbase не требуется).
Скрипт ожидает на входе переменную k со значение кода КЛАДР города, по которому отбирает и формирует список улиц.
Например, запросив streetextractor.php?k=24000001000 (улицы Красноярска), мы получим в ответ массив
Array
- (
- [24000001000] => Array
- (
- [0001] => Array
- (
- [name] => 1905 года
- [socr] => ул
- )
- [0002] => Array
- (
- [name] => Днепропетровская 2-я
- [socr] => ул
- )
.....
Файл streetextractor.php ожидает, что файл STREET_export.txt находится рядом с ним.