[Tutor] Python loop isn't working

2011-08-05 Thread Susana Iraiis Delgado Rodriguez
Hello list!
I have a python script which works with other libraries in order to create
maps. The script looks for an extension in a specific directory and with
mapnik makes the thumbnails.
The module works fine from Python command line and Pyton IDLE, but I need
this program to run from MS-DOS, when I added the try statement it started
to fail. Module runs but doesn't do what I need. Console shows:

C:\Python26shp2png.py C:\\ .png
Iniciando...
Listo

What am I doing wrong?

import mapnik
import os,fnmatch, sys
from mapnik import LineSymbolizer,PolygonSymbolizer,PointSymbolizer
from osgeo import ogr,gdal,osr

directorio = sys.argv[1]
extension = sys.argv[2]
try:
if len(sys.argv) == 3:
print 'Iniciando...'
file_list = []
folders = None
for root, folders, files in os.walk( directorio+'\\' ):
for filename in fnmatch.filter(files, extension):
file_list.append(os.path.join(root, filename))
for row, filepath in enumerate(file_list, start=1):
dir(LineSymbolizer().stroke)
shapeData = ogr.Open(filepath)
shp = 'Error al abrir el archivo' +filepath
if shapeData is None:
print shp
continue
layer = shapeData.GetLayer()
defn = layer.GetLayerDefn()
geo = defn.GetGeomType()
(ruta, filename) = os.path.split(filepath)
archivo = os.path.splitext(filename)
i = archivo[0]+'.png'

m = mapnik.Map(800,500,+proj=latlong +datum=WGS84)
m.background = mapnik.Color('#EBEBEB')
s = mapnik.Style()
r=mapnik.Rule()

if geo == 3 or geo == -2147483645:
print Trabajando mapa +ruta+\\+filename+ con geometria
+ str(geo)

r.symbols.append(mapnik.PolygonSymbolizer(mapnik.Color('#EB784B')))

r.symbols.append(mapnik.LineSymbolizer(mapnik.Color('rgb(170%,170%,170%)'),0.9))
s.rules.append(r)
m.append_style('My Style',s)
lyr = mapnik.Layer('world',+proj=latlong +datum=WGS84)
try:
lyr.datasource =
mapnik.Shapefile(base=ruta,file=archivo[0])
lyr.styles.append('My Style')
m.layers.append(lyr)
m.zoom_to_box(lyr.envelope())
mapnik.render_to_file(m,i, 'png')
print La imagen  +i+  fue creada.
except RuntimeError, e:
print 'Shapefile invalida'
continue

elif geo == 2 or geo == -2147483646:
print Trabajando mapa +ruta+\\+filename+ con geometria
+ str(geo)

r.symbols.append(mapnik.LineSymbolizer(mapnik.Color('#EB784B'),0.9))
s.rules.append(r)
m.append_style('My Style',s)
lyr = mapnik.Layer('world',+proj=latlong +datum=WGS84)
try:
lyr.datasource =
mapnik.Shapefile(base=ruta,file=archivo[0])
lyr.styles.append('My Style')
m.layers.append(lyr)
m.zoom_to_box(lyr.envelope())
mapnik.render_to_file(m,i, 'png')
print La imagen  +i+  fue creada.
except RuntimeError, e:
print 'Shapefile invalida'
continue

elif geo == 1 or geo == -2147483647:
print Trabajando mapa +ruta+\\+filename+ con geometria
+ str(geo)
blue =
mapnik.PointSymbolizer('C:\Python26\icono.png','png',50,50)
blue.allow_overlap = True
s=mapnik.Style()
r=mapnik.Rule()
r.symbols.append(blue)
s.rules.append(r)
m.append_style('My Style',s)
lyr = mapnik.Layer('world',+proj=latlong +datum=WGS84)
try:
lyr.datasource =
mapnik.Shapefile(base=ruta,file=archivo[0])
lyr.styles.append('My Style')
m.layers.append(lyr)
m.zoom_to_box(lyr.envelope())
mapnik.render_to_file(m,i, 'png')
print La imagen  +i+  fue creada.
except RuntimeError, e:
print 'Shapefile invalida'
continue
else:
print Algo fallo y no entro a ninguna de las geometrias
print Listo
else:
print Tus argumentos no son correctos
except IndexError:
print Tus argumentos no son correctos
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Python loop isn't working

2011-08-05 Thread Emile van Sebille

On 8/5/2011 9:14 AM Susana Iraiis Delgado Rodriguez said...


Hello list!
I have a python script which works with other libraries in order to
create maps. The script looks for an extension in a specific directory
and with mapnik makes the thumbnails.
The module works fine from Python command line and Pyton IDLE, but I
need this program to run from MS-DOS, when I added the try statement it
started to fail. Module runs but doesn't do what I need. Console shows:

C:\Python26shp2png.py C:\\ .png
Iniciando...
Listo

What am I doing wrong?



