先祝各位中秋快乐,祝在家过节的童鞋全家幸福,在外奔波的童鞋保重身体!最近在忙着做MapGIS二次开发的程序,中秋尽情休息了两天也懒得写东西了,与其挤牙膏似地挤出个“文囧”,还不如分享一段程序里的代码,说不定能给许多新学MapGIS二次开发的童鞋一点帮助。
这段程序主要是实现将当前打开的图件经过投影转换,转换成地理坐标系的图件,MapGIS自带的投影转换需要设置许多参数,并且批量转文件的时候只能一次性选择一个目录下的所有文件,不能跨目录的转换,很不方便,可以通过二次开发的方式自定义投影转换方式,各种参数自己设置,这样很多局限就消失了。这里以常用的转地理坐标系为例,看一下MapGIS二次开发中怎样进行投影转换。代码如下,注释已经很详细了,一看即懂:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | MAP_PARA *m_hMapTYCS; //MAP_PARA是一个包含详细地图参数的结构体 m_hMapTYCS = new MAP_PARA; //预设的投影转换后的参数值 m_hMapTYCS->unit = UNIT_DMS; //坐标单位设置为 度分秒 m_hMapTYCS->vUnit = UNIT_DMS; m_hMapTYCS->infoUnit = UNIT_DMS; m_hMapTYCS->rate = 1; //水平比例尺 m_hMapTYCS->vRate = 1; //垂直比例尺 m_hMapTYCS->mapw = 1; //图幅宽,这个参数不影响最终成图的 m_hMapTYCS->maph = 1; //图幅高,同上 m_hMapTYCS->jd0 = 0;//空间数据数据左下角经度 , 数据单位统一采用UNIT_DMS格式 m_hMapTYCS->wd0 = 0;//空间数据数据左下角纬度 , 数据单位统一采用UNIT_DMS格式 m_hMapTYCS->djd = 100;//空间数据数据经度跨度 , 数据单位统一采用UNIT_DMS格式 m_hMapTYCS->dwd = 100;//空间数据数据纬度跨度 , 数据单位统一采用UNIT_DMS格式 m_hMapTYCS->h = 0; //空间数据大地水准面与参考椭球面之间的高差 m_hMapTYCS->H = 0; //空间数据投影平面与大地水准面的高差 m_hMapTYCS->earthParam = EP_Xian80; //椭球参数设置为西安80 m_hMapTYCS->type = TYPE_JWD; //坐标系类型 地理坐标系 m_hMapTYCS->projType = PRJ_LonLat; //地理坐标系(经纬度) m_hMapTYCS->lon = 0; //投影原点经度 m_hMapTYCS->lat = 0; //投影原点纬度 m_hMapTYCS->dx = 0; //偏移X m_hMapTYCS->dy = 0; //偏移Y MAPPROJECT m_mapPrj=GetProject(); //获得当前打开的工程信息 for (int i=0; i<=2;i++) //1是点,0是线,2是区 { short *pIndex = _PRJGetFileIndexsByType(m_mapPrj,i);//文件的索引号数组 for (int j=0; j<pIndex[0]; j++) //pIndex[0]为工程中i类型文件的个数 { int iIndex = pIndex[j+1]; //某文件的索引号 int iAi = _PRJGetItemArea(m_mapPrj,iIndex); //某文件的工作区号 _ConvertArea(iAi,iAi,m_hMapTYCS,1,0,0);//在原工作区基础上上进行投影转换 } } delete m_hMapTYCS; //记得删除 m_hMapTYCS=NULL; _RestoreWindow(); //重置窗口 |
以上就是投影转换的关键代码,具体用在什么地方你可以自由发挥想象了,里边的参数都可以自行设置,具体地一些宏定义值请参看帮助文档,介绍很详细的。有问题的话欢迎在下边给我留言~~
PS:貌似首页被谷哥给K了,但其它页面收录是正常的,谁能告诉我究竟是什么原因呢?非常感谢!
不错啊,支持!
这个东西很高深!完全看不懂!
不错啊,很支持啊
呵呵,学习了,虽然现在用不到,不过今后还是可能有地方发挥吧!
PS:代码果然简单易懂,呵呵~~ 😀
@人好哇! 专业人员看这段代码肯定会觉得很简单的 呵呵~~写给新手看的
不过还是不明白是什么,没用过这个插件…要是有个截图就好了
@vino 地理信息系统相关的 大多数人应该用不到吧
我谷歌居然收录我1万多页!我一共写了200多篇日志!太照顾了!
@于泽鹏 应该是标签以及分类比较多吧?谷歌收录量确实很大的
曾经被百度君ban掉的飘过。。。
@Veezy 以后就不关心这些东西了,浮云啊浮云,打算换个域名好好写一种特定类型的文章
那个那个。。。看不懂,也不想看!不过偶是第一个给你捧场的! 😳
@么么? 不想看就去另一个博客上看去吧哈! 在那边抢到沙发太容易了