TypeError: аргумент float () должен быть строкой или числом, а не «Polygon» / «LineString» / «Point» - PullRequest
0 голосов
/ 02 марта 2019

У меня есть школьный проект по созданию небольшого ГИС-приложения.Мне нужно прочитать и отобразить шейп-файлы в окне tkinter.Я использую этот код:

root = tk.Tk()
filename=filedialog.askopenfilename()
shape=gpd.read_file(filename)
root.wm_title("GIS")
f = Figure(figsize = (5,5), dpi = 100)
a = f.add_subplot(111)
a.plot(shape)
canvas = FigureCanvasTkAgg(f,master = root)
canvas.draw()
canvas.get_tk_widget().pack(side = tk.TOP, fill = tk.BOTH, expand = True)
root.mainloop()

Я получаю эту ошибку:

File "<ipython-input-1-b3bf60f8fc01>", line 1, in <module>
    runfile('C:/Users/Nikola/Desktop/untitled0.py', wdir='C:/Users/Nikola/Desktop', post_mortem=True)

  File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 786, in runfile
    execfile(filename, namespace)

  File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/Nikola/Desktop/untitled0.py", line 26, in <module>
    a.plot(shape)

  File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\__init__.py", line 1810, in inner
    return func(ax, *args, **kwargs)

  File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py", line 1612, in plot
    self.add_line(line)

  File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\axes\_base.py", line 1895, in add_line
    self._update_line_limits(line)

  File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\axes\_base.py", line 1917, in _update_line_limits
    path = line.get_path()

  File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\lines.py", line 945, in get_path
    self.recache()

  File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\lines.py", line 645, in recache
    y = _to_unmasked_float_array(yconv).ravel()

  File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\cbook\__init__.py", line 1365, in _to_unmasked_float_array
    return np.asarray(x, float)

  File "C:\ProgramData\Anaconda3\lib\site-packages\numpy\core\numeric.py", line 501, in asarray
    return array(a, dtype, copy=False, order=order)

TypeError: float() argument must be a string or a number, not 'Point'

****************************************
Entering post mortem debugging...
****************************************
> c:\programdata\anaconda3\lib\site-packages\numpy\core\numeric.py(501)asarray()
    499 
    500     """
--> 501     return array(a, dtype, copy=False, order=order)
    502 
    503 

Я новичок в Python, поэтому любая помощь будет полезна.

...