SIP初步

1、什么是SIP

SIP(会话发起协议)属于IP应用层协议,用于在IP网上为用户提供会话应用。会话(Session)指两方或多方用户之间的语音、视频、及其他媒体形式的通信,具体可能是IP电话、会议、即时消息等等。

SIP是一个信令协议,它对应于传统电话网络中的呼叫信令协议(比如SS7ISUP)。构建一个完整多媒体通信架构还需要结合其他一些协议,必要的有:RTP,用于媒体传输;RSVP,用于QOS保证等等。

  • 发起方向目的方发送一个SIP请求消息(INVITE),其中包含提议的会话参数的描述,请求在二者之间建立一个会话;
  • 目的方返回一个SIP响应消息(200 OK),其中包含接受的会话参数的描述,接受会话建立请求
  • 发起方发送一个SIP请求消息(ACK)确认会话的建立。

一个修改会话的简单例子如下图所示:

  • 会话中的任意一方可以发送一个SIP请求消息(reINVITE),其中包含提议的新的会话参数,请求修改二者之间的会话;
  • 另一方返回一个SIP响应消息(200 OK),其中包含接受的新的会话参数,接受会话修改请求

一个结束会话的简单的例子如下图所示:

  • 会话中的任意一方可以发送一个SIP请求消息(BYE),请求结束会话;
  • 另一方返回一个SIP响应消息(200 OK),接受会话结束请求

2.2 用户位置管理

SIP支持用户(终端)的移动性。

SIP要求终端定期向网络发送注册请求(REGGISTER),报告自己的当前位置。这样SIP服务器中始终存储了用户(终端)的当前地址。当用户被呼叫时,SIP服务器能够将SIP请求发送到用户的当前地址。

3、实体 & 网络

SIP UA(User Agent,用户代理)是最基本的SIP实体,它通常就是用户终端。理想情况下,通过SIPUA就可以完成用户之间会话的建立。(参见第2节 SIP基本功能中的会话发起与管理)。

但是为了支持SIP的移动性,以及其他高级功能,比如运营商对呼叫的控制等等,会话发起及管理的信令过程不能直接在两个SIPUA之间完成,而是需要经过由若干SIP服务器构成的SIP信令网络。

这些SIP服务器可以分为两类:注册服务器和路由服务器。

SIP注册服务器(registrar)的主要功能是接受SIP UA的注册请求,维护用户名-地址映射。

路由服务器的主要功能是将SIP消息路由到目标SIP UA。路由服务器有SIP重定向服务器(redirectserver)和SIP代理服务器(proxy)两种。前者以重定向方式路由SIP请求消息,后者以代理方式路由SIP请求消息。

在重定向方式下(如下图所示),SIP重定向服务器收到了SIP请求消息,查询到目标SIPUA的当前地址后,通过SIP响应消息(302 Moved temporarily)返回给发起方SIPUA。之后的SIP消息交互与重定向服务器无关,发起方SIP UA直接向目标SIP UA的当前地址发送请求消息。

在代理方式下(如下图所示),SIP代理服务器收到了SIP请求消息,查询到目标SIPUA的当前地址后,将SIP请求消息转发到目标SIPUA的当前地址。之后的SIP消息交互都要经过SIP代理服务器。这使得SIP代理服务器可以对会话进行控制,比如结束会话等等。

4、SIP操作与SIP消息

SIP所提供的功能是通过一些原子性的基本功能(比如注册(registration),发起会话(Initiation)、会话结束等)组合而成的。每个原子性基本功能是通过一个SIP操作完成的。

SIP操作基于类似HTTP的请求/响应事务模型,每个操作的调用过程体现为一个所谓事务 –包含一个SIP请求和一个或多个相应的SIP响应。其中SIP请求消息中的方法(Method)指示出调用的操作。

下表是在RFC 3261中定义的方法及其对应的SIP操作。

方法Method

SIP操作

INVITE

会话邀请

ACK

确认会话邀请

CANCEL

取消会话邀请

BYE

结束会话

REGISTER

注册

OPTIONS

查询服务器能力

SIP是一个基于文本(text-based)的协议,使用 UTF-8字符集。SIP消息与HTTP/1.1非常类似,同样可以包含消息体(message body),通常是会话描述(sessiondescriptions),也可能是其他内容。

SIP 消息有两类:从客户机到服务器的请求消息(request),从服务器到客户机的响应消息(response)。

除了第一行分别是请求行(Request-Line)和状态行(Status-Line)以外,SIP请求消息和SIP响应消息的剩下部分的组成基本类似,包括消息头域(messageheader)和消息体(message body)两部分(如下图所示)。

4.1 SIP请求消息

根据请求行中的方法(method)的不同,SIP请求消息有很多种,分别完成各种操作的调用,实现各种功能,下面进行简单的介绍。

  • INVITE/reINVITE:INVITE发起会话邀请。reINVITE(在一个已存在的对话中发送的INVITE称为reINVITE)修改已建立会话的参数。
  • ACK:完成会话建立的3次握手 [INVITE-200-ACK],仅仅用于INVITE
  • BYE :结束会话。
  • CANCEL:取消正在建立中会话(INVITE已发送,但尚未收到最终响应(final response))。
  • UPDATE:更新会话参数。它被建议用于替代 re-INVITE,与re-INVITE不同在于:它可以在初始INVITE未完成时发送,能用于在早对话(early dialog)中更新会话参数。

上面的4个请求用于会话建立与管理。

  • REGISTER:登记UA当前的联系地址(contact)
  • OPTIONS:查询服务器或对端UA的能力,具体包括支持的方法(method),扩展(extensions)、编解码(codecs)等。
  • PRACK:临时响应(Provisional Response)确认。用于确认收到了临时响应,例如 “183 SessionProgress”,以支持临时响应的可靠传送。它不能应用于“100 Trying ”,只有101~199临时响应需要可靠传送。如果没有收到 PRACK,响应消息将被重传。

 

  • NOTIFY:事件通知,具体的事件包括、业务状态的改变(MWI,...),用户状态的改变等等。
  • SUBSCRIBE:订阅/取消(Expires=0)事件通知。
  • PUBLISH:发布事件状态。PUBLISH 与 REGISTER的相似之处在于:允许用户在另一个实体(状态管理实体/registrar)中创建、修改和移除自己的状态。对PUBLISH请求的寻址与对于SUBSCRIBE 请求的寻址是一样的,PUBLISH 请求的Request-URI中填入的是用户希望发布其事件状态的资源地址。

上面的3个请求构成SIP事件发布-订阅-通知机制

  • INFO:用于传送 mid-call 信令信息,同一时刻只能有一个 INFO 事务存在。通常用于携带 PSTN 信令消息(作为MIME 附件),例如,ISDN UUI (用户到用户信息)。
  • MESSAGE:针对即时消息 (IM)的扩展,用于传送即时消息。MESSAGE请求通过MIME附件中携带内容。MESSAGE请求自身不发起 SIP 对话,在正常的用法中,每个即时消息都是单独存在的,非常类似 pager 消息。MESSAGE请求可以在其他SIP请求发起的对话上下文中发送。
  • REFER:指示接收者 (Request-URI所标识的) 应该使用请求中提供的信息联系第三方。典型应用:CallTransfer features 。Allowed outside an established dialogue。

4.2 SIP响应消息

状态码

描述

例子

1xx

Informational

请求收到,处理中

180 Ringing

181 Call is Being Forwarded

2xx

Success

操作已成功完成

200 OK

3xx

Redirection

请求被重定向

300 Multiple Choices

302 Moved Temporarily

4xx

Client Error

请求包含错误的文法,或者无法在本服务器上完成

401 Unauthorized

408 Request Timeout

5xx

Server Error

请求有效,但服务器无法完成

503 Service Unavailable

505 Version Not Supported

6xx

Global Failure

请求在任何服务器上都无法完成

600 Busy Everywhere

603 Decline

4.3 SIP消息头域

根据请求行中的方法(method)的不同,SIP请求消息有很多种,分别完成各种操作的调用,实现各种功能,下面进行简单的介绍。

  • Call-ID:用于唯一标识一个特定的会话或注册消息。应该具有随机性,保证全球唯一。
    例子:Call-ID:31415926535@uunet.com
  • From:源端SIP URL,标识请求发送方;UAC本地标签。
    例子:From: sip:+1-314-342-7360 @gateway.wcom.com; tag=1234567
  • To:目标SIP URL,标识请求接受方;UAS本地标签。
    例子:To: sip:10109000@operator.mci.com; tag=314
  • Via:用于记录请求经由的路径
    例子:Via: SIP/2.0/TCP uunet.com
  • Max-Forwards:消息最大转发次数。服务每次转发消息时将此域值减1,当变成0时,服务器发送 483响应(TooMany Hops response)。
    例子:Max-Forwards: 10
  • Cseq:请求序列号,用于区分同一个会话中的不同请求。
    例如:CSeq: 1 INVITE
    CSeq: 4325 BYE
    CSeq: 1 REGISTER

上面6个头域是所有SIP消息中的必需的头域。

  • Contact 另一个SIP URL用于直接消息路由。
    例如:Contact: W. Riker, Acting Captain riker@starfleet.gov
    Record-Route 需要自己处在后继消息的路径上时,proxy将自己的地址加插在请求消息中
    例子:Record Route: sip.mci.com
  • Route 确定消息的选路
    例子:Route: orinoco.brooks.net
  • Content-Length:消息体中的 Octet 数
    例子:Content-Length: 285
  • Content-Type:消息体内容类型
    例子:Content-Type: application/sdp

5、详细的例子 (摘自IETF RFC 3261)

实际的例子可以帮助大家进一步地认识和理解前面的内容。这里的两个例子分别是关于SIP的两个最基本的功能:注册和会话建立。每个例子中给出了消息交互过程,以及必要的消息内容细节。

出于简明性的考虑,这里给出的消息的内容忽略了消息体及相应的头域(Content-Length和 Content-Type)。另外,还有一些头域比如Allow和 Supported 通常也会出现,但这里并未给出。

5.1 注册

Bob在开机时注册。消息流如下图所示。注意为了简化流程,这里没有给出在注册时通常所必需的鉴权过程。


消息细节:

F1 REGISTER Bob ->Registrar

REGISTER sip:registrar.biloxi.comSIP/2.0

Via: SIP/2.0/UDPbobspc.biloxi.com:5060;branch=z9hG4bKnashds7

Max-Forwards: 70

To: Bob<sip:bob@biloxi.com>

From: Bob<sip:bob@biloxi.com>;tag=456248

Call-ID: 843817637684230@998sdasdh09

CSeq: 1826 REGISTER

Contact:<sip:bob@192.0.2.4>

Expires: 7200

Content-Length: 0

这次注册的有效期为2个小时(7200秒)

注册服务器返回 200 OK 响应。

F2 200 OK Registrar -> Bob

SIP/2.0 200 OK

Via: SIP/2.0/UDPbobspc.biloxi.com:5060;branch=z9hG4bKnashds7;received=192.0.2.4

To: Bob<sip:bob@biloxi.com>;tag=2493k59kd

From: Bob<sip:bob@biloxi.com>;tag=456248

Call-ID: 843817637684230@998sdasdh09

CSeq: 1826 REGISTER

Contact: <sip:bob@192.0.2.4>

Expires: 7200

Content-Length: 0

5.2 会话建立与拆除

会话建立是SIP的最基本的功能。

消息流如下图所示。

消息内容:(注意这里并未给出会话媒体参数SDP的细节)

F1 INVITE Alice -> atlanta.com proxy

INVITE sip:bob@biloxi.com SIP/2.0

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8

Max-Forwards: 70

To: Bob <sip:bob@biloxi.com>

From: Alice<sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

CSeq: 314159 INVITE

Contact:<sip:alice@pc33.atlanta.com>

Content-Type: application/sdp

Content-Length: 142

(Alice的 SDP 未显示)

F2 100 Trying atlanta.com proxy ->Alice

SIP/2.0 100 Trying

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8

;received=192.0.2.1

To: Bob <sip:bob@biloxi.com>

