海图格式转换操作流程.pdf
文本预览下载声明
中船重工鹏力(南京)大气海洋信息系统有限公司
第一部分:生成shp 图层
方法一:
海图显示的插件:Arcgis 中的S57 插件,只提供海图显示功能。
安装包:
安装后界面:
可手动导出shp ,效率低,方法为:点击图层,右键》数据》导出数据。
转换后数据,会丢失图层的显示属性,即结果中只存在点,线,面三种类型,缺乏修饰符号,
需要重新符号化。
中船重工鹏力(南京)大气海洋信息系统有限公司
方法二:
批量进行海图转换的工具:超图电子海图设计平台系统,软件的试用期三个月。
安装包:
安装后界面:
批量转化S57 格式到shp 格式:点击图层,右键》导出海图数据,在目标类型中选择shp 。
导出结果与arcgis 手动导出结果相同,每个S57 图层对应多个shp ,结果中存在多个相同名
称的shp 。
第二部分:shp 结果的合并
转换后结果存在多个相同名称的shp ,这种存储方式不符合地理数据的存储要求,应该将相
同的名称的shp 合并成一个图层。
中船重工鹏力(南京)大气海洋信息系统有限公司
方法一:手动合并,工作量太大,容易出错。步骤为:点击,地理处理》合并
方法二:利用python 脚本工具,但需要进行前期数据预处理工作。
数据预处理:
1、首先建立不同的文件夹,分别用于存储每个S57 转换后的shp 结果;超图软件中生成的
shp 结果名称为 : ,其中CN301306 表示为海图名
称,BUAARE 表示生成的shp 图层表示的地物类型,R 表示图层属性为面状要素。python
脚本可对相同名称的shp 进行合并,并命名为该名称,因此需要对不同文件夹中shp 图
层的名称进行更改,同一地物类型使用同一种名称,即将名称中CN301306_180000_去
除,使用的工具为 :批量修改文件名_3.8,所有文件夹中的名称都修改后,可以进行下
面的步骤。
2、编写python 脚本,使用的phthon2.7,代码如下:
# coding=UTF-8
import sys
reload(sys)
sys.setdefaultencoding(utf-8)
import arcpy
import os
import time
in_feature =arcpy.GetParameterAsText(0)
savepath =arcpy.GetParameterAsText(1)
feature_paths = []
fileName=[]
for rroot, rdirs, rfiles in os.walk(in_feature):
for rf in rfiles:
if rf[-4:] == .shp:
fileName.append(rf)
fpath = os.path.join(rroot, rf)
feature_paths.append(fpath)
中船重工鹏力(南京)大气海洋信息系统有限公司
names=set(fileName)
featurelist=[]
for name in names:
li=[]
for pa in feature_paths:
if pa.split(\\)[-1]==name:
li.append(pa)
arcpy.Merge_management(li,savepath+\\+name)
time.sleep(2)
存为**.py 格式文件。
打开arcgis catalog 软件,建立脚本工具箱,步骤为:我的工具箱》新建》工具箱。
在新建的工具箱中添加脚本,步骤为:右键,添加》脚本。
脚本添加后需要进行设置,步骤为:修改脚本名称标签等,点击下一步,添加生成的**.py 格
式文件,点击下一步,在显示名称中分别填入父文件夹目录、结果存储目录,数据类型选择
文件夹,点击完成 。
中船重工鹏力(南京)大气海洋信息系统有限公司
生成的脚本工具界面如图 :
使用方式为:父文件目录选择方法二中数据预处理中建立的不同的文件夹的父文件夹,结果
显示全部