ÄãºÃ£¬»¶Ó­À´µ½¾­¹ÜÖ®¼Ò [µÇ¼] [×¢²á]

ÉèΪÊ×Ò³ | ¾­¹ÜÖ®¼ÒÊ×Ò³ | Êղر¾Õ¾

ÓйػùÓÚMapxµÄ×î¶Ì·¾¶Ñ¡ÔñËã·¨µÄʵÏÖ_Ñо¿Éú±ÏÒµÂÛÎÄ·¶ÎÄ

·¢²¼Ê±¼ä£º2015-03-17 À´Ô´£ºÈË´ó¾­¼ÃÂÛ̳
ÓйػùÓÚMapxµÄ×î¶Ì·¾¶Ñ¡ÔñËã·¨µÄʵÏÖ_Ñо¿Éú±ÏÒµÂÛÎÄ·¶ÎÄ Õª Òª£º×î¶Ì·¾¶·ÖÎöÊÇÖÇÄܽ»Í¨ÏµÍ³ºÍGISµÀ·ÍøÂç·ÖÎöÖеÄÖØÒª×é³É²¿·Ö¡£ÒªÊµÏÖ×î¶Ì·¾¶µÄÑ¡Ôñ£¬±ØÐë¾ßÓеÀ·¡¢»¡¶ÎºÍ½ÚµãµÄÍØÆËÐÅÏ¢£¬¶øMapxµÄͼÐÎÊý¾Ý²¢²»¾ßÓÐÍØÆ˽ṹ£¬Òò´ËÔÚ½øÐз¾¶Ñ¡Ôñʱ±ØÐëÏÈÉú³ÉµÀ·ÍøµÄÍØÆ˹Øϵ£¬ÔÙÀûÓÃDijkstraËã·¨ÕÒ³ö×î¶Ì·¾¶¡£ ¹Ø¼ü´Ê£ºDijkstraËã·¨£¬Mapx£¬access£¬ÍØÆ˹Øϵ£¬×î¶Ì·¾¶ÒýÑÔÈí¼þ¼¼ÊõµÄÈÕÐÂÔÂÒ켫´óµØÍƶ¯ÁËGISµÄ·¢Õ¹£¬Èç½ñ×é¼þʽGISµÄ¿ª·¢ÒѳÉΪGIS¿ª·¢µÄ³±Á÷Ö®Ò»¡£×é¼þʽGISµÄ»ù±¾Ë¼ÏëÊÇ°ÑGISµÄ¸÷´ó¹¦ÄÜÄ£¿é·ÖΪ¼¸¸ö¿Ø¼þ£¬Ã¿¸ö¿Ø¼þÍê³É²»Í¬µÄ¹¦ÄÜ¡£¸÷¸öGIS¿Ø¼þÖ®¼ä£¬ÒÔ¼°GIS¿Ø¼þÓëÆäËû·ÇGIS¿Ø¼þÖ®¼ä£¬¿ÉÒÔ·½±ãµØͨ¹ý¿ÉÊÓ»¯µÄÈí¼þ¿ª·¢¹¤¾ß¼¯³ÉÆðÀ´¡£ÕâÖÖ¿ª·¢·½Ê½²»µ«¿ÉÒÔʵÏÖGISµÄ¾ø´ó²¿·Ö¹¦ÄÜ£¬¶øÇÒ¿ª·¢³É±¾½ÏµÍ£¬Ò²Ê¹¿ª·¢ÈËÔ±ÎÞÐèÕÆÎÕרÃŵÄGIS¿ª·¢ÓïÑÔ¡£MapxÊÇMapInfo¹«Ë¾¿ª·¢µÄÒ»¸öGIS¿Ø¼þ£¬ËüʹÓÃÓëMapInfoÒ»ÖµĵØͼÊý¾Ý¸ñʽ£¬²¢ÊµÏÖÁËMapInfoµÄ´ó¶àÊý¹¦ÄÜ£¬È磺tab¸ñʽµØͼµÄÏÔʾ¡¢µØͼµÄ·Å´ó¡¢ËõС¡¢Í϶¯¡¢×¨ÌâͼµÄÖÆ×÷¡¢Êý¾Ý°ó¶¨¡¢Í¼²ã¿ØÖƵÈ[1]¡£ Êý¾Ý´¦ÀíÖ÷Òª²ÉÓÃTab±íÊý¾Ý£¬µØͼÊý¾Ý°´ÕÕÄÚÈݵIJ»Í¬ÒÔͼ²ã(Layer)µÄÐÎʽ´æ´¢£¬¶øµÀ·ÍøÓÖ¿É°´ÕÕµÀ·µÈ¼¶µÄ²»Í¬½øÐзֲã´æ´¢¡£ÎªÁË´òÓ¡ºÍ´æ´¢µÄ·½±ã£¬ÐèÒª°ÑËùÓеĵÀ·ͼ²ãÖеÄͼԪ¼°Í¼ÔªÃû³ÆCloneµ½Ò»¸öͼ²ãÖС£ ×î¶Ì·¾¶·ÖÎöÖеÀ·½»²æµãÊÇϵͳʵÏֵĹؼüÊý¾Ý£¬È·±£µÀ·ÔÚ½»²æ´¦È·ÊµÏཻ£¬²¢¾ßÓÐÒ»¸ö½»²æ½Úµã¡£¶ÔÓÚ»¥´©µÄµÀ·£¬¿ÉÒÔÀûÓÃintersectionpoints·½·¨£¬°Ñflags²ÎÊýÉèÖÃΪÀ´²¶»ñÒ»¸ö½»µã£¬¶ø¶ÔÓÚÔÚ½»²æ¿Ú¶Ï¿ªµÄµÀ·£¬ÐèÒªÀûÓÃMapInfoµÄ²¶×½¹¦ÄÜ£¬Ê¹Á½Ìõ»ò¶àÌõµÀ·ÔÚ½»²æ¿Ú´¦½»ÓÚÒ»µã£¬ÒÔÏû³ýµÀ·ÍøÖеĶϵ㡣 ÓÉÓÚµØͼ±à¼­ÖеÄʧÎ󣬿ÉÄܲúÉúÖ»ÓÐÒ»¸ö×ø±êµãµÄÏßͼԪ£¬ÔÚ½¨Á¢ÍØÆ˹Øϵ֮ǰÐèÒªÀûÓÃfeatureµÄLengthÊôÐÔ°Ñftr.Length=0µÄÏßͼԪÌÞ³ý¡£ »ùÓÚMapxµÄÍØÆ˹ØϵµÄ¹¹½¨×î¶Ì·¾¶·ÖÎöÊǵÀ·ÍøÂç·ÖÎöÖеÄÒ»¸ö»ù±¾ÄÚÈÝ£¬ÆäÖеĹؼüÊǽ¨Á¢µÀ·ÍøÖи÷¸ö»¡¶ÎÖ®¼ä¡¢½ÚµãÖ®¼äºÍµÀ·֮¼äµÄÍØÆ˹Øϵ¡£µ«Mapx×î´óµÄ²»×ãÖ®´¦¾ÍÊDz»Äܽ¨Á¢µØͼÊý¾ÝµÄÍØÆ˽ṹ£¬ËùÒÔÔÚ½øÐÐ×î¶Ì·¾¶·ÖÎöʱÊ×ÏÈÐèÒª½¨Á¢½Úµã¡¢»¡¶ÎºÍµÀ·֮¼äµÄÍØÆ˹Øϵ¡£ Ϊ»ñµÃÊÊÓÚµÀ·ËÑË÷µÄ·Íøͼ£¬±ØÐ뽫ÔÚ½»²æµã´¦½«µÀ·²ð·Ö³É×î»ù±¾µÄ·¶Î£¬Ê¹ÆäÖ»Ôڶ˵㴦ÓëÆäËû·¶ÎÏཻ¡£²ð·ÖºóµÄ»ù±¾Â·¶Î¶ÔÓ¦ÓÚ·ÍøͼÖеĻ¡£¬Æä¶Ëµã¾ÍÊÇͼÖеĶ¥µã¡£ ·ÍøÖеÄÍØÆ˹Øϵ¿ÉÒÔÓÃÈý¸ö¶þά±í¸ñ·Ö±ð´æ·Å¶¥µãÏà¹ØÐÅÏ¢ºÍ»¡¶ÎÏà¹ØÐÅÏ¢£¬Èç±í1¡¢±í¡¢±í3¡£ ±íÉèÖÃpntsµã¼¯ºÍpntµã±äÁ¿£¬ÀûÓÃfeatureµÄpartsÊôÐÔÀ´»ñµÃµÀ·ͼ²ãÖÐËùÓÐ×é³ÉµÀ·½ÚµãµÄ×ø±êNode_XºÍNode_Y²¢°Ñ½Úµã°´µÝÔöµÄ˳Ðò½øÐбàºÅ¡£µ«ÊǶÔÓÚÁ½Ìõ»ò¶àÌõµÀ·½»²æµã²»ÊǵÀ·ÒÑÓнڵãµÄÇé¿ö£¬¾ÍÒªÀûÓÃMapxµÄIntersectionPointsÊôÐÔÀ´»ñÈ¡µÀ·µÄ½»²æµãÌí¼Óµ½Nodes±íÖС£´úÂëÈçÏ£º ±íÖ÷ÒªÀûÓÃNodes±íÖеÄType1×Ö¶ÎÉú³É¡£ÔÚType1×Ö¶ÎÖÐ×Ö¶ÎֵΪ1µÄµãΪµÀ·µÄ½»²æµã£¬µÀ·ÔÚ½»²æµã¶Ï¿ªÎª»ù±¾µÄ»¡¶Î£¬»ñµÃ»¡¶ÎµÄFromNode¡¢ToNode±àºÅºÍEdgename±àºÅ£¬¶øEdgeLengthÀûÓÃÁ½Á½Ö®¼äµÄ½Úµã¾àÀëÏà¼Ó¶øµÃ¡£Èçͼ1£ºÓÐËÄÌõµÀ·£¬ÆäÖеÀ·һ½ÚµãµÄ±àºÅΪ1¡ª11£¬±»·Ö³É1¡ª5¡¢5¡ª9¡¢9¡ª11Èý¶Î»¡£¬ÆäÖÐ1¡ª5»¡¶ÎµÄ³¤¶ÈΪ±íÀûÓÃARC±íÉú³É£¬±£´æËùÓеÀ·½ÚµãºÍ»¡¶ÎÐÅÏ¢£¬Ö÷ÒªÊÇΪÁ˼ӿìËÑË÷Ëٶȡ£ Ëã·¨ÔÚGISÖеÄʵÏÖËã·¨Ô­ÀíËã·¨ÊǵäÐ͵Ä×î¶Ì·¾¶Ëã·¨£¬ÓÃÓÚ¼ÆËãÒ»¸ö½Úµãµ½ÆäËûËùÓнڵãµÄ×î¶Ì·¾¶¡£ Ö÷Ҫͨ¹ýΪÿ¸ö¶¥µãV±£ÁôĿǰΪֹËùÕÒµ½µÄ´ÓSµ½VµãµÄ×î¶Ì·¾¶À´¹¤×÷£¬Ê×ÏÈÒÔÆðʼµãΪÖÐÐÄÏòÍâ²ãÀ©Õ¹£¬£¬Ö±µ½À©Õ¹µ½ÖÕµãΪֹ[2]¡£³õʼʱ£¬Ô´µãSµÄ·¾¶³¤¶È±»¸³Îª0(d[s]=0)£¬Í¬Ê±°ÑËùÓÐÆäËû¶¥µãµÄ·¾¶³¤¶ÈÉèΪÎÞÇî´ó(d[V]= ¡Þ)£¬¼´±íʾ²»ÖªµÀÈκÎͨÏòÕâЩ¶¥µãµÄ·¾¶¡£µ±½áÊøʱ£¬d[V]Öд洢µÄ±ãÊÇ´ÓSµ½VµÄ×î¶Ì·¾¶£¬Èç¹ûd[V]ÊÇÎÞÇî´ó˵Ã÷´Óµãµ½µãVÎÞ¿ÉͨµÄ·¾¶¡£DijkstraËã·¨µÄ»ù±¾²Ù×÷ÊDZߵÄÍØÕ¹£¬Èç¹û´æÔÚÒ»Ìõ´ÓUµ½VµÄ±ß£¬ÄÇô´ÓSµ½VµÄ×î¶Ì·¾¶¿ÉÒÔͨ¹ý½«±ß(U£¬V)Ìí¼Óµ½Î²²¿À´ÍØÕ¹Ò»Ìõ´ÓSµ½VµÄ·¾¶¡£ÕâÌõ·¾¶µÄ³¤¶ÈÊÇd[U]+W(U,V)(´Ó¶¥µãUµ½VµÄ·Ç¸º»¨·ÑÖµ)¡£Èç¹ûÕâ¸öÖµ±ÈÄ¿Ç°ÒÑÖªµÄµÄֵҪС£¬¿ÉÒÔÓÃÐÂÖµÀ´Ìæ´úµ±Ç°d[V]ÖеÄÖµ¡£ÍØÕ¹±ßµÄ²Ù×÷Ò»Ö±Ö´Ðе½ËùÓеÄd[V]¶¼´ú±í´ÓSµ½V×î¶Ì·¾¶µÄ»¨·Ñ[3]¡£ Ëã·¨µÄʵÏÖËã·¨ÀûÓÃVBÀ´ÊµÏÖ£¬Ê×ÏÈÉèÖÃgraph()¶þάÊý×éÀ´¼Ç¼ÈÎÒâiµãµ½ÆäËûËùÓж¥µãµÄ¾àÀ룬distance1()Êý×éÀ´¼Ç¼Æðʼµãµ½ÆäËûËùÓж¥µãµÄ¾àÀ룬visited()À´¼Ç¼¶¥µãµÄ·ÃÎÊÇé¿ö¡£ ×î¶Ì·¾¶µÄÏÔʾÀûÓÃDijstraËã·¨Öзµ»ØµÄ×î¶Ì·¾¶ÖÐËù±éÀúµÄµãÉú³É×î¶Ì·¾¶¡£Èçͼ2£º ÓÉDijkstraËã·¨»ñÈ¡Ëù±éÀúµÄ¶¥µã;ÀûÓñéÀúµÄÏàÁÚ¶¥µãµÄ±àºÅ£¬ÔÚNodes±íÖвéÕÒµÀ·ÉÏËù¶ÔÓ¦½ÚµãµÄ±àºÅ;ÀûÓÃcreateline·½·¨ÔÚͼ²ãdijkstraÖд´½¨×î¶Ì·¾¶Ëù¶ÔÓ¦µÄÏßͼԪ¡£ ½áÂÛºÍÕ¹Íû±¾ÎÄͨ¹ý¶ÔµÀ·Êý¾ÝµÄ´¦Àí¡¢ÍØÆ˹ØϵµÄ´´½¨¡¢DijkstraËã·¨µÄʵÏÖµÈһϵÁÐÑо¿¹¤×÷£¬½¨Á¢Á˵À·Êý¾Ý¿â¼°Æä½áµã£¬»¡¶Î£¬µÀ·Èý¸ö±í£¬¹¹ÔìÁ˽ڵ㡢»¡¶ÎºÍµÀ·֮¼äµÄÍØÆ˹Øϵ£¬ÊµÏÖÁË×î¶Ì·¾¶·ÖÎö£¬ÔöÇ¿ÁË»ùÓÚMapx×é¼þʽ¶þ´Î¿ª·¢µÄ¿Õ¼ä·ÖÎöÄÜÁ¦£¬µ«¸ÃÎÊÌâµÄ´¦Àí»¹ÓÐÐí¶à²»×ãÖ®´¦£º ЧÂʵͣºÓÉÓÚDijkstraËã·¨ÔÚËÑË÷ʱҪ±éÀúËùÓеĶ¥µã£¬²¢ÇÒÔÚ´´½¨ÍØÆ˹ØϵʱҪ±éÀúµÀ·ÖеÄËùÓнڵ㣬¼ÆËãÁ¿´ó¡¢ºÄʱ³¤£¬ÓдýÓÚ½øÒ»²½¸Ä½ø¡£ Êý¾ÝµÄÏÞÖÆ£ºÔÚ½øÐÐ×î¶Ì·¾¶Ñ¡Ôñʱ£¬ÆðʼµãºÍÖÕµãµÄ×ø±ê±ØÐëÓëµÀ·ÉÏijһ½ÚµãµÄ×ø±êÏàͬ£¬ÔÚËã·¨ÉÏÐèÒª½øÒ»²½¸ÄÉÆ¡£
¾­¹ÜÖ®¼Ò¡°Ñ§µÀ»á¡±Ð¡³ÌÐò
  • ɨÂë¼ÓÈë¡°¿¼ÑÐѧϰ±Ê¼ÇȺ¡±
ÍƼöÔĶÁ
¾­¼ÃѧÏà¹ØÎÄÕÂ
±êÇ©ÔÆ
¾­¹ÜÖ®¼Ò¾«²ÊÎÄÕÂÍƼö