使用QGIS使用WGS84图层以米/公里为单位进行缓冲


12

我正在使用QGIS 1.7.4-Wroclaw并在WGS84中使用SHP层。我想使用ftools缓冲工具从该层缓冲一定距离。

我知道缓冲工具总是使用图层单位,对于WGS84来说,单位是十进制。我们都知道度数并不能始终如一地转换为米,那么我应该如何制作缓冲区?

我是否有必要将shapefile转换为本机使用计量器的其他CRS?

如果是这样,我该如何选择?


您的shapefile的范围是多少?我们需要此信息来推荐CRS。
nhopton

是的,您必须首先重新投影Shapefile(例如,使用fTools的“重新投影层”工具)。哪种投影效果最好取决于您所在的区域(经度/纬度)以及该区域的大小。
杰克

谢谢@Jake和@nhopton!我正在从台湾北部的多个地点缓冲,但是缓冲将在1000-2000公里的范围内(覆盖中国和台湾的大约一半)。
埃文(Evan)2013年

1
该地图用地理坐标系(纬度/经度)定义,但地图范围表明它实际上是投影坐标系(例如,墨卡托)。如果是这样,线或面积测量的结果将是不正确的。要解决此问题,请使用Settings:Project Properties菜单明确设置适当的地图坐标系。
2013年

实际上,这只是裁剪的“自然地球”文件,因此仅在WGS84中。
埃文(Evan)2013年

Answers:


12

对于此应用程序,我将使用在源点中间居中的方位角等距投影。该投影具有一个很好的特征,即围绕投影中心的所有径向距离都是准确的。

该特定投影不属于QGIS标准投影。您可以使用“设置/自定义CRS”和命令字符串来定义自己+proj=aeqd +lat_0=24.5 +lon_0=121.5的脚本,但不幸的是,fTools Reprojection工具无法使用自定义投影。相反,您可以使用以下命令在命令行上转换数据集

ogr2ogr points_reprojected.shp points.shp -t_srs "+proj=aeqd +lat_0=24.5 +lon_0=121.5"

然后,您可以使用points_reprojected.shpshapefile 在QGIS中进行缓冲。

台湾北部某点周围2000公里的缓冲区看起来像一个以该点为中心的正投影中的圆:

...并在WGS84中压缩:


谢谢-重新投影到Azimuthal Equidistant,然后缓冲工作得很漂亮!实际上,我已经在动态投影中使用了该投影,我只是没有意识到它会拥有我需要的单位。但是我不必使用命令行来重新投影:“图层”>“另存为...”就可以做到这一点(在定义自定义CRS之后)。
Evan 2013年

@Evan:很高兴听到!如果您认为自己的问题已回答,则可以通过单击答案旁边的对勾将其标记为这样
Jake 2013年

1

哼,有趣。首先尝试一下,我想看看如何将(巨大的)缓冲区生成为KML。您可以在这里执行以下操作:

http://www.thesamestory.com/kmlcircle/

您需要输入一个点和一个缓冲距离的纬度/经度。您得到的是一个包含圆圈的KML文件。在Google Earth中查看一下,如果可以的话,将其加载到QGIS中。

在此处输入图片说明


1
不幸的是,QGIS Lisboa不喜欢生成的kml文件。
AndreJ 2013年

QGIS不喜欢该文件名。尝试将其更改为(例如)“ circle1.kml”。但是我应该检查一下。N.
nhopton 2013年

好的,将文件加载到Google Earth中,然后另存为KML。然后从默认名称更改文件名。ogr2ogr也很好地将文件转换为SHP。N.
nhopton 2013年

杰克的解决方案对我来说算是完美的解决方案,但这也可能是一种很好的方法。我会记住的。谢谢!
伊万
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.