1.ʲôÊÇpython
PythonÊÇÒ»ÖÖ²»ÊܾÖÏÞ¡¢¿çƽ̨µÄ¿ªÔ´±à³ÌÓïÑÔ£¬Ëü¹¦ÄÜÇ¿´óÇÒ¼òµ¥Ò×ѧ¡£Òò¶øµÃµ½Á˹㷺ӦÓúÍÖ§³Ö¡£
ArcGIS ÉçÇøÖÐÒýÈëÁËPython¡£´Ëºó£¬Python±»ÊÓΪ¿É¹©µØÀí´¦ÀíÓû§Ñ¡ÔñµÄ½Å±¾ÓïÑÔ²¢µÃÒÔ²»¶Ï·¢Õ¹¡£Ã¿¸ö°æ±¾¶¼½øÒ»²½ÔöÇ¿ÁËPythonÌåÑ飬´Ó¶øÎªÄúÌṩ¸ü¶àµÄ¹¦ÄÜÒÔ¼°¸ü·á¸»¡¢¸üÓѺõÄPythonÌåÑé¡£
ESRIÒѽ«PythonÍêÈ«ÄÉÈëArcGISÖУ¬²¢½«ÆäÊÓΪ¿ÉÂú×ãÓû§ÐèÇóµÄÓïÑÔ¡£ÏÂÃæ½ö½éÉÜPythonµÄ²¿·ÖÓÅÊÆ£º
Ò×ÓÚѧϰ£¬·Ç³£ÊʺϳõѧÕߣ¬Ò²ÌرðÊʺÏר¼ÒʹÓÃ
¿ÉÉìËõ³Ì¶È¸ß£¬ÊÊÓÚ´óÐÍÏîÄ¿»òСÐ͵ÄÒ»´ÎÐÔ³ÌÐò£¨³ÆÎª½Å±¾£© ¿ÉÒÆÖ²£¬¿çƽ̨
¿ÉǶÈ루ʹArcGIS¿É½Å±¾»¯£© Îȶ¨³ÉÊì
Óû§ÉçÇø¹æÄ£´ó
PythonÒÑÑÓÉìµ½ArcGISÖУ¬³ÉΪÁËÒ»ÖÖÓÃÓÚ½øÐÐÊý¾Ý·ÖÎö¡¢Êý¾Ýת»»¡¢Êý¾Ý¹ÜÀíºÍµØÍ¼×Ô¶¯»¯µÄÓïÑÔ£¬Òò¶øÓÐÖúÓÚÌá¸ß¹¤×÷ЧÂÊ¡£
2.ÔÚArcGISÖÐʹÓÃPython
£¨1£©´ò¿ªArcMap£¬ÔÚ¹¤¾ßÀ¸Öеã»÷¡°¡±°´Å¥£¬Î»ÖÃÈçͼ1-1Ëùʾ£¬¼´¿É´ò¿ªPython±à¼´°¿Ú¡£
ͼ1-1
£¨2£©Python³ÌÐòΪ½âÊÍÔËÐУ¬ÊäÈëÒ»ÐдúÂ룬°´¡°»Ø³µ¡±¼üºó¼´¿ÉÔËÐУ¬Èçͼ1-2¡£
ͼ1-2
3.ÐкÍËõ½ø
ѧϰPythonÓëÆäËûÓïÑÔ×î´óµÄÇø±ð¾ÍÊÇ£¬PythonµÄ´úÂë¿é²»Ê¹ÓôóÀ¨ºÅ£¨{}£©À´¿ØÖÆÀ࣬º¯ÊýÒÔ¼°ÆäËûÂß¼Åжϡ£python×î¾ßÌØÉ«µÄ¾ÍÊÇÓÃËõ½øÀ´Ð´Ä£¿é¡£
£¨1£©Ëõ½øµÄ¿Õ°×ÊýÁ¿ÊǿɱäµÄ£¬µ«ÊÇËùÓдúÂë¿éÓï¾ä±ØÐë°üº¬ÏàͬµÄËõ½ø¿Õ°×ÊýÁ¿£¬Õâ¸ö±ØÐëÑϸñÖ´ÐС£ÔÚPython´°¿ÚÖÐÊäÈëÈçͼ1-3ËùʾµÄ´úÂë¿é²¢ÔËÐУ¬¸Ã´úÂë¿éÊÇÑϸñËõ½øµÄ¡£
ͼ 1-3
£¨2£©ÒÔÏ´úÂ뽫»áÖ´ÐдíÎó£¬Èçͼ1-4£º
ͼ1-4
ʵϰ¶þ ʹÓÃArcPy
ArcPy ÊÇÒ»¸öÒԳɹ¦µÄ arcgisscripting Ä£¿éΪ»ù´¡²¢¼Ì³Ðarcgisscripting¹¦Äܽø¶ø¹¹½¨¶ø³ÉµÄÕ¾µã°ü¡£Ä¿µÄÊÇΪÒÔʵÓøßЧµÄ·½Ê½Í¨¹ýPythonÖ´ÐеØÀíÊý¾Ý·ÖÎö¡¢Êý¾Ýת»»¡¢Êý¾Ý¹ÜÀíºÍµØÍ¼×Ô¶¯»¯´´½¨»ù´¡¡£ ¸Ã°üÌṩÁ˷ḻ´¿ÕýµÄPythonÌåÑ飬¾ßÓдúÂë×Ô¶¯Íê³É¹¦ÄÜ£¨ÊäÈë¹Ø¼ü×ֺ͵㼴¿É»ñµÃ¸Ã¹Ø¼ü×ÖËùÖ§³ÖµÄÊôÐԺͷ½·¨µÄµ¯³öÁÐ±í£»´ÓÖÐÑ¡ÔñÒ»¸öÊôÐÔ»ò·½·¨¼´¿É½«Æä²åÈ룩£¬²¢Õë¶Ôÿ¸öº¯Êý¡¢Ä£¿éºÍÀàÌṩÁ˲ο¼Îĵµ¡£
ÔÚPythonÖÐʹÓÃArcPyµÄÁíÒ»¸öÖ÷ÒªÔÒòÊÇ£¬PythonÊÇÒ»ÖÖͨÓõıà³ÌÓïÑÔ¡£PythonÊÇÒ»ÖÖÖ§³Ö¶¯Ì¬ÊäÈëµÄ½âÊÍÐÍÓïÑÔ£¬ÊÊÓÃÓÚ½»»¥Ê½²Ù×÷ÒÔ¼°Îª³ÆÎª½Å±¾µÄÒ»´ÎÐÔ³ÌÐò¿ìËÙÖÆ×÷ÔÐÍ£¬Í¬Ê±Æä¾ßÓбàд´óÐÍÓ¦ÓóÌÐòµÄÇ¿´ó¹¦ÄÜ¡£ÓÃArcPy ±àдµÄArcGISÓ¦ÓóÌÐòµÄÓÅÊÆÔÚÓÚ£¬¿ÉÒÔʹÓÃÓÉÀ´×Ô¶à¸ö²»Í¬ÁìÓòµÄGISרҵÈËÔ±ºÍ³ÌÐòÔ±×é³ÉµÄÖÚ¶àPythonСȺÌ忪·¢µÄ¸½¼ÓÄ£¿é¡£
1.ͨ¹ýPythonʹÓù¤¾ß
ÿ¸öµØÀí´¦Àí¹¤¾ß¶¼¾ßÓÐÒ»×é¹Ì¶¨µÄ²ÎÊý£¬ÕâЩ²ÎÊýΪ¹¤¾ßÌṩִÐÐËùÐèµÄÐÅÏ¢¡£ÔÚPythonÖÐʹÓù¤¾ßʱ£¬±ØÐëÕýÈ·ÉèÖù¤¾ßµÄ²ÎÊýÖµ£¬ÒÔ±ãÔڽű¾ÔËÐÐʱ¹¤¾ß¿ÉÒÔÖ´ÐС£ÏÂÃæÒÔ»º³åÇø·ÖÎöΪÀýÁ·Ï°Í¨¹ýPythonʹÓù¤¾ßµÄ·½·¨¡£ £¨1£©µã»º³å
1£©ÔÚArcMapÖдò¿ªÊµÑéÊý¾ÝÖеġ°¡±Îļþ£¬Èçͼ2-1¡£
ͼ2-1
2£©´ò¿ªPython´°¿Ú£¬ÔÚÆäÖÐÊäÈëͼ2-2ËùʾµÄ´úÂ룬ÆäÖÐworkspaceµÄ·¾¶¸ù¾ÝÊý¾ÝÔÚµçÄÔÖеÄʵ¼Ê·¾¶ÉèÖá£ÔÚµ÷Óù¤¾ß£¨Í¼ÖкìÉ«²¿Î»£©µÄʱºò»áÔÚ´°¿ÚÓÒ²à³öÏÖÌáʾÐÅÏ¢£¬¸ù¾ÝÌáʾÐÅÏ¢£¬ÊäÈëÏà¹Ø²ÎÊý£¬ÔËÐнá¹ûÈçͼ2-3¡£ÔËÐкó»áÔÚĿ¼ÖÐÉú³ÉÒ»¸ö¡°¡±Îļþ£¬Õâ¸öÎļþµÄÎļþÃûºÍ·¾¶¾ùÔÚ´úÂëÖÐÉèÖá£
ͼ2-2 ͼ2-3
£¨2£©Ïß»º³å
1£©ÔÚArcMapÖдò¿ªÊµÑéÊý¾ÝÖеġ°¡±Îļþ£¬Ñ¡ÖÐÆäÖеÄÒ»ÌõÏߣ¬Èçͼ2-4¡£
ͼ2-4
2£©´ò¿ªPython´°¿Ú£¬ÔÚÆäÖÐÊäÈëͼ2-5ËùʾµÄ´úÂ룬ÔËÐнá¹ûÈçͼ2-6¡£
ͼ2-5
ͼ2-6
3£©È¡ÏûÑ¡ÖУ¬ÖØÐÂÔËÐÐÒ»´Î´úÂ룬ÔËÐнá¹ûÈçͼ2-7Ëùʾ¡£´ÓÁ½´ÎÔËÐнá¹û¿ÉÒÔ¿´³ö£¬µØÀí´¦Àí¹¤¾ß´¦Àí¶ÔÏóÊ×ÏÈÓ¦ÊÇÑ¡ÖеÄÒªËØ£¬Èç¹ûûÓÐÑ¡ÖÐÒªËØ£¬ÔòĬÈÏΪͼ²ãÖÐËùÓжÔÏó¡£
ͼ2-7
£¨3£©¶à²ã»º³å
ÔÚÊäÈëÒªËØÖÜΧµÄÖ¸¶¨¾àÀëÄÚ´´½¨¶à¸ö»º³åÇø¡£Ê¹Óûº³å¾àÀëÖµ¿ÉËæÒâºÏ²¢
ºÍÈÚºÏÕâЩ»º³åÇø£¬ÒԱ㴴½¨·ÇÖØµþ»º³åÇø¡£
ÔÚArcMapÖдò¿ªÊµÑéÊý¾ÝÖеġ°¡±Îļþ£¬ÔËÐÐÈçͼ2-8ËùʾµÄ³ÌÐò£¬½á¹ûÈçͼ2-9¡£¶à¸ö»º³åÇøµÄ¾àÀëΪ¡°[10£¬20£¬30]¡±£¬¿É¸ù¾Ýʵ¼ÊÇé¿ö×Ô¼ºÉ趨¡£
ͼ2-8 ͼ2-9
2.ʹÓÃPython´¦ÀíÓαê
ÓαêÊÇÒ»ÖÖÊý¾Ý·ÃÎʶÔÏ󣬿ÉÓÃÓÚÔÚ±íÖеü´úÒ»×éÐлòÕßÏò±íÖвåÈëÐÂÐС£
ÓαêÓÐÈýÖÖÐÎʽ£ºËÑË÷¡¢²åÈë»ò¸üС£ InsertCursor(in_table, field_names) SearchCursor(in_table, field_names, {where_clause}, {spatial_reference}, {explode_to_points}, {sql_clause}) UpdateCursor(in_table, field_names, {where_clause}, {spatial_reference}, {explode_to_points}, {sql_clause}) ²åÈëÐÐ Ö»¶Á·ÃÎÊ ¸üлòɾ³ýÐÐ ¶ÁÈ¡¼¸ºÎ
£¨1£©¶ÁÈ¡µã
1£©ÔÚArcMapÖдò¿ª¡°¡±Îļþ£¬µãµÄÏà¶ÔλÖÃÈçͼ2-10¡£
ͼ2-10
2£©ÔÚPython´°¿ÚÖÐÔËÐÐÈçͼ2-11ËùʾµÄ´úÂ룬¡°SHAPE@XY¡±±íʾһ¸öÒªËØµÄÖÊ
ÐÄXY×ø±ê£¬µãµÄÖÊÐÄΪÆä±¾Éí¡£cursorΪһ¸öËÑË÷Óα꣬ÆäÖС°for row in cursor¡±ÊÇÓÃÒ»¸öforÑ»·À´±éÀúÓαêÖеÄÿһÐС£ÔËÐнá¹ûÈçͼ2-12Ëùʾ£¬ºì¿òÖеÄÊý¾ÝΪµãµÄ×ø±ê¡£
ͼ2-11
£¨2£©¶ÁÈ¡ÕÛÏß»òÃæ
1£©ÔÚArcMapÖдò¿ªÊµÑéÊý¾ÝÖеġ°¡±Îļþ£¬Á½¸öÏßÒªËØÏà¶ÔλÖÃÈçͼ2-13¡£
ͼ 2-13
2£©ÔÚPython´°¿ÚÖÐÔËÐÐÈçͼ2-14ËùʾµÄ´úÂ룬½á¹ûÈçͼ2-15Ëùʾ¡£ºìÉ«·½¿òÖеÄÊý¾ÝΪÁ½¸öÏÈÒªËØµÄÕÛµã×ø±ê¡£ËÑË÷ÓαêÖС°OID@¡±±íÊ¾ÒªËØµÄFID£¬¡°SHAPE@¡±±íʾ¼¸ºÎÒªËØ¶ÔÏó¡£
ͼ2-14
ͼ2-15
дÈ뼸ºÎ
ͨ¹ýʹÓòåÈëÓαê¿ÉÒÔʵÏÖдÈ뼸ºÎ¹¦ÄÜ£¬
£¨1£©Ð´Èëµã
½«¡°¡±¼ÓÔØµ½ArcMapÖУ¬ÔÚPython´°¿ÚÖÐÊäÈëͼ2-16ËùʾµÄ´úÂë²¢ÔËÐУ¬ÔËÐнáÊøºóµã»÷×óÏ·½µÄ¡°¡±°´Å¥£¬Ë¢ÐÂһϵØÍ¼´°¿Ú£¬½á¹ûÈçͼ2-17¡£ÔÚдÈëµãÒªËØÊ±£¬Ö»Óе¥¸öµã¶ÔÏóÓÃÓÚÉèÖõãÒªËØ¼¸ºÎ¡£Ê¹Óá°SHAPE@XY¡±£¬¾Í¿ÉÇáËɵش´½¨µã¡£
ͼ 2-16
ͼ2-17
£¨2£©Ð´ÈëÏß
½«¡°¡±¼ÓÔØµ½ArcMapÖУ¬ÔÚPython´°¿ÚÖÐÊäÈëͼ2-18ËùʾµÄ´úÂë²¢ÔËÐУ¬ÔËÐнá¹ûÈçͼ2-19¡£´úÂëÖС°¡±±íʾÊý×é¶ÔÏó¿É°üº¬ÈÎÒâÊýÁ¿µÄµØÀí´¦Àí¶ÔÏó£¬ÀýÈçµã¡¢¼¸ºÎ»ò¿Õ¼ä²Î¿¼¡££¨µã×ø±ê¿É×ÔÐÐÉèÖã©
ͼ2-18
ͼ 2-19
ʵϰÈý ´´½¨ArcGIS Python Add-in
¼ÓÔØÏîÊÇÒ»ÖÖ×Ô¶¨ÒåÏËü¿ÉÒÔ²åÈëµ½ ArcGIS for Desktop Ó¦ÓóÌÐò£¨¼´ ArcMap¡¢ArcCatalog¡¢ArcGlobe ºÍ ArcScene£©ÖÐÒÔ±ãÌṩ²¹³ä¹¦ÄÜÒÔÍê³É×Ô¶¨ÒåÈÎÎñ£¬ÀýÈ繤¾ßÌõÉϵŤ¾ß¼¯ºÏ¡£
1.´´½¨¼ÓÔØÏîÏîÄ¿
£¨1£©Ñ¡Ôñ¼ÓÔØÏîÏîÄ¿Îļþ¼Ð£º½âѹ¡°¡±£¨Í¼3-1£©Îļþ£¬ÔÚ½âѹºóµÄÎļþ¼Ð´¦ÕÒµ½ £¨Í¼3-2£©Îļþ²¢Ë«»÷¡£½«´ò¿ªä¯ÀÀÎļþ¼Ð¶Ô»°¿ò£¬ÔÚÆäÖÐÊäÈëÓÃÀ´´æ´¢¼ÓÔØÏîÏîÄ¿µÄÎļþ¼Ð¡£±ØÐëÑ¡ÔñÒ»¸ö¿ÕÎļþ¼Ð»ò´´½¨Ò»¸öÐÂÎļþ¼Ð£¨Í¼3-3£©£¬µ¥»÷È·¶¨¡£
ͼ 3-1 ͼ 3-2 ͼ3-3
£¨2£©ÊäÈëÏîÄ¿ÉèÖãºÑ¡Ôñ¹¤×÷Îļþ¼ÐÖ®ºó£¬½«ÏÔʾÏòµ¼µÄµÚÒ»¸öÃæ°å£¨Í¼3-4£©¡£¿ÉÔÚ´Ë´¦ÊäÈëÏîÄ¿ÉèÖá£ÕâЩÉèÖÃÊÇÏîÄ¿µÄÔªÊý¾Ý£¬´æ´¢ÔÚ ÎļþÖС£Ê¹ÓüÓÔØÏîʱ£¬ÕâЩÉèÖÃÔÚ²¿ÊðÆÚ¼äÊ®·ÖÖØÒª¡£
ͼ3-4
2.´´½¨¹¤¾ßÌõ
µ¥»÷¼ÓÔØÏîÄÚÈÝÑ¡Ï£¬ÓÒ¼üµ¥»÷¹¤¾ßÌõ£¬È»ºóµ¥»÷¡°Ð½¨¹¤¾ßÌõ¡±£¬Èçͼ3-5¡£Ïòµ¼µÄÓÒ²àÃæ°å½«ÏÔʾ¹¤¾ßÌõµÄÊôÐÔ£¬Èçͼ3-6¡£¹¤¾ßÌõ±ØÐë¾ßÓбêÌâºÍID¡£±êÌâÓÃÓÚΪ¹¤¾ßÌõÌṩ±ê×¢¡£ID ±íʾΨһµÄÃû³Æ£¬ÓÃÓÚÇø·Ö²»Í¬¹¤¾ßÌõ¡£ID²»Äܰüº¬¿Õ¸ñ¡£Ä¬ÈÏÇé¿öÏ£¬Æô¶¯Ó¦ÓóÌÐòʱ³õʼÏÔʾ¹¤¾ßÌõÕâһѡÏî´¦ÓÚÑ¡ÖÐ״̬¡£Èç¹û²»Ï£ÍûÔÚÆô¶¯Ó¦ÓóÌÐòʱÏÔʾ¹¤¾ßÌõ£¬¿ÉÒÔÈ¡ÏûÑ¡ÖдËÑ¡Ïî¡£
ͼ3-5
ͼ3-6
3.´´½¨°´Å¥
£¨1£©ÊäÈ빤¾ßÌõÊôÐԺ󣬼´¿É´´½¨Ð°´Å¥¡£ÓÒ¼üµ¥»÷ÃûΪ¡°¹¤¾ßÌõ¡±µÄй¤¾ßÌõ²¢Ñ¡Ôñ¡°Ð½¨°´Å¥¡±£¬Èçͼ3-7¡£
ͼ3-7
£¨2£©Ð½¨°´Å¥ºó£¬Îª°´Å¥¼üÈëÏàÓ¦µÄÊôÐÔÐÅÏ¢£¬Èçͼ3-8£¬
ͼ3-8
°´Å¥¾ßÓжà¸öÊôÐÔÐèÒªÉèÖá£ÒÔÏÂÁгöÁËËùÓÐÕâЩÊôÐÔ¼°Æä¶ÔÓ¦µÄ˵Ã÷¡£ÕâЩÊôÐÔ´æ´¢ÔÚÏîÄ¿µÄ ÎļþÖÐ
ÊôÐÔ ÃèÊö ¶¨Òå°´Å¥±êÌâ¡£ÏÂͼÏÔʾÁË ArcGIS ¼ÓÔØÏî¹ÜÀíÆ÷ÖÐʹÓõıêÌ⣬ÓÐÖúÓÚ±êʶ²»Í¬ÀàÐ͵ĿÉÓÃ×Ô¶¨ÒåÄÚÈÝ£¨¼ÓÔØÏîÀàÐÍÔÚÀ¨ºÅ±êÌ⣨±ØÌ Öбêʶ£©£º ÔÚ×ÀÃæÓ¦ÓóÌÐòÖе¥»÷°´Å¥ºóÖ´ÐÐµÄ Python Àà¡£Python ÀàÊÇÀࣨ±ØÌ дÈë°´Å¥ÒµÎñÂß¼µÄλÖ᣹¹ÔìÀàʱӦʹÓà Python µ¥´ÊÊ××Öĸ´óдÃüÃûÔ¼¶¨£¬ÀýÈçӦʹÓá°ZoomToSelectedFeatures¡±¶ø²»ÊÇ¡°zoomtoselectedfeatures¡±¡£ ÓÃÓÚ±êʶ°´Å¥µÄΨһÃû³Æ¡£Äú¿ÉÒÔΪ¸ø¶¨ÏîÄ¿´´½¨¶à¸ö°´Å¥£¬´Ë ID ±ãÓÃÀ´Çø·Ö²»Í¬µÄ°´Å¥¡£ÀíÏëÇé¿öÏ£¬Ó¦Ê¹ÓøüÓÐÒâÒåµÄÖµID£¨±ØÌ Ìæ»»Ä¬ÈÏ ID¡£ID ²»Ó¦°üº¬Èκοոñ¡£¿ÉÒÔʹÓÃÏ»®ÏßÁ¬½Óµ¥´Ê¡£²»Ó¦Ê¹Óà Python ¹Ø¼ü×Ö¡£Óйر£Áô×ÖÐÅÏ¢£¬Çë²éÔÄ Python Îĵµ¡£ ¹¤¾ßÌáʾ£¨¿ÉÑ¡£© ½«Êó±êÖ¸ÕëÐüÍ£ÔÚ×ÀÃæÓ¦ÓóÌÐòÖеİ´Å¥ÉÏ·½Ê±³öÏֵļò¶ÌÃèÊö¡£ °´Å¥¹¦ÄܵÄÏêϸÃèÊö¡£½«Êó±êÖ¸ÕëÐüÍ£ÔÚ°´Å¥ÉÏ·½Ê±£¬´ËÏûÏ¢»áÏûÏ¢£¨¿ÉÑ¡£© ÏÔʾÔÚ¹¤¾ßÌáʾÏ·½¡£ ´ËͼÏñӦΪ 16 * 16 ÏñËØµÄͼÏñ£¬ÓÃÓÚ·ûºÅ»¯°´Å¥¡£Í¼Ïñ¸ñʽͼÏñ£¨¿ÉÑ¡£© ӦΪÈÎÒâÒ»ÖÖ³£ÓÃͼƬ¸ñʽ£¨¼´.bmp¡¢.jpgµÈ£©¡£Í¼Ïñ½«¸´ÖƵ½¼ÓÔØÏîÏîÄ¿Öд´½¨µÄͼÏñÎļþ¼ÐÖС£ 4.±à¼ Python ½Å±¾
´ËʱÒÑΪ¶¨Òå¼ÓÔØÏî°´Å¥ËùÐèµÄÊôÐÔÌí¼ÓÁËÖµ¡£´Ë¹¤×÷Á÷µÄÏÂÒ»²½ÊDZà¼
Python ½Å±¾²¢¸üРPython À࣬ÒÔ°üº¬¡°Ëõ·ÅÖÁËùÑ¡ÒªËØ¡±ÕâÒ»¹¦ÄÜ¡£Èç¹ûδѡÔñÈκÎÒªËØ£¬Ôò»áËõ·ÅÖÁËùÓÐͼ²ãµÄȫͼ¡£Òª½«´Ë¹¦ÄÜÌí¼Óµ½×Ô¶¨Òå°´Å¥£¬Ö´ÐÐÒÔϲ½Ö裺
£¨1£© ÔÚarcgisÈí¼þĿ¼ÏÂÕÒµ½Èçͼ3-9ËùʾµÄPython±à¼Æ÷£¬´ò¿ªÍ¨¹ýÏòµ¼
´´½¨µÄ¹¤×÷Îļþ¼Ðϵġ°install¡±Îļþ¼ÐÖÐPython½Å±¾¡£
ͼ3-9
£¨2£© ÔÚonClick(self)º¯ÊýÖмüÈëÏà¹Ø´úÂ룬Èçͼ3-10.
ͼ3-10
£¨3£© ±£´æ½Å±¾£¬Èç¹û³öÏÖͼ3-11ËùʾµÄ¾¯¸æÐÅÏ¢£¬ÔòÐèÒªÔڽű¾Í·ÉϼÓÉÏ¡°#
coding gbk¡±Èçͼ3-12.
ͼ 3-11 ͼ3-12
5.²âÊÔ°´Å¥
£¨1£©´´½¨¼ÓÔØÏîÎļþ£º תµ½¹¤×÷Îļþ¼Ð£¬Ë«»÷¸ÃÎļþ¼ÐÒÔÔËÐÐ £¨Í¼3-13£©½Å±¾¡£´Ë½Å±¾½«¼ÓÔØÏîËùÐèµÄÈ«²¿ÎļþºÍÎļþ¼Ð¶¼¸´ÖƵ½¹¤×÷Îļþ¼ÐÖеļÓÔØÏîѹËõÎļþÖС£ÎļþÃû°üÀ¨¹¤×÷Îļþ¼ÐÃû³ÆºÍ.esriaddin À©Õ¹Ãû£¨Í¼3-14£©¡£
ͼ3-13
ͼ3-14
£¨2£©°²×°¼ÓÔØÏ˫»÷еļÓÔØÏîÎļþÒÔÆô¶¯ ESRI ArcGIS ¼ÓÔØÏî°²×°¹¤¾ß¡£µ÷Óô˹¤¾ßºó£¬Ëü·ÖÎö¼ÓÔØÏîÎļþÄÚµÄ £¬²¢ÏÔʾ´´½¨¼ÓÔØÏîʱÊäÈëµÄÏîÄ¿ÉèÖÃÒÔ¼°¼ÓÔØÏîÊÇ·ñ°üº¬ÊÜÐÅÊý×ÖÇ©Ãû£¨Èçͼ3-15£©¡£
ͼ3-15
£¨3£©Ê¹ÓüÓÔØÏ´Ëʱ¿ÉʹÓÃΪ ArcGIS for Desktop Ó¦ÓóÌÐòÉè¼ÆµÄ×Ô¶¨Ò幦ÄÜ¡£Æô¶¯×ÀÃæÓ¦ÓóÌÐò (ArcMap)¡£×Ô¶¨Ò幤¾ßÌõ£¨£©¿ÉÄÜÒѾ´¦Óڿɼû״̬²¢¿ÉÓÃÓÚ²âÊÔ¡£Èç¹û²»¿É¼û£¬¿Éתµ½×Ô¶¨Òå²Ëµ¥£¬È»ºóµ¥»÷¼ÓÔØÏî¹ÜÀíÆ÷¡£¼ÓÔØÏî¹ÜÀíÆ÷¶Ô»°¿ò½«ÁгöÕë¶Ôµ±Ç°Ó¦ÓóÌÐò°²×°µÄ¼ÓÔØÏî¡£Ó¦ÏÔʾ×÷ΪÏîÄ¿ÉèÖöøÊäÈëµÄ¼ÓÔØÏîÐÅÏ¢£¬ÈçÃû³Æ¡¢ÃèÊöºÍͼÏñ¡£Èç¹û¼ÓÔØÏîÁÐÓÚ¹ÜÀíÆ÷ÖУ¬¿Éµ¥»÷×Ô¶¨Òå°´Å¥´ò¿ª×Ô¶¨Òå ¶Ô»°¿ò¡£Òª½«¹¤¾ßÌõÌí¼Óµ½Ó¦ÓóÌÐò£¬¿Éµ¥»÷¹¤¾ßÌõÑ¡Ï£¬È»ºóÑ¡ÔñÄúËù´´½¨µÄ¹¤¾ßÌõ¡£
£¨4£©½«Ê¾ÀýÊý¾Ý¼ÓÔØµ½ArcMapÖУ¬¿ªÊ¼±à¼ºóÈÎÒâÑ¡ÖÐÒ»¸öÒªËØ£¨Èçͼ3-16£©£¬µ¥»÷×Ô¶¨Ò幤¾ßÌõÖеġ°¡±°´Å¥£¬µØÍ¼»á×Ô¶¯Ëõ·Åµ½Ñ¡ÖÐÒªËØµÄλÖã¨Èçͼ3-17£©¡£
ͼ3-16
ͼ3-17
ʵϰËÄ ×ÚµØËÄÖÁÌáÈ¡
1. ËÄÖÁÌáÈ¡²½Öè
½çÖ·Ïß±íʾµØ¿éµÄ±ß½çÏߣ¬½çÖ·µã±íʾ½çÖ·ÏßµÄתÕÛµã»ò½»µã¡£½çÖ·µã¡¢Ïß
ÊÇÈ·¶¨µØ¿éλÖõÄÖØÒª×ÊÁÏ¡£½çÖ·µã¡¢ÏßÊôÐÔÐÅÏ¢Òª²É¼¯µÄÖØÒªÄÚÈÝ¡£ÊôÐÔÐÅÏ¢ÖУ¬¹æ¶¨µÄ½ç±êÀàÐÍÓоÅÖÖ£¬·Ö±ðÊǸֶ¤¡¢Ë®Äà×®¡¢Ê¯»Ò×®¡¢ÅçÍ¿¡¢´É±êÖ¾¡¢ÎÞ±êʶºÍÆäËû½ç±ê£»½çÖ·ÏßÀà±ðÓоÅÖÖ£¬·Ö±ðÊÇÌ﹡¡¢¹µÇþ¡¢µÀ·¡¢ÐÐÊ÷¡¢Î§Ç½¡¢Ç½±Ú¡¢Õ¤À¸¡¢Á½µãÁ¬Ïߣ»½çÖ·ÏßλÖ÷ÖΪÄÚÖÐÍâÈýÖÖ£¬·Ö±ð¶ÔÓ¦½çÖ·ÏßµØÎïµÄ×ÔÓС¢¹²ÓкÍËûÓУ»ÅþÁÚµØÎïȨÀûÈË´ú±í½çÖ·ÏßÁ½²à¶ÔÓ¦Ò²ÊÇÐèËĵijаüµØ¿é·½Ãû³Æ£¬ÖмäÓöººÅ¸ô¿ª¡£ËÄÖÁÌáÈ¡¾ÍÊÇÌáÈ¡×ÚµØËÄÁÚ£¨¶«ÄÏÎ÷±±£©µÄµØ¿éȨÊô£¬»òÕßÏàÁÚµÀ·¡£
1£©ÌáÈ¡½çÖ·µãµÄ²½Ö裺ѻ·¶ÁÈ¡µØ¿éÒªËØÀàµÄµØ¿é£¬È¡³öÿ¸öµØ¿éµÄËùÓнڵ㣬ÈôµãÒªËØÀàÖÐûÓÐ×ø±êÏàͬµÄµã£¬Ôò½«½Úµã´æÈëµãÒªËØÀàÖС£½çÖ·µãλÖÃÓÉÅ©»§ÖÖµØÊ±×ÔÐÐÔ¼¶¨£¬Êµ¼ÊÉϱíÏÖΪÌ﹡µÄ¹Õ½Ç£¬ÎÞÃ÷ÏÔµØÎï±êÖ¾£¬¹Ê½ç±êÀàÐÍĬÈÏÉèΪ¡°ÆäËû½ç±ê¡±¡£
2£©½çÖ·ÏßÌáÈ¡µÄ²½Ö裺¢ÙÑ»·¶ÁÈ¡µØ¿é£¬½«Ãæ×´µÄµØ¿éת»»Îª¶à¶ÎÏߣ¬ÔÙ½«¶à¶ÎÏßת»»Îªµ¥¸öµÄÏ߶Σ¬ÈôÏßÒªËØÀàÖÐûÓÐÏàͬµÄÏ߶Σ¬Ôò½«Ïß¶Î×÷Ϊ½çÖ·Ïß´æÈë½çÖ·ÏßÒªËØÀàÖС£¢Ú²éÕÒÓë½çÖ·ÏßÏཻµÄµØ¿é²¢È¡³öµØ¿éµÄ¡°CBFMC¡±ÊôÐÔ£¬½«ÊôÐÔ¸³Öµ¸ø½çÖ·ÏßµÄÅþÁÚµØÎïȨÀûÈËÊôÐÔ¡£½çÖ·ÏßÀà±ðºÍ½çÖ·ÏßλÖõÄÅжϱê×¼ÊÇ£¬Èç¹ûÓë½çÖ·ÏßÏཻµÄµØ¿éÓÐÁ½¸öÔò½çÖ·ÏßÀà±ðΪ¡°Ì﹡¡±£¬½çÖ·ÏßλÖÃΪ¡°ÖС±£»Èç¹ûÓë½çÖ·ÏßÏཻµÄµØ¿éÖ»ÓÐÒ»¸öÔò½çÖ·ÏßÀà±ðΪ¡°µÀ·¡±£¬½çÖ·ÏßλÖÃΪ¡°ÄÚ¡±¡£
3£©ËÄÖÁÌáÈ¡ÖÐÐÄ·¨£ºÍ¼4-1£¬ÖмäµÄµãΪµØ¿éµÄÖÐÐÄ»òÖÊÐÄ£¬ËÄÖÁÇøÓòͨ¹ýÓëxÖá³É45¡ãºÍ135¡ãµÄÁ½ÌõÖ±Ïß»®·Ö£¬ÖÜΧµØ¿éµÄÖÐÐÄÂäÈëÄĸöËÄÖÁÇøÓòÔòÑ¡ÔñÆä×÷ΪµØ¿é¶ÔÓ¦µÄËÄÖÁµØ¿é¡£
ͼ 4-1
¾ßÌå²½ÖèΪ£º
¢Ù Ñ»·¶ÁÈ¡µØ¿éͼ²ã£¬»ñÈ¡µØ¿éµÄÖÐÐĵã
¢Ú ¶Ôµ±Ç°µØ¿é×÷»º³åÇø£¬¸ù¾ÝµþÖùØÏµÕÒµ½µ±Ç°µØ¿éÖÜΧµÄµØ¿é£¬²¢ÇóµÃÖÜΧµØ¿éµÄÖÐÐÄ£»
¢Û Á¬½Óµ±Ç°µØ¿éµÄÖÐÐÄÓëÖÜΧµØ¿éµÄÖÐÐÄ£¬¸ù¾ÝбÂÊÅжϵؿéµÄËÄÖÁ£» ¢Ü ¶ÔµØ¿éµÄËÄÖÁÐÅÏ¢½øÐиüС£
4£©ËÄÖÁÌáÈ¡½çÖ·Ïß·¨£ºµØ¿é¶ÔÓ¦µÄËÄÖÁµØ¿éÓë¸ÃµØ¿é¶«¡¢ÄÏ¡¢Î÷¡¢±±Ëĸö·½Ïò×îÔ¶Ëĸö½çÖ·µãÏà½Ó¡£¶øÇÒÆäÖеÄÿ¸ö½çÖ·µã¶ÔÓ¦¸ÃµØ¿éµÄÁ½Ìõ½çÖ·Ïߣ¬Ð±Âʾø¶ÔÖµ½ÏСµÄ½çÖ·ÏßΪ¸ÃµØ¿éÓëÆäÄÏÖÁºÍ±±ÖÁµØ¿é¹²ÓеĽçÖ·Ïߣ»Ð±Âʾø¶ÔÖµ½Ï´óµÄ½çÖ·ÏßÔòΪ¸ÃµØ¿éÓëÆä¶«ÖÁºÍÎ÷ÖÁµØ¿é¹²ÓеĽçÖ·Ïß¡£½çÖ·ÏßÖеÄÅþÁÚµØÎïȨÀûÈËÊôÐÔÖÐÓÐÁ½¸öÃû×Ö£¬Ò»¸öÊǸõؿéµÄ³Ð°ü·½Ãû³Æ£¬ÁíÒ»¸öÔòΪÆäÅþÁڳаüµØ¿éȨÀûÈËÐÕÃû£»Èç¹ûÅþÁÚµØÎïȨÀûÈËÖÐÖ»ÓÐÒ»¸öÃû×Ö£¬¸ÃµØ¿éÔÚÕâÌõ½çÖ·Ïß´¦Ã»ÓÐÅþÁڵؿ飬ËÄÖÁÐÅϢĬÈÏÉèÖÃΪ¡°µÀ·¡±¡£ ¾ßÌå²½ÖèÊÇ£º
¢Ù Ñ»·¶ÁÈ¡µØ¿éͼ²ã£¬È¡³öÒ»¸öµØ¿éµÄËùÓнڵ㣬½«Æä´æÈëÒ»¸öÁ´±íÖУ» ¢Ú ͨ¹ýY×ø±êÖµµÄ±È½ÏÕÒµ½µØ¿éÄϱ±·½ÏòÉÏÁ½¸ö×îÔ¶½çÖ·µã£»Í¨¹ýX×ø±êÖµ±È½ÏµØ¿é¶«Î÷·½ÏòÁ½¸ö×îÔ¶½çÖ·µã£¬½«ÕâЩµãÒÔ¶«ÄÏÎ÷±±µÄ˳Ðò½øÐд洢£» ¢Û ͨ¹ý¾Å½»Ä£ÐͲéÕÒÓëÿ¸ö·½Ïò×îÔ¶½çÖ·µãÏà½ÓµÄÁ½Ìõ½çÖ·Ïߣ¬È»ºóͨ¹ýбÂÊÅжÏÓëµØ¿éËÄÖÁÓйصÄËÄÌõ½çÖ·Ïߣ»
¢Ü ¸ù¾ÝÕâËÄÌõ½çÖ·ÏßѰÕÒ±¾µØ¿éÅþÁڵؿéµÃµ½ËÄÖÁÐÅÏ¢²¢Ð´ÈëµØ¿éËÄÖÁÊôÐÔÖ®ÖС£
2.´úÂëʵÏÖ
1£©ÉèÖÃĬÈϵØÀíÊý¾Ý¿â£ºÔÚPythonÖÐÈç¹ûûÓÐÉèÖù¤×÷»·¾³£¨£©£¬Ä¬ÈϵĻ·¾³Îª¡°Ä¬ÈϵØÀíÊý¾Ý¿â¡±¡£ÔÚĿ¼ÖÐÓÒ¼üµ¥»÷¡°¡±£¬Ñ¡Ôñ¡°ÉèΪĬÈϵØÀíÊý¾Ý¿â¡±£¬Èçͼ4-2¡£
ͼ 4-2
2£©¸ù¾ÝµÚһС½ÚÖеĽçÖ·µã¡¢ÏßÓëËÄÖÁÌáÈ¡²½ÖèÔÚPython´°¿ÚÖнøÐдúÂë±àд
ºÍµ÷ÊÔ£»
3£©´úÂë³É¹¦ÔËÐк󣬸ù¾ÝʵϰÈýÖеIJ½Ö裬×Ô¶¨ÒåÒ»¸ö¹¤¾ßÌõºÍËĸö°´Å¥Èçͼ4-3£¬½«Python´°¿ÚÖеĴúÂë¸´ÖÆµ½Óë°´Å¥¶ÔÓ¦µÄº¯ÊýÖС£
ͼ4-3
4£©ÌáÈ¡Íê³Éºó´ò¿ª¡°jzd¡±Í¼²ãÊôÐÔ±í£¬Èçͼ4-4£¬
ͼ4-4
5)ÌáÈ¡Íê³Éºó´ò¿ª¡°jzx¡±Í¼²ãÊôÐÔ±í£¬Èçͼ4-5
ͼ4-5
5)ÌáÈ¡Íê³Éºó´ò¿ª¡°dk¡±Í¼²ãÊôÐÔ±í£¬Èçͼ4-6,
ͼ4-6
¸½£º²Î¿¼´úÂë
# coding:gbk import arcpy import pythonaddins
class Bound1(object):
\ def __init__(self): = True = False def onClick(self):
curdk = \ for row in curdk: mdk = row[1] cbfmc = row[3]
for part in row[1]: arrpoint = [] for pnt in part: (pnt)
boundpoints = [] #´æ´¢Ëĸö·½ÏòÉϵÄ×îÔ¶µã eastPoint = arrpoint[0] southPoint = arrpoint[0] westPoint = arrpoint[0] northPoint = arrpoint[0] #¸ù¾Ý×ø±êÅÐÇóµÃËĸö·½Ïò×îÔ¶µã for mpnt in arrpoint: if <= :
northPoint = mpnt if >= :
southPoint = mpnt if <= :
eastPoint = mpnt if >= :
westPoint = mpnt (eastPoint) (southPoint) (westPoint) (northPoint)
containedjzxs = [] #´æ´¢ÓëËĸöµãÏཻµÄ8Ìõ½çÖ·Ïß
cjzxqlrs = [] #´æ´¢ÓëËĸöµãÏཻµÄ8Ìõ½çÖ·ÏßµÄÅþÁÚµØÎïȨÀûÈË for boundPoint in boundpoints:
njzx = \ for crowjzx in njzx: jzxpoint = [] cjzxqlr = crowjzx[2]
jzx = crowjzx[1]
for partjzx in crowjzx[1]: for jzxpnt in partjzx: (jzxpnt) ptstart = jzxpoint[0] ptend = jzxpoint[1] isStartTouch = (mdk) isEndTouch = (mdk)
isContain = (isStartTouch and isEndTouch) isTouch = (boundPoint)
isBoundjzx = (isContain and isTouch) if isBoundjzx : (jzx) (cjzxqlr) del njzx dksz = [] default = \µÀ·\
#¸ù¾Ý½çÖ·ÏßµÄбÂÊÈ·¶¨ÄĸöÊÇÓëËÄÖÁÏà¹ØµÄ½çÖ·Ïß #µØ¿é¶«ÖÁ
if abs(((containedjzxs[0]. - containedjzxs[0]./(containedjzxs[0]. - containedjzxs[0].))
>=
abs(((containedjzxs[1].
-
containedjzxs[1]./(containedjzxs[1]. - containedjzxs[1].)): mboundStrings = cjzxqlrs[0].split(\ if len(mboundStrings) == 1: (default) else:
for bString in mboundStrings: if not(bString == cbfmc): (bString) else:
mboundStrings = cjzxqlrs[1].split(\ if len(mboundStrings) == 1: (default) else:
for bString in mboundStrings: if not(bString == cbfmc): (bString) #µØ¿éÄÏÖÁ
if abs(((containedjzxs[2]. - containedjzxs[2]./(containedjzxs[2]. - containedjzxs[2].))
>=
abs(((containedjzxs[3].
-
containedjzxs[3]./(containedjzxs[3]. - containedjzxs[3].)): mboundStrings = cjzxqlrs[3].split(\ if len(mboundStrings) == 1: (default) else:
for bString in mboundStrings: if not(bString == cbfmc): (bString) else:
mboundStrings = cjzxqlrs[2].split(\ if len(mboundStrings) == 1: (default) else:
for bString in mboundStrings: if not(bString == cbfmc): (bString) #µØ¿éÎ÷ÖÁ
if abs(((containedjzxs[4]. - containedjzxs[4]./(containedjzxs[4]. - containedjzxs[4].))
>=
abs(((containedjzxs[5].
-
containedjzxs[5]./(containedjzxs[5]. - containedjzxs[5].)):
mboundStrings = cjzxqlrs[4].split(\ if len(mboundStrings) == 1: (default) else:
for bString in mboundStrings: if not(bString == cbfmc): (bString) else:
mboundStrings = cjzxqlrs[5].split(\ if len(mboundStrings) == 1: (default) else:
for bString in mboundStrings: if not(bString == cbfmc): (bString) #µØ¿é±±ÖÁ
if abs(((containedjzxs[6]. - containedjzxs[6]./(containedjzxs[6]. - containedjzxs[6].))
>=
abs(((containedjzxs[7].
-
containedjzxs[7]./(containedjzxs[7]. - containedjzxs[7].)): mboundStrings = cjzxqlrs[7].split(\ if len(mboundStrings) == 1: (default) else:
for bString in mboundStrings: if not(bString == cbfmc): (bString) else:
mboundStrings = cjzxqlrs[6].split(\ if len(mboundStrings) == 1: (default)
else:
for bString in mboundStrings: if not(bString == cbfmc): (bString) #¸üÐÂËÄÖÁ
curupdk = \ for rowup in curupdk: if rowup[4].equals(mdk): rowup[0] = dksz[0] rowup[1] = dksz[2] rowup[2] = dksz[1] rowup[3] = dksz[3] (rowup) del curupdk del curdk pass
class Bound2(object):
\ def __init__(self): = True = False
def onClick(self): #ÖÐÐÄ·¨
curdk = \ for row in curdk:
overdk = [] #´æ´¢µ±Ç°µØ¿éÖÜΧµØ¿é
overcbfmc = [] #´æ´¢µ±Ç°µØ¿éÖÜΧµØ¿é³Ð°ü·½Ãû³Æ dkdz = [] dknz = []
dkxz = [] dkbz = [] mdk = row[1] cbfmc = row[2]
bmdk = #¶Ôµ±Ç°µØ¿é×÷»º³åÇø·ÖÎö #»ñÈ¡µ±Ç°µØ¿éÖÜΧµØ¿é
alldk = \ for arow in alldk: if not (arow[1]): isOverlap = (arow[1]) if isOverlap : (arow[1]) (arow[2]) del alldk i = 0
#»ñÈ¡Ëĸö·½ÏòµÄµØ¿é while i < len(overdk) :
k = abs( - overdk[i]./ - overdk[i].) if k <= 1 :
if > overdk[i]. : (overcbfmc[i]) else:
(overcbfmc[i]) else :
if > overdk[i]. : (overcbfmc[i]) else:
(overcbfmc[i]) i = i + 1 #Èç¹ûûÓÐÔòĬÈÏΪµÀ·
if len(dknz) == 0 : (\µÀ·\ if len(dkdz) == 0 : (\µÀ·\ if len(dkxz) == 0 : (\µÀ·\ if len(dkbz) == 0 : (\µÀ·\ #¸üÐÂËÄÖÁ
upCur = \ for rowup in upCur:
if rowup[4].equals(mdk): rowup[0] = dkdz[0] rowup[1] = dkxz[0] rowup[2] = dknz[0] rowup[3] = dkbz[0] (rowup) del upCur del curdk pass
class JZD(object):
\ def __init__(self): = True = False def onClick(self): #ÌáÈ¡½çÖ·µã jzd = []
#Ñ»·¶Áȡÿ¸öµØ¿é»ñÈ¡ËùÓеĽçÖ·µã
curdk = \ for row in curdk: cbfmc = row[2] for part in row[1]: arrpoint = [] for pnt in part: (pnt)
for cpoint in arrpoint: isSaved = False for cjzd in jzd : if (cpoint): isSaved = True if not isSaved : (cpoint) del curdk #²åÈë½çÖ·µã
curInsert = \ for jzdpoint in jzd:
([jzdpoint,\ del curInsert pass
class JZX(object):
\ def __init__(self): = True = False def onClick(self): #ÌáÈ¡½çÖ·Ïß jzx = []
pldwqlr = []
#Ñ»·¶Áȡÿ¸öµØ¿é»ñÈ¡ËùÓеĽçÖ·µã
curdk = \ for row in curdk: cbfmc = row[2] for part in row[1]: arrpoint = [] for pnt in part: (pnt) i = 0
while i < len(arrpoint)-1:
array = ([arrpoint[i],arrpoint[i + 1]]) curLine = (array)
isSaved = False #Åжϵ±Ç°½çÖ·ÏßÊÇ·ñÒѾ´æ´¢¹ý for cLine in jzx: if (curLine): isSaved = True if not isSaved: (curLine)
curAlldk = \ name = \
for arow in curAlldk: mdk = arow[1] ccbfmc = arow[2]
isStartTouch = arrpoint[i].touches(mdk) isEndTouch = arrpoint[i + 1].touches(mdk) isContain = (isStartTouch and isEndTouch) if isContain :
name = name + ccbfmc + \ name = name[0:len(name)-1]
(name) i = i + 1 del curdk #²åÈë½çÖ·Ïß
curInsert = \ i = 0
while i ([jzx[i],pldwqlr[i],\ i = i+1 del curInsert pass
Ïà¹ØÍÆ¼ö£º