海图格式转换操作流程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一部分:生成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格式文件,点击下一步,在显示名称中分别填入父文件夹目录、结果存储目录,数据类型选择文件夹,点击完成。
生成的脚本工具界面如图:
使用方式为:父文件目录选择方法二中数据预处理中建立的不同的文件夹的父文件夹,结果存储目录选择符文件夹目录外的任意目录。合并后的结果如图:
By 殷宗敏