Распарсить kml

Вопросы общего характера по ГИС и дистанционному зондированию, не связанные с конкретным ПО.
Ответить
Slinger
Гуру
Сообщения: 879
Зарегистрирован: 17 июн 2010, 23:14
Репутация: 207
Откуда: Москва

Распарсить kml

Сообщение Slinger » 23 май 2013, 21:13

Есть такая задача. Есть пример kmz, прикреплён в аттаче. Векторные объекты, а самое вкусное, то бишь семантика, лежит в тэге kml_description. Вот тут самая проблема. Задача - открыть файл таким образом в гис-системе, чтобы она считала данные из тэга description, разобрала, где наименования колонок, а где их значения и при необходимости корректно экспортировала (в шейпы, mif/mid и т.д.). Единственное, что нормально открывает kmz/kml в данном случае это Google earth. Он корректно определяет наименования полей и их значения. А вот может кто встречал, чтобы можно было распарсить kml в какой-нибудь ГИСе так же, как это делает GE.

Способ, которым я пользуюсь сейчас, это при импорте kml указать в качестве дополнительного аттрибута тэг kml_description, тогда при импорте создастся колонка, содержащая строки из тэга. Но это не вариант, так как распарсиваться оно и не должно, плюс длина строки как правило превышает допустимый лимит в 254 символа (макс. длина символьного поля) и строка отрезается.
Вложения
Гидротехн_t.kmz
(3.14 КБ) 406 скачиваний
Последний раз редактировалось Slinger 23 май 2013, 21:16, всего редактировалось 1 раз.

Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

Re: Распарсить kml

Сообщение Донецков » 23 май 2013, 21:15

Открывал в Global Mapper, сохранял в mif/mid и руками редактировал mid в текстовом редакторе... :(

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Распарсить kml

Сообщение ericsson » 23 май 2013, 22:19

У вас в элементе description - таблица в HTML, естественно. Превратить ее в набор записей fieldname=value с разделителем - элементарно скриптом или в текстовом редакторе с поддержкой регулярных выражений. А дальше вопрос, какой формат нужен вам на входе, потому что если там набор полей у всех объектов одинаковый, то это можно раскрыть дальше, а если разный - то не так-то просто без программирования.

Slinger
Гуру
Сообщения: 879
Зарегистрирован: 17 июн 2010, 23:14
Репутация: 207
Откуда: Москва

Re: Распарсить kml

Сообщение Slinger » 23 май 2013, 23:09

Поля разные. Я только пример привёл. То есть видимо всё равно придётся программить, только вот вопрос где конкретно. Перед импортом, или допустим уже после импортирования в аркгисовскую .gdb (там длина char строки 2048 символов, что впринципе полностью умещает мой дескрипшн). Можно впринципе поступать так, написав обработчик для калькулятора полей или типа того, который создаёт новые поля и помещает в них значение. Другой вопрос опять-таки "как", потому как для арки я ни разу не программил.

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Распарсить kml

Сообщение ericsson » 23 май 2013, 23:26

Для начала всегда можно сэкономить длину, если убить тэги. Маркеры секции CDATA там лишние, их можно убить. Также - элементы html, body. Заголовочную первую строку - туда же. Далее - заменить пару из закрывающего и открывающего tr на разделитель, пару закрывающего и открывающего td на "=" а одиночные td на ". Экономия уже существенная. Аналогично можно превратить эту таблицу в JSON-формат, например. Пачка регулярных выражений это сделает. При импорте нужно будет найти все значения того что до знака равенства, соорудить таблицу, а дальше заполнять ее, обходя все записи..

Slinger
Гуру
Сообщения: 879
Зарегистрирован: 17 июн 2010, 23:14
Репутация: 207
Откуда: Москва

Re: Распарсить kml

Сообщение Slinger » 23 май 2013, 23:51

Тэги убивал да, экономия разумеется есть, но опять же, если семантики я вытащил много, дескрипшн длинный и при импорте в символьную строку (254 символа) семантика режется.

А что подразумевается под импортом таблицы в JSON ? Какой таблицы ? Можно преобразовать kml в geojson или речь о другом ?

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Распарсить kml

Сообщение ericsson » 24 май 2013, 08:54

Я имел в виду то, что превратить html-таблицу в json-таблицу очень просто. А дальше, повторюсь, все зависит от возможностей того софта, в который вы это собираетесь втягивать - я их просто не знаю.

Slinger
Гуру
Сообщения: 879
Зарегистрирован: 17 июн 2010, 23:14
Репутация: 207
Откуда: Москва

Re: Распарсить kml

Сообщение Slinger » 24 май 2013, 09:33

Каким образом можно превратить html-таблицу в json ? И, скажем так, что с ней потом делать и куда её загонять

Софт любой практически (mapinfo, arcgis, GM, QGIS и прочее), я если что экспортну. В моём случае важны сами векторные данные и семантика. Стилистика не интересна.

trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Распарсить kml

Сообщение trir » 24 май 2013, 09:47

Кодить можно на чём угодно, конвертировать в gml или загружать в БД, тут даже ГИС не нужна...

Ответить

Вернуться в «Общие вопросы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей