在以下代码中:
import sys
import io
import folium
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout
from PyQt5.QtWebEngineWidgets import QWebEngineView
import geemap
class my_app(QWidget):
def __init__(self):
super(my_app, self).__init__()
self.setWindowTitle('GRSGA')
layout = QVBoxLayout()
self.setLayout(layout)
cordinate = (32.3265, 52.65241)
map = folium.Map(title='geors', zoom_start=8, location=cordinate)
data = io.BytesIO()
map.save(data, close_file=False)
web_view = QWebEngineView()
web_view.setHtml(data.getvalue().decode())
layout.addWidget(web_view)
if __name__ == "__main__":
app = QApplication(sys.argv)
app.setStyleSheet('''
QWidget{
font-size: 35px
}
''')
myapp = my_app()
myapp.show()
try:
sys.exit(app.exec_())
except SystemExit:
print('closing window')我可以在pyqt中显示folium地图。但是我想使用geemap而不是folium,就像下面的代码一样:
cordinate = (32.3265, 52.65241)
map = geemap.Map(title='geors', zoom_start=8, location=cordinate)
data = io.BytesIO()
map.save(data, close_file=False)
web_view = QWebEngineView()
web_view.setHtml(data.getvalue().decode())
layout.addWidget(web_view)此代码返回以下错误:
Traceback (most recent call last):
File "D:\earth engine\gee_app\train1.py", line 28, in <module>
myapp = my_app()
File "D:\earth engine\gee_app\train1.py", line 17, in __init__
map.save(data, close_file=False)
File "D:\earth engine\gee_app\venv\lib\site-packages\ipyleaflet\leaflet.py", line 2220, in save
embed_minimal_html(outfile, views=[self], **kwargs)
File "D:\earth engine\gee_app\venv\lib\site-packages\ipywidgets\embed.py", line 302, in embed_minimal_html
snippet = embed_snippet(views, **kwargs)
TypeError: embed_snippet() got an unexpected keyword argument 'close_file'我该怎么解决它呢?
发布于 2021-09-03 06:51:56
geemap.Map()的save()方法不接受close_file,而且fp必须允许写入字符串而不是字节,因此必须使用io.StringIO()。
class my_app(QWidget):
def __init__(self):
super(my_app, self).__init__()
self.setWindowTitle("GRSGA")
layout = QVBoxLayout(self)
web_view = QWebEngineView()
layout.addWidget(web_view)
cordinate = (32.3265, 52.65241)
map = geemap.Map(title="geors", zoom_start=8, location=cordinate)
data = io.StringIO()
map.save(data)
web_view.setHtml(data.getvalue())

https://stackoverflow.com/questions/69040388
复制相似问题