Найти - Пользователи
Полная версия: Помогите не магу запустить скрипт PullSDTS.py
Начало » Python для новичков » Помогите не магу запустить скрипт PullSDTS.py
1
orik
Изучаю урок http://www.creativecrash.com/tutorials/digital-elevation-model-dem-terrain-displacement#tabs
для этого урока нужно работвть с pullsdts на питоне , имею эти файлы для работы этой программы скачанные с сайта производителя (http://www.3dartist.com/WP/pullsdts/ . or . http://mien.msu.montana.edu/svn/mienblocks/dependancies/pullsdts/) (файлы прикрепил к теме) pullsdts.py , sdts.py , pulldem.py , __init__.py , guinter.py , gztar.py , geotiff.py … скачал и установил эти версии питона (2.6);(2.3);(3.3);(2.7) и в командной строке винды пишу команду>> C:\Python23\python.exe C:\Apps\pullsdts.py <<<
вылезает это ошибка
Traceback(most recent call last):
File “C:\Apps\pullsdts.py”, line 57, in ? import geotiff, guinter, gztar, pulldem, sdts
File “C:\Apps\guinter.py”, line 50 if size &gt; 0:
^
SyntaxError: invalid syntax



очень нужна это программа ,с питоном первые знакомлюсь если напишете что делать поподробнее буду рад.заранее спасибо
Edinonog
На строке 50 в модуле guinter.py ошибка. Должно быть:
if size > 0:

У вас там по всему коду, этого модуля как минимум, вместо < и > &lt; и &gt; соответственно.
orik
Edinonog
На строке 50 в модуле guinter.py ошибка. Должно быть:

Спасибо , изменил как вы сказали и повторил попытку открыть в нектрых релизах питон но дало другую ошибку , вы сами можете проверить запускается ли этот скриат у вас или нет ?Заранее спасибо



C:\Users\uoxbros>C:\Python23\python.exe C:\pull\pullsdts.py
Traceback (most recent call last):
File “C:\pull\pullsdts.py”, line 57, in ?
import geotiff, guinter, gztar, pulldem, sdts
File “C:\pull\guinter.py”, line 138
b1 = ‘<alt-’ +=“” altkey.lower()=“” ‘=“”>’
^
SyntaxError: invalid syntax

C:\Users\uoxbros>C:\Python27\python.exe C:\pull\pullsdts.py
Traceback (most recent call last):
File “C:\pull\pullsdts.py”, line 57, in <module>
import geotiff, guinter, gztar, pulldem, sdts
File “C:\pull\guinter.py”, line 138
b1 = ‘<alt-’ +=“” altkey.lower()=“” ‘=“”>’
^
SyntaxError: invalid syntax

C:\Users\uoxbros>C:\Python33\python.exe C:\pull\pullsdts.py
File “C:\pull\pullsdts.py”, line 246
except AttributeError,IOError:
^
SyntaxError: invalid syntax

C:\Users\uoxbros>
Edinonog
Код однозначно не для версии 3+.
На строке 138 и 139 должно быть:
b1 = '<Alt-' + altkey.lower() + '>'
b2 = '<Alt-' + altkey.upper() + '>'

Попробуйте воспользоваться модулем guinter.py отсюда.

Сохраняйте его в виде исходного кода, а не html!
orik
Edinonog
Код однозначно не для версии 3+.На строке 138 и 139 должно быть:

попробовал оба варианта но неполучилосьс открыл с питон 2,3 выскачило окно C:\Apps\pullsdts.py in not valid a Win32 application … пашел запустил с windows xp 32 (((((((((((

C:\Documents and Settings\XPMUser>C:\Python23\python.exe \\tsclient\C\pull\pulls
dts.py
Traceback (most recent call last):
File “\\tsclient\C\pull\pullsdts.py”, line 57, in ?
import geotiff, guinter, gztar, pulldem, sdts
File “\\tsclient\C\pull\guinter.py”, line 2
Including a header puts\n' +'key info and an optional short\n' +'comment int
o 128 bytes added to\n' +'the beginning of the RAW file.', bgr=wg) #— header c
omment group — grp = self.commentGrp = tk.Frame(frame,bd=0,height=17,bg=wg) gr
p.pack(side='top',fill='x',pady=0) ew = self.ewComment = tk.Entry(grp,textvariab
le=header,width=39) ew.pack(side='right') lbl = tk.Label(grp,text='Header Commen
t:',bg=wg) lbl.pack(side='right') #— divider — grp = tk.Frame(frame,bd=1,rel
ief='groove',height=2,bg=wg) grp.pack(side='top',fill='x',pady=0) #— gray redi
stribution group — grp = tk.Frame(frame,bd=0,height=17,bg=wg) grp.pack(side='t
op',fill='x',pady=2) grp.pack_propagate(0) lbl = tk.Label(grp,text='Grays:',font
=self.ini.fontBold,bg=wg) lbl.pack(side='left') for t,v in [('Exact','x'),('Equa
lize to Self','='), ('Equalize to Range','r')]: b = tk.Radiobutton(grp,variable=
rng,text=t,value=v,bg=wg, command=self.updateGrays) b.pack(side='left',padx=3,pa
dy=0) #— gray range group — grp = self.grayRangeGrp = tk.Frame(frame,bd=0,he
ight=17,bg=wg) grp.pack(side='top',fill='x',pady=0) if self.showTips.get(): hlp
= helpLabelClass(grp,self, ‘ lets you save the DEM data as\n’ +'original exact v
alues or redistributed\n' +'(equalized) to a maximum range according\n' +'to the
quad\'s own extents or a user-set\n' +'range of extents. (Only Exact and Range\
n' +'results can be tiled in an image editor.)', bgr=wg) #— ConUS default rang
e button — box = tk.Frame(grp,bd=0,width=46,height=17,bg=wg) box.pack_propagat
e(0) #force smaller button size box.pack(side='right',padx=4) b = self.bConus =
buttClass(box,self,'text','ConUS','normal') b.butt.config(command=self.rangeDefa
ult,font=self.ini.fontSmall) b.cfg(tip='Reset to continental\nU.S. elevation ran
ge') b.butt.pack() #— range entry widgets lbl = self.lblRange = tk.Label(grp,b
g=wg) t = unit.get() if t == ‘f’: t = ‘ft’ elif t == ‘d’: t = ‘dec’ lbl.config(t
ext=t+'. ‘) lbl.pack(side=’right') ew = self.ewRangeMax = tk.Entry(grp,textvaria
ble=rMaxStr,width=10) ew.pack(side='right') lbl = tk.Label(grp,text='to',bg=wg)
lbl.pack(side='right') ew = self.ewRangeMin = tk.Entry(grp,textvariable=rMinStr,
width=10) ew.pack(side='right') lbl = tk.Label(grp,text='Range:',justify='right'
,bg=wg) lbl.pack(side='right') #— divider — grp = tk.Frame(frame,bd=1,relief
='groove',height=2,bg=wg) grp.pack(side='top',fill='x',pady=0) #— other group
— grp = tk.Frame(frame,bd=0,height=17,bg=wg) grp.pack_propagate(0) grp.pack(si
de='top',fill='x',pady=3) lbl = tk.Label(grp,text='Bit Depth:',font=self.ini.fon
tBold,bg=wg) lbl.pack(side='left') for t,v in : b = tk.Radiob
utton(grp,variable=bc,text=t,value=v,bg=wg, command=self.update) b.pack(side='le
ft',padx=3,pady=0) lbl = tk.Label(grp,text=' Fill:',font=self.ini.fontBold,bg=wg
) lbl.pack(side='left') for t,v in : b = tk.Radiobutton
(grp,variable=fv,text=t,value=v,bg=wg, command=self.update) b.pack(side='left',p
adx=3,pady=0) if self.showTips.get(): hlp = helpLabelClass(grp,self,' 16-bit dat
a is usually\n' +'preferred if the target application can\n' +'handle it.\n' +'-
'*24+'\n' +' Black for fill areas (edge slivers)\n' +'is best for heightfields.
White may be\n' +'useful for 2D graphics work. Void will\n' +'be the opposite of
fill.',bgr=wg) #— divider — grp = tk.Frame(frame,bd=1,relief='groove',heigh
t=2,bg=wg) grp.pack(side='top',fill='x',pady=0) #— button group — grp = self
.buttGrp = tk.Frame(self.frame,bd=0,relief='flat',height=28, bg=wg) grp.pack_pro
pagate(0) grp.pack(anchor='se',side='bottom',fill='x',pady=2) “”“ if os.name ==
'mac': #make room for Mac window handle filler = tk.Label(grp,width=1,bg=wg) fil
ler.pack(side='right',padx=3) ”“” #— quit button — b = self.bQuit = buttClas
s(grp,self,'text','Cancel','normal') b.butt.config(command=self.quit,highlightba
ckground=wg) b.cfg(tip='Don\'t save RAW file',uline=0,altkey='c') b.butt.pack(si
de='right',padx=1,pady=1,fill='y') #— save button — b = self.bSave = buttCla
ss(grp,self,'text','SAVE','normal') b.butt.config(command=self.saveSelf,highligh
tbackground=wg) b.cfg(tip='Save RAW\n2D raster file',uline=0,altkey='s') b.butt.
pack(side='right',padx=1,pady=1,fill='y') #— finish up — if not doHead.get()
: self.ewComment.config(state='disabled',bg=nullGray) if self.range.get() != ‘r’
: self.ewRangeMin.config(state='disabled',bg=nullGray) self.ewRangeMax.config(st
ate='disabled',bg=nullGray) self.bConus.butt.config(state='disabled') frame.focu
s_set() frame.grab_set() parent.frame.wait_window(self.frame) #disable parent fr
ame #end def __init__ def quit(self,event=None): self.parent.frame.focus_set() s
elf.parent.frame.grab_set() self.frame.destroy() def rangeDefault(self): if self
.unit.get() == ‘f’: min = self.rangeDefaultDict max = self.rangeDefault
Dict elif self.unit.get() == ‘d’: min = self.rangeDefaultDict
max = self.rangeDefaultDict else: min = self.rangeDefaultDict
max = self.rangeDefaultDict self.updateUnit(min,max) def saveSelf(self,
event=None): k = self.parent.sdts.keyInfo s = k.name #make up a file name by rem
oving i = s.find(',') # comma & what follows if i > -1: s = s L = s.split()
#remove white spaces s = '' for i in range(len(L)): s = s + L if self.doHead
er.get(): #create complete header h = self.byteOrder.get() \ + str(k.dimX) + ‘x’
+ str(k.dimY) + ‘\\’ \ + k.name + ‘\\’ + self.header.get() i = len(h) if i < 12
7: h = ljust(h,127) elif i > 127: h = h h = h + ‘\0’ #add terminator as 1
28th character else: #no header, put key info into file name h = ‘' s = s + ’_'
+ str(k.dimX) + ‘x’ + str(k.dimY) + ‘_’ if self.byteOrder.get() == ‘>’: s = s +
'Mac' else: s = s + ‘PC’ s = s + ‘.raw’ pn = saveAsFile(self,'Save as RAW',self.
ini.outDir, s,) if pn: xfer = self.
parent.sdts if self.range.get() in : #want only for exact & range unitF
actor = pulldem.convertUnits(1.0,k.unitZ,self.unit.get()) else: unitFactor = 1.0
“”" print ‘\n’,self.range.get(),k.unitZ,self.unit.get(),unitFactor #**DEBUG pri
nt ‘\t range:’,self.ewRangeMin.get(),'-',self.ewRangeMax.get() print ‘\tkeyInfo:
’,k.elevDict,'-',k.elevDict “”" if self.range.get() == ‘=’: #equ
alize r1 = k.elevDict r2 = k.elevDict elif self.range.get() == ‘
r’: #set to range #pick up current range settings from string entry field #remov
e any commas & fail gracefully if entry is non-numeric try: s = string.replace(s
elf.ewRangeMin.get(),',','') r1 = int(s) self.rangeMin.set(r1) except ValueError
: #invalid numeric input r1 = self.rangeMin.get() # so revert self.ewRangeMin.co
nfig(textvariable=str(r1)) try: s = string.replace(self.ewRangeMax.get(),',','')
r2 = int(s) if r2 < r1: #safety r2 = self.rangeMax.get() if r2 < r1: r2 = r1 +
1 self.rangeMax.set(r2) except ValueError: r2 = self.rangeMax.get() self.ewRange
Max.config(textvariable=str(r2)) else: r1 = r2 = None #save exact values self.bu
ttGrp.pack_forget() progress = progressFrameClass(self.frame) progress.slider.co
nfig(bg='green') progress.frame.pack(anchor='ne',side='bottom',fill='x') self.fr
ame.update_idletasks() if self.bitCnt.get() == 16: sdts.dem2raw(fixPath(pn,pn
), xfer.ddf[xfer.ddfDict], self.byteOrder.get(),h, k.dimY,k.dimX,u
nitFactor, k.elevDict,k.elevDict, self.range.get(),r1,r2, self.f
illValue.get(),progress) else: sdts.dem2raw8(fixPath(pn,pn), xfer.ddf[xfer
.ddfDict], self.byteOrder.get(),h, k.dimY,k.dimX,unitFactor, k.elevDi
ct,k.elevDict, k.elevDict,k.elevDict, self.range
.get(),r1,r2, self.fillValue.get(),progress) lookup = {'=':'self','<':'little','
>':'big', ‘d’:'dec','f':'ft','m':'m','r':'range', ‘x’:'exact'} #used instead of
if/then structures if self.range.get() == ‘r’: self.ini.rawDist = ‘range’ self.i
ni.rawMax = self.rangeMax.get() self.ini.rawMin = self.rangeMin.get() else: self
.ini.rawDist = lookup self.ini.rawBits = self.bitCnt.get() sel
f.ini.rawFill = self.fillValue.get() self.ini.rawUnit = lookup
self.ini.endian = lookup self.quit() #quit upon successful
completion def update(self,event=None): self.frame.update_idletasks() def updat
eGrays(self): if self.range.get() == ‘r’: self.ewRangeMin.config(state='normal',
bg='white') self.ewRangeMax.config(state='normal',bg='white') self.bConus.butt.c
onfig(state='normal') else: self.ewRangeMin.config(state='disabled',bg=self.null
Gray) self.ewRangeMax.config(state='disabled',bg=self.nullGray) self.bConus.butt
.config(state='disabled') self.update() def updateHeader(self): if self.doHeader
.get(): self.ewComment.config(state='normal',bg='white') else: self.ewComment.co
nfig(state='disabled',bg=self.nullGray) self.update() def updateUnit(self,min=No
ne,max=None): “”“ Reset the range numbers label. Recalc range numbers for new un
it if not resetting to default. ”“” self.lblRange.config(text= {'d':'dec','f':'f
t','m':'m'}+'. ') #reset label if not min: #true if not set by
rangeDefault min = pulldem.convertUnits(self.rangeMin.get(),self.unitHold, self.
unit.get()) max = pulldem.convertUnits(self.rangeMax.get(),self.unitHold, self.u
nit.get()) self.unitHold = self.unit.get() #reset self.rangeMin.set(min) self.rM
inStr.set(str(min)) self.rangeMax.set(max) self.rMaxStr.set(str(max)) self.updat
e() #end class rawSaveDialogClass class sortBarClass: “”“ This class acts as 1)
a frame with buttons for sorting the TAR file contents list as well as 2) holdin
g the master copy of the list and the functions for sorting and producing that l
ist. ”“” def __init__(self,master,parent,w,h,fnt,visible=1): #master is the call
ing frame, parent is the calling class color = colorClass() self.list = #wher
e the current master list resides self.listFlag = #reverse flags: na
me/size/type/time/order self.parent = parent # which are reset by self.unhide se
lf.visible = 1 #visibility of sort bar buttons self.frame = tk.Frame(master,widt
h=w,height=h,bd=1) #bd needed for Mac if os.name == ‘mac’: self.frame.config(bg=
color.winGray, highlightbackground=color.winGray) self.but1 = tk.Button(self.fra
me,text='Name',font=fnt, command=self.sortName) self.but1.pack(side='left',fill=
'x',expand=1) self.but2 = tk.Button(self.frame,text='Type',font=fnt, command=sel
f.sortType) self.but2.pack(side='left') self.but3 = tk.Button(self.frame,text='S
ize',font=fnt, command=self.sortSize) self.but3.pack(side='left') self.but4 = tk
.Button(self.frame,text='Date/Time',font=fnt, command=self.sortTime) self.but4.p
ack(side='left',fill='x',expand=1) self.but5 = tk.Button(self.frame,text='File #
',font=fnt, command=self.sortOrig) self.but5.pack(side='left') if os.name == ‘ma
c’: self.but1.config(bd=0,highlightbackground=color.winGray) self.but2.config(bd
=0,highlightbackground=color.winGray) self.but3.config(bd=0,highlightbackground=
color.winGray) self.but4.config(bd=0,highlightbackground=color.winGray) self.but
5.config(bd=0,highlightbackground=color.winGray) self.frame.pack_propagate(0) se
lf.frame.pack(anchor='w',fill=None,expand=0) self.tip = ‘Sort by file attribute’
self.frame.bind('',self.showTip) #end def __init__ def hide(self): #hide the so
rt buttons frame self.but1.pack_forget() self.but2.pack_forget() self.but3.pack_
forget() self.but4.pack_forget() self.but5.pack_forget() self.visible = 0 def lo
ad(self,fo): x,y = os.path.split(fo.fname) self.listHeader = ['FILE NAME: ‘+y,’I
N FOLDER: ‘+x] x = os.stat(fo.fname) self.listHeader.append(’FILE DATE: ' \ +pul
ldem.fixDateTuple(time.ctime(x))) self.listHeader.append('FILE SIZE: '+pullde
m.fixSize(x)) x = fo.dirLenMax self.timeStr = x #19 for display, but
other for sorting w = self.colWidth = [x,x,19,x] self.w
idth = w + w + w + w + 6 if fo.sdtsAttr: self.listHeader.append('NOT
E: Appears to be a USGS SDTS transfer.') self.listHeader.append('-'*self.width)
#create horizontal rule x = self.list = y = for i in range(len(fo.dir)): e
= # e=sorder text, e=flag, e=listing text, e=tar.dir e.append(rj
ust(str(fo.dir.order),w)) #just for starters e.append(0) e.append(ljust(fo
.dir.name,w) +' '+rjust(str(fo.dir.size),w)+' ' +ljust(pulldem.fixDa
teTuple(time.ctime(fo.dir.time)),w) +' '+rjust(str(fo.dir.order),w))
e.append(fo.dir) x.append(e) y.append(e) return self.listHeader + y #end
def load def showTip(self,event): if self.parent.showTips.get() and self.visible
and self.tip: f = self.frame tip = tipClass(f,self.tip, f.winfo_rootx()+f.winfo
_width(), f.winfo_rooty()+f.winfo_height()) def unhide(self): #unhide the sort b
uttons self.listFlag = #reset sort order-reversal flags self.but1.pa
ck(side='left',fill='x',expand=1) self.but2.pack(side='left') self.but3.pack(sid
e='left') self.but4.pack(side='left',fill='x',expand=1) self.but5.pack(side='lef
t') self.visible = 1 #— sorting functions (in relative order) — def doSort(s
elf,o): self.list.sort() if self.listFlag: self.list.reverse() self.listFlag[
o] = not self.listFlag L = for i in range(len(self.list)): L.append(self.l
ist) self.parent.list.delete(0,'end') self.parent.listSet(self.listHeader+
L) def sortName(self): for i in range(len(self.list)): self.list = self.li
st.name self.doSort(0) def sortSize(self): for i in range(len(self.list)):
self.list = rjust(str(self.list.size),self.colWidth) self.doSort
(1) def sortType(self): #insert a leading temp tuple item for type for i in rang
e(len(self.list)): t = ljust(self.list.type,4) p = self.list.name.fi
nd('.') if p > -1: t = t + self.list.name else: t = t + self.list[
3].name self.list = t self.doSort(2) def sortTime(self): for i in range(le
n(self.list)): self.list = rjust(str(self.list.time),self.timeStr) s
elf.doSort(3) def sortOrig(self): for i in range(len(self.list)): self.list[0
] = rjust(str(self.list.order),self.colWidth) self.doSort(4) #end class
sortBarClass class tipClass: “”“ This class creates a small transient Toplevel
window just large enough to contain a widget tip, which is displayed butting aga
inst the widget's lower-right corner. If, once displayed, the initial tip window
is found to go off the screen's right or bottom edge, then it is moved to a dif
ferent appropriate corner (top, left, or top left). Since we don't know the size
of the tip window until it displays, this off-screen detection and solution can
't be calculated and acted on until it displays. By locally binding the mouse an
d left-mouse-click events for the button to this class's done function, and then
entering a local wait loop*, the tip is left up until either event occurs, at w
hich point the tip display is destroyed. A greater widget/tip overlap would be d
esirable, but more than one pixel overlap can cause problems (flickering and orp
han tip windows). *Under Python 2.0 Tkinter, the Tkinter wait_variable() functio
n doesn't work with Mac OS9.x, so a timed loop is used instead (doubled for spec
ial windows). ”“” def __init__(self,parent,tip,x,y): color = colorClass() frame
= tk.Toplevel(parent,bd=1,bg=color.black) frame.geometry('+'+str(x-1)+'+'+str(y-
1)) frame.transient() #keep from showing up in task list/bar frame.overrideredir
ect(1) #no window decorations (close box, etc) self.sign = tk.Label(frame,text=t
ip,bg=color.cream,justify='left') self.sign.pack() #put the text into a label fr
ame.update_idletasks() #make sure it all gets displayed xFix = (frame.winfo_root
x()+frame.winfo_width()) \ - parent.winfo_screenwidth() yFix = (frame.winfo_root
y()+frame.winfo_height()) \ - (parent.winfo_screenheight()-taskBarHt) if xFix >
0 or yFix > 0: #tip goes off the screen one/both ways if xFix <= 0: xFix = frame
.winfo_rootx() else: xFix = parent.winfo_rootx() - frame.winfo_width() + 1 if yF
ix <= 0: yFix = frame.winfo_rooty() else: yFix = parent.winfo_rooty() - frame.wi
nfo_height() + 1 frame.geometry(newGeometry='+'+str(xFix)+'+'+str(yFix)) frame.u
pdate_idletasks() if os.name == ‘mac’: if tip == ‘<’: parent.after(2*tipDelay
) else: parent.after(tipDelay) else: parent.bind('',self.done) parent.bind('',se
lf.done) #works for any mouse button self.action = tk.IntVar() #enter a local lo
op by waiting self.action.set(99) parent.wait_variable(self.action) parent.unbin
d('') parent.unbind('') frame.destroy() #end def __init__ def done(self,event):
#one of the 2 bound events lands here #print ‘event #’,event.num,'type',event.ty
pe # where changing the tk self.action.set(event.num) # variable ends the wait l
oop #end class tipClass # –this isn't used on Mac #— testing — if __name__
== ‘__main__’: color = colorClass() print ‘\nThis module (guinter.py) is not a s
tandalone program. It’, \ ‘\ncontains functions and classes used by both DEMpy a
nd PullSDTS.’ \ '\n\tMore info at http://www.3dartist.com/WP/pullsdts/' \ ‘\n(no
testing was done)’ ### end module ###
^
SyntaxError: invalid syntax

C:\Documents and Settings\XPMUser>)))))))



может дело в питоне ? спасибооо
Edinonog
Попробуйте этот guinter.py
orik
Edinonog
Попробуйте этот guinter.py
спасибо вам большое наконецто получилось 10 дней мучаюсь а то(( а в чем было проблема можете обьяснить я откывал исходный код копировал олттуда код и открывал старый гуинтер с Idle editor и вставлял код и сохранял
Edinonog
Код сохранялся с элементами html. Нужно было нажать в браузере просмотр исходного кода, а затем “сохранить как”, тогда получается правильный python модуль.
orik
Edinonog
Код сохранялся с элементами html. Нужно было нажать в браузере просмотр исходного кода, а затем “сохранить как”, тогда получается правильный python модуль.
аа вот как ))) еше раз спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB