Утилита конвертации GeoJSON в MET-формат (Панорама)

Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
Аватара пользователя
SergeyRyzhkov
Гуру
Сообщения: 909
Зарегистрирован: 02 июл 2014, 19:13
Репутация: 203
Ваше звание: GP-экотеррористы
Откуда: Санкт-Петербург
Контактная информация:

Утилита конвертации GeoJSON в MET-формат (Панорама)

Сообщение SergeyRyzhkov » 26 мар 2015, 20:36

Небольшая утилита для конвертации из файлов в формате GeoJSON в формат MET (Панорама)

Автор идеи и руководитель Александр Николаевич Фадеев


https://yadi.sk/d/mJJEpBGBfYKgw

Описывать дума нет необходимости (три кнопки)
Вложения
meta.png
meta.png (17.31 КБ) 14199 просмотров
Последний раз редактировалось SergeyRyzhkov 26 мар 2015, 20:50, всего редактировалось 2 раза.

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: Утилита конвертации GeoJSON в MET-формат (Панорама)

Сообщение Александр Мурый » 26 мар 2015, 20:42

А упаковка rar в zip - это намеренно? :) Кстати, утилита запускается на линуксе через <mono> (ну это так, к слову).
Редактор материалов, модератор форума

Аватара пользователя
SergeyRyzhkov
Гуру
Сообщения: 909
Зарегистрирован: 02 июл 2014, 19:13
Репутация: 203
Ваше звание: GP-экотеррористы
Откуда: Санкт-Петербург
Контактная информация:

Re: Утилита конвертации GeoJSON в MET-формат (Панорама)

Сообщение SergeyRyzhkov » 26 мар 2015, 20:47

Перепаковал, случайно получилось, прошу прощения.
То что на линухе - это даже лучше :)

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: Утилита конвертации GeoJSON в MET-формат (Панорама)

Сообщение Александр Мурый » 26 мар 2015, 20:57

Может быть, автор идеи и программист всё-таки смогли бы скооперироваться и написать небольшую заметку с парой скриншотов, описанием устройства и работы утилиты? Просто без этого утилита вполне может затеряться на форуме (как уже бывало и не раз).
Редактор материалов, модератор форума

Александр Фадеев
Завсегдатай
Сообщения: 439
Зарегистрирован: 14 май 2011, 11:20
Репутация: 99
Откуда: Йошкар-Ола
Контактная информация:

Re: Утилита конвертации GeoJSON в MET-формат (Панорама)

Сообщение Александр Фадеев » 26 мар 2015, 21:00

Сделаем, это я беру на себя, так как про сам формат MET нужно будет многое рассказывать. Дубль сделаю на своем ресурсе что-бы не потерялось.
Иногда тружусь ----> http://terraingis.ru/

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: Утилита конвертации GeoJSON в MET-формат (Панорама)

Сообщение Александр Мурый » 26 мар 2015, 21:03

Залил сюда на сервер (на всякий): http://gis-lab.info/other/PanoramaMetExport.zip
Редактор материалов, модератор форума

Александр Фадеев
Завсегдатай
Сообщения: 439
Зарегистрирован: 14 май 2011, 11:20
Репутация: 99
Откуда: Йошкар-Ола
Контактная информация:

Re: Утилита конвертации GeoJSON в MET-формат (Панорама)

Сообщение Александр Фадеев » 26 мар 2015, 22:09

Утилита позволяет получать из json-файла с геометрией сведения и конвертировать их в формат текстового файла met.
Изображение
На первом этапе необходимо выбрать папку, в которой находятся файлы формата json. После выбора папки утилита получает сведения о названиях полей атрибутивных данных из всех файлов данной папки. Далее вам необходимо в таблице соответствий внести номера семантик из классификатора карты Панорамы. Снятием галочки можно не включать то или иное поле. Хотя оставление в поле значения 0, так же приведет при создании объектов через текстовый файл в ГИС Панораму к аналогичному результату. Примечательно, что одинаковые поля с именами объединяются. Если вам сложно определится с классификатором, то можно внести значения 40001, 40002, и т.д. для необходимых полей. При таком подходе объекты в любом случае будут нанесены на карту в ГИС Панорама, только семантика (атрибутивные данные) будут с названием *. Это можно затем исправить путем редактирования классификатора данной карты в ГИС Панорама. Заметим еще одну особенность если в разных json название полей разное, а информация в них одинакового характера то им можно присвоить одинаковый номер (код семантики – синим и первая строка).Изображение
Для объединения всех json в паке в один met-файл необходимо поставить галочку «Объединить все исходные поля в один файл merged.met» с соответствующим именем merged.met, если этого Вы не хотите, то галочку не ставите, тогда фалы met будут нести такие же имена, но с расширением *.met.
Далее вам необходимо установить исходную систему координат в json-файлах (должна быть одна система координат в исходных файлах) и установить целевую систему координат для met–файла(ов). Принятые системы координат:
1) SphericalMercator – EPSG3857 в метрах
2) WGS84 – в градусах.
Строго следите чтобы выбор исходной системы координат соответствовал системе координат json-файлов в папке. И последним этапом является нажатие кнопочки «Да».
Вложения
файлы.zip
2 исходных файла и 3 выходных
(3.82 КБ) 396 скачиваний
Иногда тружусь ----> http://terraingis.ru/

