📄 处理说明.txt
字号:
一、运行环境:
1、实现的代码是MFC对话框程序。
2、在程序中使用了若干MFC类。如CString等。但大部分用stl实现。
3、程序使用了AO作为开发底层,代码量显著减少。必须在ArcGIS8.3以上环境下运行。
即必须安装有ArcGIS8.3或9.0等Destop环境。底层支持库esriCore.olb是ArcGIS8.3的运行库.
二、数据处理:
1、先将数据转出
将TAB数据输出为Shape数据,POI点的数据需要经过TAB-E00-Shape的过程。如果直接TAB-Shape要素的几何类型会由Point-MultiPoint。是不合适的
2、数据进行投影
坐标系统选择与处理:
由于北京54、西安80相对WGS84的转换参数没有公开,实际工作中可利用工作区内已知的
北京54或西安80坐标控制点进行与WGS84坐标值的转换,在只有一个已知控制点的情况下(往往如此),可以采取简易变换。
没有控制点的任何资料时,只能采取变通办法.
采取的办法:
假设需要查询的数据为GPS采集的经纬度,大地基准为WGS84(这个假设基本成立),
同时假设已有的地形图数据经纬度的打的基准亦为WGS84,进行UTM投影。在高斯投影面上进行距离计算。
但这个假设不太可能成立,如果地形图数据的打的基准是北京54坐标系、西安80坐标系。这样计算的坐标会有几十米到100米的偏差。
但是距离偏差不会很大。所以不影响应用效果。
下面是参数设置,可以以我已经处理完了的数据作为模板,设定投影,再进行数据投影。
椭球体 长半轴 短半轴
WGS 84 6378137 6356752.3142
采用的坐标系统为:
WGS_1984_UTM_Zone_50N
Projection: Transverse_Mercator
Parameters:
False_Easting: 500000.000000
False_Northing: 0.000000
Central_Meridian: 117.000000
Scale_Factor: 0.999600
Latitude_Of_Origin: 0.000000
Linear Unit: Meter (1.000000)
Geographic Coordinate System:
Name: GCS_WGS_1984
Alias:
Abbreviation:
Remarks:
Angular Unit: Degree (0.017453292519943299)
Prime Meridian: Greenwich (0.000000000000000000)
Datum: D_WGS_1984
Spheroid: WGS_1984
Semimajor Axis: 6378137.000000000000000000
Semiminor Axis: 6356752.314245179300000000
Inverse Flattening: 298.257223563000030000
坐标的对应关系大致为:
北京房山区加油站“长阳”
(116.213,39.8026)---(432648.8463,4406151.439)
三、实现的需求及问题:
给定十进制的经纬度(来自GPS,为WGS84坐标系统经纬度),
1)可以查询距离该点最近的POI点(可以附带SQL查询条件)
2)可以查询距离该点最近的街道(可以附带SQL查询条件)
返回值可以有多条,参照代码
问题1:由于街道道路的几何图形有可能有多条平行线,如二环路表现为双线路,查询的结果有两条或更多条二环路,且距离查询点有不同的距离。
处理方法,要么编辑数据,使得道路等成单线,要么修改代码,使得同名的道路只返回一条。
问题2:不管查询POI或道路的名称是否为空,均被查询到并返回。是不符合使用逻辑的。
处理方法,要么处理数据,添加名称。要么处理代码,过滤掉空名称要素。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -