ï»??xml version="1.0" encoding="utf-8" standalone="yes"?> 现在大家对烦引有了感性认识,那什么是“½Iºé—´ç´¢å¼•“呢?”½Iºé—´ç´¢å¼•“也是”索引“åQŒæ˜¯å¯¹ç©ºé—´å›¾å½¢é›†åˆåšçš„一ä¸?#8221;目录“åQŒæé«˜åœ¨˜q™ä¸ªå›‘ÖŞ集åˆä¸æŸ¥æ‰¾æŸä¸ªå›¾å½¢å¯¹è±¡çš„æ•ˆçŽ‡ã€‚æ¯”å¦‚è¯´åQŒæˆ‘们在一个地囑֛¾å±‚上˜q›è¡ŒçŸ©åŞ选择åQŒç¡®å®šè¿™ä¸ªå›¾å±‚上哪些囑օƒè¢«è¿™ä¸ªçŸ©å½¢æ‰€å®Œå…¨åŒ…å«å‘¢ï¼Œåœ¨æ²¡æœ?#8221;½Iºé—´ç´¢å¼•“的情况下åQŒæˆ‘们会把这个图层上的所有图元,一一拿æ¥ä¸Žè¿™ä¸ªçŸ©å½¢è¿›è¡Œå‡ 何上的包å«åˆ¤æ–,以确定到底哪些图元被完全包å«åœ¨è¿™ä¸ªçŸ©å½¢å†…ã€‚æ‚¨æ˜¯ä¸æ˜¯è§‰å¾—è¿™æ ·åšå¾ˆåˆç†å‘¢åQŸå…¶å®žä¸ç„Óž¼Œæˆ‘ä»¬å…ˆçœ‹ä¸€ä¸ªç½‘æ ¼çƒ¦å¼•çš„ä¾‹ååQ?/p>
我们对这个点囑ֱ‚作了¾|‘æ ¼ç´¢å¼•åQŒåˆ¤æ–哪些点在这个矩形选择框内åQŒæ˜¯ä¸éœ€è¦æŠŠ˜q™ä¸ªå›‘Ö±‚里所有的炚wƒ½è¦ä¸ŽçŸ©åÅž˜q›è¡Œå‡ 何包嫘q算的,åªå¯¹a,b,c,d,e,f,g˜q™ä¸ƒä¸ªç‚¹åšäº†˜q算。å¯ä»¥æŽ¨æƒ³ä¸€ä¸‹ï¼Œå¦‚果一个点囑ֱ‚有å万个点,ä¸å¾ç«‹ç©ºé—´çƒ¦å¼•,ä»ÖM½•地图æ“作都将å¯ÒŽ•´ä¸ªå›¾å±‚的所有图元é历一‹Æ¡ï¼Œä¹Ÿå°±æ˜¯è¦For循环10万次åQ›å¾ç«‹çƒ¦å¼•将使得For循环的次æ•îC¸‹é™å¾ˆå¤šå¾ˆå¤šï¼Œæ•ˆçŽ‡è‡ªç„¶æé«˜å¾ˆå¤šåQ?/p>
呵呵…惛_¿…大家都知é“空间烦引的好处了,也ä¸çŸ¥ä¸è§‰å‘大家介ç»äº†ç‚¹å›‘Ö±‚çš„ç½‘æ ¼çƒ¦å¼•ï¼Œ˜q˜æœ‰å“ªäº›å¸¸ç”¨çš„空间烦引呢åQŸè¿™äº›ç©ºé—´çƒ¦å¼•åˆè¯¥å¦‚何实现呢åQŸå¸¦ç€˜q™æ ·çš„问题,下é¢ä»‹ç»å‡ ç§å¸¸ç”¨çš„空间烦引ã€?/p>
¾|‘æ ¼ç´¢å¼• åœ¨è¿™äº›ç½‘æ ¼å•å…ƒä¸åQŒè®°å½•下囑օƒå¯¹è±¡çš„åœ°å€æˆ–者引用,比如åQšå£°æ˜Žä¸€ä¸ªå¯¹è±¡äºŒ¾l´æ•°¾l?font face="Times New Roman"> List grid[m][n]; m代表¾|‘æ ¼çš„è¡Œæ•ŽÍ¼Œn代表¾|‘æ ¼çš„åˆ—æ•ŽÍ¼Œæ¯ä¸ªæ•°ç»„å…ƒç´ ä¸ÞZ¸€ä¸?#8220;集åˆå¯¹è±¡”åQŒç”¨äºŽå˜å‚¨è¿™ä¸ªç½‘æ ¼å•元所兌™”çš„æ‰€æœ‰å›¾å…ƒçš„åœ°å€æˆ–引用,˜q™æ ·¾|‘æ ¼ç´¢å¼•ž®±å¾ç«‹å¥½äº†ã€‚下一æ¥ï¼Œæˆ‘ä»¬è¯¥æ€Žä¹ˆç”¨è¿™ä¸ªç½‘æ ¼çƒ¦å¼•å‘¢åQ?span style="font-size: 10.5pt">所有的囑ÖŞ昄¡¤ºå’Œæ“作都å¯ä»¥å€ŸåŠ©äº?#8220;½Iºé—´ç´¢å¼•”æ¥æé«˜æ•ˆçŽ‡ã€‚ä‹Då‡ ä¸ªä¾‹åæ¥è¯´æ˜?#8220;½Iºé—´ç´¢å¼•“çš„ä‹É用: 1åQŒç¡®å®šæ‰€ç”ÈŸ©å½¢å·¦ä¸Šè§’å’Œå³ä¸‹è§’所在的¾|‘æ ¼æ•°ç»„å…ƒç´ åQ›å³å¯å¾—到这个矩形所兌™”è¦†ç›–çš„æ‰€æœ‰ç½‘æ ¼é›†åˆï¼› 2åQŒéåŽ†è¿™ä¸ªç½‘æ ¼é›†åˆä¸çš„å…ƒç´ ï¼Œå–到æ¯ä¸ª¾|‘æ ¼å…ƒç´ List䏿‰€è®°å½•的图元; 3åQŒç”»å‡ø™¿™äº›å›¾å…ƒå³å¯ã€‚(当然整个˜q‡ç¨‹æ¶‰åŠåˆîC¸¤ç‚¹ï¼š1åQŒå±òq•åæ ‡å’Œåœ°å›¾åæ ‡çš„äº’ç›¸å˜æ¢ï¼›2åQŒçª—å£è£å‡ï¼Œä¹Ÿå¯ä»¥ä¸è£å‡åQ?/p>
二ã€?/font>包å«åˆ¤æ–åQŒç»™å‡ÞZ¸€ä¸ªç‚¹point和一个多边åÅžpolygonåQŒåˆ¤æ–点是å¦åœ¨é¢å†…,首先判斘q™ä¸ªç‚ÒŽ‰€åœ¨çš„¾|‘æ ¼åQŒæ˜¯å¦åŒæ—¶å…³è”è¿™ä¸?font face="Times New Roman">polygonåQŒå¦‚æžœä¸æ˜¯ï¼Œè¡¨æ˜Žç‚¹ä¸åœ¨é¢å†…,如果是,å¯ä»¥ä¸‹ä¸€æ¥çš„¾_„¡¡®è§£æžå‡ 何判æ–åQŒæˆ–者精度å…许的情况下,å›_ˆ¤æ–?font face="Times New Roman">polygon是包å?font face="Times New Roman">pointçš„ã€?/p>
å¦å¤–åQ?font face="Times New Roman">Google Map应该也是采用地熾|‘æ ¼çš„æ–¹å¼ï¼Œå¯¹åœ°å›‘Ö›¾è±¡è¿›è¡Œçƒ¦å¼•çš„åQŒå¯è§ä¸€æ–‘,¾|‘æ ¼ç´¢å¼•åœ¨å›¾å½¢æ˜¾½Cºï¼Œé€‰æ‹©åQŒæ‹“扑判æ–ä¸Šçš„å¹¿æ³›åº”ç”¨ã€‚ä½†åŒæ—¶ä¹Ÿå˜åœ¨å¾ˆä¸¥é‡çš„ç¼ºé™øP¼šå½“被索引的图元对象是¾U¿ï¼Œæˆ–者多边åŞ的时候,å˜åœ¨ç´¢å¼•的冗余,å³ä¸€ä¸ªçº¿æˆ–者多边åŞ的引用在多个¾|‘æ ¼ä¸éƒ½æœ‰è®°å½•。éšç€å†—ä½™é‡çš„增大åQŒæ•ˆçŽ‡æ˜Žæ˜¾ä¸‹é™ã€‚所以,很多å¦è€…æå‡ÞZº†å„ç§æ–ÒŽ³•æ¥æ”¹˜q›ç½‘æ ¼çƒ¦å¼•ï¼Œ˜q™ä¸ªž®†åœ¨ä¸‹é¢çš„ç« èŠ‚ä¸ä»‹ç»ã€‚而点囑օƒéžå¸¸é€‚刾|‘æ ¼ç´¢å¼•åQŒä¸å˜åœ¨å†—余问题ã€?/p>
四剿 ‘烦引(QuadtreeåQ?/span> ¾cÖM¼¼äºŽå‰é¢ä»‹¾lçš„¾|‘æ ¼ç´¢å¼•,也是对地ç†ç©ºé—´è¿›è¡Œç½‘æ ¼åˆ’åˆ†ï¼Œå¯¹åœ°ç†ç©ºé—´é€’å½’˜q›è¡Œå››åˆ†æ¥æž„å»ºå››å‰æ ‘åQŒæœ¬æ–‡å°†åœ¨æ™®é€šå››å‰æ ‘的基¼‹€ä¸Šï¼Œä»‹ç»ä¸€¿U改˜q›çš„四剿 ‘烦引结构ã€?span style="font-size: 10.5pt">首先åQŒå…ˆä»‹ç»ä¸€ä¸?/span>GISåQ?/span>Geographic Information SystemåQ‰æˆ–者计½Ž—机囑ÖÅžå¦ä¸Šéžå¸¸é‡è¦çš„æ¦‚念—â€?span style="color: red">最ž®å¤–包矩å½?/span>(MBR-Minimum Bounding Rectangle)åQ?/span> 最ž®å¤–包矩å½?/span>MBRž®±æ˜¯åŒ…围囑օƒåQŒä¸”òqŒ™¡Œäº?font face="Times New Roman">XåQ?font face="Times New Roman">Y轴的最ž®å¤–接矩形ã€?font face="Times New Roman">MBR到底有什么用处呢åQŒäؓ什么è¦å¼•å…¥˜q™ä¸ªæ¦‚å¿µå‘¢ï¼Ÿå› äØ“åQŒå›¾å…ƒçš„形状是ä¸è§„则的,è€?font face="Times New Roman">MBR是åã^行于XåQ?font face="Times New Roman">Y轴的规则囑ÖÅžåQŒè®¾æƒ³ä¸€ä¸‹ï¼Œå¦‚果所有的囑օƒéƒ½æ˜¯òqŒ™¡Œäº?font face="Times New Roman">XåQ?font face="Times New Roman">Y轴的矩åÅžåQŒé‚£é’ˆå¯¹˜q™æ ·çš„çŸ©å½¢è¿›è¡Œå‡ ä½•ä¸Šçš„ä“Q何判æ–ï¼Œæ˜¯ä¸æ˜¯è¦½Ž€å•很多呢åQŸä¸½Ž¡æˆ‘们äh自己写公å¼ç®—法或者编写程åºè¿è¡Œï¼Œæ˜¯ä¸æ˜¯éƒ½è¦æ¯”åŽŸæœ¬å¤æ‚çš„å›¾å½¢å‡ ä½•è¿½Ž—è¦½Ž€‹z很多呢åQŸç”案很昄¡„¶ã€?/p>
å¯è§åQŒè¿‡æ»¤é˜¶ŒDµï¼Œé€šè¿‡½Iºé—´ç´¢å¼•å¯ä»¥æŽ’除掉一些明显丽W¦åˆæ¡äšg的图元,得到åŽé€‰é›†åˆï¼Œç„¶åŽå¯¹åŽé€‰å›¾å…ƒé›†åˆè¿›è¡Œç²¾¼‹®å‡ ä½•è¿½Ž—ï¼Œå¾—åˆ°æœ€¾lˆç»“果。大家å¯èƒ½ä¼šæœ‰è¿™æ ïLš„ç–‘é—®åQŒè¿™æ ähœ‰å¿…è¦å—ï¼Ÿæ˜¯ä¸æ˜¯åè€ŒæŠŠé—®é¢˜å¤æ‚化了åQŸåˆé€‚çš„½Iºé—´ç´¢å¼•åªä¼šæé«˜è®¡ç®—机的效率åQŒæ²¡æœ‰ç©ºé—´çƒ¦å¼•ï¼Œæˆ‘ä»¬æ— ç–‘è¦å¯¹é›†åˆä¸çš„æ¯ä¸ªå›‘Ö…ƒ˜q›è¡Œ¾_„¡¡®å‡ 何˜qç®—åQŒè€Œè¿™æ ïLš„˜qç®—æ˜¯å¤æ‚çš„åQŒæ˜¯éžå¸¸å 用CPU的,所以需è¦ç©ºé—´çƒ¦å¼•,采喞®‘é‡çš„内å˜å’Œ½Ž€å•çš„CUP˜qç®—åQŒæ¥ž®½é‡å‡å°‘é‚£ç§é«˜è€?font face="Times New Roman">CUP的精¼‹®è¿½Ž—çš„‹Æ¡æ•°åQŒè¿™æ ·åšæ˜¯å®Œå…¨å€¼å¾—çš„ã€‚è‡³äºŽç²¾¼‹®çš„å‡ ä½•˜qç®—åˆ°åº•å¤æ‚在哪里,该如何进行精¼‹®çš„å‡ ä½•˜qç®—åQŒå°†åœ¨ä¸‹é¢çš„ç« èŠ‚ä¸è¯¦¾l†æ˜qŽÍ¼Œ˜q™é‡Œä¸»è¦ä»‹ç»˜q‡æ×o阶段的空间烦引ã€?/p>
四剿 ‘烦引就是递归地对地熽Iºé—´˜q›è¡Œå››åˆ†åQŒç›´åˆ°è‡ªè¡Œè®¾å®šçš„¾lˆæ¢æ¡äšgåQˆæ¯”如æ¯ä¸ªèŠ‚ç‚¹å…³è”图元的个数ä¸è¶…˜q?font face="Times New Roman">3个,‘…过3个,ž®±å†å››åˆ†åQ‰ï¼Œæœ€¾lˆåÅžæˆä¸€é¢—æœ‰å±‚æ¬¡çš„å››å‰æ ‘ã€‚å›¾ä¸æœ‰æ•°å—æ ‡è¯†çš„çŸ©å½¢æ˜¯æ¯ä¸ªå›‘Ö…ƒçš?font face="Times New Roman">MBRåQŒæ¯ä¸ªå¶å节点å˜å‚¨äº†æœ¬åŒºåŸŸæ‰€å…Œ™”çš„å›¾å…ƒæ ‡è¯†åˆ—è¡¨å’Œæœ¬åŒºåŸŸåœ°ç†èŒƒå›ß_¼Œéžå¶å节点仅å˜å‚¨äº†åŒºåŸŸçš„地ç†èŒƒå›´ã€‚大家å¯ä»¥å‘玎ͼŒåŒæ ·å˜åœ¨ä¸€ä¸ªå›¾å…ƒæ ‡è¯†è¢«å¤šä¸ªåŒºåŸŸæ‰€å…Œ™”åQŒç›¸åº”地å˜å‚¨åœ¨å¤šä¸ªå¶å节点上åQŒæ¯”å¦?#8220;6“所代表的图元,分别å˜å‚¨åœ¨å››ä¸ªåˆ†æžä¸Šã€‚è¿™æ øP¼Œž®±å˜åœ¨çƒ¦å¼•的冗余åQŒä¸Ž¾|‘æ ¼ç´¢å¼•å˜åœ¨åŒæ ·çš„å¼Šç«¯ã€‚ä¸‹é¢æˆ‘们介¾l一¿U改˜q›çš„四剿 ‘烦引,或者说是分层的¾|‘æ ¼ç´¢å¼•ã€?/p>
å¯ä»¥çœ‹å‡ºåQ?font face="Times New Roman">3å’?font face="Times New Roman">13分别都跨‘Šäº†ä¸¤ä¸ªåŒºåŸŸåQŒè¦è¢«ä¸€ä¸?span style="color: red">最ž®åŒºåŸ?span style="color: red">完全包å«åQŒå°±åªèƒ½æ˜¯æ ¹èŠ‚ç‚¹æ‰€ä»£è¡¨çš„åŒºåŸŸï¼Œ2åQ?font face="Times New Roman">5跨越了两个区域,6跨越了四个区域,è¦è¢«ä¸€ä¸?span style="color: red">最ž®åŒºåŸ?span style="color: red">完全包å«åQŒå°±åªèƒ½æ˜?/span>NW区域。怎么判æ–一个图元被哪个最ž®åŒºåŸ?span style="color: red">完全包å«å‘¢ï¼Ÿä»Žç›´è§‚上看,递归地对地熽Iºé—´˜q›è¡Œå››åˆ†åQŒå¦‚果图元与一个区域四分的划分¾U¿ç›¸äº¤ï¼Œåˆ™è¿™ä¸ªå›¾å…ƒå°±å½’属于这个区域,或者直åˆîC¸å†åˆ’分了åQŒé‚£ž®±å±žäºŽè¿™ä¸ªä¸å†åˆ’分的区域。呵å‘üc€‚。。å¯èƒ½æœ‰ç‚¹ç»•å£ï¼Œçœ‹å›¾åQŒç»“å?#8220;最ž®?/span>”“完全包嫔˜q™ä¸¤ä¸ªå—çœû|¼Œæ‚¨å°±æ˜Žç™½äº†ã€‚è¿™é¢—å››å‰æ ‘ä¸ï¼Œå›‘Ö…ƒçš„æ ‡è¯†ä¸å†ä»…ä»…å˜å‚¨åœ¨å¶å节点上,而是æ¯ä¸ªèŠ‚ç‚¹éƒ½æœ‰å¯èƒ½å˜å‚¨åQŒè¿™æ ·ä¹Ÿž®±é¿å…äº†ç´¢å¼•å†—ä½™ã€‚åŒæ—¶æ¯ä¸ªèŠ‚ç‚¹å˜å‚¨æœ¬èŠ‚ç‚¹æ‰€åœ¨çš„åœ°ç†èŒƒå›´ã€?/span> æœ‰äº†å››å‰æ ‘烦引,下é¢åˆè¯¥å¦‚何利用˜q™é¢—æ ‘æ¥å¸®åŠ©‹‚€ç´¢æŸ¥æ‰‘Ö‘¢åQŸè¿˜æ˜¯çŸ©å½¢é€‰æ‹©ä¸ÞZ¾‹å§ï¼åQˆäؓ什么我æ€ÀL˜¯æ‹¿è¿™ä¸ªä¾‹åæ¥è¯´äº‹å‘¢ï¼Ÿå› 䨓˜q™ä¸ªä¾‹å½Ž€å•,å®ÒŽ˜“ç†è§£åQŒæœ‰ä»£è¡¨æ€§ï¼åQ‰æˆ‘们在地图上画一个矩形,判æ–地图上哪些图元è½åœ¨è¿™ä¸ªçŸ©å½¢é‡Œæˆ–者和˜q™ä¸ªæ‰€ç”ÈŸ©å½¢ç›¸äº¤ã€‚方法很多,˜q™é‡Œä»‹ç»ä¸€¿U简å•çš„‹‚€ç´¢æ¥éª¤ï¼Œå¦‚下åQ?/p>
1åQŒé¦–å…ˆï¼Œä»Žå››å‰æ ‘çš„æ ¹èŠ‚ç‚¹å¼€å§‹ï¼ŒæŠŠæ ¹èŠ‚ç‚¹æ‰€å…Œ™”çš„å›¾å…ƒæ ‡è¯†éƒ½åŠ åˆ°ä¸€ä¸?font face="Times New Roman">List里; 2åQŒæ¯”较æ¤çŸ©åÅžèŒƒå›´ä¸Žæ ¹èŠ‚ç‚¹çš„å››ä¸ªå节点åQˆæˆ–者å«ååŒºåŸŸï¼‰æ˜¯å¦æœ‰äº¤é›†ï¼ˆç›æ€º¤æˆ–者包å«ï¼‰åQŒå¦‚果有åQŒåˆ™æŠŠç›¸åº”的区域所兌™”çš„å›¾å…ƒæ ‡è¯†åŠ åˆ?font face="Times New Roman">List集åˆä¸ï¼Œå¦‚果没有åQŒåˆ™ä»¥ä¸‹˜q™é¢—åæ ‘都ä¸å†è€ƒè™‘ã€?/p>
3åQŒä»¥ä¸Šè¿‡½E‹çš„递归åQŒç›´åˆ°æ ‘çš„å¶å节点终æ¢ï¼Œ˜q”回Listã€?/p>
4åQŒä»ŽList集åˆä¸æ ¹æ®æ ‡è¯†ä¸€ä¸€å–出囑օƒåQŒå…ˆåˆ¤æ–囑օƒMBRä¸ŽçŸ©å½¢æœ‰æ— äº¤é›†ï¼Œå¦‚æžœæœ‰ï¼Œåˆ™è¿›è¡Œä¸‹é¢çš„¾_„¡¡®å‡ 何判æ–åQŒå¦‚果没有,则ä¸å†è€ƒè™‘æ¤å›¾å…ƒã€‚(当然åQŒè¿™é‡Œåªè¯´äº†ä¸€ä¸ªåŸºæœ¬æ€èµ\åQŒå…¶å®žè¿˜æœ‰å…¶ä»–一些ä¸åŒçš„æ–ÒŽ³•åQŒæ¯”如,¾l“刽Iºé—´æ•°æ®¼‚盘的物ç†å˜å‚¨ä¼šæœ‰ä¸€äº›è°ƒæ•ß_¼‰ æ€È»“åQ𿔹˜q›çš„四剿 ‘烦引解决了¾U¿ï¼Œé¢å¯¹è±¡çš„索引冗余åQŒå…·æœ‰è¾ƒå¥½çš„æ€§èƒ½åQŒè€Œè¢«å¤§åž‹½Iºé—´æ•°æ®åº“引擎所采用åQŒå¦‚ArcSDEåQ?font face="Times New Roman">Oracle Spatial½{‰ï¼ŒåŒæ—¶˜q™ç§¾l“构也适用于空间数æ®çš„¼‚ç›˜ç´¢å¼•åQŒé…åˆç©ºé—´æŽ’åºèš¾c»ï¼ŒåŸÞZºŽåˆ†åÅžçš?font face="Times New Roman">Hilbert½Ž—法数殾l„织åQŒå°†åœ¨ç©ºé—´æ•°æ®æ ¼å¼çš„定义ä¸å‘挥é‡è¦ä½œç”¨ã€?/p>
¾|‘æ ¼ç´¢å¼•ž®±æ˜¯åœ¨ä¸€ä¸ªåœ°å›‘Ö›¾å±‚上åQŒæŒ‰æ¯ä¸ªž®ç½‘æ ¼å®½â–³w,高△h打上å‡åŒ€çš„æ ¼¾|‘,计算æ¯ä¸ªå›‘Ö…ƒæ‰€å æ®çš„ç½‘æ ¼æˆ–è€…æ‰€¾lè¿‡çš„ç½‘æ ¼å•元集åˆï¼Œ