Ko'proq

Sanani tahlil qilish uchun ArcGIS Desktop maydon kalkulyatoridan (python) foydalanish

Sanani tahlil qilish uchun ArcGIS Desktop maydon kalkulyatoridan (python) foydalanish


Men python yordamida datetime maydonini tahlil qilishga harakat qilaman (lekin ilgari hech qachon python ishlatmaganman). Menda haqiqiy sana, lekin haqiqiy vaqtni o'z ichiga olmaydigan maydon bor ... va boshqa soatlarda va am / pm ma'lumotlariga ega bo'lgan maydonlarda. Men sana (mm / dd / yy) ni datetime maydonidan olishim kerak va keyin uni amaldagi soat va am / pm maydonlari bilan yangi satr maydoniga birlashtirishim kerak.

Quyida buni amalga oshirishning vbscript usuli berilgan (va u yaxshi ishlaydi, lekin uni python yordamida yaratishim kerak):

(DatePart ("m", [STARTDATE])) & "/" & (DatePart ("d", [STARTDATE])) & "/" & (DatePart ("yyyy", [STARTDATE]))) & "gacha" & (DatePart ("m", [ENDDATE])) & "/" & (DatePart ("d", [ENDDATE])) & "/" & (DatePart ("yyyy", [ENDDATE])) & "( "& [StartHour] &" "& [StartAMPM] &" dan "& [EndHour] &" "& [EndAMPM] &") "gacha

Python-dan foydalangan holda yozgan narsalarim (lekin ishlamayapti):

def dateFull (oid) startDateObj = datetime.datetime.strptime (! STARTDATE!, "% m /% d /% Y") endDateObj = datetime.datetime.strptime (! ENDDATE!, "% m /% d /% Y" ) startDateObj + "ni" + "dan" + endDateObj + "ga qaytaring! StartHour! + "" +! StartAMPM! + "to" +! EndHour! + "" +! EndAMPM!

Iltimos, kimdir bu erda nima qilayotganimni tushunishga yordam bera oladimi?


Python tahlilini o'rnating (codeblock ishlatmang). Barcha kirish maydonlari (! StartHour!,…) Mag'lubiyat yoki sana deb o'ylayman. agar bo'lmasa, uni str () funktsiyasi bilan qavsga oling

mustaqil python kodi:

startdate = '3/1/15' enddate = '2/15/15' starthour = "5" startAMPM = "PM" endhour = "6" endAMPM = "AM" print str.format ("{0} to {1") } {2} {3} dan {4} {5} "gacha, startdate, enddate, starthour, startAMPM, endhour, endAMPM)

Dala kalkulyatori:

str.format ("{0} dan {1} gacha {2} {3} dan {4} {5} gacha",! startdate !,! enddate !,! starthour !,! startAMPM !,! endhour !,! endAMPM !)

Sizning muammoingiz boshqa narsalardan ko'ra ko'proq noto'g'ri tuzilgan sanalar bilan bog'liq (ba'zilari vaqti bor, ba'zilari yo'q, va hokazo ...).

Siz maydon kalkulyatorida oddiy Python ifodasini quyidagi tarzda ishlatishingiz kerak:

'{0} dan {1} gacha {2} {3} dan {4} {5}' gacha. Format (! STARTDATE! .Split (") [0],! ENDDATE! .Split (") [0], ! StartHour !,! StartAMPM !,! EndHour !,! EndAMPM!)

Muhim qism.split (") [0]bit. Bu vaqtga ega bo'lgan sanalar uchun faqat sana qismini qaytaradi, ammo yo'q bo'lganlar uchun muvaffaqiyatsiz bo'lmaydi.

Shuni ta'kidlash kerak bo'lgan yana bir narsa shundaki, CalculateField sanani Python-ga datetime moslamalari o'rniga satrlar sifatida biron sababga ko'ra uzatadi (shuning uchun tashlab qo'yishning hojati yo'q).


Videoni tomosha qiling: SUPERTAFAKKUR ONLINE KURSI. DARS