使用QGIS中的Robinson或Miller圆柱投影显示以太平洋为中心的世界国家的形状文件?


20

我希望在QGIS(世界国家图形文件)中显示一张地图,该地图显示所有国家,但以太平洋地区为中心。

我对Proj4不熟悉,所以QGIS有什么办法可以做到?


经过许多麻烦之后,我发现最好使用Nr; WKT 1; POLYGON(((30.01

Answers:


26

好吧,这并不容易,因为QGIS并未附带预定义的Robinson或Miller投影。

所以我尝试了一个自定义CRS并得到了这张照片(不是第一次运行!):

在此处输入图片说明

对于西边150°的中央子午线,有必要在东边30°分割世界边界shapefile(确切地说,在29.9和30.1处以避免相交)

因此,这些步骤是:

  1. 下载自然地球世界边界shapefile并将其加载到QGIS中
  2. Save As ... 进入WGS84,并将其添加到画布
  3. 从步骤1删除图层
  4. 禁用 On-the-fly-projection
  5. 创建以下文本文件:

Nr; WKT

1; POLYGON((30.1 89,29.9 89,29.9 -89,30.1 -89,30.1 89))

  1. 将文件添加为Text delimited layer,使用分号作为分隔符,使用WGS84作为CRS(您将在30°E附近得到一个非常薄的多边形)
  2. 将图层另存为shapefile,将其添加到画布,然后从步骤6中删除图层
  3. 使用Vector -> Geoprocessing -> Difference与两个多边形层
  4. 使用以下项目字符串创建一个名为Robinson的自定义CRS:

+proj=robin +lon_0=-150 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs

  1. 启用On-the-fly projection并选择Robinson作为项目CRS

对于Miller投影,可以使用相同的预切割shapefile。在Proj中,米勒在椭球体方面存在一些问题,因此我们改用球体(您不会看到任何区别):

+proj=mill +lon_0=-150 +lat_0=0 +R=6371000 +units=m +no_defs

启用即时运行后,它看起来并不那么好,新西兰会完全丢失,但是在放大时会返回。因此,我们需要Save As ...在miller投影中对shapefile进行显示,并且仅进行显示,而无需进行即时重新投影:

在此处输入图片说明


3
这是QGIS 应该处理的吗?我的意思是,这并不意味着第180个子午线是物理的……是否有错误/功能要求?
naught101

2
因为我花了一个令人尴尬的很长时间才能找到它,可以在添加自定义的CRSSettings > Custom CRS...
alphabetasoup

3

QGIS随时随地提供您所需的一切(即,它在幕后为您处理Proj4)。如果您的数据已经在所需的投影中,则右键单击图层并选择“从图层设置项目CRS”。这样会将数据视图置于与数据相同的投影中。您可能还必须右键单击您的图层,然后选择“缩放到图层范围”。

如果数据在其他投影中,则可以动态地重新投影(在项目属性中),也可以通过右键单击图层并选择“另存为”来重新投影数据本身。当保存对话框打开时,为输出数据集选择CRS,然后使用新的重新投影的数据集。

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.