JpnStdMeshImportプラグインをQGIS3.0で動くように修正しました
どもkaraGRです。
QGIS3.0がリリースされてしばらくたちました。
これまで作りっぱなしで放置していたプラグインも対応せねばということで、
まずはJpnStdMeshImportプラグインをQGIS3.0で動くようにしました。
https://github.com/karaGR/JpnStdMeshImport3.git
試してみてくださいね~~
______________________________________
QGIS3.0ではプラグインのインストールフォルダがかわっています。
C:\Users\ユーザー名\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins
あと、プラグインの管理WidgetでZipからインストールできるらしいです。
→Zip化してこれを使えばいいのか??
______________________________________
以下修正作業のメモ
・PyQGISのアップデートによる修正
→QgsMapLayerRegistryはQgsProjectに統合されたらしい
from qgis.core import QgsVectorLayer,QgsProject ... def load_wkt_csv(self): ... if self.vlayer.isValid(): QgsProject.instance().addMapLayer( self.vlayer )
・Python3.6へ移行したことによる修正
→同じフォルダにあるモジュールをインポートするには、"."をつけなけばならないらしい。
from .mesh_wkt import mesh_wkt
→numpyのgenfromtxtでdtype=np.strが通らなくなったので、dtype="S20"に修正
class myFileDialog(QgsEncodingFileDialog): ... def accept(self): ... try: dat_str = np.genfromtxt(self.filename,delimiter=",",dtype="S20") ...
・PyQt5に移行したことによる修正
→モジュールのインポート行をPyQt4→PyQt5に変更
QDialogとかUI系のクラスはQtGuiからQtWidgetsに移った。
from PyQt5.QtWidgets import QAction, QDialog from PyQt5.QtWidgets import QVBoxLayout,QHBoxLayout,QGridLayout from PyQt5.QtWidgets import QLabel,QDialogButtonBox,QCheckBox from PyQt5.QtWidgets import QLineEdit,QPushButton,QSpinBox,QComboBox from PyQt5.QtWidgets import QMessageBox, QTableView from PyQt5.QtGui import QStandardItemModel,QStandardItem
→QUrlのメンバ関数だったaddQueryItemが廃止され,QUrlQueryというクラスが導入された。
QUrlQuery()のインスタンスにクエリアイテムを入れてから、QUrlのインスタンスに登録
from PyQt5.QtCore import QUrl,QUrlQuery def load_wkt_csv(self): url = QUrl.fromLocalFile(self.outfile_qstr) q = QUrlQuery() q.addQueryItem("type","csv") q.addQueryItem("delimiter",",") q.addQueryItem("wktField","1") q.addQueryItem("encoding",self.EF_dia.encoding()) ・・・ url.setQuery(q)