蓝色为地理坐标系XOY,记为坐标系A;黄色为屏幕坐标系xoy,记为坐标系B。地图的左下角点为(X0,Y0)可很容易的平移到坐标原点。因此这里只考虑地图位于坐标原点的情况,如图二也记为坐标系A。

设地理坐标系X’OY’中任意一点为A(X1,Y1),对应于屏幕坐标系B中的点A’为a(x1,y1);

屏幕坐标以像素为单位,地理坐标以米为单位,两者之间存在固定的比例关系。屏幕高度为H。假设1像素对应1m,此时缩放比例Zoom=1。

可以建立简单的关系:

(1)如图三,认为两个坐标系固定,首先在屏幕坐标系将所有的地图左下角移动到屏幕中心(W/2,H/2)。平移向量(W/2,-H/2),此时A点屏幕坐标系坐标:

(2)以某屏幕一点B(x2,y2)为中心放大,首先屏幕坐标B点对应的屏幕坐标为

则将地图B点平移到屏幕原点(平移向量(,))后再平移到中心(平移向量(W/2,H/2))后放大。

(3)接着再平移以某屏幕一点C(x3,y3)中心放大

依次…

OpenS-CAD通过panOffset来标识设置了屏幕中心后地图坐标需要偏移的值(以屏幕坐标记)。对应(2)中的,当然也对应(3)中的。

[OpenS-CAD]屏幕坐标转换分析的更多相关文章

  1. 获取屏幕中某个点的RGB值与CAD屏幕像素值

    '获取CAD屏幕像素的比值 Function ViewScreen() As Double Dim ScreenSize As Variant ScreenSize = ThisDrawing.Get ...

  2. CAD图与互联网地图网页端相互叠加显示技术分析和实现

    需求分析 之前相关的博文中介绍了如果在Web网页端展示CAD图形(唯杰地图云端图纸管理平台 https://vjmap.com/app/cloud),当一些CAD图纸有实际地理坐标位置时,如地形图等, ...

  3. [SharpMap] 屏幕坐标和Map坐标转换

    1. SharpMap中屏幕坐标和地图Map坐标转换: using System.Drawing; using GeoAPI.Geometries; namespace SharpMap.Utilit ...

  4. Unity Ugui射线坐标转换总结

    世界空间中的点坐标转换到屏幕坐标: screenPos = RectTransformUtility.WorldToScreenPoint(cam, worldPos.transform.positi ...

  5. ScreenToGif 代码分析

    ScreenToGif项目由四个文件夹组成: Files 存放协议文件 GifRecorder 存放gif编码器代码 ScreenToGif 存放主代码 Other 存放Hooktest和Transl ...

  6. Unity_屏幕/Viewport/世界坐标的转换

    Unity_屏幕/Viewport/世界/UI坐标的转换 参考: https://www.jianshu.com/p/b5b6ac9ab145 -- 世界.视口.屏幕坐标转换 https://docs ...

  7. PIE SDK屏幕坐标和地图坐标转换

    1. 功能简介 屏幕坐标和地图坐标转换,就是字面意思,将电脑屏幕的坐标转换为带有空间信息的地图坐标,主要运用PIE SDK地图控件的ToMapPoint()方法,而地图坐标转换为设备坐标(屏幕),用的 ...

  8. Cocos2d-x v3.6制作射箭游戏(二)

    原文 Cocos2d-x v3.6制作射箭游戏(二) 六 24, 2015by RENSHANin COCOS2D-X 上章我们创建并加载了游戏地图,接下来的两章我们将实现如下的效果. 在开始之前,先 ...

  9. ArcGIS Runtime for Android开发教程V2.0(4)基础篇---MapView

    原文地址: ArcGIS Runtime for Android开发教程V2.0(4)基础篇---MapView - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http:/ ...

随机推荐

  1. node系列:琐碎备忘

    cmd 全局与本地路径 查看:默认 查看本地路径:npm config get cache,默认和nodejs安装目录同一目录 查看全局路径:npm config get prefix,默认c盘app ...

  2. The content of element type "configuration" must match "(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?...

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC & ...

  3. 分布式缓存(Cache)

    1. 单层分布式cache. 如memcache. 2. 多层分布式cache. 服务端和调用者本地都存放cache, 使用udp组播解决cache同步更新问题,但不可靠. 3. 改进的多层分布式ca ...

  4. HTML: margin詳解

    margin:10px; 設置塊元素的上,右,下,左方向的值同爲10px margin:10px 30px; 設置塊元素的上和下爲10px,左和右爲30px; margin:10px 20px 30p ...

  5. HTML: margin重疊現象的說明

    2句話: ①相鄰的兩個普通元素,上下邊距,不是簡單的相加,而是取邊距較大的元素(若相邻的两个普通兄弟元素,它们的margin 值是一样的,则各取两个元素的margin 值的一半.)②关系为父子的两个d ...

  6. 《Java程序设计》第2周学习总结

    20145317彭垚<Java程序设计>第2周学习总结 教材学习内容总结 类型 基本类型 整数(short.int.long) 字节(byte) 浮点数(float/double) 字符( ...

  7. 使用 Linux 搭建 VPN

    http://blog.csdn.net/catoop/article/details/7537012 VPN服务器的配置与应用 实验场景 通过将Linux配置VPN服务器允许远程计算机能够访问内网. ...

  8. P1083 借教室

    思路:前缀和, c表示对于当前的middle, 前缀和 #include <bits/stdc++.h> using namespace std; const int maxn = 1e6 ...

  9. P1090 合并果子

    #include <bits/stdc++.h> using namespace std; const int maxn = 10005; int main(int argc, char ...

  10. C#调用NPOI组件导出Excel表格

    把一个List集合的数据导出到Excel表格中 public static string RenderToExcel<T>(List<T> datas) { MemoryStr ...