Страница 1 из 1

qgis: артефакты при перепроецировании

Добавлено: 19 сен 2013, 07:21
bolotoved
При перепроецировании слоев глобального охвата, во многих случаях возникают артефакты (см. приложение). Кто-нибудь знает, как это можно побороть?
В приложении слой береговой линии из NaturalEarth (ГСК) перепроецирован в World_Van_der_Grinten_I (EPSG:54029)

Re: qgis: артефакты при перепроецировании

Добавлено: 19 сен 2013, 07:36
Игорь Белов
Предварительно разрежьте объекты по меридиану, на 180° отстоящему от осевого. По-хорошему, надо бы после этого куски, вылезающие за 180° от осевого меридиана, перенести на 360°.
Это решает проблему частично, поскольку один из краёв разреза будет восприниматься как чужой (скажем, точки на долготе +180° программа будет переносить на долготу -180°). Для окончательного решения придётся чуть-чуть сместить этот край внутрь.
Кроме того, полезно на края разреза добавить дополнительные точки, чтобы сохранить линию меридиана.

Re: qgis: артефакты при перепроецировании

Добавлено: 19 сен 2013, 10:10
bolotoved
А можно ли описанный процесс хоть частично автоматизировать, например, с помощью OGR? Можно ли с пом. OGR разрезать слой по заданному меридиану? Гуглом нашел, что вроде как нужно использовать функцию -wrapdateline, но с пом. нее я результата добиться не смог. Артефактные линии лишь изменяют свое положение:

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

ogr2ogr -wrapdateline -t_srs EPSG:4326 110m_coastline_wrap.shp 110m_coastline.shp

Re: qgis: артефакты при перепроецировании

Добавлено: 19 сен 2013, 10:18
bolotoved
На всякий случай приложу файл для экспериментов. Есть подозрение, что там данные выходят за диапазон -180, 180.

Re: qgis: артефакты при перепроецировании

Добавлено: 19 сен 2013, 13:58
Игорь Белов
Если резать ogr2ogr, то не так. Однако в данном случае всё уже порезано, как надо. Пришлось лишь один отрезочек подправить, чтобы не залезал за 180.
QGIS-1.8.0, проекция

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

+proj=vandg +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs
Всё отображается зер гут.
Возможны проблемы при смене датума. Тогда пересчитанные долготы могут вылезать за границу 180 градусов.

Re: qgis: артефакты при перепроецировании

Добавлено: 19 сен 2013, 14:07
bolotoved
ErnieBoyd писал(а):Пришлось лишь один отрезочек подправить, чтобы не залезал за 180.
Можно поподробнее? Как вы этот отрезок нашли и что именно с ним сделали?

Re: qgis: артефакты при перепроецировании

Добавлено: 19 сен 2013, 14:11
Александр Мурый
Подтверждаю то, что написал ErnieBoyd. Я немного подтянул на запад несколько вершин в самой восточной части (около 180 град.) — стало перепроецироваться "на лету" без артефактов.

Re: qgis: артефакты при перепроецировании

Добавлено: 19 сен 2013, 14:18
Игорь Белов
bolotoved писал(а):Можно поподробнее? Как вы этот отрезок нашли и что именно с ним сделали?
Сохранил слой как файл MapInfo с расширением ".mif". В текстовом редакторе искал строку "180", нашёл "180.00000044181", исправил на "179.99998". Были ещё долготы 180 ровно, но я их не трогал.

Re: qgis: артефакты при перепроецировании

Добавлено: 19 сен 2013, 14:22
bolotoved
Спасибо, все понял. Значит проблема была в том, что данные выходили за 180 меридиан.

Re: qgis: артефакты при перепроецировании

Добавлено: 19 сен 2013, 14:37
Игорь Белов
bolotoved писал(а):Значит проблема была в том, что данные выходили за 180 меридиан.
Это "во-вторых". Во-первых, проблема в том, что QGIS сворачивает узлы объектов, вылезающие за 180 градусов от осевого меридиана.
Странная идеология. Могли бы оставить картографу право решать, где и как резать свою карту. Заодно таких конфузов не возникало бы.

Re: qgis: артефакты при перепроецировании

Добавлено: 24 сен 2013, 16:25
Странник
Странно всё это. У меня такие же проблемы, всегда, бесят. Нет ли чего-то типа фильтра для отображения, чтобы округлять с отбрасыванием дробной части до +-180 градусов?

Re: qgis: артефакты при перепроецировании

Добавлено: 24 сен 2013, 17:37
bolotoved
Странник писал(а):Нет ли чего-то типа фильтра для отображения, чтобы округлять с отбрасыванием дробной части до +-180 градусов?
Помогает точная обрезка с пом. ogr2ogr:

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

ogr2ogr -clipsrc -180.0 -90.0 180.0 90.0 output.shp input.shp