From: Alice<sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

CSeq: 314159 INVITE

Content-Length: 0

F3 INVITE atlanta.com proxy -> biloxi.comproxy

INVITE sip:bob@biloxi.com SIP/2.0

Via: SIP/2.0/UDPbigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8

;received=192.0.2.1

Max-Forwards: 69

To: Bob <sip:bob@biloxi.com>

From: Alice<sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

CSeq: 314159 INVITE

Contact:<sip:alice@pc33.atlanta.com>

Content-Type: application/sdp

Content-Length: 142

(Alice的 SDP 未显示)

F4 100 Trying biloxi.com proxy -> atlanta.comproxy

SIP/2.0 100 Trying

Via: SIP/2.0/UDPbigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1

;received=192.0.2.2

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8

;received=192.0.2.1

To: Bob <sip:bob@biloxi.com>

From: Alice<sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

CSeq: 314159 INVITE

Content-Length: 0

F5 INVITE biloxi.com proxy -> Bob

INVITE sip:bob@192.0.2.4 SIP/2.0

Via: SIP/2.0/UDPserver10.biloxi.com;branch=z9hG4bK4b43c2ff8.1

Via: SIP/2.0/UDPbigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1

;received=192.0.2.2

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8

;received=192.0.2.1

Max-Forwards: 68

To: Bob <sip:bob@biloxi.com>

From: Alice<sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

CSeq: 314159 INVITE

Contact:<sip:alice@pc33.atlanta.com>

Content-Type: application/sdp

Content-Length: 142

(Alice的 SDP 未显示)

F6 180 Ringing Bob -> biloxi.com proxy

SIP/2.0 180 Ringing

Via: SIP/2.0/UDPserver10.biloxi.com;branch=z9hG4bK4b43c2ff8.1

;received=192.0.2.3

Via: SIP/2.0/UDPbigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1

;received=192.0.2.2

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8

;received=192.0.2.1

To: Bob<sip:bob@biloxi.com>;tag=a6c85cf

From: Alice<sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

Contact: <sip:bob@192.0.2.4>

CSeq: 314159 INVITE

Content-Length: 0

F7 180 Ringing biloxi.com proxy -> atlanta.comproxy

SIP/2.0 180 Ringing

Via: SIP/2.0/UDPbigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1

;received=192.0.2.2

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8

;received=192.0.2.1

To: Bob<sip:bob@biloxi.com>;tag=a6c85cf

From: Alice<sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

Contact: <sip:bob@192.0.2.4>

CSeq: 314159 INVITE

Content-Length: 0

F8 180 Ringing atlanta.com proxy ->Alice

SIP/2.0 180 Ringing

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8

;received=192.0.2.1

To: Bob<sip:bob@biloxi.com>;tag=a6c85cf

From: Alice<sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

Contact: <sip:bob@192.0.2.4>

CSeq: 314159 INVITE

Content-Length: 0

F9 200 OK Bob -> biloxi.com proxy

SIP/2.0 200 OK

Via: SIP/2.0/UDPserver10.biloxi.com;branch=z9hG4bK4b43c2ff8.1

;received=192.0.2.3

Via: SIP/2.0/UDPbigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1

;received=192.0.2.2

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8

;received=192.0.2.1

To: Bob<sip:bob@biloxi.com>;tag=a6c85cf

From: Alice<sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

CSeq: 314159 INVITE

Contact: <sip:bob@192.0.2.4>

Content-Type: application/sdp

Content-Length: 131

(Bob的 SDP 未显示)

F10 200 OK biloxi.com proxy -> atlanta.comproxy

SIP/2.0 200 OK

Via: SIP/2.0/UDPbigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1

;received=192.0.2.2

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8

;received=192.0.2.1

To: Bob<sip:bob@biloxi.com>;tag=a6c85cf

From: Alice<sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

CSeq: 314159 INVITE

Contact: <sip:bob@192.0.2.4>

Content-Type: application/sdp

Content-Length: 131

(Bob的 SDP 未显示)

F11 200 OK atlanta.com proxy -> Alice

SIP/2.0 200 OK

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8

;received=192.0.2.1

To: Bob<sip:bob@biloxi.com>;tag=a6c85cf

From: Alice<sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

CSeq: 314159 INVITE

Contact: <sip:bob@192.0.2.4>

Content-Type: application/sdp

Content-Length: 131

(Bob的 SDP 未显示)

F12 ACK Alice -> Bob

ACK sip:bob@192.0.2.4 SIP/2.0

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds9

Max-Forwards: 70

To: Bob<sip:bob@biloxi.com>;tag=a6c85cf

From: Alice<sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

CSeq: 314159 ACK

Content-Length: 0

现在Alice和Bob之间的媒体会话被建立。

Bob首先挂机。注意Bob的SIP 话机维护自己的 CSeq 编号空间,在这里是从231开始。因为是Bob 发送的请求,To 和From 头域的URIs和tags参数被掉换。

F13 BYE Bob -> Alice

BYE sip:alice@pc33.atlanta.com SIP/2.0

Via: SIP/2.0/UDP 192.0.2.4;branch=z9hG4bKnashds10

Max-Forwards: 70

From: Bob<sip:bob@biloxi.com>;tag=a6c85cf

To: Alice<sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

CSeq: 231 BYE

Content-Length: 0

F14 200 OK Alice -> Bob

SIP/2.0 200 OK

Via: SIP/2.0/UDP 192.0.2.4;branch=z9hG4bKnashds10

From: Bob<sip:bob@biloxi.com>;tag=a6c85cf

To: Alice<sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

CSeq: 231 BYE

Content-Length: 0




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434987.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

execl按数值分类

LOOKUP(A1,{0,60,75,85},{"不合格","合格","良好","优秀"}) 参考文献 如何把excel中的数字转成优良中差等级_百度知道

synchronized原理_synchronized 底层原理与内存屏障

点击?蓝色“ 深入原理”&#xff0c;关注并“设为星标”技术干货&#xff0c;第一时间推送锁概述我们知道线程安全问题的产生前提是多个线程并发访问共享变量、共享资源(以下统称为共享数据)。于是&#xff0c;我们很容易想到保障线程安全的方法将多个线程对共享数据的并发访问…

python处理ncdc气象数据并利用arcgis可视化

作者已经处理好的数据如下 中国2020年均气温数据点加栅格.zip-讲义文档类资源-CSDN下载 数据格式如下 所有文件 对2020年文件进行查看(共有412个站点数据) 打开其中一个进行查看共有12列数据

动态分区分配的“首次适应算法_动态图划分复制算法:Leopard

数据管理和系统实现课程上要分享的论文&#xff1a;《LEOPARD: Lightweight Edge-Oriented Partitioning and Replication for Dynamic Graphs》背景目前分析处理图数据已经成为一项重要的任务&#xff0c;例如&#xff0c;研究互联网结构&#xff0c;分析社会关系&#xff0c;…

微软工程院院长:1万多应聘者挑不出100人

微软工程院院长&#xff1a;1万多应聘者挑不出100人“过去两三个月&#xff0c;我最主要的精力都花在了雇人上。遗憾的是&#xff0c;1万多名应聘者中&#xff0c;居然招不到足够合适的人。”今天&#xff0c;在北京中关村希格玛大厦微软亚洲工程院总部&#xff0c;新任院长张宏…

广义典型相关分析_重复测量数据分析及结果详解(之二)——广义估计方程

上一篇文章主要介绍了重复测量方差分析的基本思想是什么、它能做什么、怎么做、结果怎么解释&#xff0c;这几个问题。最后同时指出重复测量方差分析还是有一定局限&#xff0c;起码不够灵活。所以本文在上一篇文章基础上继续介绍医学重复测量数据中第二种常用方法&#xff1a;…

机器学习复制粘贴笔记要点

逻辑回归对特征的规模很敏感。重新调整数据使每个特征的均值为 0 和方差为 1 通常被认为是好的做法 zip() 函数用于将可迭代的对象作为参数&#xff0c;将对象中对应的元素打包成一个个元组&#xff0c;然后返回由这些元组组成的列表。 如果各个迭代器的元素个数不一致&#x…

