VCF电子海图投影文件的生成
VCF格式电子海图投影文件的生成
目前国内的电子海图除S-57格式的电子海图外,还有VCF格式电子海图,也就是shape格式电子海图。VCF格式电子海图是由国内官方出版机构出版的,包括一个map.rec控制文件和46组shape文件(.shp、.shx、dbf)。shape文件结构简单,而且是GIS老大ESRI公司推出的格式,能在arcgis软件上得到很好的支持。但由于VCF电子海图并未提供arcgis软件所需的投影文件,因此在使用VCF电子海图时,例如在arcmap中加载VCF数据是没有空间控制信息的,如果只是浏览一幅图,尚且将就,如果同时打开两幅或多幅图,就会使图形叠加在一起。解决方案就是为VCF电子海图数据添加投影文件。也许你会说,arcmap提供了投影定义工具呀,但那个工具第一要求用户要非常精通海图的数学基础,第二,那个工具只能为坐标数据为投影实地坐标定义投影文件,而面对vcf这种本图坐标的数据文件就明显无能为力了。我相信实现这一功能对于ESRI公司来说太容易了,可惜ESRI公司也不会关注VCF格式电子海图用户遇到的问题。
1. ArcGIS平台数据坐标系
1.1 坐标系
ArcGIS平台的坐标系实际上是传统测绘的地图投影,它们可为地球表面上某一特定地点或区域提供共同的沟通基础。使用坐标系最关键的问题有两个:一是要了解使用的是何种投影;二是将正确的坐标系信息与数据集相关联。ArcGIS平台的坐标系将坐标系分成两种类型:地理坐标系和投影坐标系。
地理坐标系包括角度测量单位、本初子午线和基准面(基于旋转椭球体)。可通过其经度和纬度值对点进行引用。经度和纬度是从地心到地球表面上某点的测量角。通常以度或百分度为单位来测量该角度。
投影坐标系在二维平面中进行定义。与地理坐标系不同,在二维空间范围内,投影坐标系的长度、角度和面积恒定。投影坐标系始终基于地理坐标系,而后者则是基于球体或旋转椭球体的。
1.2 坐标系的定义
本文不对ArcGIS平台的坐标系的定义的工具和过程进行描述,仅对与本文主题相关的问题进行说明。当为已存在的地理数据增加坐标系定义时,如果数据坐标为图上坐标时,或者说已存数据是在投影后又经历了缩放和平移的结果。此时ArcGIS平台提供的交互式投影参数定义就不能满足要求。
1.3 坐标系的使用
Arcmap导入数据是将数据与表达数据框建立联系:
- 如果数据框已定义坐标系,后续载入的数据会被动态的投影到相应的框架,从而自动将数据集与其他数据集集成。
- 如果新建数据框未定义坐标系,当首次导入(加载)数据时,数据框以导入数据的坐标系为数据框坐标系。后续载入的数据会被动态的投影到相应的框架,从而自动将数据集与其他数据集集成。
- 无论数据框是否定义坐标系,当尝试向 ArcMap 添加未定义坐标系数据时将收到此警告消息:“以下添加的数据源缺少空间参考信息。虽然可以在 ArcMap 中绘制这些数据,但不能投影。”
由于未明确坐标系数据不能投影,因此无法与其它数据集成使用,也不能正确的查询、量测,极大限制了数据的深度挖掘与使用。需要定义一个空间参考,才能在 ArcGIS 中有效地使用数据。
如果数据集没有空间参考,则无法轻松地集成它们。需要定义一个空间参考,使其在 ArcGIS 中有效地使用。空间参考或坐标系是元数据。它描述了数据已经使用的坐标框架。
2. MVCF电子海图简介
2.1 MVCF电子海图的组织结构
2003年,我国以国军标的方式正式颁布了中国电子海图格式标准,即GJB4887-2003《军用数字海图数据交换格式》。MVCF文件以图幅为单位组织,采用目录结构,目录名即为数字海图的编号,由标识符加图号组成,数据文件包括元数据文件、图形文件、索引文件和属性文件等四种文件。其中,元数据文件由制图编辑通过工具手动生成;图形文件、索引文件和属性文件由ARCGIS软件直接生成,即shape格式文件。
在海图系统中,海图的平面直角坐标是地理实体在地球椭球体上的空间坐标(三维)经地图投影映射到二维平面得到的。海图的平面坐标分为“本图坐标”和“实地坐标”两种,“本图坐标”是指空间坐标经地图投影成平面坐标后,进行比例缩放,并以本图左下角为原点,单位为厘米。“实地坐标” 是指空间坐标经地图投影成的平面坐标,不进行比例缩放,一般以赤道和零子午线的交点为原点(随投影变化),单位为米。海图一般采用墨卡托投影,但实际发布时如用户不提出要求,空间坐标均使用“本图坐标”,这就使ArcGIS用户无法在ArcGIS软件中直接正常使用MVCF电子海图数据,特别是多幅海图拼接时,由于没有投影信息,造成数据全部重叠在一起,无法应用。很多用户通过对图形文件的坐标数据经过投影反解成地理坐标(经纬度)解决这一问题,但是由于用户自行对数据的处理缺少质量控制,数据的准确性难以得到保证,存在一定的安全隐患。
2.2 MVCF电子海图元数据文件
MVCF电子海图的元数据文件名为map.rec,记录海图的控制信息,其中包含有对应图幅的实地坐标信息,是MVCF电子海图在ARCGIS平台上使用的关键信息文件。该文件内容由 23个数据项组成,每项数据为一行,以文本文件方式保存。
各项数据顺序及示例如表1所示:
表 1元数据文件
数据项名 |
示例数据 |
图号 |
13381 |
图名 |
册子水道及金塘水道 |
投影方式 |
墨卡托 |
基准纬度 |
30 |
比例尺分母 |
35000 |
南图廓纬度 |
29.5235 |
北图廓纬度 |
30.0535 |
西图廓经度 |
121.4103 |
东图廓经度 |
122.0208 |
大地坐标系 |
CGCS2000 |
数据格式 |
COVERAGE |
数据坐标 |
本图坐标 |
数据坐标原点 |
29.5235,121.4103 |
数据坐标单位 |
厘米 |
高程基准面 |
1985国家高程基准 |
高程单位 |
米 |
深度基准面 |
理论最低潮面 |
深度单位 |
米 |
资料说明 |
海域主要采自2011、2009、2007年测量资料,陆地采自1984年版地形图,并根据2012年版资料修正。 |
出版日期 |
2012年7月 |
版次 |
第5版 |
出版部门 |
中国人民解放军海军司令部航海保证部 |
通告改正 |
部通告2014-172 |
3. ArcGIS墨卡托投影文件及参数解析
ArcGIS的投影文件定义了空间数据的数学基础,与shape数据文件同名,后缀为prj,以纯文本格式存贮。ArcGIS针对空间数据的参考属性分为地理坐标系统和投影坐标系统,如果空间数据以地理坐标(地理经纬度)形式存贮,则投影文件只需描述地理坐标系统,如果空间数据是以投影坐标形式存存贮,则投影文件包括两部分内容,即地理坐标系和投影参数。由于ArcGIS的帮助文档并没有对投影参数进行详细描述,但提供了投影定义工具,本文以墨卡托投影实例对投影参数进行形式解析,如图2所示,墨卡托投影定义主要有四个投影参数,线性单位和地理坐标系。其中:
中央经线(Central_Meridian):墨卡托投影计算中水平坐标的起算经线。
基准纬线(Standard_Parallel_1):墨卡托投影在这一纬度线上比例尺与图幅比例尺相等,也称“真实比例纬度”。
东偏移量(False_Easting):中央经线距投影数据原点的距离,单位与投影坐标数据一致。
北偏移量(False_Northing):赤道(零纬度)距投影数据原点的距离,单位与投影坐标数据一致。
线性单位:指投影数据的长度单位。
每单位米数:每个单位长度代表公制米数。
地理坐标系一般不需要用户自定义,只要从系统提供的坐标系统中选择就可以。
图 1 ArcMAP投影文件生成
4. MVCF电子海图投影文件的生成
MVCF电子海图数据采用墨卡托投影“本图坐标”系统,要正确的生成投影文件,必须要根据元数据文件的信息确定符合ArcGIS要求的投影参数。首先可以明确的是MVCF电子海图是以本图左下角点(西图廓经度与南图廓纬度交点)为原点,中央经线可以选择本图“西图廓经度”或零子午线;基准纬线与本图“基准纬线”一致;东偏移量是指中央经线距原点的水平距离,中央经线在原点以东为正值,以西为负值,单位为厘米;北偏移量是指赤道(零纬度)距投影数据原点的距离,赤道在原点以南为负值,以北为正值,单位为厘米;线性单位为厘米,每单位米数是指图上1厘米代表实地长度米数,也就是电子海图比例尺分母除以100。根据上述分析,东(北)偏移量需要进行投影计算:
东偏移量=(中央经线水平投影坐标-本图原点水平投影坐标)/每单位米数
北偏移量=(0-本图原点垂直投影坐标)/每单位米数
每单位米数=比例尺分母/100
图 2 投影文件生成流程
由于ArcGIS提供的投影定义工具中,当指定线性单位后,每单位米数不能修改,因此可以先由该工具生成一个投影文件模板,然后用文本编辑器进行修改。但这种方法只适用于单个数据文件,对于MVCF电子海图来说,每幅图几十个图层都需要投影文件,需要进行复制、改名也是很繁琐的。第二种方法是编写批处理工具,本文给出该工具流程图,用户只需指定MVCF电子海图路径,工具会自动读取电子海图元数据文件,并生成全部投影文件。以下为MVCF格式电子海图13381“册子水道及金塘水道”的投影文件内容,各图形数据文件内容一致,只是文件名不同。
PROJCS["WGS_1984_World_Mercator",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Mercator"],PARAMETER["False_Easting",0.000000],PARAMETER["False_Northing",-8584.276826],PARAMETER["Central_Meridian",121.684167],PARAMETER["Standard_Parallel_1",30.000000],UNIT["Centimeter",350.000000]]
5. 投影文件的使用
当在ArcMap中加载未添加投影文件的MVCF电子海图数据时,系统会提示“以下添加的数据源缺少空间参考信息,虽然可以在ArcMap中绘制这些数据,但不能投影”
图 3无投影文件多幅数据重叠
为MVCF电子海图添加投影文件后,ArcMap会自动与数据框架坐标系统匹配,数据坐标显示正确,加载多幅数据时,数据相对关系正确(见图4)。
图 4 有投影文件多幅数据叠加,关系正确
6. 结论
经验证,MVCF格式电子海图,在采用本文所述方法为各图形文件生成正确的投影文件后,可在ArcGIS平台上正确使用,各图幅数据在同一制图框架内相对位置正确,弥补了MVCF电子海图数据完整性的缺陷。
VCF电子海图投影文件的生成相关推荐
- Aspose.Word企业案例:Lewin Technology 使用 Aspose.PDF for .NET 开发了电子 PDF 文件生成和打印系统
关于Lewin Technology Lewin Technology 是中国山东省应用创新的主力企业.Lewin Technology 专注于互联网.移动互联网.融合通信等多个产品领域的信息应用系统 ...
- ETC电子发票台账工(生成Excel报表)
ETC电子发票台账 电子发票介绍 工具特点: 使用方法: ETC电子发票批量打印功能 电子发票介绍 什么是电子发票?为什么国家要大力推进电子发票的应用?电子发票是信息时代的产物,同普通发票一样,采用税 ...
- vue文件快速生成模板代码
vue文件快速生成模板代码 输入 vue 按 tab 键
- python读取文件名存到list_python读取文件名称生成list的方法
下面为大家分享一篇python读取文件名称生成list的方法,具有很好的参考价值,希望对大家有所帮助.一起过来看看吧 经常需要读取某个文件夹下所有的图像文件. 我使用python写了个简单的代码,读取 ...
- svn增量打包部署_利用svn的补丁文件打包生成增量文件
下面的代码是maven版本 1. 创建patch.txt增量文件 保存到 文件目录下 比如 E:\aa\patch.txt 2. 编写java代码 package utils; import java ...
- r.java没有生成_r.java文件没有生成
最近几天学习android ,学习时候难免要导入一些示例,目的为了更加了解android各种API用法,顺便也可以学习下别人代码的写法.可是导入android源码后,基本都有错误,R.java也不会自 ...
- jni头文件自动生成
写一个测试代码,大概如下 1 package aa.bb; 2 3 public class TestClass { 4 5 public native void aaaBBB(); 6 } 在项目的 ...
- roslyn生成html,Visual Studio 2017 bin \ roslyn文件在生成期间被锁定
Visual Studio 2017 bin \ roslyn文件在生成期间被锁定 我正在运行VS2017版本26430.13,每次尝试构建Web项目时,都会收到错误,拒绝访问bin \ roslyn ...
- PHP代码为什么不能直接保存HTML文件——PHP生成静态页面教程
1.服务器会根据文件的后缀名去进行解析,如果是HTML文件则服务器不会进行语法解析,而是直接输出到浏览器. 2.如果一个页面中全部都是HTML代码而没有需要解析的PHP语法,则没有必要保存为PHP文件 ...
最新文章
- python - classs内置方法 solt
- 微信小程序中base64转换成图片;uni-app小程序base64转图片;微信小程序base64文件转图片;微信小程序base64图片转图片
- 【转】ABP源码分析四十:ZERO的Application和Tenant
- 图论 —— 生成树 —— 最小瓶颈路
- mongodb数组操作符
- 肺功能曲线图怎么看_QQ或将推出已读功能?!你怎么看?| 微博报
- xxs漏洞危害_PHP开发中经常遇到的Web安全漏洞防御详解
- 正则表达式基本语法规范
- ubuntu nginx配置虚拟主机,目录
- matlab车流量检测,求解释代码,一段交通车流量检测的代码
- composer killed while updating or install
- 苹果手机投屏win10电脑
- 新一配:创建数据透视表时的注意事项【转载】
- 天使投资人刘峻:腾讯的七条命 |捕手志
- stm32闪存的理解
- JAVA+appium+夜神模拟器实现APP爬虫
- 20175208 张家华 实验四《Android开发基础》实验报告
- 两个女孩全程不带现金,只付加密货币几乎游遍大半个国家是一种什么体验?...
- 1996届瑞安市计算机学校,1996届校友
- 基准测试 计算机,用于 Windows、安卓和 iOS 系统的 3DMark 基准测试