Распарсить kml
-
- Гуру
- Сообщения: 879
- Зарегистрирован: 17 июн 2010, 23:14
- Репутация: 207
- Откуда: Москва
Распарсить kml
Есть такая задача. Есть пример kmz, прикреплён в аттаче. Векторные объекты, а самое вкусное, то бишь семантика, лежит в тэге kml_description. Вот тут самая проблема. Задача - открыть файл таким образом в гис-системе, чтобы она считала данные из тэга description, разобрала, где наименования колонок, а где их значения и при необходимости корректно экспортировала (в шейпы, mif/mid и т.д.). Единственное, что нормально открывает kmz/kml в данном случае это Google earth. Он корректно определяет наименования полей и их значения. А вот может кто встречал, чтобы можно было распарсить kml в какой-нибудь ГИСе так же, как это делает GE.
Способ, которым я пользуюсь сейчас, это при импорте kml указать в качестве дополнительного аттрибута тэг kml_description, тогда при импорте создастся колонка, содержащая строки из тэга. Но это не вариант, так как распарсиваться оно и не должно, плюс длина строки как правило превышает допустимый лимит в 254 символа (макс. длина символьного поля) и строка отрезается.
Способ, которым я пользуюсь сейчас, это при импорте kml указать в качестве дополнительного аттрибута тэг kml_description, тогда при импорте создастся колонка, содержащая строки из тэга. Но это не вариант, так как распарсиваться оно и не должно, плюс длина строки как правило превышает допустимый лимит в 254 символа (макс. длина символьного поля) и строка отрезается.
- Вложения
-
- Гидротехн_t.kmz
- (3.14 КБ) 406 скачиваний
Последний раз редактировалось Slinger 23 май 2013, 21:16, всего редактировалось 1 раз.
-
- Гуру
- Сообщения: 3058
- Зарегистрирован: 19 май 2010, 19:44
- Репутация: 189
Re: Распарсить kml
Открывал в Global Mapper, сохранял в mif/mid и руками редактировал mid в текстовом редакторе... 

-
- Гуру
- Сообщения: 3321
- Зарегистрирован: 27 июл 2009, 19:26
- Репутация: 748
- Ваше звание: Вредитель полей
Re: Распарсить kml
У вас в элементе description - таблица в HTML, естественно. Превратить ее в набор записей fieldname=value с разделителем - элементарно скриптом или в текстовом редакторе с поддержкой регулярных выражений. А дальше вопрос, какой формат нужен вам на входе, потому что если там набор полей у всех объектов одинаковый, то это можно раскрыть дальше, а если разный - то не так-то просто без программирования.
-
- Гуру
- Сообщения: 879
- Зарегистрирован: 17 июн 2010, 23:14
- Репутация: 207
- Откуда: Москва
Re: Распарсить kml
Поля разные. Я только пример привёл. То есть видимо всё равно придётся программить, только вот вопрос где конкретно. Перед импортом, или допустим уже после импортирования в аркгисовскую .gdb (там длина char строки 2048 символов, что впринципе полностью умещает мой дескрипшн). Можно впринципе поступать так, написав обработчик для калькулятора полей или типа того, который создаёт новые поля и помещает в них значение. Другой вопрос опять-таки "как", потому как для арки я ни разу не программил.
-
- Гуру
- Сообщения: 3321
- Зарегистрирован: 27 июл 2009, 19:26
- Репутация: 748
- Ваше звание: Вредитель полей
Re: Распарсить kml
Для начала всегда можно сэкономить длину, если убить тэги. Маркеры секции CDATA там лишние, их можно убить. Также - элементы html, body. Заголовочную первую строку - туда же. Далее - заменить пару из закрывающего и открывающего tr на разделитель, пару закрывающего и открывающего td на "=" а одиночные td на ". Экономия уже существенная. Аналогично можно превратить эту таблицу в JSON-формат, например. Пачка регулярных выражений это сделает. При импорте нужно будет найти все значения того что до знака равенства, соорудить таблицу, а дальше заполнять ее, обходя все записи..
-
- Гуру
- Сообщения: 879
- Зарегистрирован: 17 июн 2010, 23:14
- Репутация: 207
- Откуда: Москва
Re: Распарсить kml
Тэги убивал да, экономия разумеется есть, но опять же, если семантики я вытащил много, дескрипшн длинный и при импорте в символьную строку (254 символа) семантика режется.
А что подразумевается под импортом таблицы в JSON ? Какой таблицы ? Можно преобразовать kml в geojson или речь о другом ?
А что подразумевается под импортом таблицы в JSON ? Какой таблицы ? Можно преобразовать kml в geojson или речь о другом ?
-
- Гуру
- Сообщения: 3321
- Зарегистрирован: 27 июл 2009, 19:26
- Репутация: 748
- Ваше звание: Вредитель полей
Re: Распарсить kml
Я имел в виду то, что превратить html-таблицу в json-таблицу очень просто. А дальше, повторюсь, все зависит от возможностей того софта, в который вы это собираетесь втягивать - я их просто не знаю.
-
- Гуру
- Сообщения: 879
- Зарегистрирован: 17 июн 2010, 23:14
- Репутация: 207
- Откуда: Москва
Re: Распарсить kml
Каким образом можно превратить html-таблицу в json ? И, скажем так, что с ней потом делать и куда её загонять
Софт любой практически (mapinfo, arcgis, GM, QGIS и прочее), я если что экспортну. В моём случае важны сами векторные данные и семантика. Стилистика не интересна.
Софт любой практически (mapinfo, arcgis, GM, QGIS и прочее), я если что экспортну. В моём случае важны сами векторные данные и семантика. Стилистика не интересна.
-
- Гуру
- Сообщения: 5355
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1021
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Распарсить kml
Кодить можно на чём угодно, конвертировать в gml или загружать в БД, тут даже ГИС не нужна...
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 12 гостей