乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      我使用兩年時間拿下 工具箱的各種暗坑

       GIS薈 2021-09-19

      前言:ArcGIS 的工具箱 ArcToolBox 允許用戶添加、自定義工具箱和腳本,充分和 Python 結(jié)合,非常的方便,但是自定義的工具箱猶如一個黑盒子,總是出現(xiàn)莫名其妙的錯誤,陸陸續(xù)續(xù)兩年時間,終于摸出了頭緒!

      “限定”的錯誤

      讓我如此苦惱、如此害怕的,就是把寫好的 Python 腳本封裝成 ArcGIS 的工具箱。

      ArcGIS 工具箱

      每次我把程序代碼寫好,也能正常的運行,然后將其導入自定義工具箱中,點擊運行之前還得沐浴更衣好好的祈禱一番,愿天公助我。

      然而事與愿違,剛剛還好好的程序報錯了,錯誤可謂是千奇百怪,大部分時候都在說謎語,明明顯示第100行有什么什么錯,結(jié)果一看,100行是空行...

      顯然,ArcGIS 工具箱有一些特別的魔法,擁有一些專屬自己的“限定”錯誤,這種錯誤只有在這里才能品味到。

      還不快跟著我嘗一嘗新鮮的魔法shit。

      Note:以下所有錯誤均是將腳本封裝成工具箱后,運行才可能會出現(xiàn)的錯誤,請注意。
      Note:我一直使用的10.3版本,以下的所有錯誤不對非10.3的版本負責,當然其他版本也差不多。

      工具箱名字導致的錯誤

      我們先從最簡單的錯誤開始。

      工具箱名稱導致的錯誤:

      由于輸出路徑會自動填入工具箱的名字,中間有特殊符號的話,比如:“-”,就會報錯。

      縮進錯誤

      詭異的錯誤來了,報錯顯示如下。我都不知道是說的什么鬼話,怎么還有縮進錯誤?

      鎖定到報錯提示的地方,是這樣的:

      看上去非常正常,100%正常,開始我不信是這里的問題,我開始折騰,狂寫 print 語句,使勁打斷點,使勁測試,最后機緣巧合之下,我把中文注釋移到了上方,然后就順利運行了。

      # ...
      # 存在該字段
      else:
         # ...

      好吧,由于把 else 和中文注釋寫到一行,導致 else 被莫名其妙被跳過了,所以導致錯誤。

      兩種“變量”錯誤

      第一種:

      global name xx is not defined

      第二種:

      name xx is not defined

      比如錯誤處的代碼是這樣的,在變量 pta2 的上面是一行中文注釋:

      # ...
      # 二象限
      pta2 = (oX - length * 2, pta[1])
      # ...

      我們使用空行將報錯的變量和中文注釋隔開:

      # ...
      # 二象限

      pta2 = (oX - length * 2, pta[1])
      # ...

      于是乎,程序順利運行了,原來如果在變量的上一行是中文注釋,有可能會導致下面那一行被工具箱里面的神奇魔法規(guī)則跳過。

      自此,困擾我很久、經(jīng)常讓我折騰到深夜的各種暗坑終于有了解決方法。

      最后

      個人的經(jīng)驗之談,這里記錄下來,希望能有所幫助和啟發(fā)。


      薈GIS精粹,關注公眾號:GIS薈

      歡迎交流,更多文章請使用搜索

        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多