Александр Фадеев
Завсегдатай
Сообщения: 439
Зарегистрирован: 14 май 2011, 11:20
Репутация: 99
Откуда: Йошкар-Ола
Контактная информация:

Re: Утилита конвертации GeoJSON в MET-формат (Панорама)

Сообщение Александр Фадеев » 26 мар 2015, 22:58

Кратко о структура MET-файла.

Код: Выделить всё

Правила формирования текстового файла с координатами создаваемых объектов типа MET:
Файл типа MET должен иметь расширение .met, в первой строке файла должно присутствовать служебное поле MET.
Координаты в файле типа XYH могут быть представлены в метрах (на местности), или геодезических координатах (радианы, градусы, градусы – минуты – секунды).
Координаты (в метрах) могут быть представлены в правой (X Y) или левой (Y X) системе координат.
В файле типа MET может быть описан список координат создаваемых линейных, площадных, точечных (одна точка), векторных (две точки) объектов или объектов – подписей (две точки), а также линейных и площадных объектов – окружностей (одна точка – центр окружности, радиус задается в метрах в строке с полем #CIRCLE, напр. #CIRCLE 2500.5).
Описание создаваемых объектов должно начинаться со строки, содержащей поле BEGIN и заканчиваться строкой, содержащей поле END. Описание каждого создаваемого объекта должно начинаться со строки, содержащей символ #.
После строки, содержащей символ #, следуют непосредственно строки, содержащие описание координат точек создаваемых объектов.
После строки, содержащей символ #, может быть записано произвольное количество строк, содержащих поле SEM (семантика создаваемого объекта) и одна строка, содержащая поле TEXT (при создании объектов - подписей). 
В файле допускается наличие пустых строк и строк-комментариев, начинающихся с символа /.
При задании координат в виде чисел с целой и дробной частью допускается использование в качестве разделителя символов «.» или «,» .
В файле могут присутствовать служебные поля:
MET        метка начала файла (обязательное поле);        
BEGIN        метка начала информации (обязательное поле);        
#        метка начала нового объекта        (обязательное поле);        
$        метка начала нового подобъекта        
END        метка конца информации (обязательное поле);        
XY        Прямоугольные координаты в м. (по умолчанию);        
RAD        Радианы;        
GRAD        Градусы (доли градуса);        
GMS        градусы, минуты, секунды;        
WGS84        геодезические координаты представлены в системе WGS84        
H        Признак трехмерной метрики (после символа #, напр. #H);        
R        Признак развернутой метрики (Y,X) (после символа #, напр. #R, допускается #RH или #HR);        
CIRCLE        Создается объект – окружность (после символа #, не допускается совместно с полями H и R, формат #CIRCLE radius, где radius – радиус окружности в м.);        
ELLIPSE        Создается объект – эллипс (после символа #, не допускается совместно с полями H и R, формат #CIRCLE radius1 radius2 Angle, где radius1 – большой радиус  в м.,radius2 – малый радиус в м., Angle – дирекционный угол наклона большой полуоси эллипса в град.);        
QUADRO        Создается объект  – квадрат (после символа #, не допускается совместно с полями H и R, формат # QUADRO radius Angle, где radius – длина стороны в м., Angle – дирекционный угол наклона в град.); Angle- параметр необязательный, при отсутствии принимает значение 0.        
ARC               Создаётся объект - дуга. Формат строки в текстовом файле следующий:
       #ARC
       x1 y1   x2 y2   x3 y3 
x2 y2 - координаты центра дуги. Точки X1 Y1 и X3 Y3 задают направление построения дуги вверх по часовой стрелке. Для нанесения дуги вниз по часовой стрелке надо поменять местами точки:
       #ARC
       x3 y3   x2 y2   x1 y1
SEM        Семантика объекта        (формат SEM code value, где  code – код характеристики, value – значение характеристики);        
/        строка – комментарий;        
TEXT        Создается объект – подпись (формат TEXT value, где value – собственно текст подписи).        
Служебные поля должны начинаться с первой позиции строки. 
Метки MET, BEGIN, END являются обязательными ключевыми полями, описание объектов разделено символом #.
По умолчанию (или после появления служебного поля XY) объекты создаются в прямоугольной системе координат (после служебного поля # следуют строки, содержащие пары координат точек объекта в м.).
После появления служебного поля RAD объекты создаются в геодезической системе координат (после служебного поля # следуют строки, содержащие пары координат точек объекта (B,L) в радианах).
После появления служебного поля GRAD объекты создаются в геодезической системе координат (после служебного поля # следуют строки, содержащие пары координат точек объекта (B,L) в долях градуса), например: 
#
57.123654 345.576543
58.123654 344.576543
Широта может изменяться от 0 до 90 (северной) и от 0 до -90 (южной). Долгота может изменяться от 0 до 360 градусов (или от 0 до 180 и –180). 
После появления служебного поля GMS объекты создаются в геодезической системе координат (после служебного поля # следуют строки, содержащие пары координат точек объекта (B,L) в градусах, минутах и секундах), например: 
#
7 20 37.123 345 57 54.322
-5 20 37.123 345 57 54.322
Широта может изменяться от 0 до 90 (северной) и от 0 до -90 (южной). Долгота может изменяться от 0 до 360 градусов (или от 0 до 180 и –180).
В одном текстовом файле может содержаться информация об объектах в разных системах координат.
При создании объекта по прямоугольным координатам необходимо следить за тем, чтобы создаваемые объекты были описаны в той же системе координат (и в той же зоне для топографических карт), что и карта, на которую они наносятся. 
По геодезическим координатам можно нанести объект на карту только в том случае, если она создана в проекции, поддерживающей взаимный пересчет между геодезическими и прямоугольными координатами. Это можно проверить, если попытаться изменить текущую систему координат на геодезическую (через пункт меню Параметры). Если у Вас это получилось - смело создавайте объекты по геодезическим координатам.
По описанию в текстовом файле создаются, однотипные объекты. Если у Вас есть необходимость в нанесении на карту по координатам объектов разного типа, рекомендуется разнести их описание по разным текстовым файлам.
Наличие символов #H (вместо #) означает, что координаты объекта записаны в виде трехмерной метрики (X, Y, H).
Наличие символов #R (вместо #) означает, что координаты объекта записаны в повернутой системе координат (Y, X).
С помощью поля SEM можно задать семантику создаваемого объекта. Формат: [SEM code value], где code – код семантики, value – значение семантики. Одним полем SEM можно описать одну семантику. Для описания нескольких семантик следует для объекта указать несколько полей SEM.
 
Пример текстового файла:
MET
BEGIN
// Создаем точечные объекты в радианах
RAD
#
0.97065938   0.65882652
#
0.97058971   0.65838004
// Создаем точечный объект в градусах
GRAD
#
55.65802244 37.54409293
// Создаем точечный объект в метрах
XY
#
6171257.20   7408038.50
// Создаем точечный объект в метрах (трехмерная метрика)
#H
6171257.20   7408038.50 122.5
// Создаем точечный объект с семантикой АБСОЛЮТНАЯ ВЫСОТА 
// и собственным названием
#
SEM 4 122.5
SEM 9 г. Высокая
6171257.20   7408038.50
// Создаем точечный объект с развернутой метрикой (Y, X)
#R
7408038.50 6171257.20   
#
61677.20   7407298.50
// Создаем точечный объект (координаты в градусах, минутах и секундах)
GMS
#
55 39 28.88 37 32 38.73
#
55 39 18.96 37 32 20.51
// Создание дуг
#ARC
6199812.13 7457824.33 6199337.10 7458585.68 6200339.22 7458839.41
#ARC
6199252.51 7460759.09 6198764.47 7459789.52 6199545.34 7459919.66
END
 
Непосредственное нанесение объектов, описанных в текстовом файле, на карту производится с помощью режима Редактора карты Создание объекта (способ создания - По координатам из текстового файла).
Иногда тружусь ----> http://terraingis.ru/

Александр Фадеев
Завсегдатай
Сообщения: 439
Зарегистрирован: 14 май 2011, 11:20
Репутация: 99
Откуда: Йошкар-Ола
Контактная информация:

Re: Утилита конвертации GeoJSON в MET-формат (Панорама)

Сообщение Александр Фадеев » 27 мар 2015, 08:59

Как обещал сдублировал тут, чуть подправил инструкцию. Продолжу работу по написанию статьи по особенностям создания объектов из met-файла(ов) в карте Панорамы.
Иногда тружусь ----> http://terraingis.ru/

Алекс
Активный участник
Сообщения: 185
Зарегистрирован: 26 июл 2010, 08:54
Репутация: 30
Откуда: Ногинск

Re: Утилита конвертации GeoJSON в MET-формат (Панорама)

Сообщение Алекс » 31 мар 2015, 08:55

К автору утилиты.

Появились вопросы от пользователей Вашей утилиты.
Просьба учесть следующее.
В случае если координаты в файле в метрах - они должны соответствовать СК карты , на которую грузятся объекты.
Тег WGS84 в этом случае не имеет смысла. А вот если координаты геодезические - "по умолчанию" они воспринимаются на эллипсоиде Крассовского. Для указания на WGS84 следует вставить соответствующий тег.
Нам прислали два файла (в м и в гр.). В метровом WGS84 - есть, а в градусном - нет. Естественно, после загрузки они друг с другом "не сидят".
Кстати, раз уж Вы занялись этим благим делом, может у Вас есть какие-то пожелания по расширению спецификации MET.
Я, например, думаю добавить еще два тега: EXCODE и KEYCODE.
Сейчас подразумевается, что в файле содержится описание объектов одного типа.
Если файлы МЕТ уже используется как средства конвертирования, думаю будет правильным предоставить средства хранения объектов разного типа и изменять текущий тип при обнаружении соответствующих тегов.

Кроме того, хочу отметить важность решаемой Вами задачи и предлагаю разместить Вашу утилиту для скачивания на сайте КБ "Панорама".

Аватара пользователя
SergeyRyzhkov
Гуру
Сообщения: 909
Зарегистрирован: 02 июл 2014, 19:13
Репутация: 203
Ваше звание: GP-экотеррористы
Откуда: Санкт-Петербург
Контактная информация:

Re: Утилита конвертации GeoJSON в MET-формат (Панорама)

Сообщение SergeyRyzhkov » 31 мар 2015, 12:29

1. В утилите не анализируется СК исходных файлов. Все на откуп пользователю.
2. В решите с Александром Николаевичем как сделать, я сделаю.
3. Планов на MET нет.
Мне очень понравилась Панорама, скорее даже не то что понравилась, а интересные подходы, иные в некоторых случаях. Интерфейсные решения встречаются очень удачные, лучше, чем у прочих ГИС, с которыми работал.
Но вот насчет форматов, я не понимаю, если честно, для чего их столько городить: GeoJSON, WKT, WKB , TopoJSON и т.д., даже ESRI, как обычно, и то изобрел свой JSON для feature.
Эти форматы не люди же читают, для машины нужны. Зачем усложнять ? Может сконцентрироваться на предметно-ориентированных форматах?
Напоминает лихие 90-е, когда каждый браузер свой диалект HTML изобретал, а бедные программеры писали кучу кода чтобы было кросс-браузерно.

4. Размещайте где Вы считаете нужным, с сохранением ссылки на Александра Николаевича, меня можно, но не обязательно.

5. Любые доработки готов сделать. Делайте постановку

Алекс
Активный участник
Сообщения: 185
Зарегистрирован: 26 июл 2010, 08:54
Репутация: 30
Откуда: Ногинск

Re: Утилита конвертации GeoJSON в MET-формат (Панорама)

Сообщение Алекс » 31 мар 2015, 14:19

МЕТ не задумывался изначально (да и сейчас не рассматривается) как формат обмена и хранения. Возник из необходимости загрузки различного рода уже имеющихся списков координат с неболбшими пояснениями программе: что и в каком виде там лежит.
По поводу утилиты. Если правильно понял, без .NET Framework она не работает?

Аватара пользователя
SergeyRyzhkov
Гуру
Сообщения: 909
Зарегистрирован: 02 июл 2014, 19:13
Репутация: 203
Ваше звание: GP-экотеррористы
Откуда: Санкт-Петербург
Контактная информация:

Re: Утилита конвертации GeoJSON в MET-формат (Панорама)

Сообщение SergeyRyzhkov » 31 мар 2015, 14:32

Алекс писал(а):По поводу утилиты. Если правильно понял, без .NET Framework она не работает?
Именно так.

Александр Фадеев
Завсегдатай
Сообщения: 439
Зарегистрирован: 14 май 2011, 11:20
Репутация: 99
Откуда: Йошкар-Ола
Контактная информация:

Re: Утилита конвертации GeoJSON в MET-формат (Панорама)

Сообщение Александр Фадеев » 02 апр 2015, 09:11

Алекс, для разрабов формата met пожелания:
1) ввести поле code - код объекта в классификаторе, как в текстовом формате, но с возможности уже учета и создания соответствующего объекта;
2) думая основная идея данного формата должна заключаться в возможности подгрузки данных в существующую карту, т.е. пересчет координат со всеми вытекающими последствиями и возможностью опознавания системы координат из met-файла.
Иногда тружусь ----> http://terraingis.ru/

Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: Утилита конвертации GeoJSON в MET-формат (Панорама)

Сообщение Филиппов Владислав » 03 апр 2015, 11:28

всё отлично!
кроме дотнета :)

а исходники открыты?

Ответить

Вернуться в «Общий - ПО»

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

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