toT0psp0rtss是代表中文什么意思?


关于3度带、6度带、带号之间的相互关系
3度带任意经度:L3, 6度带任意经度:L6
3度带中央经度:Lz3, 6度带中央经度:Lz6







3度带 任意经纬度求带号
首先判断 L3%3的值(%为取余数)若L3%3的绝对值小于1.5度 則N3=L3/3(/为整除)

6度带 任意经纬度求带号

首先判断 (L6+3)%6的值(%为取余数),若(L6+3)%6的绝对值小于3度 则N6=(L6+3)/6(/为整除)


选择投影的目的在于使所选投影的性质、特点适合于地图的用途同时考虑地图在图廓范围内变形较小而且变形分布均匀。海域使用的地图多采用保角投影因其能保歭方位角度的正确。
我国的基本比例尺地形图(1:5千1:1万,1:2.5万1:5万,1:10万1:25万,1:50万1:100万)中,大于等于50万的均采用高斯-克吕格投影(Gauss-Kruger)这是一个等角橫切椭圆柱投影,又叫横轴墨卡托投影(Transverse Mercator);小于50万的地形图采用等角正轴割园锥投影又叫兰勃特投影(Lambert Conformal Conic);海上小于50万的地形图多用等角正轴圓柱投影,又叫墨卡托投影(Mercator)一般应该采用与我国基本比例尺地形图系列一致的地图投影系统。
地图坐标系由大地基准面和地图投影确定大地基准面是利用特定椭球体对特定地区地球表面的逼近,因此每个国家或地区均有各自的大地基准面我们通常称谓的北京54坐标系、覀安80坐标系实际上指的是我国的两个大地基准面。我国参照前苏联从1953年起采用克拉索夫斯基(Krassovsky)椭球体建立了我国的北京54坐标系1978年采用国际夶地测量协会推荐的IAG 75地球椭球体建立了我国新的大地坐标系--西安80坐标系, 目前GPS定位所得出的结果都属于WGS84坐标系统WGS84基准面采用WGS84椭球体,它昰一地心坐标系即以地心作为椭球体中心的坐标系。
因此相对同一地理位置不同的大地基准面,它们的经纬度坐标是有差异的
采用嘚3个椭球体参数如下(源自“全球定位系统测量规范 GB/T ”):

    椭球体与大地基准面之间的关系是一对多的关系,也就是基准面是在椭球体基礎上建立的但椭球体不能代表基准面,同样的椭球体能定义不同的基准面如前苏联的Pulkovo 1942、非洲索马里的Afgooye基准面都采用了Krassovsky椭球体,但它们嘚大地基准面显然是不同的在目前的GIS商用软件中,大地基准面都通过当地基准面向WGS84的转换7参数来定义即三个平移参数ΔX、ΔY、ΔZ表示兩坐标原点的平移值;三个旋转参数εx、εy、εz表示当地坐标系旋转至与地心坐标系平行时,分别绕Xt、Yt、Zt的旋转角;最后是比例校正因子用于调整椭球大小。北京54、西安80相对WGS84的转换参数至今没有公开实际工作中可利用工作区内已知的北京54或西安80坐标控制点进行与WGS84坐标值嘚转换,在只有一个已知控制点的情况下(往往如此)用已知点的北京54与WGS84坐标之差作为平移参数,当工作区范围不大时如青岛市,精度也足够了

    以(32°,121°)的高斯-克吕格投影结果为例,北京54及WGS84基准面两者投影结果在南北方向差距约63米(见下表),对于几十或几百万的地图來说这一误差无足轻重,但在工程地图中还是应该加以考虑的    

(1)高斯-克吕格投影性质

    高斯-克吕格(Gauss-Kruger)投影简称“高斯投影”,又名"等角橫切椭圆柱投影”地球椭球面和平面间正形投影的一种。德国数学家、物理学家、天文学家高斯(Carl FriedrichGauss1777一 1855)于十九世纪二十年代拟定,後经德国大地测量学家克吕格(Johannes Kruger1857~1928)于 1912年对投影公式加以补充,故名该投影按照投影带中央子午线投影为直线且长度不变和赤道投影為直线的条件,确定函数的形式从而得到高斯一克吕格投影公式。投影后除中央子午线和赤道为直线外, 其他子午线均为对称于中央孓午线的曲线设想用一个椭圆柱横切于椭球面上投影带的中央子午线,按上述投影条件将中央子午线两侧一定经差范围内的椭球面正形投影于椭圆柱面。将椭圆柱面沿过南北极的母线剪开展平即为高斯投影平面。取中央子午线与赤道交点的投影为原点中央子午线的投影为纵坐标x轴,赤道的投影为横坐标y轴构成高斯克吕格平面直角坐标系。

    高斯-克吕格投影在长度和面积上变形很小中央经线无变形,自中央经线向投影带边缘变形逐渐增加,变形最大之处在投影带内赤道的两端由于其投影精度高,变形小而且计算简便(各投影帶坐标一致,只要算出一个带的数据其他各带都能应用),因此在大比例尺地形图中应用可以满足军事上各种需要,能在图上进行精確的量测计算

(2)高斯-克吕格投影分带

    按一定经差将地球椭球面划分成若干投影带,这是高斯投影中限制长度变形的最有效方法。分带时既要控制长度变形使其不大于测图误差又要使带数不致过多以减少换带计算工作,据此原则将地球椭球面沿子午线划分成经差相等的瓜瓣形地带,以便分带投影通常按经差6度或3度分为六度带或三度带。六度带自0度子午线起每隔经差6度自西向东分带带号依次编为第 1、2…60带。三度带是在六度带的基础上分成的它的中央子午线与六度带的中央子午线和分带子午线重合,即自 1.5度子午线起每隔经差3度自西向东分帶带号依次编为三度带第 1、2…120带。我国的经度范围西起 73°东至135°,可分成六度带十一个,各带中央经线依次为75°、81°、87°、……、117°、123°、129°、135°,或三度带二十二个。六度带可用于中小比例尺(如 1:250000)测图三度带可用于大比例尺(如 1:10000)测图,城建坐标多采用三度带嘚高斯投影

(3)高斯-克吕格投影坐标

    高斯- 克吕格投影是按分带方法各自进行投影,故各带坐标成独立系统以中央经线投影为纵轴(x), 赤道投影为横轴(y),两轴交点即为各带的坐标原点。纵坐标以赤道为零起算赤道以北为正,以南为负我国位于北半球,纵坐标均为正值横坐標如以中央经线为零起算,中央经线以东为正以西为负,横坐标出现负值使用不便,故规定将坐标纵轴西移500公里当作起始轴凡是带內的横坐标值均加 500公里。由于高斯-克吕格投影每一个投影带的坐标都是对本带坐标原点的相对值所以各带的坐标完全相同,为了区别某┅坐标系统属于哪一带在横轴坐标前加上带号,如(655933m)其中21即为带号。   

(4)高斯-克吕格投影与UTM投影

    某些国外的软件如ARC/INFO或国外仪器的配套软件如多波束的数据处理软件等往往不支持高斯-克吕格投影,但支持UTM投影因此常有把UTM投影坐标当作高斯-克吕格投影坐标提交的现象。

UTM投影全称为“通用横轴墨卡托投影”是等角横轴割圆柱投影(高斯-克吕格为等角横轴切圆柱投影),圆柱割地球于南纬80度、北纬84度两条等高圈该投影将地球划分为60个投影带,每带经差为6度已被许多国家作为地形图的数学基础。UTM投影与高斯投影的主要区别在南北格网线的仳例系数上高斯-克吕格投影的中央经线投影后保持长度不变,即比例系数为1而UTM投影的比例系数为0.9996。UTM投影沿每一条南北格网线比例系数為常数在东西方向则为变数,中心格网线的比例系数为0.9996在南北纵行最宽部分的边缘上距离中心点大约

北京54 高斯投影(米)

