QGIS 플러그인 세팅 시작

 

참고 사이트

https://www.youtube.com/watch?v=GccxvQ1ypbc&ab_channel=RobvanPutten

 

QGis tutorial - Plugin development - part 1

1. Plugin Builder 3

QGIS 플러그인 설치에서 Plugin Builder 3 설치

- 기본적인 plugin 설치 환경을 구축해준다.

 

2. Plugin Reloader

QGIS 플러그인 설치에서 Plugin Reloader 설치

- ui 및 코드 갱신을 바로 적용시켜준다.

 

 

 

 

현재 프로파일 폴더 열기 > ./python/plugins 폴더에 설치된 플러그인이 존재함

 

앞서 설치한 Plugin Builder를 통해 해당 위치에 플러그인 환경을 구축

 

Qt Designer를 실행하고 Builder를 통해 생성된 ui를 불러온다

 

 

 

커스텀하고 QGIS를 다시 켜서 플러그인 설치 매뉴를 보면 반영 되어 있다.

 

 

ui 를 수정했으면 Plugin Reloader를 통해 갱신하면 반영된다.

 

'개발 환경 > QGIS' 카테고리의 다른 글

좌표계 코드 및 인자정리(GRS80, Bessel)  (0) 2021.12.21

1. 국토지리정보원 표준(GRS80)
  - QGIS에서 좌표를 선택할때 EPSG 코드를 보고 선택하시면 좌표에 맞게 떨어집니다.
     (우리나라는 거의 중부원점을 많이 쓰이기에 앞에 두었습니다)

EPSG:5186
중부원점(GRS80)-falseY:60000
+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=600000 +ellps=GRS80 +units=m +no_defs
EPSG:5185
서부원점(GRS80)-falseY:60000
+proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=600000 +ellps=GRS80 +units=m +no_defs
EPSG:5187
동부원점(GRS80)-falseY:60000
+proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=600000 +ellps=GRS80 +units=m +no_defs
EPSG:5188
동해(울릉)원점(GRS80)-falseY:60000
+proj=tmerc +lat_0=38 +lon_0=131 +k=1 +x_0=200000 +y_0=600000 +ellps=GRS80 +units=m +no_defs
 

2. 지리원 표준(BESSEL)

EPSG:5174
보정된 중부원점(Bessel): KLIS에서 중부지역에 사용중
+proj=tmerc +lat_0=38 +lon_0=127.0028902777778 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs +towgs84=-115.80,474.99,674.11,1.16,-2.31,-1.63,6.43
EPSG:5173
보정된 서부원점(Bessel): KLIS에서 서부지역에 사용중
+proj=tmerc +lat_0=38 +lon_0=125.0028902777778 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs +towgs84=-115.80,474.99,674.11,1.16,-2.31,-1.63,6.43
EPSG:5176
보정된 동부원점(Bessel): KLIS에서 동부지역에 사용중
+proj=tmerc +lat_0=38 +lon_0=129.0028902777778 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs +towgs84=-115.80,474.99,674.11,1.16,-2.31,-1.63,6.43
EPSG:5175
보정된 제주원점(Bessel): KLIS에서 제주지역에 사용중
+proj=tmerc +lat_0=38 +lon_0=127.0028902777778 +k=1 +x_0=200000 +y_0=550000 +ellps=bessel +units=m +no_defs +towgs84=-115.80,474.99,674.11,1.16,-2.31,-1.63,6.43
EPSG:5177
보정된 동해(울릉)원점(Bessel): KLIS에서 울릉지역에 사용중
+proj=tmerc +lat_0=38 +lon_0=131.0028902777778 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs +towgs84=-115.80,474.99,674.11,1.16,-2.31,-1.63,6.43

'개발 환경 > QGIS' 카테고리의 다른 글

QGIS 플러그인 1  (0) 2024.01.31

ipynb에서 출력이 너무 많아 메모리가 터지는 경우 발생한다.

 

아래 명령어로 output을 모두 지워주자

 

# 새로 만들기
jupyter nbconvert --ClearOutputPreprocessor.enabled=True \
  --to notebook --output=Clean_jupyter Dirty_jupyter.ipynb
# 덮어쓰기
jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace Dirty_Jupyter.ipynb

