爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4001|回复: 1

MeteoInfo Java版二次开发教程八

[复制链接]

新浪微博达人勋

发表于 2013-11-4 15:42:23 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 ycjtj1dx202ly 于 2013-11-4 15:42 编辑

此次教程实现投影的功能。因为投影的代码是从Proj4移植来的,投影之间的转换需要设置Proj4的投影字符串。比如Lambert Conformal投影表述为:            

              +proj=lcc
              +lat_1=Latitude of first standard parallel
              +lat_2=Latitude of second standard parallel
              +lat_0=Latitude of false origin
              +lon_0=Longitude of false origin
              +x_0=False Origin Easting
              +y_0=False Origin Northing
具体的设置可以看Proj4的帮助文档,一些网页上也有描述,如: http://remotesensing.org/geotiff/proj_list/
MeteoInfo类库中对地图投影功能进行了封装,只需要用MapView类中的ProjectLayers(ProjectionInfo toProjInfo)即可。ProjectionInfo类可以由Proj4投影字符串来创建。
在Demo程序中添加一个Lambert投影的菜单,加入如下代码,参数为中心经度为110,双标准维度是30和60。

  1.     private void jMenuItem_LambertActionPerformed(java.awt.event.ActionEvent evt) {                                                  
  2.         // TODO add your handling code here:
  3.         String projStr = "+proj=lcc"
  4.                 + "+lat_1=30"
  5.                 + "+lat_2=60"
  6.                 + "+lat_0=0"
  7.                 + "+lon_0=110"
  8.                 + "+x_0=0"
  9.                 + "+y_0=0";
  10.         ProjectionInfo aProjInfo = new ProjectionInfo(projStr);
  11.         layersLegend1.getActiveMapFrame().getMapView().projectLayers(aProjInfo);
  12.     }


调试结果如下:

1.png

显示经纬线的代码如下:

  1.     private void jMenuItem_ShowLongLatActionPerformed(java.awt.event.ActionEvent evt) {                                                      
  2.         // TODO add your handling code here:
  3.         this.jMenuItem_ShowLongLat.setSelected(!this.jMenuItem_ShowLongLat.isSelected());
  4.         layersLegend1.getActiveMapFrame().getMapView().setDrawGridLine(this.jMenuItem_ShowLongLat.isSelected());
  5.         layersLegend1.getActiveMapFrame().getMapView().paintLayers();
  6.     }


调试结果如下:

2.png

返回经纬度投影的代码如下:

  1.     private void jMenuItem_LongLatActionPerformed(java.awt.event.ActionEvent evt) {                                                  
  2.         // TODO add your handling code here:
  3.         ProjectionInfo aProjInfo = KnownCoordinateSystems.geographic.world.WGS1984;
  4.         layersLegend1.getActiveMapFrame().getMapView().projectLayers(aProjInfo);
  5.     }


调试结果如下:

3.png




密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-6-20 16:49:37 | 显示全部楼层
本科生学习中
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表