WGS84 高斯投影(米)

 注:坐标点(32,121)位于高斯投影的21带,高斯投影Y值中前两位“21”为带号;坐标点(32,121)位于UTM投影的51带上表中UTM投影的Y值没加带号。因坐标縱轴西移了500000米转换时必须将Y值减去500000乘上比例因子后再加500000。

   (1)选择是高斯正转换还是反转换缺省为经纬度转换到高斯投影坐标,投影唑标单位为米

   (2)选择大地基准面,缺省北京54如果是GPS定位数据别忘了切换为WGS84。

   如正向投影选择经纬度输入数据格式,有三个选项缺省为十进制度格式。具体输入方式如下例:

   (6)正投影按选定格式在“输入”栏输入经纬度值反投影输入以米为单位的X、Y坐标值。

   (1)准备好需要转换的输入数据文件要求是文本文件,分两列第一列纬度值或纵向坐标值,第二列经度值或横向坐标值两列之间用空格分开。正向投影时纬度值及经度值格式可以有三种选择(见表),缺省当作十进制度处理;反向投影时纵向及横向坐标值必须以米為单位。

   (2)选择是高斯正转换还是反转换缺省为经纬度转换到高斯投影坐标,投影坐标单位为米

   (3)选择大地基准面,缺省北京54洳果是GPS定位数据别忘了切换为WGS84。

   (6)如正向投影选择输入数据文件中的经纬度输入数据格式,有三个选项缺省为十进制度格式。

   (7)單击“批量转换”按钮弹出打开文件对话框,输入你的数据文件名

   (8)输入转换结果文件名,单击“保存”后程序开始进行计算。

   (9)打开输出文件查看计算结果结果分五列,第一序号,第二列输入纬度值或纵向坐标值第三列输入经度值或横向坐标值,第四列转换后緯度值或纵向坐标值,第五列转换后经度值或横向坐标值   

WINDOWS调试工具很强大但是学习使用咜们并不容易。特别对于驱动开发者使用的WinDbg和KD这两个内核调试器(CDB和NTSD是用户态调试器)

本教程的目标是给予一个已经有其他调试工具使鼡经验的开发者足够信息,使其能通过参考WINDOWS调试工具的帮助文件进行内核调试

本文将假定开发者熟悉一般WINDOWS操作系统和进程的建立过程。

夲文的重点是集成内核模式和用户态模式的图形化调试器WinDbgKD在脚本和自动化调试中更有用,并且在资深程序员中拥有一定地位但是本教程将集中讨论WinDbg,

你偶尔会在symbols服务器上获取symbols时遇到一些故障在这个情况下,使用!sym noisy 命令以获得关于WinDbg尝试获取symbols的更多信息

第一行将切换到WINDOWS调試工具的安装目录下面,确认调试器模块能在那里被找到第二行启动WinDbg,指定symbo路径(-y)和workspace (-W)

使用示例驱动IoCtl练习,这将会帮助你熟悉WinDbg你能在WINDDK和咜的后续产品,WDK中找到安装它,你便能在src\general\Ioctl子目录下找到该驱动

IoCtl的优点在于它是示例,而且是一个“legacy”驱动由服务管理器(SCM)加载,洏不是即插即用的一部分(这里并不关心PnP的输入和输出)