'개발 환경 > jupyter notebook' 카테고리의 다른 글

jupyter notebook에서 anaconda env를 사용  (0) 2021.08.04
Jupyter notebook 세팅  (0) 2021.08.04

현재 연결되어 있는 jupyter notebook kernel을 먼저 확인하자.

jupyter kernelspec list

 

원하는 kernel이 없다면 아래와 같이 추가한다.

# 환경 진입 conda activate <MY_CONDA_ENV_NAME>

# conda kernel package 설치 conda install nb_conda_kernels

# kernel 연결 확인 jupyter kernelspec list

 

만약 kernel이 활성화 되어 있는 anaconda env와 연결되지 않았다면 해당 ENV에 jupyter kernel package가 설치되지 않았기 때문일 수 있다. 아래와 같이 설치하자.

 

# kernel package 설치 pip install ipykernel

# kernel 등록 python -m ipykernel install --user --name <MY_KERNEL_NAME> --display-name "<DISPLAY_NAME>"

 

Jupyter Notebook Kernel 관리

현재 연결되어 있는 jupyter notebook kernel 확인

 

jupyter kernelspec list

 

kernel 설치

jupyter kernelspec install <MY_KERNEL_PATH> # OR python -m ipykernel install --user --name <MY_ENV_NAME> --display-name "<DISPLAY_NAME>"

 

kernel 삭제

## 커널 지우기 jupyter kernelspec uninstall <MY_KERNEL_NAME>

Copy

'개발 환경 > jupyter notebook' 카테고리의 다른 글

ipynb output clean  (0) 2021.08.27
Jupyter notebook 세팅  (0) 2021.08.04

jupyter notebook을 사용할 때 활용할만한 꿀팁들을 공유하려고 한다.

1. 테마 변경

pip install jupyterthemes

사용 가능한 테마 리스트는
chesterish
grade3
gruvboxd
gruvboxl
monokai
oceans16
onedork
solarizedd
solarized1 가 있다.

먼저 설치를 해준 후에 터미널 환경에서 다음과 같이 입력한다.

jt -l #가능한 테마 리스트jt -t <테마 이름> -T
# -T 를 안붙이면 툴바가 보이지 않습니다.
jt- r #default css로 복귀

grade3로 적용한 모습

시력을 보호할 목적이라면 어두운 테마를 활용하는 것을 추천한다. 개인적으로 나는 코드 작성을 위한 목적 뿐만 아니라 markdown도 jupyter notebook에서 자주 활용하기에 밝지만 기존 ui와는 다른 ‘grade3’ 테마를 적용시켰다.

2. 주피터 확장탭

NBextensions tab으로 주피터에서 편리하게 사용할 수 있는 확장 기능이다.

설치 방법

pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install --user

설치 후

설치하면 다음과 같이 nbextensions config라는 버튼이 생기는 것을 확인할 수 있다.

클릭 후에 여기서 필요한 확장탭을 사용하면 되는데 몇 가지 기능을 추천해보고자 한다.

(1) hinterland

탭을 누르지 않아도 코드를 자동완성 시켜줌

(2) Snippets

저장된 코드 예시를 불러올  있다. 특히 Matplotlib의 chart 같은 경우는 파라미터나 입력 값을 외우기 힘든 경우가 많았는데 유용하게 쓰일 수 있을 것 같다.

3. Split Cells Notebook

보이는 그대로 cell을 2개의 화면으로 split 해주는 기능이다. 유용하기(?) 보다는 신기해서..!

4. Table of contents

내가 마크다운 해놓은 heading 값에 맞추어 목차를 만들어준다. 스터디나 외부 공유할 자료가 있다면 다음과 같이 정리하면 참 편할 것 같음.

5. Collapsible Headings

특정 heading 아래에 있는 코드 및 마크다운을 숨기는 기능이다. 코드나 jupyter notebook의 길이가 길어질 경우 유용할 듯 싶다.

6. ExececuteTime

코드 실행시간을 알려주는 기능이다. 모델 학습할 때 시간 측정하기에 참 좋을듯. 기존에는 time 메소드를 사용했는데 더 편리하게 적용할 수 있을 것 같다.

7. Autopep8 . Code prettify

