如何建立穿过180度线的最小凸包?


13

我一直在为居住在印度太平洋的物种(经度从20度到-65度)建造凸包。我遇到的问题是,对于可以在180度经度线的两侧找到的物种,重建后的船体会在整个图层上扩展,而不是在包含该图层两端的较小多边形中包含这些点。造成这种现象的原因是,这条线代表了图层的边缘,并且QGIS没有包装矢量地图(请参见下图……我的“声誉”现在“足够好,可以包含它,谢谢)”。

在此处输入图片说明

经过深思熟虑,这些是我遇到的一些可能的方法。但是,我不太确定它们的优点或实现:

  1. 将中央子午线从0(即格林威治)更改为150度。如何才能做到这一点?这会仅仅是改变地图显示(本身就是有用的),还是有助于正确凸壳的构造?

  2. 将坐标系从+/- 180度格式更改为0到360度格式。显然,可以使用PostGIS中的“ ST_Shift_Longitude”功能来实现这些目标,该功能会将负经度增加360度。有没有更简单的方法可以做到这一点?此外,此函数还会生成一个180度的中心图,虽然这不是世界末日,但150度的中心图会更好(〜印度太平洋的中心)。

    感谢您的时间和帮助,对于冗长的帖子,我们深表歉意。


1
凸包仅在使用投影坐标系时才有意义

2
尽管@Dan通常是正确的,但在很多情况下凸包确实有意义-这很可能是其中一种。我们可以通过构造球体的圆锥体(即来自地球中心并穿过这些点的射线的并集)并与这些射线的凸壳相交(被视为子集的子集)来定义球体上任何点集的凸包。空间)。
ub

gis.stackexchange.com/questions/17788上的一个相关问题要求计算可能跨越+ -180度子午线的点的边界框。但是,在当前情况下,投影坐标中的解决方案(如@Dan Patterson所建议)或3D解决方案看起来都是最好的选择。但是要当心:大多数GIS仍然无法处理跨越此子午线的数据。提交任何解决方案之前,请使用简单的数据集进行测试。
ub

Answers:


4

您可以使用GRASS GIS(在QGIS中可通过GRASS工具箱或更好的Sextante插件获得),它能够在日期行处理全局环绕。

这是一个示例,该示例在该区域中具有随机点,并带有通过v.hull生成的凸包多边形:

在此处输入图片说明


0

如果要将世界地图的中央子午线从格林威治移动到其他地方,则会遇到与您相同的错位,但是如果地图背景是由矢量多边形构成的,则使用地图背景。

有关此变通办法,请参见以下问答:

将自然地球数据集重新投影到World Eckert I

尽管它是为埃克特投影而编写的,但它应该适用于以格林威治不同的子午线为中心的所有全球视野。

使用像“蓝色大理石”这样的栅格背景可以避免此问题。

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.