默认头像
外卖仔
外卖仔
  • 注册日期2005-07-19
  • 发帖数31
  • QQ
  • 铜币224枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1855回复:3

+---》ArcEngine坐标转换的问题《---+(page to map)

楼主#
更多 发布于:2005-08-05 21:22

ArcEngine坐标转换的问题(page to map)
最近用java写程序需要把用在pagelayout上画的grid定位一些要素,
应此需要把pagelayout上的坐标转到map上,可是死活不成功,请大家帮忙想想办法~
先谢谢啦~

IDisplayTransformation pageTransformation = getPageLayout().getActiveView().getScreenDisplay().getDisplayTransformation();
IDisplayTransformation mapTransformation =getMapCtrl().getActiveView().getScreenDisplay().getDisplayTransformation();

 // IGeometry tempGeo=null;
 IEnvelope tempEnv = new Envelope();
 
 
 tagRECT tempRECT = new tagRECT();

 pageTransformation.transformRect(
       tempEnv,
       tempRECT,
       
       esriDisplayTransformationEnum.esriTransformToDevice+
       esriDisplayTransformationEnum.esriTransformPosition
         );
 
 mapTransformation
     .transformRect(
       tempEnv,
       tempRECT,
       esriDisplayTransformationEnum.esriTransformToMap+
       esriDisplayTransformationEnum.esriTransformPosition
        );
 
转换失败的表现:tempEnv最后被转成map坐标上的一个 点 (应该是一个矩形啊)
tempRECT始终没有用(top=0,bottom=0,left=0,right=0).
我的java也不熟,感觉是tempRECT没有被返回,在C++中可以传地址(;tempRECT),java
中因为tempRECT是class应该直觉就是传引用啊?想不通,会不会像c#一样有ref和out之类的keyword?
请gis高手和各位java达人帮忙想想~再次感谢~!

[此贴子已经被作者于2005-8-5 21:39:50编辑过]
喜欢0 评分0
我的blog: http://my.opera.com/VonPower/ 欢迎对: GIS、智能交通、AE——AO开发、JAVA技术、。NET技术、设计模式、软件工程等感兴趣的同学 加入QQ群:10537919 一起努力吧~
默认头像
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2005-08-16 09:57

你直接转换点坐标,再组成envelop,查询地图就可以

JH_ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y)

GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
默认头像
外卖仔
外卖仔
  • 注册日期2005-07-19
  • 发帖数31
  • QQ
  • 铜币224枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2005-08-12 22:08

还没有人回答吗~看来我只有想其他办法啦~

我的blog: http://my.opera.com/VonPower/ 欢迎对: GIS、智能交通、AE——AO开发、JAVA技术、。NET技术、设计模式、软件工程等感兴趣的同学 加入QQ群:10537919 一起努力吧~
举报 回复(0) 喜欢(0)     评分
默认头像
外卖仔
外卖仔
  • 注册日期2005-07-19
  • 发帖数31
  • QQ
  • 铜币224枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2005-08-05 21:38

上面的代码颜色太亮,各位大侠可以看下面的:

我是看VB的例子写的java代码,下面蓝色的部分会不会有什么问题呢?

IDisplayTransformation pageTransformation = getPageLayout().getActiveView().getScreenDisplay().getDisplayTransformation();
IDisplayTransformation mapTransformation =getMapCtrl().getActiveView().getScreenDisplay().getDisplayTransformation();

 // IGeometry tempGeo=null;
 IEnvelope tempEnv = new Envelope();
 
 
 tagRECT tempRECT = new tagRECT();

 pageTransformation.transformRect(
       tempEnv,
       tempRECT,
       
       esriDisplayTransformationEnum.esriTransformToDevice+
       esriDisplayTransformationEnum.esriTransformPosition
         );
 
 mapTransformation
     .transformRect(
       tempEnv,
       tempRECT,
       esriDisplayTransformationEnum.esriTransformToMap+
       esriDisplayTransformationEnum.esriTransformPosition
        );

我的blog: http://my.opera.com/VonPower/ 欢迎对: GIS、智能交通、AE——AO开发、JAVA技术、。NET技术、设计模式、软件工程等感兴趣的同学 加入QQ群:10537919 一起努力吧~
举报 回复(0) 喜欢(0)     评分
默认头像

返回顶部