前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从MapX到MapXtreme2004[11]-坐标概论

从MapX到MapXtreme2004[11]-坐标概论

作者头像
用户1075292
发布2018-01-23 10:28:37
6640
发布2018-01-23 10:28:37
举报
文章被收录于专栏:听雨堂听雨堂

        坐标的问题是Mapxtreme中最郁闷的问题,前几天在这上面耗了很多时间,没有搞定,今天又是不得不钻研,还好,小有心得。         1、分类:                 1)图层的坐标:或者说图元的坐标,只能通过ftr.Geometry.CoordSys来获得坐标系的信息(通过图层无法获得坐标系的信息,我试过很多次反正没成功。有时不得不采用一个笨办法,先查出一个图元,再通过该图元访问坐标系)。我碰到的大多是横轴墨卡托(也许跟从MapGis转换过来有关),单位是米(通过CoordSys.units获得)。因而,通过ftr.Geometry取得的坐标,都是这个坐标系下的。                 2)图的显示坐标:我理解这是整体的坐标系(我用的是GeoSet),因为我一般都事先设成经纬度,而它们也都是经纬度。访问方法:Map.GetDisplayCoordSys()。单位degree。                 显示坐标和图元坐标之间的转换,通过CoordinateTransform来完成。代码示例:

    CoordinateTransform dtf=new CoordinateTransform(ftr.Geometry.CoordSys,MapControl1.Map.GetDisplayCoordSys());
    DPoint dp2=dtf.CoordSys1ToCoordSys2(ftr.Geometry.Centroid);

               上面是从图元坐标(米为单位)向显示坐标转换(度为单位)。                 3)屏幕坐标:象素为单位的屏幕坐标,不用多说,但问题也很多,最突出的就是转换。可以通过Map.DisplayTransform.ToDisplayFromDisplay来进行。但是必须注意,DPoint坐标(显示坐标)必须是显示坐标,不能是图元坐标。上次吃亏就在这儿,每次都是把ftr.Geometry.centrelid去转换,转出来全是溢出值!                 CoordSys本身有几个静态的转换函数,但似乎都没啥用处,只能换算一下公制英制之类的。         2、其它的结论                 1)同一组地图中的不同图层,其中的图元坐标基本相同。(经过取点,转换成显示坐标,再转换成另一层坐标,误差仅为0.01m级别)                 太多了,坐标转换,长度计算,查询...                                 咳,每个字得来都太不容易了!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2005-11-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档