1.一种遥感影像关键字查询方法,其特征在于:包括以下步骤:
步骤一:通过工具类库读入一个遥感影像对应的模糊XML文件,将模糊XML文件转换为树状存储结构;建立所述的树状存储结构时,每个节点的节点结构包括节点的dewey编码、指向该节点各个子节点的指针表、模糊XML文件中的该节点的数据内容、该节点的模糊参数;
步骤二:建立关于所有节点的<节点dewey编码,节点模糊参数>的映射集合,记为第一映射集合,节点的模糊参数记做p;
步骤三:建立关于所有属性元素的<搜索属性集中的属性元素,搜索属性集中属性元素对应的倒排表>的映射集合,记为第二映射集合;
步骤四:输入一个或多个关键字,建立包含所有关键字的关键字集合Tag,建立关键字查询结果集合Ans;
关键字为步骤三中的某个属性元素,关键字集合Tag中的第i个关键字记做Tag[i];
步骤五:根据第二映射集合,查找关键字集合Tag的最小公共祖先;根据第一映射集合和第二映射集合,获得最小公共祖先对应的模糊参数变量Tp和dewey编码,“最小公共祖先的dewey编码,最小公共祖先的dewey编码模糊参数”作为一个结果元素;遍历第二映射集合中所有关键字对应的倒排表,查找到关键字集合Tag的所有最小公共祖先,对应的,查找到每个最小公共节点对应的dewey编码和模糊参数变量Tp,获取关键字查询结果集合Ans中所有的结果元素;所述的步骤五中查找关键字集合Tag的最小公共祖先具体包括以下步骤:步骤5.1:根据第二映射集合,获取所有关键字对应的倒排表,设定关键字Tag[i]的对应的倒排表dpl[tag[i]],倒排表dpl[tag[i]]中的第j个元素为dpl[tag[i]][k],k=j‑1;
步骤5.2:建立指针数组A,指针数组A的长度为关键字集合Tag中关键字的个数n;指针数组A中的第i个元素记做指针A[i];指针A[i]在初始状态下指向倒排表dpl[tag[i]]的表首元素dpl[tag[i]][0];
步骤5.3:利用指针数组A,查找得到关键字集合Tag中所有元素的一个最小公共祖先SMslca;具体包括以下步骤:步骤5.3.1:定义指针A[i]的next操作:对于指针A[i]指向倒排表中的元素dpl[tag[i]][k],对指针A[i]进行next操作后,指针A[i]指向dpl[tag[i]][k+1];当指针A[i]已经指向倒排表dpl[tag[i]]的最后一个时,对指针A[i]进行next操作后,指针A[i]依然指向dpl[tag[i]][k];
步骤5.3.2:定义关于指针数组A的Rm运算与Lm运算:Rm运算返回指针数组A中“指向倒排表dpl[tag[i]]中Deway编码最大的节点”的指针,运算Rm的结果记为rm;Lm运算返回指针数组A中“指向的倒排表中dpl[tag[i]]中Deway编码最小的节点”的指针,运算Lm的结果记为lm;
步骤5.3.2:定义关于数组A的SMatch操作:
步骤5.3.2a:设定倒排表dpl[tag[i]]中的一个元素ti,元素ti的下一个元素记为nti;
步骤5.3.2b:指针数组A指向的所有关键字的倒排表中,存在一个或多个元素{t1,t2,…ti…}使得其下一个元素{nt1,nt2…nti…}一一对应地满足条件:元素ti与元素nti为父子关系,则对指向倒排表中的元素{t1,t2,…ti…}的对应指针分别进行next操作;
指针数组A进行运算Rm,指针数组A指向的所有关键字的倒排表中存在一个或多个元素{t1,t2,…ti…}使得其下一个元素{nt1,nt2…nti…}一一对应地满足条件“元素nti的Deway编码小于rm的Deway编码,则对指向倒排表中的元素{t1,t2,…ti…}的对应指针分别进行next操作;
步骤5.3.2c:重复步骤5.3.2b;直至指针数组A指向的所有关键字的倒排表中,不存在元素ti与其下一个元素nti为父子关系,也不存在元素ti使得其元素nti的Deway编码小于指针数组A的Rm运算结果的Deway编码,SMatch操作结束;
步骤5.3.3:指针数组A先进行SMatch操作;再进行Rm运算得到rm,进行Lm运算得到lm;
最后通过rm与lm的Dewey编码,得到lm与rm的最小公共祖先SMslca;最小公共祖先SMslca即为关键字集合Tag的最小公共祖先;
步骤5.3.4:获取最小公共祖先SMslca的模糊参数变量Tp:
即:A.len是指指针数组A中元素的个数,A[i].p是指数组A中指针A[i]所指向元素的模糊参数,SMslca.p是指最小公共祖先SMslca的模糊参数;
步骤5.4:遍历所有关键字对应的倒排表,得到关键字集合Tag的所有最小公共祖先以及与每个最小公共祖先对应的模糊参数变量Tp;
步骤六:输出关键字查询结果集合Ans;关键字查询结果集合Ans中的单个结果元素的形式为{关键字集合Tag的最小公共祖先对应的dewey编码,关键字集合Tag的最小公共祖先对应的模糊参数变量Tp}。
2.根据权利要求1所述的遥感影像关键字查询方法,其特征在于:查找关键字集合Tag的最小公共祖先还包括对最小公共祖先SMslca的校验,具体包括以下步骤:步骤5.3.5:定义关于指针数组A的SNMatch操作:SNMatch操作对指针数组A中dewey编码最小的元素进行next操作;
步骤5.3.6:指针数组A先进行SNMatch操作;再进行Rm运算得到rm,进行Lm运算得到lm;
最后通过rm与lm的Dewey编码,得到用于校验的最小公共祖先SNMslca;
当校验最小公共祖先SNMslca不是最小公共祖先SMslca的祖先节点,或者校验最小公共祖先SNMslca是最小公共祖先SMslca本身时,说明最小公共祖先SMslca不是真正的关键字集合Tag的最小公共祖先,返回步骤5.3;当校验最小公共祖先SNMslca是最小公共祖先SMslca的祖先节点时,说明最小公共祖先SMslca是真正的关键字集合Tag的最小公共祖先,将{关键字集合Tag的最小公共祖先对应的dewey编码,关键字集合Tag的最小公共祖先对应的模糊参数变量Tp}作为结果元素;
步骤5.3.7:将5.3.6中获取的结果元素加入关键字查询结果集合Ans。
3.根据权利要求2所述的遥感影像关键字查询方法,其特征在于:步骤5.3.7中,将
5.3.6中获取的结果元素是否加入关键字查询结果集合Ans还需要进行校验,具体包括以下步骤:将关键字查询结果集合Ans中的最后一个结果元素记为lastAns;5.3.6中获取的结果元素记为待检结果元素;
若关键字查询结果集合Ans为空,则将待检结果元素加入关键字查询结果集合Ans;
lastAns为待检结果元素;
若关键字查询结果集合Ans为不为空,且最小公共祖先SMslca不为“lastAns的祖先节点或者SMslca为lastAns本身”时,则将待检结果元素加入关键字查询结果集合Ans;
lastAns为待检结果元素。
4.根据权利要求3所述的遥感影像关键字查询方法,其特征在于:步骤5.4中,遍历所有关键字对应的倒排表时,若指针数组A中指向的所有关键字对应的倒排表中,存在某一元素是最小公共祖先SMslca的子节点或者是其本身时,对该元素对应的指针数组A中的指针进行next操作,直到指针数组A指向的所有关键字对应的倒排表不存在为SMslca的子节点或是其本身的元素为止。