ホーム » 未分類

未分類」カテゴリーアーカイブ

文字列マッチング

文字列マッチングのアルゴリズムを実装しているサイト

Fuzzy String Matcher

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

参考サイト

更に正確なサイト

Compiling QGIS on Windows

セットアップ先

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 と記述すると見れる

chart.jsメモ

最大値、最用地の設定
Chart.js 2.0でy軸の最大値(scales max)と最小値を設定する