CN110851550A - 路网约束下K函数的Spark并行计算方法 - Google Patents
路网约束下K函数的Spark并行计算方法 Download PDFInfo
- Publication number
- CN110851550A CN110851550A CN201911052459.5A CN201911052459A CN110851550A CN 110851550 A CN110851550 A CN 110851550A CN 201911052459 A CN201911052459 A CN 201911052459A CN 110851550 A CN110851550 A CN 110851550A
- Authority
- CN
- China
- Prior art keywords
- road
- linear unit
- node
- road network
- point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/29—Geographical information databases
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Remote Sensing (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Traffic Control Systems (AREA)
Abstract
本发明公开了路网约束下K函数的Spark并行计算方法,包括:步骤1,读取道路网和事件点集;步骤2,赋给每一条道路唯一编号标识;步骤3,各excutor节点分割各单条道路获得线性单元;步骤4,excutor节点构建路网拓扑结构、统计各线性单元的事件点总数、计算所有道路的总长度;步骤5,excutor节点计算路网距离t下各线性单元的事件点的总邻接点数;步骤6,driver节点计算观测K值;步骤7,excutor节点模拟点的随机分配;重复步骤5~7得到一系列观测K值;步骤8,计算一系列观测K值的统计学参数;步骤9,增加聚类距离,重复步骤5~9。本发明可充分利用计算机的多核运算,极大提高了大规模数据量下空间运算的效率,可满足海量数据的运算需求。
Description
技术领域
本发明属于空间统计分析与并行化技术领域,具体涉及路网约束下K函数的Spark并行计算方法及系统
背景技术
空间分析一直是地理信息研究的重点。K函数反应了不同尺度下事件点的聚集程度,基于路网的K函数常被用来分析城市事件点的空间分布模式。随着城市现代化建设的加快,城市间的道路变得越来越密集,道路数据增加,沿道路发生的事件数量呈井喷式的增长,传统的单机算法受到内存和计算能力的影响,无法满足目前海量数据的运算需求。
发明内容
本发明的目的是提供路网约束下K函数的Spark并行计算方法及系统,该方法和系统可提高海量数据下K函数的运算效率。
传统的K函数主要基于二维平面分析,当遇到明显沿道路分布的事件时,会有一定的偏差。因此,本发明将路网引入K函数中,利用路网的空间自相关将发生的事件放在网络距离上进行计算。
本发明提供的路网约束下K函数的Spark并行计算方法,包括步骤:
步骤1,通过Spark中的dataSet<Row>操作读取道路网A和事件点集P,采用LineInfo描述道路网中各单条道路的道路信息;
步骤2,赋给A中的每一条道路一个唯一编号标识Li,Li表示第i条道路的编号标识,i=1,2,…n,n为道路网中道路数量;
步骤3,Spark中driver节点向集群广播道路网,excutor节点执行:
各excutor节点分别计算任意两条道路之间的交点,并在LineInfo中记录交点坐标信息;从道路网获取每条道路的起止点、拐点、交点的坐标并排列,构建坐标序列;以起止点、交点为分割点,分别分割各单条道路,将各线性单元发送并按位置顺序存储入有序线性单元集中;
步骤4,driver节点向集群广播道路信息,excutor节点执行:
根据交点坐标信息及线性单元编号构建路网拓扑结构,并利用Spark的累加器统计各线性单元的事件点总数,即线性单元的属性值;并计算道路网中所有道路的总长度;excutor节点将所计算出的路网拓扑结构、事件点总数、总长度发送至driver节点;
步骤5,driver节点向集群广播路网拓扑结构,excutor节点执行:
对每一个线性单元,根据网络拓扑结构,遍历得到该线性单元聚类距离范围内的其他线性单元,累计聚类距离范围内其他线性单元属性值的总数points,将inpoint与points相乘,inpoint为该线性单元的属性值,得到该线性单元下事件点的总邻接点数adjpoints;
步骤6,在各driver节点计算观测K值其中,npi(t)表示事件点pi在道路网的边集合的聚类距离t内的所有邻域点数目,w=n/lT,n表示时间点总数,pi表示第i个事件点,i依次取1、2、….n;lT为道路网中所有道路的总长度;
步骤7,在各excutor节点中每个分区内进行线性单元属性值的交换,模拟点的随机分配;重复步骤5~7得到一系列K(t)值;
步骤8,计算一系列K(t)值的平均值、标准差、伪P值、置信区间下限、置信区间上限;标准差即预测K值;
步骤9,基于增量增加聚类距离,重复步骤5~9,得到不同聚类距离下的观测K值、预期K值、置信区间下限、置信区间上限。
进一步的,LineInfo描述的道路信息包括道路编号id、分区编号partitionNum、道路的Geometry形式LineString、道路分段信息segments、与其他道路的交点信息crossPoints、路网拓扑结构intersections、交点的位置信息relationInfo、每个线性单云的邻接单元信息weight、邻域内的事件点数pointcount。
进一步的,分割各单条道路时,按照预设的线性单元长度划分道路,不足一个线性单元长度的按照一个线性单元处理。
进一步的,构建路网拓扑结构时,对有序线性单元集中各线性单元的首尾节点顺次编号,第m个线性单元的首节点和尾节点分别编号为m-1、m;针对每个线性单元,结合其所在道路的起止点和交点坐标信息,构建路网拓扑结构;路网拓扑结构中Map数组的键为交点编号,值为与交点相交的其他道路的道路信息。
进一步的,事件点总数的统计方法为:
计算输入的计算各事件点集中各事件点与各条道路的距离,选择距离最短的道路Lmin;再分别计算各事件点与Lmin的每个线性单元的距离,找出距离最短的线性单元,若该最短距离未超出预设的阈值范围,将该线性单元的计数值加1。
本发明具有如下特点和有益效果:
本发明基于Spark,设计了路网约束下K函数的Spark并行计算方法,该方法可充分利用计算机的多核运算,极大提高了大规模数据量下空间运算的效率,可满足海量数据下的运算需求。
附图说明
图1为K函数计算流程图;
图2为CSR算法流程图。
具体实施方式
为了更清楚地说明本发明的技术方案和技术效果,下面将对照附图对本发明的具体实施方式进行详细说明。显而易见地,下面描述仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明的技术思路为:Spark中的driver节点(驱动器节点),将所有excutor节点(执行器节点)都使用到的公用数据通过broadcast机制进行广播,各个excutor节点加载一部分数据,然后各个excutor节点完成各自节点的计算任务,充分利用多核CPU的计算性能。
driver节点为Spark中的主节点,主要用来控制任务分发,协调各节点的运行等。executor是从节点,主要完成各个分区的计算任务。弹性式分布数据集(ResilientDistributed Dataset,RDD)是Spark中的基本数据抽象,具有自动容错、位置感知调度及可伸缩性等特点。Partition是数据组织的基本单位,类似于hdfs文件被切分为多个block存储在各个节点上,RDD被切分为多个partition。RDDs有transformations和actions两种操作形式,前者指的是从已有数据集中创造出新的数据集出来,如RDDs,后者将数据集上计算得到的结果返回给Driver。
具体实施时,主要针对单条道路分别进行运算,运算的相关信息如下:
首先,采用LineInfo来描述单条道路的数据结构,LineInfo中包括了道路编号id、分区编号partitionNum、道路的Geometry形式LineString、道路分段信息segments、与其他道路的交点信息crossPoints、路网交点的索引结构intersections、交点的位置信息relationInfo、每个线性单云的邻接单元信息weight、邻域内的事件点数pointcount等。路网交点的索引结构intersections即路网拓扑结构。
下面将结合图1和图2,来描述K函数的Spark并行计算的具体,步骤如下:
步骤1,通过Spark中的dataSet<Row>操作来读取postgres数据库中的数据,获取道路网A和事件点集P。
步骤2,赋给A中的每一条道路一个唯一编号标识,记为Li(i=1,2,…n),Li表示第i条道路的编号标识,n为道路网中道路数量;其中唯一的编号标识值Li由道路信息LineInfo中的id来标识。
步骤3,Spark中driver节点向集群广播道路网A,excutor节点执行如下:
3.1各个excutor节点分别计算任意两条道路之间的交点,在道路信息LineInfo的crossPoint中记录所计算出的交点信息,每个excutor节点完成一部分的交点计算。因为两条道路之间相交可能存在多个交点,所以crossPoints变量为List<Tuple2<Integer,Coordinate>>类型,二元组Tuple的键为道路的编号,值为交点坐标。如,编号为1的道路与编号为2的道路相交于点a,点a的坐标为coordinateA,则对于道路1,crossPoints中的一个值为Tuple2<1,coordinate>;
3.2各excutor节点从道路网获取每条道路的起止点、交点的坐标并排列,构建坐标序列;
3.3各excutor节点以起止点、交点为分割点,将每条道路划分为多条路段,再将每条路段按照预设的线性单元长度分割为多个线性单元,不足一个线性单元长度的按照一个线性单元处理。
步骤4,步骤3中excutor节点执行的结果发送给driver节点,driver节点将各线性单元按位置顺序存储入有序线性单元集中,再次向集群广播,excutor节点执行:
4.1excutor节点根据crossPoint记录的交点坐标信息及segments中的线性单元编号构建路网拓扑结构,用于标识第i条道路Li的第k段线性单元lik与另一条道路Lj的第t段线性单元ljt之间的邻接关系;
在构建路网结构的过程中,对segments中各线性单元的首尾节点进行顺次编号,第一个线性单元的首节点编号为0,尾节点编号为1,第二个线性单元的首节点编号为1,尾节点编号为2,第m个线性单元的首节点编号为m-1,尾节点编号为m。针对每个线性单元,结合crossPoints中信息和节点编号信息,即可完成路网拓扑结构intersections的构建。intersections中Map数组的键为当前LineInfo中交点编号,值为与该节点相交的其他LineInfo信息集合(可能有多条道路与一个节点相交),二元组Tuple的键为LineInfo编号,值为segments的节点编号。
4.2excutor节点通过Spark的累加器统计各线性单元的事件点总数,保存为变量pointcounts,各excutor节点统计的各线性单元的事件点总数发送至driver节点;事件点总数即线性单元的属性值;
将每个线性单元的统计事件点数初始化为0,输入事件点集合,计算每个事件点与每条道路的距离,选择与事件点距离最短的道路Lmin,再分别计算该事件点与Lmin上每个线性单元的距离,如果该事件点与某线性单元距离最短,则在该线性单元的计数值上加1,计数值即统计事件点数;如果最短距离超过阈值范围,则表明此事件点不沿该道路分布,事件点无效,不作统计。阈值范围根据道路的密度而设定,当道路密度较大,则阈值范围的上下限均设为较小值;反之,则其上下限均设为较大值。
4.3各excutor节点通过Spark的累加器Accumulator计算道路网中所有道路的总长度lT,保存为变量lineLength。
步骤5,第一次聚类的距离默认为d,以第一次聚类计算的距离为增量,d人为设置,设置时具体考虑事故发生的密集程度因素,一般在0~500米范围取值。driver节点向集群环境广播子步骤4.1所构建的路网拓扑结构,每一个excutor节点对应多个线性单元,在每一个excutor节点,针对每一个线性单元计算该线性单元的属性值inpoint,即线性单元对应的事件点数统计值;根据网络拓扑结构,采用广度优先遍历的方式得到聚类距离范围内的线性单元,并累计聚类距离范围内线性单元属性值的总数points,将inpoint与points相乘,得到每个线性单元下事件点的总邻接点数adjpoints,利用变量sumpoint对每条道路邻域范围内的事件点数进行统计,赋给lineInfo中的pointcount。需要说明的是,广度优先遍历方式的层数通过聚类距离与线性单元长度的比值来确定。
本步骤所提及术语定义如下:聚类距离、增量、网络距离均为K函数中参数。聚类距离指为聚类法中的聚类距离,本发明中特指网络距离。增量决定了聚类距离,在现有聚类距离的基础上增加增量,即得新的聚类距离。例如增量为20m,在聚类距离初始为0的情况下,在迭代过程中聚类距离依次为20m、40m、60m等。
步骤6,在各driver节点,通过公式(1):计算观测K值K(t)值,K值即K函数的值;其中,npi(t)的获取方法如下:首先,获得事件点pi所归属的线性单元X,获得线性单元X在聚类距离t范围内所有的线性单元集合S,获得线性单元集合S所对应的事件点统计数,即获得pi所对应的npi(t)。
公式(1)中,npi(t)表示事件点pi在道路网的边集合的聚类距离t内的所有邻域点数目,w=n/lT,n表示时间点总数,pi表示第i个事件点,i依次取1、2、….n;lT为道路网中所有道路的总长度,由子步骤4.3计算得到。
步骤7,在各excutor节点,在excutor节点中每个分区内进行线性单元属性值的交换,模拟点的随机分配,得到置换后的LineInfo;之后,重复步骤4~6得到一系列K(t)值。
步骤8,计算一系列K(t)值的平均值、标准差、伪P值、置信区间下限、置信区间上限。
步骤9,基于增量增加聚类距离,本实施例中增量为500m,重复步骤5~9次,重复次数人为设置,一般设置为9、99、999、9999等;得到不同聚类距离下的观测K值observedk、预期K值expectedK、置信区间最小值LwConf、置信区间最大值HiConfEnv等。其中,预期K值即步骤8所得K(t)值的平均值,置信区间最小值和置信区间最大值分别为置信区间下限和置信区间上限。
应当理解的是,本说明书未详细阐述的部分均属于现有技术。
应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。
Claims (5)
1.路网约束下K函数的Spark并行计算方法,其特征是,包括步骤:
步骤1,通过Spark中的dataSet<Row>操作读取道路网A和事件点集P,采用LineInfo描述道路网中各单条道路的道路信息;
步骤2,赋给A中的每一条道路一个唯一编号标识Li,Li表示第i条道路的编号标识,i=1,2,…n,n为道路网中道路数量;
步骤3,Spark中driver节点向集群广播道路网,excutor节点执行:
各excutor节点分别计算任意两条道路之间的交点,并在LineInfo中记录交点坐标信息;从道路网获取每条道路的起止点、拐点、交点的坐标并排列,构建坐标序列;以起止点、交点为分割点,分别分割各单条道路,分割单条道路获得的线性单元发送并按顺序存储至有序线性单元集中;
步骤4,driver节点收集分割后的道路信息,再次向集群广播,excutor节点执行:
根据交点坐标信息及线性单元编号构建路网拓扑结构,并利用Spark的累加器统计各线性单元的事件点总数,即线性单元的属性值;并计算道路网中所有道路的总长度;excutor节点将所计算出的路网拓扑结构、事件点总数、总长度发送至driver节点;
步骤5,driver节点向集群广播道路信息,excutor节点执行:
对每一个线性单元,根据网络拓扑结构,遍历得到该线性单元聚类距离范围内的其他线性单元,累计聚类距离范围内其他线性单元属性值的总数points,将inpoint与points相乘,inpoint为该线性单元的属性值,得到该线性单元下事件点的总邻接点数adjpoints;
步骤6,在各driver节点计算观测K值其中,npi(t)表示事件点pi在道路网的边集合的聚类距离t内的所有邻域点数目,w=n/lT,n表示时间点总数,pi表示第i个事件点,i依次取1、2、....n;lT为道路网中所有道路的总长度;
步骤7,在各excutor节点中每个分区内进行线性单元属性值的交换,模拟点的随机分配;重复步骤5~7得到一系列K(t)值;
步骤8,计算一系列K(t)值的平均值、标准差、伪P值、置信区间下限、置信区间上限;标准差即预测K值;
步骤9,基于增量增加聚类距离,重复步骤5~9,得到不同聚类距离下的观测K值、预期K值、置信区间下限、置信区间上限。
2.如权利要求1所述的路网约束下K函数的Spark并行计算方法,其特征是:
LineInfo描述的道路信息包括道路编号id、分区编号partitionNum、道路的Geometry形式LineString、道路分段信息segments、与其他道路的交点信息crossPoints、路网拓扑结构intersections、交点的位置信息relationInfo、每个线性单云的邻接单元信息weight、邻域内的事件点数pointcount。
3.如权利要求1所述的路网约束下K函数的Spark并行计算方法,其特征是:
分割各单条道路时,按照预设的线性单元长度划分道路,不足一个线性单元长度的按照一个线性单元处理。
4.如权利要求1所述的路网约束下K函数的Spark并行计算方法,其特征是:
构建路网拓扑结构时,对有序线性单元集中各线性单元的首尾节点顺次编号,第m个线性单元的首节点和尾节点分别编号为m-1、m;针对每个线性单元,结合其所在道路的起止点和交点坐标信息,构建路网拓扑结构;路网拓扑结构中Map数组的键为交点编号,值为与交点相交的其他道路的道路信息。
5.如权利要求1所述的路网约束下K函数的Spark并行计算方法,其特征是:
事件点总数的统计方法为:
计算输入的计算各事件点集中各事件点与各条道路的距离,选择距离最短的道路Lmin;再分别计算各事件点与Lmin的每个线性单元的距离,找出距离最短的线性单元,若该最短距离未超出预设的阈值范围,将该线性单元的计数值加1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911052459.5A CN110851550B (zh) | 2019-10-31 | 2019-10-31 | 路网约束下K函数的Spark并行计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911052459.5A CN110851550B (zh) | 2019-10-31 | 2019-10-31 | 路网约束下K函数的Spark并行计算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110851550A true CN110851550A (zh) | 2020-02-28 |
CN110851550B CN110851550B (zh) | 2023-04-28 |
Family
ID=69599537
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911052459.5A Active CN110851550B (zh) | 2019-10-31 | 2019-10-31 | 路网约束下K函数的Spark并行计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110851550B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160328661A1 (en) * | 2015-05-05 | 2016-11-10 | Retailmenot, Inc. | Scalable complex event processing with probabilistic machine learning models to predict subsequent geolocations |
CN109033340A (zh) * | 2018-07-23 | 2018-12-18 | 武汉大学 | 一种基于Spark平台的点云K邻域的搜索方法及装置 |
CN109739585A (zh) * | 2018-12-29 | 2019-05-10 | 广西交通科学研究院有限公司 | 基于spark集群并行化计算的交通拥堵点发现方法 |
-
2019
- 2019-10-31 CN CN201911052459.5A patent/CN110851550B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160328661A1 (en) * | 2015-05-05 | 2016-11-10 | Retailmenot, Inc. | Scalable complex event processing with probabilistic machine learning models to predict subsequent geolocations |
CN109033340A (zh) * | 2018-07-23 | 2018-12-18 | 武汉大学 | 一种基于Spark平台的点云K邻域的搜索方法及装置 |
CN109739585A (zh) * | 2018-12-29 | 2019-05-10 | 广西交通科学研究院有限公司 | 基于spark集群并行化计算的交通拥堵点发现方法 |
Non-Patent Citations (1)
Title |
---|
罗俊沣等: "道路网约束下的多尺度面状要素自动匹配" * |
Also Published As
Publication number | Publication date |
---|---|
CN110851550B (zh) | 2023-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107220285B (zh) | 面向海量轨迹点数据的时空索引构建方法 | |
JP6032467B2 (ja) | 時空間データ管理システム、時空間データ管理方法、及びそのプログラム | |
CN112181991B (zh) | 基于快速构建kd树的地球模拟系统网格重映射方法 | |
CN102521386B (zh) | 基于集群存储的空间元数据分组方法 | |
CN102289466A (zh) | 一种基于区域覆盖的k近邻查询方法 | |
CN101916261A (zh) | 一种分布式并行数据库系统的数据分区方法 | |
CN109840551B (zh) | 一种用于机器学习模型训练的优化随机森林参数的方法 | |
CN111104457A (zh) | 基于分布式数据库的海量时空数据管理方法 | |
KR20170016168A (ko) | 타일 기반의 지도 데이터 갱신 시스템 및 그 방법 | |
CN102902742A (zh) | 一种云环境下的空间数据划分方法 | |
CN109754638B (zh) | 一种基于分布式技术的停车位分配方法 | |
CN105893486A (zh) | 一种基于团的大规模图最短距离索引方法 | |
CN112269848B (zh) | 一种众包轨迹数据融合方法及装置 | |
CN107257356B (zh) | 一种基于超图分割的社交用户数据优化放置方法 | |
CN110851550A (zh) | 路网约束下K函数的Spark并行计算方法 | |
CN110851395A (zh) | 路网约束下的空间自相关Spark并行计算方法 | |
CN110941767A (zh) | 一种基于多相似度集成的网络社团检测对抗增强方法 | |
CN110097076A (zh) | 一种基于gpu架构的矢量道路网络匹配并行计算方法及装置 | |
CN113821550B (zh) | 路网拓扑图的划分方法、装置、设备及计算机程序产品 | |
Camero et al. | Road map partitioning for routing by using a micro steady state evolutionary algorithm | |
CN113360551B (zh) | 一种靶场中时序数据的存储与快速统计方法及系统 | |
CN111737347B (zh) | 在Spark平台顺序切分数据的方法及装置 | |
Xin | Performance study of large-scale GPS trajectory query method and compression method based on spark platform | |
Heiler et al. | Comparing implementation variants of distributed spatial join on spark | |
Tarmur et al. | Parallel classification of spatial points into geographical regions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20230331 Address after: 430072 Hubei Province, Wuhan city Wuchang District of Wuhan University Luojiashan Applicant after: WUHAN University Address before: Room 4121, 4th Floor, Dongke Building, No. 312, Luoyu Road, Hongshan District, Wuhan City, Hubei Province 430070 Applicant before: WUHAN LIANTU SHIKONG INFORMATION TECHNOLOGY CO.,LTD. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |