Ở bài trước gisgpsrs
đã giới thiệu từng
bước tạo tool trong arcgis bằng script python. Ở bài này gisgpsrs sẽ giới
thiệu chi tiết các hàm biến khi viết tool, và cách các bạn tham khảo code thư
viện mà arcgis đã cung cấp sẵn cho người dùng rất tiện ích và linh hoạt.
- Bước 1: Tạo tool “Z_Làm tròn trường số thực -> Thực hiện làm tròn” . Nếu bạn chưa biết tạo tool như thế nào thì hãy đọc bài 1
- Bước 2: Tạo các biến đầu vào Parameters gồm:
+ Chọn dữ liệu cần làm tròn (Layer đầu vào)
+ Chọn trường dữ liệu cần làm tròn (Chọn trường cần làm tròn)
- Bước 3: Viết code vào file script để xử lý, các bạn copy code dưới vào file script
# -*- coding: utf-8 -*-
# Author: Nguyễn Viết
Quân
# Web:
gisgpsrs.blogspot.com
# Email :
vietquan2407@gmail.com
import math
import arcgisscripting
gp =
arcgisscripting.create(9.3)
def
lamtron(input_fc,input_fd,newfd):
global gp
rows = gp.updatecursor(input_fc)
result = gp.GetCount_management(input_fc)
count = int(result.GetOutput(0))
gp.SetProgressor("step",
"Reading", 0, count, 1)
for row in iter(rows.next, None):
giatri = row.GetValue(input_fd)
#Trong python k có hàm làm tròn (round)
lên ở đây tách phần nguyên và thực
phanso,phannguyen = math.modf(giatri)
if (phanso >= 0.5):
newvalue = phannguyen + 1 #Công
thêm 1
row.SetValue(newfd,newvalue)
rows.UpdateRow(row)
elif (phanso != 0):
newvalue = phannguyen #Ko Công thêm
1
row.SetValue(newfd,newvalue)
rows.UpdateRow(row)
gp.SetProgressorPosition()
gp.ResetProgressor()
del rows
del row
#Input paramaters
inputShapefile =
gp.GetParameterAsText(0)
inputFields =
gp.GetParameterAsText(1)
outputShapefile =
gp.GetParameterAsText(2)
#Processing block
gp.toolbox =
"management"
try:
#Copy to new shapefile
gp.CopyFeatures_management(inputShapefile,outputShapefile)
#Processing conversion of encoding
inputFL = inputFields.split(";")
for inputField in inputFL:
lamtron(outputShapefile,inputField,inputField)
gp.AddMessage("Finish!")
#Free resources
except:
gp.GetMessage(2)
del gp
del gp
- Vậy là đã
hoàn thành tool này
- Bạn có thể
download tool này ở đây
- Các bạn có
thể tham khảo mã nguồn rất nhiều, và rất chi tiết trong file help của arcgis, bạn
tìm bộ help này trong Start -> All Program -> ArcGis -> ArcGis Desktop
Help
- Chúc các bạn
thành công!
Hãy like nếu bài viết có ích →
Kết bạn với gisgpsrs trên Facebook
để nhận bài viết mới nóng hổi
bác thừa giấy vẽ voi quá! python có hàm "round" mà. với lại sao ko dùng Calculate Filed gọn hơn ko nè.
Trả lờiXóaHàm round mình đã test thấy chưa được theo ý muốn khi giá trị làm tròn số chẵn lẻ. Còn dùng Calculate Field không tùy chỉnh được theo ý mình. Đây là một ví dụ để các bạn tham khảo thôi.
Xóa