0%

OpenStreetMap开源高精度海岸线数据介绍

OpenStreetMap

OpenStreetMap(简称OSM)是一个网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图。由于大众参与的持续修正以及采用了更加可靠的数据源,OSM的海岸线精度和分辨率比GMT开源岸线GSHHG更高。

German FOSSGIS(https://www.fossgis.de/) 已经从OSM海岸线中制作了shapefile格式的文件,下载地址为https://osmdata.openstreetmap.de/data/land-polygons.html。 注意下载WGS-84投影的Large polygons not split版本,文件大小约600M。下载后可以利用开源GIS软件QGIS软件快速打开数据集,并导出感兴趣的区域为文本格式,从而可以使用别的绘图软件进行绘图(如GMT)。

使用QGIS提取区域shp

下面是基本的数据选取和导出步骤。

  • 读入全球的shp文件
  • 缩放到目标区域
  • toggle edit
  • Edit-Split feature,绘制一条线分割出目标区域。
  • Select feature
  • save selected feature as shp

如果是导出某一个闭合的多边形,如海岛,则不用分割,直接选择select feature,然后在layers中右键选择export-save selected feature as

如果想要导出一般海岛(或任意区域)的房屋、道路等信息,可以从https://www.openstreetmap.org 网站操作,缩放到感兴趣区域,然后点击左上角的Export,导出osm格式文件,使用QGIS打开后,可以转换为shp格式。

shp转文本格式或者kml

保证已经安装GMT,然后命令行:

1
2
ogr2ogr -f OGR_GMT sy.gmt sy.shp
gmt gmt2kml sy.gmt -Wthick,white -Fl >sy.kml

使用GMT导出GSHHG海岸线

GMT可以绘制地图,也可以导出岸线数据,并基于岸线进行空间分析。下面是简单的岸线导出、绘图和转换代码。

1
2
3
4
5
6
ps=example_border.ps
gmt psbasemap -JM4.5i -K -Bag `gmt gmtinfo sy.gmt -I0.000001`> $ps
gmt pscoast -M -W1 -Df -R >cn.txt # -Df means full resolution
gmt psxy -R -J cn.txt -W0.4p,red -O -K>> $ps
gmt psxy -R -J sy.gmt -W0.8p,black -O>> $ps
gmt gmt2kml cn.txt -Wthick,white -Fl >cn.kml

效果


白线为GSHHG岸线,红线为OSM岸线。表明OSM更为准确,在一些对岸线精度较高的场景中可以使用OSM。

其他参考:
GMT提供了一个例子:https://docs.generic-mapping-tools.org/dev/gallery/ex51.html#example-51
QGIS:https://www.qgis.org/en/site/