zoukankan      html  css  js  c++  java
  • sharpmap v2学习研究(三)

    先看看图像坐标和位置坐标的转换

    打开SharpMap.VS2010-->Utilities-->Transform.cs可以看到如下代码

    位置坐标和图像坐标转化代码
    1 /// <summary>
    2 /// 图像坐标和位置坐标的转换
    3 /// </summary>
    4 public class Transform
    5 {
    6 /// <summary>
    7 /// 位置坐标(WCS) to 转换到图像坐标。
    8 /// 注意: 该方法不能代替SharpMap.Map.MapToWorld方法
    9 /// </summary>
    10 /// <param name="p">x,y坐标</param>
    11 /// <param name="map">所在的地图</param>
    12 /// <returns>图像上的坐标</returns>
    13 public static PointF WorldtoMap(Point p, Map map)
    14 {
    15 //if (map.MapTransform != null && !map.MapTransform.IsIdentity)
    16 // map.MapTransform.TransformPoints(new System.Drawing.PointF[] { p });
    17 PointF result = new System.Drawing.Point();
    18 double Height = (map.Zoom*map.Size.Height)/map.Size.Width;
    19 double left = map.Center.X - map.Zoom*0.5;
    20 double top = map.Center.Y + Height*0.5*map.PixelAspectRatio;
    21 result.X = (float) ((p.X - left)/map.PixelWidth);
    22 result.Y = (float) ((top - p.Y)/map.PixelHeight);
    23 return result;
    24 }
    25
    26 /// <summary>
    27 /// 从图像坐标转化到位置坐标 (WCS).
    28 ///注意: 该方法不能代替SharpMap.Map.MapToWorld instead)
    29 /// </summary>
    30 /// <param name="p">图像中点的坐标</param>
    31 /// <param name="map">所在的地图</param>
    32 /// <returns>返回位置坐标x,y</returns>
    33 public static Point MapToWorld(PointF p, Map map)
    34 {
    35 //if (this.MapTransform != null && !this.MapTransform.IsIdentity)
    36 //{
    37 // System.Drawing.PointF[] p2 = new System.Drawing.PointF[] { p };
    38 // this.MapTransform.TransformPoints(new System.Drawing.PointF[] { p });
    39 // this.MapTransformInverted.TransformPoints(p2);
    40 // return Utilities.Transform.MapToWorld(p2[0], this);
    41 //}
    42 //else
    43 Point ul = new Point(map.Center.X - map.Zoom * .5, map.Center.Y + map.MapHeight * .5);
    44 return new Point(ul.X + p.X * map.PixelWidth,
    45 ul.Y - p.Y * map.PixelHeight);
    46 //BoundingBox env = map.Envelope;
    47 //return new Point(env.Min.X + p.X*map.PixelWidth,
    48 // env.Max.Y - p.Y*map.PixelHeight);
    49 }
    50 }

    现在分析一下

    WorldtoMap 方法是把位置的坐标转化为图像中的坐标。

    MapToWorld方法是把图像中的坐标转化为位置坐标系中。

  • 相关阅读:
    Android_存储访问框架SAF
    Android_基础之分辨率
    Android_存储之SharedPreferences
    Android_存储之DataBase之Room
    Android_AndroidX简介&Junit4
    Android_四大组件之ContentProvider
    Android_四大组件之BroadcastReceiver
    Android_四大组件之Service
    Android启动过程_大致流程
    福利来袭,赶紧上车!
  • 原文地址:https://www.cnblogs.com/sharpmap/p/1962014.html
Copyright © 2011-2022 走看看