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 | ogr2ogr -f OGR_GMT sy.gmt sy.shp |
使用GMT导出GSHHG海岸线
GMT可以绘制地图,也可以导出岸线数据,并基于岸线进行空间分析。下面是简单的岸线导出、绘图和转换代码。
1 | ps=example_border.ps |
效果
白线为GSHHG岸线,红线为OSM岸线。表明OSM更为准确,在一些对岸线精度较高的场景中可以使用OSM。
其他参考:
GMT提供了一个例子:https://docs.generic-mapping-tools.org/dev/gallery/ex51.html#example-51
QGIS:https://www.qgis.org/en/site/