Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

It cannot open shapefiles #5

Open
nadyabasos opened this issue Apr 7, 2016 · 3 comments
Open

It cannot open shapefiles #5

nadyabasos opened this issue Apr 7, 2016 · 3 comments

Comments

@nadyabasos
Copy link

Hello.
I installed the package by the option B, imported it successfully but got an error on the very first line from the Instant Mapping section:
geovis.ViewShapefile("C:/shapefile.shp")

The error:

Traceback (most recent call last):
File "", line 1, in
File "./GeoVis-0.2.0\geovis__init__.py", line 2321, in ViewShapefile
File "./GeoVis-0.2.0\geovis__init__.py", line 1511, in init
File "./GeoVis-0.2.0\geovis__init__.py", line 1515, in NewImage
File "./GeoVis-0.2.0\geovis__init__.py", line 909, in NewImage
File "C:\Python27\lib\site-packages\PIL\Image.py", line 2014, in new
return Image()._new(core.new(mode, size))
TypeError: integer argument expected, got float

I tried many different shapefiles, also using Customized Maps lines, but never managed to open any.
I also tried to set the size myself:
mysize = 500, 500
geovis.ViewShapefile(polygonshp, mysize)

But then I got an error:

TypeError: ViewShapefile() takes exactly 1 argument (2 given)

Python 2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)] on win32.
So how do I use the package? Thanks.

@dropthemic
Copy link

To get it working, edit init.py and modify line 907 from:
dimensions = (width, height)
to
dimensions = (int(width), int(height))

I also had some issues with pillow and conda... but that's a different story.
ContinuumIO/anaconda-issues#150

@vegetabledog
Copy link

I encountered the "TypeError: integer argument expected, got float" at first time. I used Jupyter Notebook to write my python script. I read one answer from Karimbahgat on another Web Page to know that it may be caused by old version of PIL module from anaconda.

I used your way to edit two part of
"dimensions = (width, height)"
to
"dimensions = (int(width), int(height))"
of the init.py of geovis folder.

But after I implement the instant mapping sentence,
"geovis.ViewShapefile("hk_line.shp")".
I encounter another error problem.
I'm wondering why.

The error:

> rendering hk_line
> 0%,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100%
>   |||||||||||||||||||||||||||||||||||||||||||||||||
>         task completed in 16.592139 seconds
> 
> ---------------------------------------------------------------------------
> KeyError                                  Traceback (most recent call last)
> <ipython-input-5-2ada0375bda9> in <module>()
> ----> 1 geovis.ViewShapefile("hk_line.shp")
> 
> /Users/chenzhong/GeoVis-0.2.0/geovis/__init__.py in ViewShapefile(shapefilepath, **customoptions)
>    2320     customoptions = _CheckOptions(customoptions)
>    2321     renderer = _Renderer()
> -> 2322     renderer.ViewShapefile(shapefilepath, customoptions)
>    2323 def SaveShapefileImage(shapefilepath, savepath, **customoptions):
>    2324     """
> 
> /Users/chenzhong/GeoVis-0.2.0/geovis/__init__.py in ViewShapefile(self, shapefilepath, customoptions)
>    1516     def ViewShapefile(self, shapefilepath, customoptions):
>    1517         self._RenderShapefile(shapefilepath, customoptions)
> -> 1518         self._RenderMapTitle(shapefilepath, customoptions)
>    1519         self._ViewRenderedShapefile()
>    1520     def SaveShapefileImage(self, shapefilepath, savepath, customoptions):
> 
> /Users/chenzhong/GeoVis-0.2.0/geovis/__init__.py in _RenderMapTitle(self, shapefilepath, customoptions)
>    1539         if customoptions.get("maptitle"):
>    1540             textoptions = _CheckTextOptions(dict([("textsize",0.0452)]))
> -> 1541             self._RenderText(0.5, 0.05, customoptions["maptitle"], textoptions)
>    1542     def _RenderText(self, relx, rely, text, textoptions):
>    1543         self.renderer.RenderText(relx, rely, text, textoptions)
> 
> /Users/chenzhong/GeoVis-0.2.0/geovis/__init__.py in _RenderText(self, relx, rely, text, textoptions)
>    1541             self._RenderText(0.5, 0.05, customoptions["maptitle"], textoptions)
>    1542     def _RenderText(self, relx, rely, text, textoptions):
> -> 1543         self.renderer.RenderText(relx, rely, text, textoptions)
>    1544     def _RenderRectangle(self, upperleft, bottomright, customoptions):
>    1545         customoptions = self._RelSizesToPixels(customoptions)
> 
> /Users/chenzhong/GeoVis-0.2.0/geovis/__init__.py in RenderText(self, relx, rely, text, options)
>     913         options["textsize"] = options["textsize"]*2
>     914         if not options.get("texteffect"):
> --> 915             self._BasicText(relx, rely, text, options)
>     916     def RenderRectangle(self, upperleft, bottomright, customoptions):
>     917         leftrelx, uprely = upperleft
> 
> /Users/chenzhong/GeoVis-0.2.0/geovis/__init__.py in _BasicText(self, relx, rely, text, options)
>    1022 draws basic text, no effects
>    1023 """
> -> 1024         fontlocation = self.sysfontfolders[OSSYSTEM]+self.fontfilenames[options["textfont"]]
>    1025         font = PIL.ImageFont.truetype(fontlocation, size=options["textsize"])
>    1026         fontwidth, fontheight = self.drawer.textsize(text, font)
> 
> KeyError: 'darwin'

@karimbahgat
Copy link
Owner

The error happens when it is trying to render text. The global OSSYSTEM detects that you are on a mac (darwin), and tries to use it as a key to locate the system-specific font folder from the sysfontfolders attribute of the backend renderer class. But the error indicates that sysfontfolders does not contain a key named "darwin". Not sure why, because the source code for all the renderer classes have dict with a darwin key... Can you insert a print statement right before the error line to display the content of the sysfonfolders attribute?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants