登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
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。
- private void jMenuItem_LambertActionPerformed(java.awt.event.ActionEvent evt) {
- // TODO add your handling code here:
- String projStr = "+proj=lcc"
- + "+lat_1=30"
- + "+lat_2=60"
- + "+lat_0=0"
- + "+lon_0=110"
- + "+x_0=0"
- + "+y_0=0";
- ProjectionInfo aProjInfo = new ProjectionInfo(projStr);
- layersLegend1.getActiveMapFrame().getMapView().projectLayers(aProjInfo);
- }
调试结果如下:
显示经纬线的代码如下:
- private void jMenuItem_ShowLongLatActionPerformed(java.awt.event.ActionEvent evt) {
- // TODO add your handling code here:
- this.jMenuItem_ShowLongLat.setSelected(!this.jMenuItem_ShowLongLat.isSelected());
- layersLegend1.getActiveMapFrame().getMapView().setDrawGridLine(this.jMenuItem_ShowLongLat.isSelected());
- layersLegend1.getActiveMapFrame().getMapView().paintLayers();
- }
调试结果如下:
返回经纬度投影的代码如下:
- private void jMenuItem_LongLatActionPerformed(java.awt.event.ActionEvent evt) {
- // TODO add your handling code here:
- ProjectionInfo aProjInfo = KnownCoordinateSystems.geographic.world.WGS1984;
- layersLegend1.getActiveMapFrame().getMapView().projectLayers(aProjInfo);
- }
调试结果如下:
|