首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在pyqt5中使用geemap而不是folium?

如何在pyqt5中使用geemap而不是folium?
EN

Stack Overflow用户
提问于 2021-09-03 06:24:51
回答 1查看 76关注 0票数 0

在以下代码中:

代码语言:javascript
复制
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,就像下面的代码一样:

代码语言:javascript
复制
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)

此代码返回以下错误:

代码语言:javascript
复制
 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'

我该怎么解决它呢?

EN

回答 1

Stack Overflow用户

发布于 2021-09-03 06:51:56

geemap.Map()save()方法不接受close_file,而且fp必须允许写入字符串而不是字节,因此必须使用io.StringIO()

代码语言:javascript
复制
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())

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69040388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档