Open aaschwanden opened 10 years ago
Hmm:
I look at the code and do not understand how it worked for you .... What happens if you don't specify the .shp extension?
Thanks
2014-04-28 18:10 GMT-04:00 Andy Aschwanden notifications@github.com:
Hi,
(Tested with basemap 1.0.6)
This works:
m.readshapefile('foo.shp', 'my_shape')
while this fails:
m.readshapefile('bar_0.1.shp', 'my_shape')
raise IOError('error reading shapefile %s.shp' % shapefile) fields = shf.fields coords = []; attributes = []
IOError: error reading shapefile bar_0.1.shp
Note that foo.shp and bar_0.1.shp are exactly the same file except for the filename. So it seems that the additional . causes the problem. Minimal example to reproduce behavior:
Rename huralll020.{shp,dfb,shx} to huralll020_0.1.{shp,dbf,shx} and change filename in examples/hurrtracks.py accordingly. Run hurrtracks.py.
Of course the obvious workaround is not to use . in filenames. But this is somewhat impracticable as I have a large number or files and would like keeping the filenames consistent accross filetypes (netCDF, shapfiles, pngs, etc).
Is there an easy fix?
Thanks very much,
Andy
— Reply to this email directly or view it on GitHubhttps://github.com/matplotlib/basemap/issues/151 .
Sasha
Sorry, I was not clear enough, the above code was a snippet from my scripts. I don't specify the the .shp extension, so the above should read:
This works:
m.readshapefile('foo, 'my_shape')
while this fails:
m.readshapefile('bar_0.1', 'my_shape')
Andy
I think you are not passing the extension to readshapefile, it is just a typo in your example, right?
If this is so then the culprit is this line:
https://github.com/matplotlib/basemap/blob/master/lib/mpl_toolkits/basemap/shapefile.py#L249
It is not to hard to fix, so If you want the glory, go ahead) If Jeff won't mind.
Cheers
2014-04-28 18:31 GMT-04:00 Oleksandr Huziy guziy.sasha@gmail.com:
Hmm:
I look at the code and do not understand how it worked for you .... What happens if you don't specify the .shp extension?
Thanks
2014-04-28 18:10 GMT-04:00 Andy Aschwanden notifications@github.com:
Hi,
(Tested with basemap 1.0.6)
This works:
m.readshapefile('foo.shp', 'my_shape')
while this fails:
m.readshapefile('bar_0.1.shp', 'my_shape')
raise IOError('error reading shapefile %s.shp' % shapefile) fields = shf.fields coords = []; attributes = []
IOError: error reading shapefile bar_0.1.shp
Note that foo.shp and bar_0.1.shp are exactly the same file except for the filename. So it seems that the additional . causes the problem. Minimal example to reproduce behavior:
Rename huralll020.{shp,dfb,shx} to huralll020_0.1.{shp,dbf,shx} and change filename in examples/hurrtracks.py accordingly. Run hurrtracks.py.
Of course the obvious workaround is not to use . in filenames. But this is somewhat impracticable as I have a large number or files and would like keeping the filenames consistent accross filetypes (netCDF, shapfiles, pngs, etc).
Is there an easy fix?
Thanks very much,
Andy
— Reply to this email directly or view it on GitHubhttps://github.com/matplotlib/basemap/issues/151 .
Sasha
Sasha
I would do smth like this:
if os.path.isfile(shapefile): (shapeName, ext) = os.path.splitext(shapefile) else: shapeName = shapefile
self.shapeName = shapeName
Cheers
2014-04-28 18:44 GMT-04:00 Oleksandr Huziy guziy.sasha@gmail.com:
I think you are not passing the extension to readshapefile, it is just a typo in your example, right?
If this is so then the culprit is this line:
https://github.com/matplotlib/basemap/blob/master/lib/mpl_toolkits/basemap/shapefile.py#L249
It is not to hard to fix, so If you want the glory, go ahead) If Jeff won't mind.
Cheers
2014-04-28 18:31 GMT-04:00 Oleksandr Huziy guziy.sasha@gmail.com:
Hmm:
I look at the code and do not understand how it worked for you .... What happens if you don't specify the .shp extension?
Thanks
2014-04-28 18:10 GMT-04:00 Andy Aschwanden notifications@github.com:
Hi,
(Tested with basemap 1.0.6)
This works:
m.readshapefile('foo.shp', 'my_shape')
while this fails:
m.readshapefile('bar_0.1.shp', 'my_shape')
raise IOError('error reading shapefile %s.shp' % shapefile) fields = shf.fields coords = []; attributes = []
IOError: error reading shapefile bar_0.1.shp
Note that foo.shp and bar_0.1.shp are exactly the same file except for the filename. So it seems that the additional . causes the problem. Minimal example to reproduce behavior:
Rename huralll020.{shp,dfb,shx} to huralll020_0.1.{shp,dbf,shx} and change filename in examples/hurrtracks.py accordingly. Run hurrtracks.py.
Of course the obvious workaround is not to use . in filenames. But this is somewhat impracticable as I have a large number or files and would like keeping the filenames consistent accross filetypes (netCDF, shapfiles, pngs, etc).
Is there an easy fix?
Thanks very much,
Andy
— Reply to this email directly or view it on GitHubhttps://github.com/matplotlib/basemap/issues/151 .
Sasha
Sasha
Sasha
Correct, I realized that basemap does not accept the extension, so my script removes it first, before passing the name to m.readshapfile. The script looks something like this
shape_filename = ['foo.shp', 'bar_0.1.shp']
for index, shpfile in enumerate(shape_filename):
# remove .shp extension
shpfile = shpfile.split('.shp')[0]
m.readshapefile(shpfile,
'my_shapefile', linewidth=.75)
I'm not an expert python programmer, so this is sort of a hack as it can fail when the filename contains the pattern .shp besides the extension.
@guziy :+1: Yes that should work. I can go ahead and make the code change, if that's ok.
This issue can be closed here, if the issue is still there, then it should be reported to the pyshp project (I am guessing here: https://github.com/GeospatialPython/pyshp).
Hi,
(Tested with basemap 1.0.6)
This works:
m.readshapefile('foo.shp', 'my_shape')
while this fails:
m.readshapefile('bar_0.1.shp', 'my_shape')
Note that foo.shp and bar_0.1.shp are exactly the same file except for the filename. So it seems that the additional
.
causes the problem. Minimal example to reproduce behavior:Rename
huralll020.{shp,dfb,shx}
tohuralll020_0.1.{shp,dbf,shx}
and change filename inexamples/hurrtracks.py
accordingly. Run hurrtracks.py.Of course the obvious workaround is not to use
.
in filenames. But this is somewhat impracticable as I have a large number or files and would like keeping the filenames consistent accross filetypes (netCDF, shapfiles, pngs, etc).Is there an easy fix?
Thanks very much,
Andy