Hello Dane!!

I'm developing a script that looks for shapefiles in a specific directory,
once it finds a file makes an image out of the shapes.
But I have some shapefiles that are corrupted and its size is 1KB, when the
scrpits gets to these files it fails showing the next error:
wrong file code : -1997790976
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "mapnik_punto_sin_duda.py", line 45, in <module>
    lyr.datasource = mapnik.Shapefile(base=ruta,file=archivo[0])
  File "C:\mapnik-0.7.1\python\2.6\site-packages\mapnik\__init__.py", line
282,
in Shapefile
    return CreateDatasource(keywords)
RuntimeError: wrong file code : -1997790976

My script is:

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

file_list = []
folders = None
for root, folders, files in os.walk( "c:\\" ):
    for filename in fnmatch.filter(files, '*.shp'):
        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:
            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")
            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."
        else:
            print "Algo fallo y no entro a ninguna de las geometrias"
        if geo == 2:
            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")
            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."
        else:
            print "Algo fallo y no entro a ninguna de las geometrias"
        if geo == 1:
            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")
            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."
        else:
            print "Algo fallo y no entro a ninguna de las geometrias"
print "Listo"


2011/6/27 Dane Springmeyer <[email protected]>

>
> On Jun 20, 2011, at 10:58 AM, Susana Iraiis Delgado Rodriguez wrote:
>
> > Hello list!!
> >
> > I'm developing a script to create images with mapnik and python, but I
> have a problem:
> > Some of my shapefiles are empty and mapnik doesn't want to work on them.
>
> Can you explain the problem you are seeing in more detail? Is mapnik
> throwing an error?
>
> > Is there any way to verify when a shapefile is empty or doesn't have
> information.
>
> Depends on what you mean by empty - 0 features perhaps? In that case,
> Mapnik should still be able to open the Shapefile and then you can, in
> python, do:
>
> ds = mapnik.Shapefile(file="your.shp")
> if len(ds.all_features()) == 0:
>   print 'this shapefile is empty'
>
> >
> > Thanks!!
> > _______________________________________________
> > Mapnik-users mailing list
> > [email protected]
> > https://lists.berlios.de/mailman/listinfo/mapnik-users
>
>
_______________________________________________
Mapnik-users mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/mapnik-users

Reply via email to