RUS  ENG 

Лев Лимин (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Програмный экспорт из файлов zpkg
 
[COLOR=#dddddd][FONT=JetBrains Mono, Consolas, Courier New, monospace][COLOR=#000000][SIZE=13px]Несколько общих вопросов[/SIZE][/COLOR][/FONT][/COLOR]

[COLOR=#dddddd][FONT=JetBrains Mono, Consolas, Courier New, monospace][SIZE=13px][COLOR=#000000]ZuluGis самой свежей версии с сайта(10.0.0.8796u.x64) от 30.01.2024[/COLOR]
[/SIZE][/FONT][/COLOR][COLOR=#dddddd][FONT=JetBrains Mono, Consolas, Courier New, monospace][SIZE=13px][COLOR=#000000]COM-объекты используются из C[/COLOR][COLOR=#000000]# (.NET7-8)[/COLOR][/SIZE][/FONT][/COLOR]

[COLOR=#dddddd][FONT=JetBrains Mono, Consolas, Courier New, monospace][SIZE=13px][COLOR=#000000]В проекте была необходимость импорта данных из zpkg-файлов в PostgreSQL, со всеми стилями, значками.[/COLOR]
[COLOR=#000000]Первый вариант работал через экспорт в MIF, с последующим чтением этого файла и заливание в pgsql.[/COLOR]
[COLOR=#000000]Но, практика показала, что подобный путь изобилует огромным количеством подводных камней.[/COLOR]
[COLOR=#000000]Чтение mif-файла шло через библиотеку GDAL, и не все стили корректно обрабатывались(это как минимум).[/COLOR]
[/SIZE][/FONT][/COLOR][COLOR=#dddddd][FONT=JetBrains Mono, Consolas, Courier New, monospace][COLOR=#000000][SIZE=13px]Конечно, все эти проблемы решили, но экспортёр оброс кучей костылей, которые сильно влияли на быстродействие(есть файл zpkg, внутри которого 2 миллиона+ контуров).[/SIZE][/COLOR][/FONT][/COLOR]

[COLOR=#dddddd][FONT=JetBrains Mono, Consolas, Courier New, monospace][SIZE=13px][COLOR=#000000]Было решено читать данные напрямую из файлов zulu. Отсюда ряд вопросов.[/COLOR]
[COLOR=#000000]1. Каким образом(и как более правильно) читать контура и соответствующие им атрибуты?[/COLOR]
[COLOR=#000000]Как я понял, со слоем может быть связано несколько таблиц. Как мне получить всю атрибутивную информацию для текущего элемента и ничего не потерять?[/COLOR]
[COLOR=#000000]2. В какой СК лежат контура?[/COLOR]
[COLOR=#000000]3. Что означает функция layer.GetWkt(crs)? Происходит пересчёт из СК, в которой лежат координаты в указанную crs?[/COLOR]
[COLOR=#000000]4. Как получить координаты или запись WKT в СК слоя, Без пересчёта.[/COLOR]
[COLOR=#000000]5. Как пересчитать геометрию элемента и получить его запись WKT? Я вижу только функции (пример)crs.ConvertPolyline(layer.Polyline).[/COLOR]
[COLOR=#000000]В результате получаю объект Polyline у которого нет GetWkt()[/COLOR]
[COLOR=#000000]Я решил эти вопросы таким образом: Проверяю графический тип объекта и по точкам пересчитываю контур и формирую из него геометрию через библиотеку NetTopologySuite.[/COLOR]
[COLOR=#000000]Но может есть нормальный способ через объекты и методы ZuluXTools?[/COLOR]
[COLOR=#000000]6. Если я копирую слой с пересчётом СК, то полученная геометрия экспортируемая в mif ложится на местность так же как в zulugis.[/COLOR][COLOR=#000000] [/COLOR][/SIZE][/FONT][/COLOR][COLOR=#dddddd][FONT=JetBrains Mono, Consolas, Courier New, monospace][SIZE=13px][COLOR=#000000]Если же я этого не делаю и сам пересчитываю координаты из CRS полученной функцией layer.GetCrs() в ту, которая мне нужна(МСК, 3857), то [/COLOR][COLOR=#000000]получаем небольшой сдвиг. Возможно это вопрос не к вам и я просто не до конца понимаю логику работы с СК в ZuluGis.[/COLOR][/SIZE][/FONT][/COLOR]

[COLOR=#dddddd][FONT=JetBrains Mono, Consolas, Courier New, monospace][COLOR=#000000][SIZE=13px]Спасибо![/SIZE][/COLOR][/FONT][/COLOR]
Страницы: 1