Куда делись полигоны после проецирования карты в QGIS?


12

Я довольно новичок в ноу-хау ГИС, но у меня возникла проблема с проекцией карты мира. У меня есть шейп-файл всех стран, которые я скачал с Natural Earth. Проецировав его в орфографию, как это было предложено в этом другом вопросе , я изменил широту / долготу, чтобы Атлантика оказалась в центре.

Однако после его изменения Соединенные Штаты, Мексика и Канада исчезают с карты, как вы можете видеть здесь: введите описание изображения здесь

Когда я перепроектирую карту над США, полигоны появляются снова. Какие-либо предложения?


2
Обратите внимание, что Россия, Казахстан, Иран и несколько небольших ближневосточных стран также не появляются, как и любая часть Антарктиды. Очевидно, что программное обеспечение неправильно обрезает полигоны, которые скрыты только частично.
whuber

Какая версия Qgis? Можете ли вы также предоставить прямую ссылку на слой, который вы скачали с Natural Earth? Тогда мы можем попытаться воспроизвести вашу проблему. Благодарность!
Стефан Генриод

Это очень странная репроекция. Предоставьте ссылку, чтобы мы могли ее скачать и проверить.
Ger

Хорошо, я посмотрел на это и удалил свой предыдущий комментарий, так как они явно там. Похоже, что в CRS WGS 84 он проецируется как глобус, следовательно, половина мира не видна, в CRS WGS84 Pseudo Mercator он отображается правильно. как с любой другой CRS, показывая все массивы.
Ger

Ответы:


12

Простая причина, почему QGIS не может нарисовать эти многоугольники, заключается в том, что некоторые вершины находятся на обратной стороне земного шара, а QGIS не может нарисовать замкнутый многоугольник с остальными. Функция GDAL ogr2ogr в фоновом режиме запрограммирована на запуск всей функции при возникновении такой ошибки.

Итак, у вас есть два решения:


Решение 1: Прикрепите ваши полигоны к полушарию

Вам нужен Numerical Digitizeи CAD Toolsплагин для этого.

  • Установите проект CRS в ортопроекцию
  • создать новый точечный слой в той же проекции
  • с помощью плагина числовой оцифровки создайте следующие точки:
x y
6370000 0
0 6370000
-6370000 0
0 -6370000

(также должен работать с Add delimited text layer)

  • включить привязку к точечному слою
  • с помощью CAD Tools выберите первые три точки и создайте из них дугу
  • сделать то же самое для пунктов 3 - 4 - 1 для южного полушария
  • изменить проект CRS на WGS84
  • Сохраните слой САПР как WGS84 и добавьте его на холст
  • Сохраните свой пограничный слой также как WGS84 и добавьте его на холст
  • преобразовать линии САПР в новый слой многоугольника
  • удалить все, кроме слоев многоугольника
  • закрепить границы мира на слое полигона CAD
  • вернуть проект CRS обратно в орто

Вы должны получить эту картину: мировой вектор в орто-проекции


Решение 2. Преобразуйте ваши векторные данные в растровые

  • в настройках отключи on-the-fly-reprojection
  • Сохраните свой пограничный слой как WGS84 и добавьте его на холст
  • Используйте Raster -> Convert -> Rasterizeна слое WGS84 выберите x = 360 и y = 170 в качестве размеров для растра (или n * 360 и n * 170)
  • Используйте Raster -> Projection -> Reprojectорто-проекцию под другим именем и добавьте ее на холст. Вы получите некоторые ошибки, но остальная часть растра сделает. Не беспокойтесь, что вы видите серый прямоугольник
  • Щелкните правой кнопкой мыши на растровом слое -> Свойства, вкладка Стиль
  • выбрать псевдо цвета
  • на вкладке прозрачность выберите 0 для 100% прозрачности
  • Удалить первый растр
  • установить проект CRS на орто

Вы должны увидеть следующую картинку: введите описание изображения здесь

Тот же метод работает с растрами, как вы можете видеть на моей аватарке ;-)


РЕДАКТИРОВАТЬ

Чтобы получить хорошую ортопедическую проекцию с центром в точке, не находящейся на экваторе, выполните отсечение в проекции aeqd с теми же параметрами, что и в орто. Вы получите этот результат:

введите описание изображения здесь


Нужно ли адаптировать первый подход, когда ортографическая проекция включает один из полюсов (как на вашей аватарке)? В этом случае я сталкиваюсь с проблемами при проецировании слоя САПР на WGS84, так как полученный многоугольник не покрывает полюс
Джейк

Вы правы. Использование отсечения aeqd вместо WGS84 для отсечения работает в этом случае. Обрезать сферу легче, чем эллипсоид.
AndreJ

Ах да, это хорошая идея! Тем не менее, он все еще не выглядит серебряной пулей: я попытался использовать этот подход с landнабором данных Natural Earth 1: 110M с проекцией, центрированной на 30 ° с.ш., 110 ° E, и столкнулся с проблемой при проецировании набора данных на aeqd. : Большие полигоны переворачивают и портят обрезку. Есть идеи?
Джейк

Антиподийная точка Aeqd должна лежать в море, чтобы избежать артефактов. Центр Aeqd не обязательно должен быть той же точкой, что и для окончательного орто, но должен лежать внутри обтравочного круга.
AndreJ

0

Смотрите комментарий выше, они просто ушли на другую сторону земного шара. полигоны стран все еще там, но не видны, если глобус не вращается. я не уверен в том, как вы вращаете земной шар в этих обстоятельствах, и отображение, как правило, двухмерное (исключая счетчики и т.д.).

Я бы установил ваш CRS для страны, в которой вы хотите наложить данные. Например, я бы использовал ирландскую сетку или сетку OSGB, или, как указано выше, WGS84 Pseudo Mercator.


3
Джессика хотела представить весь земной шар в виде круга. Прогнозы, которые вы предлагаете, не делают этого.
AndreJ

Плохое голосование немного резкое, если вы спросите меня.
Ger

Это был не я ...
AndreJ

Здорово. Я просто не понимаю, почему люди голосуют за предложение. У меня в капоте пчела об этом, и это все.
Ger

4
Понижающее голосование не должно приниматься лично . Вся сеть SE полагается на положительные и отрицательные голоса, чтобы найти лучшие ответы на самый верх вопроса. Я отказался от ответа, потому что "установить CRS для страны ... данные наложения" игнорирует заявленное желание ФП держать Атлантический океан в центре карты.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.