b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

arcgis engine_mapxtreme_mapxtreme在vs里怎么用

电脑杂谈  发布时间:2017-01-24 05:02:12  来源:网络整理

arcgis engine_mapxtreme_mapxtreme在vs里怎么用

mapxtreme

使用OpenLayers以切片方式调用mapxtremejava渲染出的地图遇到的问题

---无法根据坐标范围获取精确范围的地图图片

想要达到的目的:使用OpenLayers以切片方式调用mapxtremejava渲染出的地图

环境:mapxtreme java 4.8.1 + apache tomcat5.5 + OpenLayers

具体情况:使用MapXtreme JA根据坐标范围渲染地图时,渲染出来地图的范围与程序Set进去的坐标范围不一致。这就导致以切片形式请求的地图不能正常显示。

图1:正常情况下mapxtreme显示的地图(singleTile=true)

图2:以切片形式请求返回的地图

图3:以切片形式请求返回的地图放大后

从上图可以看出切片地图的拼接出了问题,不能按正常情况显示,我开始检查自己写的代码,一行一行跟代码。

最终发现问题的所在,原来是mapxtreme对客户端的请求参数做了处理,它优化了客户端传进去的坐标范围,基本上我们无法获取我们想要的坐标范围的地图。

比如我们以坐标范围(45.0, 22.5, 67.5, 45.0)请求一张256*256像素大小的地图时,它使用坐标范围(37.06172554402468, 22.499855126681798, 78.20303563112182, 45.00029952050648)来渲染一张256*256的地图图片,也就是说mapxtreme java返回的图片对应的坐标范围包含了你请求的坐标范围,所有在使用OpenLayers进行请求时返回了无确组合的地图。

产生这种情况的可能原因:

1、这是mapxtreme对地图显示的优化。Mapxtreme java这样设计的初衷可能是以更友好的方式显示地图,防止用户请求的图片扭曲。mapxtreme

mapxtreme在vs里怎么用_arcgis engine_mapxtreme

2、Mapxtreme java 在进行屏幕坐标与地理坐标转换的时候没有做到精确,从而影响了地图的输出。

个人认为时第一种原因可能性最大。至于第二种原因,如果mapinfo公司(现在应该是PB了)连屏幕坐标与地理坐标的转换都做不精确的话,那么mapinfo这个品牌也就该快退出GIS舞台了。

对应的参数值由servlet请求提供(这里没有贴出异常处理代码)

MapJ myMap = new MapJ();

myMap.loadMapDefinition(D:/temp/world.mdf);

System.out.println("User setBounds:" + new DoubleRect(x1, y1, x2, y2));

myMap.setBounds(new DoubleRect(x1, y1, x2, y2));

System.out.println("after setBounds: " + myMap.getBounds());

System.out.println("---------------------------------------");

myMap.setDeviceBounds(new DoubleRect(0, 0, width, height));

BufferedImage buffimg = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-28432-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...