ホーム » 未分類
「未分類」カテゴリーアーカイブ
文字列マッチング
文字列マッチングのアルゴリズムを実装しているサイト
blogサイトをSSLに対応
blogサイトをさくらのVPSに移動したので、ついでに無料のSSL証明書を導入!
参考いしたサイトネコでもわかる
Pythonで相関行列、偏相関行列を求める
相関行列、偏相関行列の計算(答え合わせ)は通常Rを使うが、今回はPythonでやってみる。
目的変数と説明変数
弊社アプリの結果画面
単相関
偏相関
PythonはQGISのPythonコンソール上で実行
実行するスクリプト
[code]
import numpy as np
import scipy as sp
from scipy import linalg
def partialcorrcoef(c):
inv_cor = linalg.inv(c)
rows = inv_cor.shape[0]
regu_1 = 1 / sp.sqrt(sp.diag(inv_cor))
regu_2 = sp.repeat(regu_1, rows).reshape(rows, rows)
regu_1 = 1 / sp.sqrt(sp.diag(inv_cor))
regu_2 = sp.repeat(regu_1, rows).reshape(rows, rows)
pcor = (-inv_cor) * regu_1 * regu_2
sp.fill_diagonal(pcor, 1)
return pcor
data=[
[520000,498000,447000,451000,608000],
[160,120,250,105,175],
[284,162,169,163,261],
[400,600,600,600,600]
]
C = np.corrcoef(data)
PC = partialcorrcoef(C)
[/code]
スクリプトを実行した後に相関行列(C)、偏相関行列(PC}を表示
計算結果は一致したのでアプリには問題はなし
QtデザイナでSplitterを配置
QDocWidget上にSplitterを配置
QWidgetを左右に配置
2つのQWidgetを選択して「ツールバー」の「水平にスプリッタの中に並べる」を選択
以上で2つのQWidgetがSplitterに配置される
Splitterが親のQDockWidget一杯に表示されるようにdockWidgetContentsを選択して「ツールバー」の「水平に並べる」ボタンをクリック
以上
QGIS3+Eclipse+PyDevでデバッグ
環境
OS | Windows10 64bit |
QGIS | QGIS3.4.4(OSGEO4W 32bit) |
Eclipse | 2018-12 64bit |
Java | Oracle JRE 10 |
PyDev | 7.1.0.201902031515 |
QGISをインストール
OSGEO4W版のインストーラーを起動しC:\OSGEO4Wにインストール
QGISを起動
Eclipse
以下よりEclipseをダウンロード
https://www.eclipse.org/downloads/download.php?file=/oomph/epp/2018-12/R/eclipse-inst-win64.exe
ダウンロードしたeclipse-inst-win64を実行
起動すると以下のメッセージ表示
Eclipseのサイトより「Oracle JRE 10」をダウンロード
https://download.eclipse.org/oomph/jre/index-handler.php?vm=1_1_7_0_64_0&pn=Eclipse%20Installer&pu=http://wiki.eclipse.org/Eclipse_Installer&pi=http://download.eclipse.org/oomph/jre/128×128.png
ダウンロードした「jre-10.0.2_windows-x64_bin」を実行
インストールボタンをクリック
再度「eclipse-inst-win64」を実行
eclipse インストーラーが起動されたら「eclipse IDE for java developers」を選択
証明書の確認
PyDev
Eclipseを起動してHelpメニューの「Install New Software」
「Work With」の「Add」ボタンをクリック
NameにPyDev、Locationに「http://pydev.org/updates」を指定しAddボタンをクリック
PyDevをチェックしてNEXTボタンをクリック
Detaileボタンを押してPydevのインストール先を確認してから「Install Anyway」を実行
PyDevの設定
Eclipseを起動して「Window」→「Preferences」を選択
左のTreeでPyDev-Interpreters-Python Interpreterを選択
QGISが使用するPython.exeを指定するためにQGISを起動してPYTHONHOMEの値を確認
「Browse for pythonpypy exe」ボタンを押してNAMEには任意の名称(ここではpython37)、値には先ほど調べたPython.exeのフルパスを指定。
Librariesは自動でいくつかの参照先が指定されるが手動で不足分を指定
先ほどインストール先を確認したPyDevも指定
Packagesには警告らしき表示があるが無視
Forced Builtinsのタブを表示して「New」ボタンを押してqgisとPyQt5をそれぞれ登録
Environmentoタブを表示して以下の環境変数を設定
「Apply」ボタンを押して「Apply and Close」ボタンを押して設定を反映
設定内容が即反映されないので「Apply」ボタンを押したら暫く待つこと。
※設定が終了する前に画面を閉じると正しく設定が終了しない
デバッグの準備
外部TOOLにQGISを設定
メニュ「Run」-「External Tools Configurations」を指定して外部TOOLとしてQGISを設定
プロジェクトを作成
Eclipseの「New」メニューから-「Project」-「PyDev Project」を選択
以下に従ってプロジェクトの内容を設定しFinishボタンを押す
確認のためにQGISのPlugin Builder3でプラグインを作成して「C:\Users\ユーザー名\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\」に配置
init.pyに以下を記述
[code]
import os,sys
sys.path.append("C:\\Users\\kernel\\.p2\\pool\\plugins\\org.python.pydev.core_7.1.0.201902031515\\pysrc")
import pydevd
pydevd.settrace()
[/code]
sys.pathに追加しているのはPyDev
この記述はEclipseを使用しないときはエラーとなる
これを記述するとclassFactory関数でブレークする
デバッグ実行
ここからの操作は若干確信がないが、とりあえず正しく動作したので良しとして説明
プラグイン「Remote Debug」と「Plugin Reloader」を有効にするためにプラグインの設定で実験的プラグインも表示する
デバッグボタンを押す
「start pydev Server」ボタンをクリック
「外部TOOL QGISを起動」
QgsVectorLayerのQgsCoordinateReferenceSystemを設定
投影情報を持っていないShapeファイルを読み込んで「QgsVectorLayer」を作成した後に投影情報を設定する
訂正
[code]
layer = QgsVectorLayer(Shapeファイルのフルパス, レイヤ名, "ogr")
crs = QgsCoordinateReferenceSystem.fromEpsgId(2451)
layer.setCrs(crs)
× crs = layer.crs()
× crs.createFromString(‘EPSG:2451’)
[/code]
Qt BottomDockWidgetAreaをCentral WidgetとRightDockWidgetAreaの下に配置
Central WidgetとRightDockWidgetAreaが配置されたQMainWindowにBottomDockWidgetAreaを追加すると
Central Widgetに下、もしくはRightDockWidgetAreaの下にBottomDockWidgetAreaに配置される。
BottomDockWidgetAreaをCentral WidgetとRightDockWidgetAreaの下に配置するにはBottomDockWidgetAreaを配置した後に
以下のコードを実行すればよい
[code]
mainWindow->setCorner(Qt::BottomLeftCorner, Qt::BottomDockWidgetArea);
mainWindow->setCorner(Qt::BottomRightCorner, Qt::BottomDockWidgetArea);
[/code]
QGIS3をWindows上でBUILD
参考サイト
更に正確なサイト
セットアップ先
Windows10(Pro) 64bit
CMakeをインストール
cmake-3.13.0-win64-x64.zipをダウンロードしてC:\Program Files\cmakeにインストール
cygwinをインストール
cygwinをC:\cygwinにインストール
※デフォルトのインストール先はC:\cygwin64
cygwinよりflex(2.6.4-2)とBison(3.0.2-1)をインストール
Gitをインストール
GitのサイトよりGit-2.19.2-64-bit.exeをダウンロード後、C:\Gitにインストール
C:\Git\cmdにPATHを通す
Visual Studio 2015をインストール
Visual Studio 2015 Pro Update 3をインストールする
※Communityでも同じ?
Windows 10 SDK 10.0.14393.0 を必ず選択してインストール(package-nightly.cmdでWindows 10 SDK 10.0.14393.0のSetupAPI.Libを使用)
osgeo4wをインストール
osgeo4w-setup-x86_64.exeをダウンロード
起動後、アドバンスインストールを選択
Libs以下のqgis-dev-depsを選択
以下も選択
oci-devel
python3-gdal
python3-jinja2
python3-owslib
python3-psycopg2
python3-pygments
依存するモジュールもインストール
依存関係に対応するパッケージをインストールを選択
ninjaをインストール
https://github.com/ninja-build/ninja/releases/download/v1.7.1/ninja-win.zip
をダウンロード、展開してninja.exeをC:\OSGeo4W64\binにコピー。
QGISの最新ソースをダウンロード
CドライブにディレクトリPROJECTSを作成しカレントを移動し以下のコマンドでclone
[code]
git clone https://github.com/qgis/QGIS.git
[/code]
以下のディレクトリに展開
BUILD
環境変数のバッチを作成
以下のバッチをC:\OSGeo4W64\QGIS-Dev.batに保存
[code]
@echo off
set SOURCE=C:\Projects\QGIS
call "%SOURCE%\ms-windows\osgeo4w\msvc-env.bat" x86_64
@cmd
[/code]
C:\OSGeo4W64\QGIS-Dev.batをダブルクリックして実行すると環境設定を行いDOS画面が表示されるので カレントをC:\PROJECTS\QGIS\ms-windows\osgeo4wに移動し、configonly.batを実行。
DOS画面上でdevenvコマンドを実行してVisualStudioを起動し、C:\PROJECTS\QGIS\ms-windows\osgeo4w\build-qgis-test-x86_64\qgis.sinを開く。
ソリューションエクスプローラのALL_BUILDを選択して右クリックしビルドを実行。
コンパイル時に文字コードのエラーが発生した時はコンパイルオプションに/source-charset:utf-8を設定。
以下はqgis_coreの設定例
BUILDが終了したらALL_BUILDプロジェクトのデバッグ用のコマンドをC:\PROJECTS\QGIS\ms-windows\osgeo4w\build-qgis-test-x86_64\output\bin\RelWithDebInfo\qgis.exeに設定
F5キーでデバッグを実行
確認メッセージが表示されたらいいえを押す。
以上でQGIS起動
C:\PROJECTS\QGIS\ms-windows\osgeo4w\configonly.batは内部でpackage-nightly.cmdを呼んでいる。
package.cmdを呼ぶとリリース版のコンパイルか?
Visual Studio 2015でQString型の変数の値を見る
Visual Studio 2015でQGISをデバッグするとQString型の変数の内容が見れない。
Watch式に(char*)変数名.d+変数名.d->offset,su と記述すると見れる