У меня есть школьный проект по созданию небольшого ГИС-приложения.Мне нужно прочитать и отобразить шейп-файлы в окне 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, поэтому любая помощь будет полезна.