First, get rid of the encompassing try: except block so you can see any 
actual errors instead of trapping them.  Place print statements at 
various points to test and confirm values.  Read up on pdb.set_trace() 
to assist when prints don't quite help enough. Start your diagnostics 
from there and post the the actual traceback results when you get stuck.


Emile



import mapnik
import os,fnmatch, sys
from mapnik import LineSymbolizer,PolygonSymbolizer,PointSymbolizer
from osgeo import ogr,gdal,osr

directorio = sys.argv[1]
extension = sys.argv[2]



drop this...

try:



outdent this...

 if len(sys.argv) == 3:
 print 'Iniciando...'
 file_list = []
 folders = None
 for root, folders, files in os.walk( directorio+'\\' ):
 for filename in fnmatch.filter(files, extension):
 file_list.append(os.path.join(root, filename))


throw a print statement here to confirm that file_list has valid 
contents (I suspect not)



 for row, filepath in enumerate(file_list, start=1):
 dir(LineSymbolizer().stroke)
 shapeData = ogr.Open(filepath)
 shp = 'Error al abrir el archivo' +filepath
 if shapeData is None:
 print shp
 continue
 layer = shapeData.GetLayer()
 defn = layer.GetLayerDefn()
 geo = defn.GetGeomType()
 (ruta, filename) = os.path.split(filepath)
 archivo = os.path.splitext(filename)
 i = archivo[0]+'.png'

 m = mapnik.Map(800,500,+proj=latlong +datum=WGS84)
 m.background = mapnik.Color('#EBEBEB')
 s = mapnik.Style()
 r=mapnik.Rule()

 if geo == 3 or geo == -2147483645:
 print Trabajando mapa +ruta+\\+filename+ con
geometria + str(geo)

r.symbols.append(mapnik.PolygonSymbolizer(mapnik.Color('#EB784B')))

r.symbols.append(mapnik.LineSymbolizer(mapnik.Color('rgb(170%,170%,170%)'),0.9))
 s.rules.append(r)
 m.append_style('My Style',s)
 lyr = mapnik.Layer('world',+proj=latlong +datum=WGS84)
 try:
 lyr.datasource =
mapnik.Shapefile(base=ruta,file=archivo[0])
 lyr.styles.append('My Style')
 m.layers.append(lyr)
 m.zoom_to_box(lyr.envelope())
 mapnik.render_to_file(m,i, 'png')
 print La imagen  +i+  fue creada.
 except RuntimeError, e:
 print 'Shapefile invalida'
 continue

 elif geo == 2 or geo == -2147483646:
 print Trabajando mapa +ruta+\\+filename+ con
geometria + str(geo)

r.symbols.append(mapnik.LineSymbolizer(mapnik.Color('#EB784B'),0.9))
 s.rules.append(r)
 m.append_style('My Style',s)
 lyr = mapnik.Layer('world',+proj=latlong +datum=WGS84)
 try:
 lyr.datasource =
mapnik.Shapefile(base=ruta,file=archivo[0])
 lyr.styles.append('My Style')
 m.layers.append(lyr)
 m.zoom_to_box(lyr.envelope())
 mapnik.render_to_file(m,i, 'png')
 print La imagen  +i+  fue creada.
 except RuntimeError, e:
 print 'Shapefile invalida'
 continue

 elif geo == 1 or geo == -2147483647:
 print Trabajando mapa +ruta+\\+filename+ con
geometria + str(geo)
 blue =
mapnik.PointSymbolizer('C:\Python26\icono.png','png',50,50)
 blue.allow_overlap = True
 s=mapnik.Style()
 r=mapnik.Rule()
 r.symbols.append(blue)
 s.rules.append(r)
 m.append_style('My Style',s)
 lyr = mapnik.Layer('world',+proj=latlong +datum=WGS84)
 try:
 lyr.datasource =
mapnik.Shapefile(base=ruta,file=archivo[0])
 lyr.styles.append('My Style')
 m.layers.append(lyr)
 m.zoom_to_box(lyr.envelope())
 mapnik.render_to_file(m,i, 'png')
 print La imagen  +i+  fue creada.
 except RuntimeError, e:
 print 'Shapefile invalida'
  

Re: [Tutor] Python loop isn't working

2011-08-05 Thread Alan Gauld

On 05/08/11 17:14, Susana Iraiis Delgado Rodriguez wrote:


The module works fine from Python command line and Pyton IDLE, but I
need this program to run from MS-DOS, when I added the try statement it
started to fail. Module runs but doesn't do what I need. Console shows:

C:\Python26shp2png.py C:\\ .png
Iniciando...
Listo

What am I doing wrong?


What makes you think it doesn't work?
The first pruint is near the start of your code, the last near the end.
So your program appears to have run.

What else were you expecting to see happen?
What is different when you run it from Python command line?

In practice there should be no difference between you typing

C:\Python26shp2png.py C:\\ .png

and typing


C:\Python26 python shp2png.py C:\\ .png

Or are you doing something at the Python  prompt?
If so what? How are you running it when it works?


Alan G.
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor