Несколько выводов о SpatiaLite и SpatialWare Мапинфо и аксиома
Добавлено: 30 дек 2022, 08:06
Доброго времени суток Уважаемые!
Всех с наступающим новым годом!
В преддверии праздников, решил тут озаботиться совместным использованием удаленных данных в Мапинфо и Аксиоме в многострадальной БД SQLite (с PostGIS думаю ситуация аналогичная), т.к. Аксиома другой БД не поддерживает, а MS SQL сервера у меня нет, да и не особо-то я его жалую .
Казалось бы, что может быть проще, стандарты все известные, отрывай и радуйся жизни .
Однако все оказалось не так просто.
Берем SQLite базу со слоем графики из Аксиомы. Он у нас хранится в SpatiaLite, плюсом Аксиома добавляет файл MAPINFO_MAPCATALOG. И все казалось, отлично, и нашим и вашим, получается и QGIS мы поддерживаем, и Мапинфо. Но. Открываем такой слой в Мапинфо и что же мы видим - а полигонов то нет. Слой есть, карта есть, а полигонов нет, вместо них дуги.
Ок. Делаем обратную операцию. Мапинфо сохраняем слой, открываем в Аксиоме, опять ничего нет. Чудеса.
Оказывается ничего странного в этом нет. Просто хранение в SpatiaLite и SpatialWare разные (дампы сравнения приводить тут не буду, но могу, их есть у меня ).
Сейчас мне скажут, очевидные ты веще говоришь, стандарты то разные, и хранение разное. Только вот какая фигня получается:
Мапинфо определяет SpatiaLite или SpatialWare по наличию таблицы MAPINFO_MAPCATALOG. Если в БД ее нет, она применяет SpatiaLite для обработки объектов. И открывает их, но, т.к. каталога проекций нет, то она при каждом открытии и сохранении просит указать проекцию. И так каждый раз, согласитесь, не похоже на комфортную работу . А вот если каталог есть, то все отлично, на тебе и стили, и объекты с "блэкджеком и ш... (с)". Вот только нате вам формат SpatialWare.
Теперь Аксиома. Она использует только SpatiaLite. Есть таблица MAPINFO_MAPCATALOG - хорошо, берем сведения оттуда, нет ставим сами. Вот только формат обработки объектов не меняется, всегда SpatiaLite. Поэтому весь SpatialWare от Мапинфо идет лесом.
В остатке получаем, чтобы работать с одними и теми же данными в Мапинфо и Аксиоме таблицу MAPINFO_MAPCATALOG нужно убирать. Тогда обе ГИС открывают данные без проблем. Но, каждый раз выбираем проекцию в Мапинфо, а в Аксиоме дополнительно ее указываем, области охвата и пр. Ну и конечно же забываем про стили линий от слова "совсем" .
Что, по моему мнению тут можно сделать. Все зависит от разработчиков Асксиомы, т.к. на разработчиков Мапинфо мы повлиять не можем :
Вариант 1 (самый простой):
Хранить данные в своей таблице, например, AXIOMA_MAPCATALOG. Тогда Мапинфо не будет видеть свой каталог и будет работать с данными как SpatiaLite.
Минусы, начинается в Мапинфо геморрой с проекциями и стилями. Но, по идее стороннее ПО не должно беспокоить разработчиков Аскиомы.
Вариант 2 (посложнее):
Реализовать поддержку SpatialWare, хотя бы на уровне хранения данных (без пространственных запросов) не только в MS SQL сервере, а в зависимости от наличия таблицы MAPINFO_MAPCATALOG.
Плюсы понятны, всем счастливым обладателям Мипнфо и Аксиомы хорошо. Все счастливы .
Минусы, при таком подходе теряем совместимость с QGIS и пр., т.к. они про MAPINFO_MAPCATALOG в принципе не знают и работают с одним стандартом и также не поймут кто такой SpatialWare от Мапинфо.
Вариант 3 (вытекает из 1 и 2):
Разделить форматы. Сделать явное указание способа хранения данных, чтобы пользователь мог выбрать, в каком формате он желает хранить данные.
В целом все.
Возможно я где-то загоняюсь, или руки у меня кривые, или я что-то не знаю, что очень вероятно. Но, подружить нормально обе ГИС с одними и теми же данными у меня не получилось. А жаль.
Всех с наступающим новым годом!
В преддверии праздников, решил тут озаботиться совместным использованием удаленных данных в Мапинфо и Аксиоме в многострадальной БД SQLite (с PostGIS думаю ситуация аналогичная), т.к. Аксиома другой БД не поддерживает, а MS SQL сервера у меня нет, да и не особо-то я его жалую .
Казалось бы, что может быть проще, стандарты все известные, отрывай и радуйся жизни .
Однако все оказалось не так просто.
Берем SQLite базу со слоем графики из Аксиомы. Он у нас хранится в SpatiaLite, плюсом Аксиома добавляет файл MAPINFO_MAPCATALOG. И все казалось, отлично, и нашим и вашим, получается и QGIS мы поддерживаем, и Мапинфо. Но. Открываем такой слой в Мапинфо и что же мы видим - а полигонов то нет. Слой есть, карта есть, а полигонов нет, вместо них дуги.
Ок. Делаем обратную операцию. Мапинфо сохраняем слой, открываем в Аксиоме, опять ничего нет. Чудеса.
Оказывается ничего странного в этом нет. Просто хранение в SpatiaLite и SpatialWare разные (дампы сравнения приводить тут не буду, но могу, их есть у меня ).
Сейчас мне скажут, очевидные ты веще говоришь, стандарты то разные, и хранение разное. Только вот какая фигня получается:
Мапинфо определяет SpatiaLite или SpatialWare по наличию таблицы MAPINFO_MAPCATALOG. Если в БД ее нет, она применяет SpatiaLite для обработки объектов. И открывает их, но, т.к. каталога проекций нет, то она при каждом открытии и сохранении просит указать проекцию. И так каждый раз, согласитесь, не похоже на комфортную работу . А вот если каталог есть, то все отлично, на тебе и стили, и объекты с "блэкджеком и ш... (с)". Вот только нате вам формат SpatialWare.
Теперь Аксиома. Она использует только SpatiaLite. Есть таблица MAPINFO_MAPCATALOG - хорошо, берем сведения оттуда, нет ставим сами. Вот только формат обработки объектов не меняется, всегда SpatiaLite. Поэтому весь SpatialWare от Мапинфо идет лесом.
В остатке получаем, чтобы работать с одними и теми же данными в Мапинфо и Аксиоме таблицу MAPINFO_MAPCATALOG нужно убирать. Тогда обе ГИС открывают данные без проблем. Но, каждый раз выбираем проекцию в Мапинфо, а в Аксиоме дополнительно ее указываем, области охвата и пр. Ну и конечно же забываем про стили линий от слова "совсем" .
Что, по моему мнению тут можно сделать. Все зависит от разработчиков Асксиомы, т.к. на разработчиков Мапинфо мы повлиять не можем :
Вариант 1 (самый простой):
Хранить данные в своей таблице, например, AXIOMA_MAPCATALOG. Тогда Мапинфо не будет видеть свой каталог и будет работать с данными как SpatiaLite.
Минусы, начинается в Мапинфо геморрой с проекциями и стилями. Но, по идее стороннее ПО не должно беспокоить разработчиков Аскиомы.
Вариант 2 (посложнее):
Реализовать поддержку SpatialWare, хотя бы на уровне хранения данных (без пространственных запросов) не только в MS SQL сервере, а в зависимости от наличия таблицы MAPINFO_MAPCATALOG.
Плюсы понятны, всем счастливым обладателям Мипнфо и Аксиомы хорошо. Все счастливы .
Минусы, при таком подходе теряем совместимость с QGIS и пр., т.к. они про MAPINFO_MAPCATALOG в принципе не знают и работают с одним стандартом и также не поймут кто такой SpatialWare от Мапинфо.
Вариант 3 (вытекает из 1 и 2):
Разделить форматы. Сделать явное указание способа хранения данных, чтобы пользователь мог выбрать, в каком формате он желает хранить данные.
В целом все.
Возможно я где-то загоняюсь, или руки у меня кривые, или я что-то не знаю, что очень вероятно. Но, подружить нормально обе ГИС с одними и теми же данными у меня не получилось. А жаль.