博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ArcGIS编程实现自定义坐标转换的问题
阅读量:6005 次
发布时间:2019-06-20

本文共 1390 字,大约阅读时间需要 4 分钟。

写的内容跟标题可能不是很符合,不知道该如何写这个标题,看内容吧。

我们有一个自己编写的地方平面坐标系到WGS84球面坐标系转换的代码,该代码只是实现空间数据实际存储坐标值的变化,并不是修改地理坐标或投影坐标的定义文件,在ArcGIS中,如果要使用坐标系的功能,必须定义地理坐标系或投影坐标系。

以前在用这个转换类库没有碰到问题,但这次使用碰到问题了,转换后导出的数据坐标不对,因为WGS84坐标值范围很小,所以一开始还没发现,下面说说过程。

1、 原始数据描述

原始数据是存储在mdb中的Personal Geodatabase数据,建了数据集,在数据集上定义了投影坐标系,北京54高斯克吕格北纬20带(6度带),该数据集的数据加载到ArcMap上,Layer的坐标系直接就是上述坐标系。

2、 数据处理过程

(1)从原有的Personal Geodatabase提取空结构保存为File GeoDatabase,就是用ArcGIS 的distribution database工具,用于转换后的数据存储(这个就是我问题的产生来源);

(2)因为我们的坐标转换是基于单点转换的,所以写程序,将点、线、面的每个角点转为WGS84的经纬度值,然后重构图形。点简单(单点和多点),线、面复杂,要考虑多part和内外环的问题

(3)执行程序,写入新的图层;

(4)执行完毕,没有问题,o(∩_∩)o 哈哈;

3、问题来了

(1)一看转换完的数据,跟原来人工加工的区划图和道路网图有明显的偏差,不是很大,确定转换有问题了;

(2)检查了坐标转换类库,检查图形转换程序,检查了原始数据,检查了空结构,没有发现问题,折腾了一天;

(3)最后只能怀疑是原始数据的问题,重新用Personal Geodatabase和File GeoDatabase导了几遍,问题依然,又是一天,其实就死在这里;

4、问题处理

(1)将原有数据全部导出为Shapefile,然后删除prj、sbn、sbx、xml文件,指保留shp、shx、dbf三个文件;

(2)目标数据源空结构也全部采用Shapefile,一样只保留shp、shx、dbf三个文件;

(3)重新执行坐标转换,这回,真的OK了,o(∩_∩)o 哈哈;

(4)将成果Shapefile数据导入到File GeoDatabase中,在File GeoDatabase中的数据集定义了WGS84地理坐标系,数据终于可以用了。

5、问题分析

其实还是不能确定问题的本质,但可以确定跟原始数据有投影坐标系定义,以及目标空结构有坐标系定义造成的,进而可以想到ArcGIS软件,对Shape实际存储的坐标其实并不十分关心(针对坐标系统来讲),在调用ArcObjects接口转换时,可能内部调用了坐标系参数定义,并参与了坐标数据写入时的工作,没有查到详细的说明。突然发现Shapefile还是有用的,因为试过,在Personal Geodatabase和中File GeoDatabase删除投影定义,转换依然不正确。

所以,找到了问题,也知道怎么解决,但不知道具体原因,知其然,不知其所以然吧,但这并不影响我把这事做完,呵呵!

转载于:https://www.cnblogs.com/ampler/archive/2013/03/21/2972500.html

你可能感兴趣的文章
数据结构~二叉树
查看>>
PHP和.NET通用的加密解密函数类,均使用3DES加解密 .
查看>>
三生万物:决策树
查看>>
Javascript计算器(Calculator) 利用Javascript计算形如“(8*(2*(2+3)*2)*10)*10 ”表达式的值...
查看>>
java学习(二)对象与类
查看>>
win10去除快捷方式小箭头
查看>>
localStorage 存储
查看>>
KendoUI和wijmoUI 它们的Grid比较 20120423
查看>>
Centos服务器被挂马的一次抓马经历
查看>>
mysql数据库innobackupex热备
查看>>
Spring MVC 架构的java web工程如何添加登录过滤器
查看>>
返回一个整数数组中最大子数组的值(程序能处理1000个元素)
查看>>
[Android]如何判断屏幕是圆形的(手表设备)
查看>>
Dubbo Admin管理控制台
查看>>
单例模式
查看>>
SQL资料
查看>>
新浪微博的账号登录及api操作
查看>>
淘宝code
查看>>
机器学习-决策树
查看>>
内存池技术畅想
查看>>