이 부분은 다른 사람들이 만든 코드를 내 jupyter notebook에 붙여넣을 때 항상 코드가 정리가 되어있지 않아서 수동으로 해주었는데 이러한 copy and paste의 단점을 잘 반영한 기능인 것 같다.

8. codefolding

코드를 클래스나 def 정의 함수 단위로 묶어서 폴딩할 수 있도록 하는 기능이다. 코드가 길어질 수록 유용할 것 같다. 나같은 경우는 파이썬과 presto를 connect해서 쿼리를 파이썬에서 날리는 경우가 많은데 쿼리가 길어질 경우 사용하면 참 편리할 것 같다.

3. 데이터 프레임 관련 팁

기본적으로 판다스에서 제공하는 데이터프레임 형태는 좋지만 직관적이고 인터렉티브 하지 않다는 단점이 있다. 하지만 Qgrid를 사용하면 그 단점은 극복할 수 있을 것 같다.

Qgrid

  • 데이터프레임을 인터렉티브하게 바꾸어주는 기능이다.

pip install qgrid
jupyter nbextension enable --py --sys-prefix qgrid

터미널 환경에서 설치하면 된다.

import qgridqgrid_widget = qgrid.show_grid(df,show_toolbar=True)
qgrid_widget

개인적으로 가장 신세계였던 기능이다. 주피터 노트북 환경에서 인터렉티브하게 EDA가 가능하게 하며, 전체화면으로 더욱 편리하게 볼 수 있다. 또한 각 변수들의 값들을 필터링할 수 있다..! (마치 엑셀과 같은..!)

4. 슬라이드 쇼

jupyter notebook을 협업 도구로 사용하는 조직같은 경우 코드를 pdf로 옮길 필요 없이 바로 slide 기능을 활용하면 된다.

[view]-[cell toolbar]-[slideshow]에서 설정할 수 있으며

jupyter nbconvert *.ipynb --to slides --post serve

터미널 환경에서 다음과 같이 설치해주면 된다.

다음과 같이 적용할 수 있다.

또한 RISE 플러그인을 통해서도 적용할 수 있다.

pip install RISE

설치 후에

jupyter-nbextension enable rise --py --sys-prefix

터미널 환경에서 다음과 같이 입력해주면 nbextension 창에서 확인할 수 있다.

툴바에서 다음과 같은 버튼을 클릭하면 확인 가능하며,

더욱 인터렉티브하게 슬라이드쇼를 꾸밀 수 있다.

 

'개발 환경 > jupyter notebook' 카테고리의 다른 글

ipynb output clean  (0) 2021.08.27
jupyter notebook에서 anaconda env를 사용  (0) 2021.08.04

C:\OSGeo4W64\bin 에 pycharm.bat 생성

 

@echo off
call "%~dp0\o4w_env.bat"
call "%OSGEO4W_ROOT%\apps\grass\grass78\etc\env.bat"
call qt5_env.bat
call py3_env.bat
@echo off
path %OSGEO4W_ROOT%\apps\qgis\bin;%OSGEO4W_ROOT%\apps\grass\grass78\lib;%OSGEO4W_ROOT%\apps\grass\grass78\bin;%PATH%

set QGIS_PREFIX_PATH=%OSGEO4W_ROOT:\=/%/apps/qgis
set GDAL_FILENAME_IS_UTF8=YES
rem Set VSI cache to be used as buffer, see #6448
set VSI_CACHE=TRUE
set VSI_CACHE_SIZE=1000000
set QT_PLUGIN_PATH=%OSGEO4W_ROOT%\apps\qgis\qtplugins;%OSGEO4W_ROOT%\apps\qt5\plugins
start /d "C:\Program Files\JetBrains\PyCharm Community Edition 2021.1.1\bin" pycharm64.exe

 

OSGeo4W Shell에서 pycharm 실행

 

 

 

 

https://anitagraser.com/2019/03/03/stand-alone-pyqgis-scripts-with-osgeo4w/

 

Stand-alone PyQGIS scripts with OSGeo4W

PyQGIS scripts are great to automate spatial processing workflows. It’s easy to run these scripts inside QGIS but it can be even more convenient to run PyQGIS scripts without even having to l…

anitagraser.com

 

파이썬 콘솔에서 작동시키기

python-qgis.bat

 

@echo off
call "%~dp0\o4w_env.bat"
@echo off

path %OSGEO4W_ROOT%\apps\qgis-ltr\bin;%OSGEO4W_ROOT%\apps\grass\grass78\lib;%OSGEO4W_ROOT%\apps\grass\grass78\bin;C:\Program Files\QGIS 3.16.8\apps\qgis-ltr\python\plugins;%PATH%
set QGIS_PREFIX_PATH=%OSGEO4W_ROOT:\=/%/apps/qgis-ltr
set GDAL_FILENAME_IS_UTF8=YES
rem Set VSI cache to be used as buffer, see #6448
set VSI_CACHE=TRUE
set VSI_CACHE_SIZE=1000000
set QT_PLUGIN_PATH=%OSGEO4W_ROOT%\apps\qgis-ltr\qtplugins;%OSGEO4W_ROOT%\apps\qt5\plugins
set PYTHONPATH=%OSGEO4W_ROOT%\apps\qgis-ltr\python;%OSGEO4W_ROOT%\apps\qgis-ltr\python\plugins;%PYTHONPATH%

 

%OSGEO4W_ROOT%\apps\qgis-ltr\python\plugins;

는 PYTHONPATH와 path 모두 추가해야한다.

 

qgis-ltr

qgis 폴더명 주의

 

 

 

QGIS 기능 불러오기 위한 기본 세팅


from qgis.core import *
qgs = QgsApplication([], False)
QgsApplication.setPrefixPath("C:\OSGEO4~1\apps\qgis", True)
QgsApplication.initQgis()

'개발 환경 > Python' 카테고리의 다른 글

jupyter notebook에서 anaconda env 사용  (0) 2021.06.09
ecw 작업  (0) 2021.06.06

최초 작성일 : 2021.06.09

 

jupyter notebook kernel 확인

 

jupyter kernelspec list

 

# 환경 진입

conda activate <MY_CONDA_ENV_NAME>

# conda kernel package 설치

conda install nb_conda_kernels

# kernel 연결 확인

jupyter kernelspec list

확인 완료

'개발 환경 > Python' 카테고리의 다른 글

PyQGIS scripts with OSGeo4W & PyCharm  (0) 2021.06.14
ecw 작업  (0) 2021.06.06

1. docker gdal 활용

 

https://hub.docker.com/r/klokantech/gdal

 

Docker Hub

 

hub.docker.com

gdal환경 가져오기

docker run -ti --rm -v $(pwd):/data klokantech/gdal /bin/bash

 

# 포멧 확인

gdalinfo --formats | grep ECW 

 

# 기본 환경 설치

apt-get install python3 python3-pip wget nano

# 파이썬 로드 환경 세팅

ln -s /usr/bin/python3 /usr/bin/python

 

# miniconda 다운로드

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

bash Miniconda3-latest-Linux-x86_64.sh

source /root/.bashrc

 

# geopandas 설치

conda install -c conda-forge geopandas

 

# 이미지 클립

docker run -v $(pwd):/data klokantech/gdal gdalwarp -cutline /data/sample.geojson -crop_to_cutline /data/JB_gc.ecw /data/sample3.tif

 

############

ecw 만드는 과정

1. tif 결합

wsl 환경

docker start ecw

docker exec -it ecw /bin/bash

bash region.sh

 

2.

FWTool Shell 환경

gdal_translate out.tif out2.ecw -of ECW -co "LARGE_OK=YES"

 

3. EPSG 세팅

 

https://www.osgeo.kr/41

 

FWTools (GDAL/ORG Utility)에서 한국 좌표계 지원 방법

다양한 공간연산을 위한 툴인 FWTools에는 많은 기능들이 있습니다. 이 툴에는 GDAL과 OGR 라이브러리와 이를 이용한 유틸리티들이 모두 들어있으며 이를 구동하는데 필요한 종속적 라이브러리와

www.osgeo.kr

 

'개발 환경 > Python' 카테고리의 다른 글

PyQGIS scripts with OSGeo4W & PyCharm  (0) 2021.06.14
jupyter notebook에서 anaconda env 사용  (0) 2021.06.09

+ Recent posts