利用Python製作Arcgis指令碼工具(上)

2021-09-19 07:18:03 字數 3055 閱讀 8824

感謝arcpyqq群裡的熱心大神,幫我找出了城市名提取上的錯誤,並提供了多種簡潔正確的方法!反思自己的基礎還不紮實,連字串常用的split()方法都忘記了...但也無須沮喪,繼續多多練習吧!

自頂向下設計,自底向上測試。把細節的測試做得足夠細緻,把問題再細分,記得費曼先生的學習方法,大而化之。

inworkspace = arcpy.getparameterastext(0) #輸入英文城市名檔案所在路徑,下含已轉好的dae_shp資料夾

#inworkspace = "d:/pythoncode_inwork/09dae_shp_check/process/data/yangzhou"

#城市名自動提取

#【方法1,在python指令碼中提取正常,但在arcgis指令碼工具中錯誤,需要修改】

##city_reverse= ""

##for i in range(1,len(inworkspace)):

## if inworkspace[-i] == "/":

## break

## else:

## city_reverse += inworkspace[-i]

##city = (city_reverse[::-1])

##arcpy.addmessage(city)

#【方法2】

#city = inworkspace.split('\\')[-1] if '\\' in inworkspqce else inworkspqce.split('/')[-1]

#【方法3】

#city = inworkspace.split(os.path.sep)[-1]

#【方法4】

city = os.path.split(inworkspace)[-1]

#_h合併tile

shps_dir = inworkspace + "/dae_shp"

shps = os.listdir(shps_dir)

shps_h =

for i in shps:

if '_h_poly.shp' in i:

arcpy.addmessage('start merging...')

#merge_name = city + "_merge.shp"

#merge_result = os.path.join(inworkspace,merge_name)

merge_result = inworkspace + "/"+ city + "_merge.shp"

#print merge_result

arcpy.merge_management(shps_h,merge_result)

arcpy.addmessage('merging succeed!')

#按pid融合

arcpy.addmessage('start dissolving...')

dissolve_result = inworkspace + "/"+ city + "_dissolve.shp"

arcpy.dissolve_management(merge_result, dissolve_result,["pid","ftype"])

arcpy.addmessage('dissolving succeed!' )

#與tile面交集取反

outline = ""

arcpy.addmessage('start symdiffing...')

for j in os.listdir(inworkspace):

if "submit_outline_m.shp" in j:

outline = j

infeatures = inworkspace + "/"+ outline

updatefeatures = dissolve_result

outfeatureclass = inworkspace + "/"+ city + "_symdiff.shp"

arcpy.symdiff_analysis(infeatures, updatefeatures, outfeatureclass, "all",0.05)

arcpy.addmessage('symdiffing succeed!' )

#漏藍結果排除邊界外

blue_union = inworkspace + "/"+ city + "_blue_union.shp"

arcpy.clip_analysis(outfeatureclass, infeatures, blue_union)

#拆分多部件要素

blue = inworkspace + "/"+ city + "_blue.shp"

arcpy.multiparttosinglepart_management(blue_union,blue)

#漏藍檢查提示訊息

Python 利用wordloud製作詞云

本文首發於我的部落格 gongyanli.com 詞云github 前言 第一次使用wordcloud,然後記錄了自己的點滴,使用其實很簡單。我輸出的圖形看著不太美觀,後續可以深入研究,輸出自己想要的形狀。pip install wordcloud from wordcloud import wor...

Python 利用PIL庫製作字元畫

利用pil庫將轉換為字元畫 點陣圖是由不同的顏色畫素點組成的規則分布,如果採用字串代替畫素,影象就成了字元畫.from pil import image 定義ascii char字符集,將之代替影象中的畫素點,讓每個字元對應影象中的不同顏色,字元種類越多,越能還原原圖中的色彩 asccii char...

利用python製作簡單計算器

利用python的定義函式,加上if的條件語句進行程式設計 def add x,y 相加 return x y defsubtract x,y 相減 return x y defmultiply x,y 相乘 return x y defdivide x,y 相除 return x y 使用者輸入 ...