Как получить файл формы океана из очень подробного файла формы?

10

Я ищу возможность "инвертировать" шейп-файл. Я хочу преобразовать шейп-файл с континентами и островами в шейп-файл с водяными полигонами. Существующий шейп-файл Ocean из Natural Earth слишком неточный.

Как активный участник OSM, я подумал, что использование существующих шейп-файлов из OSM будет хорошо для меня. Они гораздо более точные, но очень ошибочные с точки зрения ГИС. Тем не менее, mapserver может справиться с этим, поэтому я подумал, что все должно быть в порядке. Эти шейп-файлы, некоторые из которых вы можете найти здесь http://metro.teczno.com/#coastline , очень большие.

Я создал шейп-файл с одним полигоном с границами мира (от -180 до 180, от -90 до 90). Затем я попытался вырезать области из моего шейп-файла границ мира, где области суши находятся в другом шейп-файле. Я попробовал это с QGIS, векторные инструменты -> функция разницы. Через 12 часов при 100% загрузке процессора я его остановил. Он всегда отображал прогресс в 100%. ОЗУ не было проблемой.

Я ищу другую возможность вырезать участки земли из "многоугольника мира", предпочтительно из командной строки Linux.

Томас
источник
2
В ArcGIS описываемая вами операция называется стиранием. Похоже, вы ищете решение с открытым исходным кодом, поэтому, возможно, поиск по этому термину что-то повысит. MapWindow выглядит так, как будто у него есть инструмент Erase, но обсуждение здесь предполагает, что у него тоже могут быть ограничения: mapwindow.org/phorum/read.php?4,20317
PolyGeo
2
Вы захотите разделить свой шейп-файл «полигон с границами мира (от -180 до 180, от -90 до 90)» на более мелкие куски. Тогда вы можете обрезать области. У вас возникли две вероятные проблемы, одна из которых заключается в том, что вы обрабатываете данные как в северном, так и в южном полушариях одновременно. Два, потенциальные проблемы с границами -180/180. Попробуйте разделить границы своего мира на 4 части, такие как: вверху слева, вверху справа, внизу слева, внизу справа, мира.
Майкл Маркиета
Я предполагаю, что когда вы создали свой полигон мира, вы спроецировали его в ту же систему, что и данные о земле?
DJQ

Ответы:

6

Растры на помощь! Вы можете сделать эту операцию, преобразовав свой шейп-файл в растр, выполнив операцию 'инвертировать' и преобразовав ее обратно в вектор

  • Растр -> Преобразовать -> Растеризовать. Выходной слой растр1
  • Калькулятор открытого поля, введите выражение raster1 @ 1 = 0
  • Растр -> Конвертировать -> Полигонизация, Выходной слой ocean_polygons
  • Откройте таблицу атрибутов, найдите DN = 0, переключите редактирование, удалите выбранные объекты и сохраните. То, что у вас останется, будет полигонами для районов океана.

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

spatialthoughts
источник
1

SAGA GIS (и многие другие, вероятно, также) имеет команду, называемую «пересечение полигонов». Создайте многоугольник, содержащий весь мир, и вычтите из него свои полигоны. Так что метод 2 или 3 в этой библиотеке.

Usage: saga_cmd libshapes_polygons "Polygon Intersection" -SHAPES_A <str> [-FIELD_A <str>] -SHAPES_B <str> [-FIELD_B <str>] -SHAPES_AB <str> [-METHOD <str>] [-SPLITPARTS]
  -SHAPES_A:<str>   Layer A
    Shapes (input)
  -FIELD_A:<str>    Attribute A
    Table field
  -SHAPES_B:<str>   Layer B
    Shapes (input)
  -FIELD_B:<str>    Attribute B
    Table field
  -SHAPES_AB:<str>  Intersection
    Shapes (output)
  -METHOD:<str>     Method
    Choice
    Available Choices:
    [0] Complete Intersection
    [1] Intersection
    [2] Difference (A - B)
    [3] Difference (B - A)
  -SPLITPARTS       Split Parts
    Boolean
johanvdw
источник
0

Растр может быть слишком объемным, если вам нужны подробности о береговых линиях. Тот же самый принцип, который предложен spatialthoughts, но использование Delaunay TIN может быть вариантом?

AnserGIS
источник
0

эти шейп-файлы могут быть полезными. Они взяты из картографического центра ESRI и содержат довольно точные гидрологические и морские данные.

Craig
источник
0

У меня не было большого успеха в инвертировании шейп-файлов наземных объектов OSM из-за их сложности, однако можно было генерировать шейп-файлы как наземных, так и океанских объектов из необработанных данных OSM. http://openstreetmapdata.com/data предлагает загрузки обоих, которые я считаю чрезвычайно полезными.

ajashton
источник