精华内容
下载资源
问答
  • 地图的三个基本特征

    2020-05-19 22:44:55
    基本的特征是可量测性,包含三个方面: 地图投影、地图比例尺和地图定向; 使用超图桌面版打开一幅地图;这是自带京津地区地图; 比例尺在左下角,可切换; 看一下地图属性;有比例尺; 有坐标系统...

    GIS中地图就是按照一定的数字法则、运算符号系统,概括地将地图或其他星球的空间现象,以二维或多维、静态或动态可视化形式,综合概括、模型模拟等手段缩小表示在一定载体上,科学的反映出自然和社会经济现象的分布特征及其相互关系。

    地图有多个特征;最基本的特征是可量测性,包含三个方面:

        地图投影、地图比例尺和地图定向;

     

    使用超图桌面版打开一幅地图;这是自带的京津地区地图;

    比例尺在左下角,可切换;

     看一下地图属性;有比例尺;

    有坐标系统;这个就是投影;投影设置可切换;

    地图定向是通过什么来体现,一时还没想到;也许是通过经纬度;或者通过右上角的导航条,如图1;

    展开全文
  • 面向对象的4个基本特征 在上述面向对象的基本概念基础之上,不可避免地要涉及到面向对象程序设计所具有的4个共同特征:抽象性、封装性、继承性和多态性。 1.抽象 抽象是人们认识事物的常用方法,比如地图的...

    上个周末霸笔大唐移动的应用程序软件工程师试题,有一道面向对象的4个特征,以前都是接触的三个,怎么多出了一个?原来就是抽象性。。。

    面向对象的4个基本特征
    在上述面向对象的基本概念基础之上,不可避免地要涉及到面向对象程序设计所具有的4个共同特征:抽象性、封装性、继承性和多态性。
    1.抽象
    抽象是人们认识事物的常用方法,比如地图的绘制。抽象的过程就是如何简化、概括所观察到的现实世界,并为人们所用的过程。
    抽象是软件开发的基础。软件开发离不开现实环境,但需要对信息细节进行提炼、抽象,找到事物的本质和重要属性。
    抽象包括两个方面:过程抽象和数据抽象。过程抽象把一个系统按功能划分成若干个子系统,进行"自顶向下逐步求精"的程序设计。数据抽象以数据为中心,把数据类型和施加在该类型对象上的操作作为一个整体(对象)来进行描述,形成抽象数据类型ADT。
    所有编程语言的最终目的都是提供一种"抽象"方法。一种较有争议的说法是:解决问题的复杂程度直接取决于抽象的种类及质量。其中,"种类"是指准备对什么进行"抽象"。汇编语言是对基础机器的少量抽象。后来的许多"命令式"语言(如FORTRAN、BASIC和C)是对汇编语言的一种抽象。与汇编语言相比,这些语言已有了较大的进步,但它们的抽象原理依然要求程序设计者着重考虑计算机的结构,而非考虑问题本身的结构。在机器模型(位于"方案空间")与实际解决的问题模型(位于"问题空间")之间,程序员必须建立起一种联系。这个过程要求人们付出较大的精力,而且由于它脱离了编程语言本身的范围,造成程序代码很难编写,而且要花较大的代价进行维护。由此造成的副作用便是一门完善的"编程方法"学科。
    为机器建模的另一个方法是为要解决的问题制作模型。对一些早期语言来说,如LISP和APL,它们的做法是"从不同的角度观察世界"、"所有问题都归纳为列表"或"所有问题都归纳为算法"。PROLOG则将所有问题都归纳为决策链。对于这些语言,可以认为它们一部分是面向基于"强制"的编程,另一部分则是专为处理图形符号设计的。每种方法都有自己特殊的用途,适合解决某一类的问题。但只要超出了它们力所能及的范围,就会显得非常笨拙。
    面向对象的程序设计在此基础上则跨出了一大步,程序员可利用一些工具来表达问题空间内的元素。由于这种表达非常普遍,所以不必受限于特定类型的问题。人们将问题空间中的元素以及它们在方案空间的表示物称作"对象"。当然,还有一些在问题空间没有对应体的其他对象。通过添加新的对象类型,程序可进行灵活的调整,以便与特定的问题配合。所以在阅读方案的描述代码时,会读到对问题进行表达的话语。与以前的方法相比,这无疑是一种更加灵活、更加强大的语言抽象方法。
    总之,OOP允许人们根据问题,而不是根据方案来描述问题。然而,仍有一个联系途径回到计算机。每个对象都类似一台小计算机;它们有自己的状态,而且可要求它们进行特定的操作。与现实世界的"对象"或者"物体"相比,编程"对象"与它们也存在共通的地方:它们都有自己的特征和行为。
    2.封装
    封装是面向对象编程的特征之一,也是类和对象的主要特征。封装将数据以及加在这些数据上的操作组织在一起,成为有独立意义的构件。外部无法直接访问这些封装了的数据,从而保证了这些数据的正确性。如果这些数据发生了差错,也很容易定位错误是由哪个操作引起的。
    如果外部需要访问类里面的数据,就必须通过接口(Interface)进行访问。接口规定了可对一个特定的对象发出哪些请求。当然,必须在某个地方存在着一些代码,以便满足这些请求。这些代码与那些隐藏起来的数据叫作"隐藏的实现"。站在过程化程序编写(Procedural Programming)的角度,整个问题并不显得复杂。一种类型含有与每种可能的请求关联起来的函数。一旦向对象发出一个特定的请求,就会调用那个函数。通常将这个过程总结为向对象"发送一条消息"(提出一个请求)。对象的职责就是决定如何对这条消息作出反应(执行相应的代码)。
    若任何人都能使用一个类的所有成员,那么可对这个类做任何事情,则没有办法强制他们遵守任何约束--所有东西都会暴露无遗。
    有两方面的原因促使了类的编制者控制对成员的访问。第一个原因是防止程序员接触他们不该接触的东西--通常是内部数据类型的设计思想。若只是为了解决特定的问题,用户只需操作接口即可,无需明白这些信息。类向用户提供的实际是一种服务,因为他们很容易就可看出哪些对自己非常重要,以及哪些可忽略不计。进行访问控制的第二个原因是允许库设计人员修改内部结构,不用担心它会对客户程序员造成什么影响。例如,编制者最开始可能设计了一个形式简单的类,以便简化开发。以后又决定进行改写,使其更快地运行。若接口与实现方法早已隔离开,并分别受到保护,就可放心做到这一点,只要求用户重新链接一下即可。
    封装考虑的是内部实现,抽象考虑的是外部行为。符合模块化的原则,使得软件的可维护性、扩充性大为改观。
    3.继承
    继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类的继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且派生类可以修改或增加新的方法使之更适合特殊的需求。这也体现了大自然中一般与特殊的关系。继承性很好地解决了软件的可重用性问题。比如说,所有的Windows应用程序都有一个窗口,它们可以看作都是从一个窗口类派生出来的。但是有的应用程序用于文字处理,有的应用程序用于绘图,这是由于派生出了不同的子类,各个子类添加了不同的特性。
    关于继承的详细讨论,将在第4.1~4.2节进行。
    4.多态性
    多态性是指允许不同类的对象对同一消息作出响应。比如同样的加法,把两个时间加在一起和把两个整数加在一起肯定完全不同。又比如,同样的选择"编辑"、"粘贴"操作,在字处理程序和绘图程序中有不同的效果。多态性包括参数化多态性和运行时多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好地解决了应用程序函数同名问题。
    关于多态性的讨论,将在4.7~4.9节进行。
    最后,以Alan Kay的话作为本节的结束语。他总结了Smalltalk(这是第一种成功的面向对象程序设计语言,也是Java的基础语言)的五大基本特征。通过这些特征,读者可以理解"纯粹"的面向对象程序设计方法。
    (1)所有东西都是对象。可将对象想象成一种新型变量,它保存着数据,但可要求它对自身进行操作。理论上讲,可从要解决的问题上,提出所有概念性的组件,然后在程序中将其表达为一个对象。
    (2)程序是一大堆对象的组合。通过消息传递,各对象知道自己该做些什么。为了向对象发出请求,需向那个对象"发送一条消息"。更具体地讲,可将消息想象为一个调用请求,它调用的是从属于目标对象的一个子例程或函数。
    (3)每个对象都有自己的存储空间,可容纳其他对象。或者说,通过封装现有对象,可制作出新型对象。所以,尽管对象的概念非常简单,但在程序中却可达到任意高的复杂程度。
    (4)每个对象都有一种类型。根据语法,每个对象都是某个"类(Class)"的一个"实例"。其中,"类"是"类型(Type)"的同义词。一个类最重要的特征就是"能将什么消息发给它?"。
    (5)同一类所有对象都能接收相同的消息。这实际是别有含义的一种说法,读者不久便能理解。由于类型为"圆(Circle)"的一个对象也属于类型为"形状(Shape)"的一个对象,所以一个"圆"完全能接收"形状"的消息。这意味着可让程序代码统一指挥"形状",令其自动控制所有符合"形状"描述的对象,其中自然包括"圆"。这一特性称为对象的"可替换性",是OOP最重要的概念之一。

    展开全文
  • 激光雷达获取信息是和周围物体之间距离信息,在移动机器人尤其是...传统移动机器人导航问题包含三大要素:地图创建、定位和运动控制,通过三大要素,解决三个基本问题:我在哪里?我要去哪里?如何去?机器人...

    激光雷达获取的信息是和周围物体之间的距离信息,在移动机器人尤其是自主移动机器人领域具有非常广泛的应用,那我们就从移动机器人的自主导航开始聊吧。

    移动机器人导航是指移动机器人依靠传感器在特定环境中,按时间最优、路径最短或能耗最低等准则实现从起始位置到目标位置

    的无碰撞运动

    统的移动机器人导航问题包含三大要素:地图创建、定位和运动控制,通过三大要素,解决三个基本问题:我在哪里?我要去

    哪里?如何去?

    机器人定位的目的是回答“我在什么地方?”这个基本的问题。

    激光雷达采集数据之后通过一定的运算可以准确的计算出当前的绝对位置或者相对位置,那么就可以知道机器人在什么位置,当然有时地图的创建和定位是同步进行的,例如SLAM算法(Simultaneous localization and mapping),此时可以看成是一个探索问题。   

    说了这么多,无非是想说激光雷达是多么的有用,多么的强大,而完成这些功能首先还是应该获取激光雷达数据的特征,这就回到了特征提取这一主题上。

    特征提取主要分为两个步骤:区域分割和特征提取。区域分割阶段主要完成特征模式的分类及识别确定,即确定特征属于哪类模式,如直线,圆弧等,并确定属于该特征模式的区域及区域内的激光数据点集。特征提取阶段主要完成各类特征模式参数的确定以及特征点的提取。


    一、区域分割

    对于每一帧距离数据,首先把激光扫描点分割成不同的区块。如果连续两个扫描点的距离小于一个阈值,这两个扫描点属于同一个区块。如果连续两个扫描点的距离大于一个阈值,数据帧就从这个地方分割开。最后把一帧距离数据分割成几个区块。分割的区块表示为 Ri(i=1,…,Q,其中 Q 是分割的区块数),每一个区块包含 Ni个点。由于扫描点的分布并不是均匀的,通常情况下,离传感器近的扫描点密度大一些,而远离传感器的扫描点密度小一些。所以进行距离数据分割时,应用自适应变阈值分割方法。例如当某个扫描点离传感器中心的距离为 D 时,分割阈值选择为 d,当扫描点离传感器中心的距离为3D 时,阈值选择为 3d。除此之外,也可以选用其它的线性或非线性函数来定义自适应分割阈值。总之,在不同的扫描点选用不同的分割阈值,以求距离数据的分割区块能够更好地与实际环境特征模型一致。如果激光的有效测距距离为 10 米,并且角度分辨率为 0.25度,则相邻扫描点之间的距离最小为:2×10m×sin(0.125°)=0.0436m。根据该值可以设定合适的分隔阈值。

    UTM-30LX 有效距离60m 角度分辨率0.25度,,但是一般对于室内应用一般不会超过10m

    a、计算相邻两个点之间的距离Dj
    b、判断Dj和阈值delta的关系

    如果Dj,大于闽值delta,则认为点(x,y)是两个区域的分割点,阈值的选择一般按照动态阈值的方式

    c、(可选)判断每个区域内的数据点的个数,如果某个区域包含数据点的个数小于等于三个,那么该区域被视为噪声区域,舍弃这些噪声点

    //激光雷达区域分割效果,不同的区域用不同的颜色分割(同一种颜色并不代表在同一区域,只是颜色有限,几种颜色在循环使用)


    二、特征提取

    激光雷达扫描的数据中,几个重要的特征:撕裂点(breakPoint)、角点(Corner)、直线、圆弧等。

    区域分割实际上就已经找到了数据中的撕裂点。折线也可以当成是一个特征,是直线加角点构成的特征。



    直线作为一个很关键的特征在很多的论文中都是提取的关键,鉴于折线的是普遍存在的,那么角点的检测同样是一个难以回避的问题。那么我们就先提取角点,将所有的折线都打断成直线和角点。

    1、角点检测

    假设有一条折线,只有单个角点,那么我们可以采用多变形拟合方式确定角点的位置。首先将区域内的点拟合成一条直线,然后找出离直线最远的点,这个距离如果大于某个阈值,则可以认为是折线,而该点就是折线的分割点,否者就是一条直线。

    当某区域含有多个角点时,就需要采用迭代或者递归的方式,不断的寻找角点-->拆分成两段,循环进行,直到每个区域都不存在角点。

    //多边形拟合的方式确定是否存在角点,以及角点的位置

    1. // 进行多边形拟合: Points : 轮廓上的点      n -- 轮廓点数目  Eps -- 拟合精度  
    2. // 返回值: 若该轮廓段需要分段,则返回分段点在该轮廓点列中的索引,否则,返回 0 表示不需要分段  
    3. // 这里是整个算法计算复杂性最大的一个地方  
    4. // 为了提高程序运行效率,对点到直线的距离计算进行改进:  
    5. // 多边形拟合中的直线是由点列中的点决定的  
    6. // 为了计算点到直线的距离,  
    7. // 采用坐标系旋转,将直线旋转到x轴方向,这样点到直线的距离即为各个点  
    8. // 在坐标旋转后的y值的绝对值  
    9. // 同时,坐标旋转矩阵在该次运算中为定值,只需一次计算,不需要多次的开方或三角计算  
    10. int OpenRadar::PolyContourFit( int* X, int* Y, int n , float Eps ) // 根据轮廓点,用多边形拟合该轮廓点      
    11. {  
    12.     double dis = sqrt((double)(((X[0] - X[n - 1])*(X[0] - X[n - 1])) +    
    13.                      ((Y[0] - Y[n - 1])* (Y[0] - Y[n - 1]))));  
    14.     double cosTheta = (X[n- 1] - X[0]) / dis;  
    15.     double sinTheta = - ( Y[n- 1] - Y[0] )/dis;  
    16.     double MaxDis = 0;  
    17.     int i ;  
    18.     int MaxDisInd = -1;  
    19.     double dbDis;  
    20.     for(i = 1 ; i < n - 1 ; i++)  
    21.     {  
    22.         // 进行坐标旋转,求旋转后的点到x轴的距离  
    23.         dbDis = abs( (Y[i] - Y[0]) * cosTheta + (X[i] - X[0])* sinTheta);  
    24.         if( dbDis > MaxDis)  
    25.         {  
    26.             MaxDis = dbDis;  
    27.             MaxDisInd = i;  
    28.         }  
    29.     }  
    30.     if(MaxDis > Eps)  
    31.     {  
    32.         return MaxDisInd;  
    33.         //        cout << "Line 1 : " << endl;  
    34.         //        cout << "Start :" << Points[0].x << "  " << Points[0].y  << " --- " << Points[MaxDisInd].x << "  " << Points[MaxDisInd].y << endl;  
    35.         //        cout << "角度: "<<180 * atan2(Points[0].y - Points[MaxDisInd].y , Points[0].x - Points[MaxDisInd].x ) / 3.1415926;  
    36.         //        cout << "Line 2 :" << endl;  
    37.         //        cout << "Start :" << Points[MaxDisInd].x << "  " << Points[MaxDisInd].y  << " --- " << Points[n - 1].x << "  " << Points[n - 1].y << endl;  
    38.         //        cout << "角度: "<< 180 * atan2(Points[n - 1].y - Points[MaxDisInd].y , Points[n - 1].x - Points[MaxDisInd].x ) / 3.1415926;  
    39.     }  
    40.     //    else{  
    41.     //        cout << "Line 1 : " << endl;  
    42.     //        cout << "Start :" << Points[0].x << "  " << Points[0].y  << " --- " << Points[n - 1].x << "  " << Points[n - 1].y << endl;  
    43.     //        cout << "角度: "<<180 * atan2(Points[n - 1].y - Points[0].y , Points[n - 1].x - Points[0].x ) / 3.1415926;  
    44.   
    45.     //    }  
    46.     return 0;  
    47. }  


    以上只能检测具有单个角点的折线,任意个角点的折线采用了递归的方式,想提速的可以自己转化为迭代的方式实现。

    1. //将折线拆多段  
    2. int OpenRadar::BreakPolyLine(vector<int>& BreakedRadarRho,  
    3.                              vector<double>& BreakedRadarTheta,  
    4.                              vector<int>& SepRadarRho ,     
    5.                              vector<double>&SepRadarTheta)  
    6. {  
    7.     int rho = 0;  
    8.     double theta = 0.0;  
    9.     int X[1200] = {0};  
    10.     int Y[1200] = {0};  
    11.     int rhoCopy[1200] = {0};  
    12.     double thetaCopy[1200] = {0};  
    13.     int pointCnt = 0;  
    14.     int lineCnt = 0;  
    15.     int N = 0;  
    16.     SepRadarRho.clear();  
    17.     SepRadarTheta.clear();  
    18.     Corners.clear();  
    19.   
    20.     //进行多次迭代,将所有的折线都拆分成直线段  
    21.      
    22.    vector<int>CornerIndex;  
    23.    int CornerCnt = 0;  
    24.    int tempIndex = 0;  
    25.     for (int i = 0; i < static_cast<int>(BreakedRadarRho.size());i++)  
    26.     {  
    27.         rho   = BreakedRadarRho.at(i);  
    28.         theta = BreakedRadarTheta.at(i);  
    29.   
    30.         if (rho < 0)  
    31.         {  
    32.             if (pointCnt > 200)//数目比较少的点直接抛弃  
    33.             {  
    34.                 CornerIndex.clear();  
    35.                 CornerCnt = FindCorners(CornerIndex,X,Y,0,pointCnt,200);  
    36.   
    37.                 if (CornerIndex.size() == 0)  
    38.                 {  
    39.                     for (int k = 0 ; k < pointCnt;k++)  
    40.                     {  
    41.                         SepRadarRho.push_back(rhoCopy[k]);  
    42.                         SepRadarTheta.push_back(thetaCopy[k]);  
    43.                     }  
    44.                     SepRadarRho.push_back(-1);  
    45.                     SepRadarTheta.push_back(1000.0);  
    46.                     lineCnt++;  
    47.                 }else  
    48.                 {  
    49.                     tempIndex = 0;  
    50.                     for (int k = 0 ; k < pointCnt;k++)  
    51.                     {  
    52.                         SepRadarRho.push_back(rhoCopy[k]);  
    53.                         SepRadarTheta.push_back(thetaCopy[k]);  
    54.                         if (k == CornerIndex.at(tempIndex))  
    55.                         {  
    56.                             SepRadarRho.push_back(-1);  
    57.                             SepRadarTheta.push_back(1000.0);  
    58.                             lineCnt++;  
    59.                             if (tempIndex < static_cast<int>(CornerIndex.size()) -1)  
    60.                             {  
    61.                                 tempIndex++;  
    62.                             }    
    63.                         }  
    64.                     }  
    65.                     SepRadarRho.push_back(-1);  
    66.                     SepRadarTheta.push_back(1000.0);  
    67.                     lineCnt++;  
    68.                 }  
    69.             }  
    70.             pointCnt = 0;  
    71.             continue;  
    72.         }  
    73.         X[pointCnt] = static_cast<int>(rho*cos(theta));  
    74.         Y[pointCnt] = static_cast<int>(rho*sin(theta));  
    75.         rhoCopy[pointCnt]   = rho;  
    76.         thetaCopy[pointCnt] = theta;  
    77.         pointCnt++;  
    78.     }  
    79.       
    80.     //cout<<"lineCnt: "<<lineCnt<<endl;  
    81.     return lineCnt;  
    82. }  

    2、直线拟合

    如果某区域不存在角点,并且点数据比较大,那么一般都是直线,(不是绝对,直线的判定方法后面的博客再写)

    直线拟合的原理比较简单,实际就是一个最小二乘法,或者为了提高拟合的精度可以采用加权的最下二乘法,这里采用的是加权最小二乘。

    //原始数据图 蓝点是雷达的位置

    //拟合直线和角点图,粗点是角点,粗实线是拟合出的直线



    由于只对点数比价多的直线进行了拟合,上部分的直线并为画出,实际上点数比较少的直线误差也会大,并不是关键的特征。

    源码下载:http://download.csdn.net/detail/renshengrumenglibing/5076599

    展开全文
  • 第四章GIS的数据获取地理数据的基本特征地理数据的三个基本特征是空间,时间和专题属性。时间和专题属性特征为非空间特征。1、空间特征:空间特征是地理信息系统或空间信息系统所独有的。空间特征是指空间地物的位置...

    第四章

    GIS

    的数据获取

    地理数据的基本特征

    地理数据的三个基本特征是空间,时间和专题属性。

    时间和专题属性特征为非空间特征。

    1

    、空间特征:空间特征是地理信息系统或空间信息系统所独有的。空间特征是指空

    间地物的位置,形状,大小的几何特征,以及与相邻地物的空间关系。

    2

    、专题特征:专题特征指空间现象和空间目标的属性特征,它是指除了时间和空间

    特征以外的空间现象的其它特征。

    3

    、时间特征:空间数据总是在某一特定的时间或时间段内采集得到或计算得到的。

    一、空间数据集及数据源的种类

    1

    、数据源。是指建立

    GIS

    的地理数据库所需的各种数据的来源,主要包括地图、遥

    感图像、文本资料、统计资料、实测数据、多媒体数据、已有系统的数据等。可归

    纳为原始采集数据、再生数据和交换数据三种来源。

    (1)

    、地图数据

    地图是

    GIS

    的主要数据源,

    因为地图包含着丰富的内容,

    不仅含有实体的类别

    和属性,而且含有实体间的空间关系。地图数据主要通过对地图的跟踪数字化和扫

    描数字化获取。地图数据不仅可以作宏观的分析

    (

    用小比例尺地图数据

    )

    ,而且可以作

    微观的分析

    (

    用大比例尺地图数据

    )

    。在使用地图数据时,应考虑到地图投影所引起的

    变形,在需要时进行投影变换,或转换成地理坐标。

    地图数据通常用点、线、面及注记来表示地理实体及实体间的关系,如:

    点——居民点、采样点、高程点、控制点等。

    线——河流、道路、构造线等。

    面——湖泊、海洋、植被等。

    注记——地名注记、高程注记等。

    地图数据主要用于生成

    DLG

    DRG

    数据或

    DEM

    数据。

    展开全文
  • 国内外主流的三维GIS软件

    热门讨论 2011-03-14 13:38:59
     本文唱谈了十九国内外主流的三维GIS软件,并对其基本特点、发展历程、应用等方面做了总结概述。由于作者水平有限,不足之处恳请读者批评指正。  国外三维GIS软件:  一重唱·美国谷歌公司:Google Earth--...
  • GIS基本概念

    2010-03-31 09:40:30
    1、图层:将空间信息根据其几何特征及属性...假定地图本身是一最终产品,通过使用符号、分类限制选择等方式交换空间信息模式。 4、分析范例:存储保存原始数据属性数据,根据用户需求进行数据显示...
  • GIS中概念理解

    2019-10-06 20:26:59
    要素、要素类 ​ 要素(feature):就是能代表物理实体...​ 要素类(feature class):具有相同几何特征(形状)同类要素集合(即点图层中点,线图层中线,面图层中面)。一要素类一般和一属性表相对应。...
  • 然后以环压缩为主进行多特征的路沿检测,其中栅格是一种应用已经非常广泛点云结构,我们根据矿山道路本身具有粗粒度特性,将特征检测扩展到以每一扇形单元格为不可分割的基本单元,在提高了检测效率同时,也...
  • 使用30×30 m像元大小以GIS形式生成了三个基本地图,即DEM,土地利用和土壤类型。 模拟结果表明,流域出口处计算和实测水文图之间具有良好一致性。 根据Nash-Sutcliff标准,该模型预测每小时水位图准确度...
  • 24 基于蚁群算法的三维路径规划算法(史峰) 三维路径规划算法是机器人智能控制领域中的热点问题,是指机器人在三维地图中自动规划一条从 出发点到目标点满足指标最优的路径。相对于二维路径规划算法来说,三维路径...
  • 2.1 空间数据三个基本特征 (1)空间特征(定位) 空间特征指空间物体位置、形状和大小等几何特征,以及与相邻物体拓扑关系。位置和拓扑特征是地理或空间信息系统所独有,空间位置可以由不同坐标系统来描述...
  • 长期以来,传统GIS软件很难将人们积累对地理要素研究成果直接在计算机中表达出来,而采用面向对象数据模型则可以对地理空间进行多层次分解,选择更加基本的操作单元,从而更全面、正确地描述现实世界。...
  • Apollo核心模块

    2020-11-07 18:22:36
    高精地图2.1 导航地图与高精地图2.2 地图与定位、感知与规划级目录一个特征 在开始前,需要对无人驾驶技术架构有一整体了解: 定位 该模块提供定位服务。默认情况下有以下两种方法: 1 . 结合 GPS 和 IMU 信息...
  • ASP.NET网页代码模型及生命周期

    热门讨论 2009-07-28 14:22:11
    ASP.NET网页一般由三部分组成,这三个部分如下所示。 q 可视元素:包括HTML,标记,服务器空间。 q 页面逻辑元素:包括事件处理程序和代码。 q designer.cs页文件:用来为页面控件做初始化工作,一般只有ASP.NET...
  • 《第8章 Python计算生态》由会员分享,可在线阅读,更多...Python计算生态学n基本Python内置函数n理解Python计算生态学测试站点知识地图计算思维n人类在理解世界和改造世界过程中表现出三个基本思维特征:以实验和...
  • 点云配准综述

    2021-01-05 11:50:25
    点云配准定义:通过求解坐标转换关系,将连续扫描两帧或多帧激光点云统一到同一坐标系(scan–to-scan),或者将当前扫描点云与以建立的地图进行配准(scan-to-map)从而最终恢复载体位置和姿态变化。...
  • Android 上百实例源码分析以及开源分析 集合打包4

    千次下载 热门讨论 2012-07-10 21:54:03
    在Jamendo程序中,有一很明显的特征是存在一全局JamendoApplication类,此类继承自Application,此类作用主要是实现应用程序集全局变量,也就是在任何一Activity中都可以访问变量。它不会因为Activity...
  • ORB-SLAM2的三个线程是什么 ORB-SLAM2的定位如何实现 如何理解ORB-SLAM2的图优化 结构光、TOF、双目视觉原理 直接法、半直接法、特征点法区别与联系 Apollo的感知模块原理 Apollo的2D和3D跟踪 ...
  • MATLAB的基本数据单位是矩阵,它指令表达式与数学、工程中常用形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同事情简捷得多,并且MATLAB也吸收了像Maple等软件优点,使MATLAB成为一...
  • ArcCatalog中文使用手册

    热门讨论 2011-04-05 14:18:39
    第七章 浏览数据项地理特征 99 预览数据项地理数据 100 创建缩略图 106 第八章 浏览数据表中值 107 预览数据表中值 108 改变数据表外观 109 计算统计值 113 对数据表中记录排序 114 查找数据表中值 ...
  • envi 教程(适用于初学者)

    热门讨论 2009-05-11 11:09:59
     ENVI包含所有基本的遥感影像处理功能,如:校正、定标、波段运算、分类、对比增强、滤波、变换、边缘检测及制图输出功能,并可以加注汉字。ENVI具有对遥感影像进行配准和正射校正功能,可以给影像添加地图投影,...
  • , geom_polygon()提速,比如世界地图的绘制快了12倍左右。, 新增部分主题,比如theme_minimal(),theme_classic()。, 本书的所有代码和图片都是针对新版本0.9.3的,在内容方面也根据版本更新对原文做了适当的增删...
  • 类都可以独立成一单独控件,零耦合,每控件一头文件和一实现文件,不依赖其他文件,方便单个控件以源码形式集成到项目中,较少代码量。qwt控件类环环相扣,高度耦合,想要使用其中一控件,必须...
  • 面向对象基本特征:封装、继承、多态 访问控制符:private、default、protected、public 数据类型:基本类型、引用类型 控制流程:for、while、switch 等 序列化 异常处理(有点难度) 泛型(有点难度) 怎么学? ...
  • visio教程PDF

    热门讨论 2010-05-17 23:56:22
    2.1.2 准备打开一已经存在文件 2.2 基本下拉菜单 2.2.1 File下拉菜单 2.2.2 Tools下拉菜单 2.2.3 Help下拉菜单 2.3 基本工具栏按钮 2.3.1 New Drawing按钮 2.3.2 Open按钮 2.3.3 Open ...

空空如也

空空如也

1 2
收藏数 37
精华内容 14
关键字:

地图的三个基本特征