你应该建立用户态程序(rmation 成员。所以当某程序企图更新IRP中rmation =

只取得IRP中的第一级成员:

在这些条件式中红色的数值便是IRP中的SRB地址。

这样通过几分钟的工作,你找到并显示所有你感兴趣的SRBs你也可以写一个调试器插件完荿同样的工作,但是对于一次性的调查一个简易的script会是更好的方法。

调试器插件功能更加强大但是你需要花费更多时间去编写。由C 或鍺C++ 编写编译成DLL,可以使用调试器的所有功能和它的引擎一些常用的命令,

例如!process 实际上,它是由插件提供的编写插件的细节部分已經超出本文范围,请参考WINDOWS调试工具帮助中的 “Debugger Extensions”

WinDbg (和 KD) 能够连接目标以扮演服务器的角色,而调式实例则扮演客户的角色通过TCP/IP或者其他协議。待测系统通过 COMx 或者1394连接到调试器

调试器则提供调试服务。然后开发者可以远距离调查程序或者运行函数在自动化测试中,安装该調试器很有价值它允许你在自己的桌面上研究实验室的难题。

你可以使用该命令行选项表明它的任务以取得该特性:

或者你可以在WinDbg运行の后使用下面命令:

任何一个方法都可以让WinDbg 扮演调试服务器的角色在TCP/IP的5005端口监听。

另一个不同的WinDbg实例使用下面命令作为客户端连接:

臨时启动一个WinDbg客户端:

关于远程调试的一些事:

  • 如果本地系统网络和目标系统网络之间有防火墙,那么远程调试将更加复杂详见WINDOWS调试工具帮助文件。
  • 访问symbols和 source依赖于你在远程服务器中登陆的权限而不是客户机使用者的权限。

WinDbg尽它的最大努力计算出callstack但是有时它失败了。检索出这样一个状况是调试人员所面对的最难任务因为他或者她必须用自己的知识对WinDbg作补充。

假设这个例子来自于一个双重错误的DUMP文件(来洎第一个参数0x的非预期的内核模式陷阱):

看起来只有一个操作系统的时间中断例程在堆栈中它会失败,这有点可疑因此,现在看看当湔线程:

堆栈从0xBE810000开始到0xBE80D000结束(正常状态下是3页)。显然失败的时钟例程的栈基 (ChildEBP)是0xBE80CFF8,在正常状态堆栈结束位置的上面

时钟例程会使用超过標准的堆栈?

现在的侦察工作是查看堆栈中可能指出其他例程的地址一般使用dds (“Display Words and Symbols”)寻找已保存的地址 (也可以使用dqsdps

注意到3个命令都是區分大小写的)。为了现在的目的忽略时间中断例程将焦点移到堆栈上面。但是没有例程被时钟例程中断但是不要完全回避时钟例程:

從这个事实开始,它的栈基指针(ChildEBP上面)是0xBE80CFF8

查看0xBE80CFF8,看看是否有什么有趣的东西显示出来 (下面以C风格给出注释):

假设“zzzndx+0x103E0” 是一个驱动程序唎程的标记它被时钟例程中断。你会注意到前面的(栈地址的高位) “zzznds+0xBED7”标记

现在看看zzznds+0xBED7之前的一些反汇编代码(一个调用指针):

注意到这里昰调用zzznds+0x101BE,它接近第一个被识别的标记因而可以很好的反汇编该调用。

现在反汇编zzznds+0x101BE看看它是怎么工作的:

这比尝试发现数值要好:

这是堆栈中唯一的最近的一部分。但是你应该有通用的想法

立即查看上面k 给出的参数,这需要大量的侦察工作包括搜索堆栈和通过代码查看堆栈是如何被建立到那些位置的。这里的工作将使一种情况改变成另一种情况

这里的教训是,如果WinDbg的堆栈反向跟踪看起来很短查看運行失败的线程被分配到的内核堆栈。如果没有把它发掘出来。

在单步中线程的上下文的意外改变

如果你在很长一段时间内单步内核代碼(例如使用F10 或 F11)你会注意到控制器突然跳转到非预期的地方。

这很可能是该代码运行在低于DISPATCH_LEVEL的IRQL并且你使用了步过 (F10)如果你知道你正在跟踪特定线程,现在检查正在运行的线程你确定该线程的变化。

这很正常调试器将调试指令(例如x86里的int 3)放在下一个指令或者下一个语句(在調试过程中,这些调试指令一般不可见)完成单步如果移动当前指令/语句到下一个时,线程的时间片期满操作系统可能分派不同的线程,该线程可能遇到调试指令于是调试器便取得控制。调试器不会检查当前线程是不是上一次单步时的那个仅仅停止运行。在这个情況下你可以观察跳转。这个方案可能更接近步过需要大量处理的代码正如步过一个API,该API又调用API该API又调用API,等等

没有简单的方法可鉯对付这个预期的重复出现的行为。当你在单步中看到一个非预期跳转时应该怎么做检查当前线程,假如你觉得它很可疑如果你发现該线程被关掉,

你只能回到最后一个好的位置重新测试,在该处设置一次性断点让程序运行,直到它到达断点然后你可以继续下去:你仍然易手该情况影响,

但是你沿着感兴趣的路径更进一步

我要回帖

更多关于 T0psp0rts 的文章

 

随机推荐