YUV422格式信号格式(以备学习之用)

YUV信号有很多种&#xff0c;一般YUV420和YUV422用的比较多&#xff0c; YUV422格式&#xff0c;又分为很多小类&#xff0c;按照U、V的排列可以有YUYV,YVYU,UYVY,VYUY四种&#xff0c;其中&#xff0c;YUYVY一般又称作yuv2格式。 而这四种YUV422格式&#xff0c;每种又可以分为…

excel怎么添加diy工具箱_这些Excel插件让你的Excel更好用!

Excel基本功不扎实临时学习也没时间这时候比起各种操作技巧Excel插件更实际更能切实提高你的效率今天就给大家推荐几款插件&#xff01;方方格子说起Excel插件&#xff0c;就不能不提到它。方方格子支持Excel2007到2016各版本&#xff0c;而且对于WPS版本&#xff0c;也有专门的…

Arcgis自下而上从左到右进行编号

添加字段xmin和ymax !shape.extent.Xmin! !shape.extent.Ymax! 计算结果 对处理好的矢量按这个两个字段进行排序 排序结果后的objectid即可做为斜坡单元编号&#xff08;如果项目中对编号有其他要求&#xff0c;请继续往下查看&#xff0c;如果没有的话&#xff0c;就不用往下…

Linux之V4L2基础编程

1. 定义 V4L2(Video For Linux Two) 是内核提供给应用程序访问音、视频驱动的统一接口。 2. 工作流程&#xff1a; 打开设备&#xff0d;> 检查和设置设备属性&#xff0d;> 设置帧格式&#xff0d;> 设置一种输入输出方法&#xff08;缓冲 区管理&#xff09;&…

ArcGIS如何在一个矢量上用不同颜色进行标注

在图层属性--标注里 选择“定义要素类并且为每个类加不同的标注” 点击添加 在类里面就会选择红色&#xff0c;此处作者添加了红色和黑色两个类 注意选择类是&#xff0c;查看是否标注次类 点击SQL查询&#xff0c;不同类进行不同的SQL查询

基于web的工作流设计器(多比图形控件)

多比图形控件是一款基于Web的矢量图形控件&#xff0c; 类似于网页上的Visio控件&#xff0c;是目前国内外最佳的基于web的工作流设计器、工作流流程监视器解决方案。 可广泛应用于包括&#xff1a;电力、军工、煤炭、化工、科研、能源等各种监控软件、基于web的工作流设计器&a…

earthdata数据的.nc4如何使用

原始数据 打开ArcGIS软件 参数如下,只需改变变量参数,选择自己所需变量,其他默认参数,点击确定 更具个人电脑性能,本人电脑反应比较慢

EXT.NET复杂布局(二)——报表

前面提到过工作台&#xff08;《EXT.NET复杂布局&#xff08;一&#xff09;——工作台》&#xff09;了&#xff0c;不知道各位看过之后有什么感想。这次就介绍介绍使用EXT.NET画几个报表。 看图写作从小学就开始了&#xff0c;如图&#xff1a; 图一 图二 图三&#xff08;1&…

arcgis导出access数据库能打开的文件

arcgis有两种数据库 1.个人地理数据库(.mdb)(Access数据库可以打开查看属性) 2.文件地理数据库(.gdb) 其中个人地理数据库 (.mdb)可以用Access数据库打开 在文件中显示如下 打开文件如下 文件地理数据库如下 个人地理数据库&#xff08;地质灾害建立数据库就要用这个数据库…

如何使用网上下载的arcgis工具箱,报错汇总

执行网格表达式错误 解决方法 更改环境变量里的并行处理设置成0即可

基于 Android NDK 的学习之旅-----环境搭建

工欲善其事 必先利其器 , 下面介绍下 Eclipse SDK NDK Cygwin CDT 集成开发环境的搭建。 1、Android 开发环境搭建 Android开发环境搭建不是重点,相信看此文章的很多人都已经搭建成功,这里随便概述性的说说。 1) 下载 JDK 2) 下载 Eclipse 3) 下载 Android…