如何从非常详细的陆地区域shapefile获取海洋shapefile?


10

我正在寻找“反转” shapefile的可能性。我想要做的是将具有大陆和岛屿的shapefile转换为具有水多边形的shapefile。来自自然地球的现有海洋shapefile太不准确。

作为OSM的积极贡献者,我认为使用OSM的现有shapefile对我来说很好。从GIS的角度来看,这些方法更为准确,但存在很多错误。但是,mapserver可以处理它,所以我认为这些应该没问题。这些shapefile,其中一些您可以在http://metro.teczno.com/#coastline 上找到,它们 非常大。

我创建了一个shapefile,其中包含一个带世界范围(-180到180,-90到90)的多边形。然后,我尝试从我的世界范围shapefile中裁剪出陆地区域在另一个shapefile中的区域。我尝试使用QGIS,矢量工具->差函数。在100%CPU使用率的12小时后,我停止了它。它始终显示进度为100%。RAM不是问题。

我正在寻找另一种可能性,可以从“世界多边形”(最好是Linux命令行)中裁剪出陆地区域。


2
在ArcGIS中,您描述的操作称为“擦除”。听起来您正在寻找开放源代码解决方案,所以也许搜索该术语会有所帮助。MapWindow似乎具有“擦除”工具,但此处的讨论表明它也可能有局限性:mapwindow.org/phorum/read.php?4,20317
PolyGeo

2
您将需要将shapefile“具有世界范围(-180到180,-90到90)的多边形”拆分为较小的块。然后,您可以裁剪出区域。您遇到了两个可能的问题,一个是同时处理北半球和南半球的数据。第二,-180 / 180边界可能存在问题。尝试将您的世界范围分成4个较小的块,例如:世界的左上,右上,左下,右下。
Michael Markieta 2012年

我认为,当您创建世界多边形时,是否将其投影到与土地数据相同的系统中?
djq 2012年

Answers:


6

栅格救援!您可以通过将shapefile转换为栅格,执行“反转”操作并将其转换回矢量来执行此操作

  • 栅格->转换-​​>栅格化。输出图层栅格1
  • 打开字段计算器,输入表达式raster1 @ 1 = 0
  • 栅格->转换-​​>多边形化,输出层ocean_polygons
  • 打开属性表,搜索DN = 0,切换编辑,删除所选特征并保存。您将剩下的将是海洋区域的多边形。

在此处输入图片说明


1

SAGA GIS(可能还有许多其他的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

0

如果您需要沿线的细节,则栅格数据可能太重。与空间思想所建议的原理相同,但使用Delaunay TIN是一种选择吗?



0

由于它们的复杂性,我在反转OSM陆地形状文件方面没有取得太大的成功,但是可以从原始OSM数据生成陆地和海洋形状文件。http://openstreetmapdata.com/data提供了两种下载,我觉得它们非常有用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.