Проблемы с геометрией после конвертации mapinfo в postgis
-
- Интересующийся
- Сообщения: 20
- Зарегистрирован: 26 авг 2011, 16:51
- Репутация: 0
Проблемы с геометрией после конвертации mapinfo в postgis
Столкнулся с неприятностью. Была карта в формате Mapinfo, СК Пулково 42.
Для отображения карты с помощью Mapserver+OL она была переведена сначала в EPSG:3857.
В попытках оптимизировать по скорости и удобству фильтрации по аттрибутам, перевел карту в PostGIS.
Т.е. в итоге, цепочка преобразований выглядит так (с помощью ogr2ogr из MS4W):
Mapinfo СК42 => Shape EPSG:3857 => PostGIS
Когда счастье казалось уже близко, выяснилось, что в PostGIS-варианте Mapserver имеет проблемы с отрисовыванием слоев. Самый вопиющий пример касается слоя с водными объектами.
Проблема, что в водном слое под заливку водой попали острова и ряд прибрежных территорий.
Логично предположить, что пострадала геометрия, неразрывность полигонов.
Теперь собственно вопрос, как при таких цепочках преобразований избежать нарушения геометрии, есть ли выход из ситуации. Куда можно копать?
Не хотелось бы возвращаться к Mapinfo, это потеря производительности, да и просто обидно за потраченные усилия.
P.S. ogrinfo не смог определить геометрию файла Mapinfo с водным слоем. Но при конвертации ogr2ogr не ругался на то, что в файле присутствует несколько разных геометрий (с другим слоем такое было).
Для отображения карты с помощью Mapserver+OL она была переведена сначала в EPSG:3857.
В попытках оптимизировать по скорости и удобству фильтрации по аттрибутам, перевел карту в PostGIS.
Т.е. в итоге, цепочка преобразований выглядит так (с помощью ogr2ogr из MS4W):
Mapinfo СК42 => Shape EPSG:3857 => PostGIS
Когда счастье казалось уже близко, выяснилось, что в PostGIS-варианте Mapserver имеет проблемы с отрисовыванием слоев. Самый вопиющий пример касается слоя с водными объектами.
Проблема, что в водном слое под заливку водой попали острова и ряд прибрежных территорий.
Логично предположить, что пострадала геометрия, неразрывность полигонов.
Теперь собственно вопрос, как при таких цепочках преобразований избежать нарушения геометрии, есть ли выход из ситуации. Куда можно копать?
Не хотелось бы возвращаться к Mapinfo, это потеря производительности, да и просто обидно за потраченные усилия.
P.S. ogrinfo не смог определить геометрию файла Mapinfo с водным слоем. Но при конвертации ogr2ogr не ругался на то, что в файле присутствует несколько разных геометрий (с другим слоем такое было).
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9129
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 748
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Проблемы с геометрией после конвертации mapinfo в postgi
Это странно, вряд ли перепроецирование и конвертация могла к этому привести. Дайте каких-нибудь примеров или деталей, пока не очень понятно в чем же именно проблема. Может в том что вы сделали неправильный порядок слоев? Или у вас исходно данные "битые"?rim писал(а):Проблема, что в водном слое под заливку водой попали острова и ряд прибрежных территорий.
Логично предположить, что пострадала геометрия, неразрывность полигонов.
пристегивайтесь, турбулентность прямо по курсу
-
- Интересующийся
- Сообщения: 20
- Зарегистрирован: 26 авг 2011, 16:51
- Репутация: 0
Re: Проблемы с геометрией после конвертации mapinfo в postgi
Вот два скрина. Проблемные области, которые сразу бросаются в глаза обвел красным.
Включено отображение только водного слоя.
Карта загнана в PostGIS, часть суши закрашена водой: Карта в формате Mapinfo, с ней отображается нормально (на всякий случай проверил слой в самом Mapinfo): Еще добавлю, что в Mapinfo стили уже зашиты (STYLEITEM "AUTO"), а для PostGIS сделано такое описание слоя
В принципе, могу скинуть водный слой, но только на email.
P.S. Только сейчас заметил, что в Mapinfo варианте границы проблемных участков обведены не синим, а каким-то светло-серым пунктиром. Но это не добавило мне ясности.
P.P.S. На всякий случай скажу, что ogr2ogr при конвертации в Shape определил геометрию как MULTIPOLYGON
Включено отображение только водного слоя.
Карта загнана в PostGIS, часть суши закрашена водой: Карта в формате Mapinfo, с ней отображается нормально (на всякий случай проверил слой в самом Mapinfo): Еще добавлю, что в Mapinfo стили уже зашиты (STYLEITEM "AUTO"), а для PostGIS сделано такое описание слоя
Код: Выделить всё
LAYER
NAME "hydrography_a"
TYPE POLYGON
STATUS ON
CONNECTIONTYPE postgis
CONNECTION "user=postgres password=123 dbname=postgis host=localhost"
DATA "geom from hydrography_a using unique gid using srid=3857"
CLASS
OUTLINECOLOR 10 80 161
COLOR 204 236 244
END
END
P.S. Только сейчас заметил, что в Mapinfo варианте границы проблемных участков обведены не синим, а каким-то светло-серым пунктиром. Но это не добавило мне ясности.
P.P.S. На всякий случай скажу, что ogr2ogr при конвертации в Shape определил геометрию как MULTIPOLYGON
-
- Интересующийся
- Сообщения: 20
- Зарегистрирован: 26 авг 2011, 16:51
- Репутация: 0
Re: Проблемы с геометрией после конвертации mapinfo в postgi
Сейчас открыл в Mapinfo оригинальный слой в СК42 и сконвертированный в EPSG:3857 (оба в формате Mapinfo).
На скринах видно, что после конвертации контуры тех же областей отличаются друг от друга. В оригинальном он есть, в производном отсуствует.
На скринах видно, что после конвертации контуры тех же областей отличаются друг от друга. В оригинальном он есть, в производном отсуствует.
- Вложения
-
- Прозводный, EPSG:3857
- mapinfo_3857.png (57.58 КБ) 7527 просмотров
-
- Оригинал, СК42
- mapinfo_orig.png (60.75 КБ) 7527 просмотров
-
- Интересующийся
- Сообщения: 20
- Зарегистрирован: 26 авг 2011, 16:51
- Репутация: 0
Re: Проблемы с геометрией после конвертации mapinfo в postgi
Кажется я понял в чем проблема. У полигонов островов не задан фон в Mapinfo. И когда Mapserver отображает слой в MI-формате, с использованием встроенных стилей, он знает, что данные полигоны не надо ничем заливать. В Shape формате же один стиль применяется ко всем полигонам.
Можно как-то селективно конвертировать TAB в Shape по стилям?
Можно как-то селективно конвертировать TAB в Shape по стилям?
- Игорь Белов
- Гуру
- Сообщения: 2241
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1514
- Откуда: Казань
Re: Проблемы с геометрией после конвертации mapinfo в postgi
ObjectInfo(obj, 2) для линейных и площадных объектов возвращает строку вида "Pen (толщина, тип_линии, цвет)".
ObjectInfo(obj, 3) для площадных объектов возвращает строку вида "Brush (тип_заливки, цвет_заливки, цвет_фона)".
Сами строки или целочисленные величины, что в скобках, можно прописать в колонки атрибутов и использовать при отображении шейпов.
P. S. Для площадных объектов Pen() относится к бордюру.
тип_линии == 1 — невидимая линия
тип_линии == 2 — простая линия
…
тип_заливки == 1 — нет заливки, объект прозрачный
тип_заливки == 2 — сплошная заливка
…
P. P. S. Сам наступал на грабли с этими островами на воде. Пришёл к тому, что при создании карт полезно использовать классификатор. В простейшем варианте в специальном поле пишем тип "Ручьи", "Острова" или "Водоёмы пересыхающие". Тогда картинка становится картой, и при каждой смене дизайна можно перерисовывать все однотипные объекты разом. Заодно и задача переноса графики в другой софт упрощается: важно не как выглядело в MapInfo, а что нужно отобразить.
На GIS-Lab есть славный пример реализации классификатора: Библиотека условных обозначений для QGIS.
ObjectInfo(obj, 3) для площадных объектов возвращает строку вида "Brush (тип_заливки, цвет_заливки, цвет_фона)".
Сами строки или целочисленные величины, что в скобках, можно прописать в колонки атрибутов и использовать при отображении шейпов.
P. S. Для площадных объектов Pen() относится к бордюру.
тип_линии == 1 — невидимая линия
тип_линии == 2 — простая линия
…
тип_заливки == 1 — нет заливки, объект прозрачный
тип_заливки == 2 — сплошная заливка
…
P. P. S. Сам наступал на грабли с этими островами на воде. Пришёл к тому, что при создании карт полезно использовать классификатор. В простейшем варианте в специальном поле пишем тип "Ручьи", "Острова" или "Водоёмы пересыхающие". Тогда картинка становится картой, и при каждой смене дизайна можно перерисовывать все однотипные объекты разом. Заодно и задача переноса графики в другой софт упрощается: важно не как выглядело в MapInfo, а что нужно отобразить.
На GIS-Lab есть славный пример реализации классификатора: Библиотека условных обозначений для QGIS.
The purpose of computing is insight, not numbers
-
- Интересующийся
- Сообщения: 20
- Зарегистрирован: 26 авг 2011, 16:51
- Репутация: 0
Re: Проблемы с геометрией после конвертации mapinfo в postgi
Спасибо большое за ответ.
Честно говоря, углубляться еще больше в дебри картостроительства нет резона. Лично для меня тут довольно большой контекст, который надо поднять, чтобы понять и применить написанное вами. Проект является узкоспециализированной мулькой к другому, для внутреннего пользования.
Был найден компромиссный вариант, просто удалил ручками в редакторе Mapinfo все полигоны островов из слоя =)). Единственное серьезная потеря от этого. не вывести название островов, что не столь страшно в моем случае. Если клиент вдруг (что вряд ли) упрется в это, у них целая картографическая служба, пусть присылают данные в нужном виде сами.
P.S. Надеюсь, кому-то еще пригодится ваш ответ.
Честно говоря, углубляться еще больше в дебри картостроительства нет резона. Лично для меня тут довольно большой контекст, который надо поднять, чтобы понять и применить написанное вами. Проект является узкоспециализированной мулькой к другому, для внутреннего пользования.
Был найден компромиссный вариант, просто удалил ручками в редакторе Mapinfo все полигоны островов из слоя =)). Единственное серьезная потеря от этого. не вывести название островов, что не столь страшно в моем случае. Если клиент вдруг (что вряд ли) упрется в это, у них целая картографическая служба, пусть присылают данные в нужном виде сами.
P.S. Надеюсь, кому-то еще пригодится ваш ответ.
-
- Интересующийся
- Сообщения: 20
- Зарегистрирован: 26 авг 2011, 16:51
- Репутация: 0
Re: Проблемы с геометрией после конвертации mapinfo в postgi
Блин, туплю по-страшному!!!!! Видать, пора в отпуск. В исходных данных уже есть классификация по типу объекта и надо всего лишь немного дописать стили с фильтром по классификатору. Зря только бучу поднял, простите (((
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость