Страница 1 из 2
Утилита конвертации GeoJSON в MET-формат (Панорама)
Добавлено: 26 мар 2015, 20:36
SergeyRyzhkov
Небольшая утилита для конвертации из файлов в формате GeoJSON в формат MET (Панорама)
Автор идеи и руководитель Александр Николаевич Фадеев
https://yadi.sk/d/mJJEpBGBfYKgw
Описывать дума нет необходимости (три кнопки)
Re: Утилита конвертации GeoJSON в MET-формат (Панорама)
Добавлено: 26 мар 2015, 20:42
Александр Мурый
А упаковка rar в zip - это намеренно? :) Кстати, утилита запускается на линуксе через <mono> (ну это так, к слову).
Re: Утилита конвертации GeoJSON в MET-формат (Панорама)
Добавлено: 26 мар 2015, 20:47
SergeyRyzhkov
Перепаковал, случайно получилось, прошу прощения.
То что на линухе - это даже лучше

Re: Утилита конвертации GeoJSON в MET-формат (Панорама)
Добавлено: 26 мар 2015, 20:57
Александр Мурый
Может быть, автор идеи и программист всё-таки смогли бы скооперироваться и написать небольшую заметку с парой скриншотов, описанием устройства и работы утилиты? Просто без этого утилита вполне может затеряться на форуме (как уже бывало и не раз).
Re: Утилита конвертации GeoJSON в MET-формат (Панорама)
Добавлено: 26 мар 2015, 21:00
Александр Фадеев
Сделаем, это я беру на себя, так как про сам формат MET нужно будет многое рассказывать. Дубль сделаю на своем ресурсе что-бы не потерялось.
Re: Утилита конвертации GeoJSON в MET-формат (Панорама)
Добавлено: 26 мар 2015, 21:03
Александр Мурый
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-файлов в папке. И последним этапом является нажатие кнопочки «Да».
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
Непосредственное нанесение объектов, описанных в текстовом файле, на карту производится с помощью режима Редактора карты Создание объекта (способ создания - По координатам из текстового файла).
Re: Утилита конвертации GeoJSON в MET-формат (Панорама)
Добавлено: 27 мар 2015, 08:59
Александр Фадеев
Как обещал сдублировал
тут, чуть подправил инструкцию. Продолжу работу по написанию статьи по особенностям создания объектов из met-файла(ов) в карте Панорамы.
Re: Утилита конвертации GeoJSON в MET-формат (Панорама)
Добавлено: 31 мар 2015, 08:55
Алекс
К автору утилиты.
Появились вопросы от пользователей Вашей утилиты.
Просьба учесть следующее.
В случае если координаты в файле в метрах - они должны соответствовать СК карты , на которую грузятся объекты.
Тег WGS84 в этом случае не имеет смысла. А вот если координаты геодезические - "по умолчанию" они воспринимаются на эллипсоиде Крассовского. Для указания на WGS84 следует вставить соответствующий тег.
Нам прислали два файла (в м и в гр.). В метровом WGS84 - есть, а в градусном - нет. Естественно, после загрузки они друг с другом "не сидят".
Кстати, раз уж Вы занялись этим благим делом, может у Вас есть какие-то пожелания по расширению спецификации MET.
Я, например, думаю добавить еще два тега: EXCODE и KEYCODE.
Сейчас подразумевается, что в файле содержится описание объектов одного типа.
Если файлы МЕТ уже используется как средства конвертирования, думаю будет правильным предоставить средства хранения объектов разного типа и изменять текущий тип при обнаружении соответствующих тегов.
Кроме того, хочу отметить важность решаемой Вами задачи и предлагаю разместить Вашу утилиту для скачивания на сайте КБ "Панорама".
Re: Утилита конвертации GeoJSON в MET-формат (Панорама)
Добавлено: 31 мар 2015, 12:29
SergeyRyzhkov
1. В утилите не анализируется СК исходных файлов. Все на откуп пользователю.
2. В решите с Александром Николаевичем как сделать, я сделаю.
3. Планов на MET нет.
Мне очень понравилась Панорама, скорее даже не то что понравилась, а интересные подходы, иные в некоторых случаях. Интерфейсные решения встречаются очень удачные, лучше, чем у прочих ГИС, с которыми работал.
Но вот насчет форматов, я не понимаю, если честно, для чего их столько городить: GeoJSON, WKT, WKB , TopoJSON и т.д., даже ESRI, как обычно, и то изобрел свой JSON для feature.
Эти форматы не люди же читают, для машины нужны. Зачем усложнять ? Может сконцентрироваться на предметно-ориентированных форматах?
Напоминает лихие 90-е, когда каждый браузер свой диалект HTML изобретал, а бедные программеры писали кучу кода чтобы было кросс-браузерно.
4. Размещайте где Вы считаете нужным, с сохранением ссылки на Александра Николаевича, меня можно, но не обязательно.
5. Любые доработки готов сделать. Делайте постановку
Re: Утилита конвертации GeoJSON в MET-формат (Панорама)
Добавлено: 31 мар 2015, 14:19
Алекс
МЕТ не задумывался изначально (да и сейчас не рассматривается) как формат обмена и хранения. Возник из необходимости загрузки различного рода уже имеющихся списков координат с неболбшими пояснениями программе: что и в каком виде там лежит.
По поводу утилиты. Если правильно понял, без .NET Framework она не работает?
Re: Утилита конвертации GeoJSON в MET-формат (Панорама)
Добавлено: 31 мар 2015, 14:32
SergeyRyzhkov
Алекс писал(а):По поводу утилиты. Если правильно понял, без .NET Framework она не работает?
Именно так.
Re: Утилита конвертации GeoJSON в MET-формат (Панорама)
Добавлено: 02 апр 2015, 09:11
Александр Фадеев
Алекс, для разрабов формата met пожелания:
1) ввести поле code - код объекта в классификаторе, как в текстовом формате, но с возможности уже учета и создания соответствующего объекта;
2) думая основная идея данного формата должна заключаться в возможности подгрузки данных в существующую карту, т.е. пересчет координат со всеми вытекающими последствиями и возможностью опознавания системы координат из met-файла.
Re: Утилита конвертации GeoJSON в MET-формат (Панорама)
Добавлено: 03 апр 2015, 11:28
Филиппов Владислав
всё отлично!
кроме дотнета
а исходники открыты?