
QMaxent — Maxent SDM in QGIS
Train, evaluate, and project Maxent species distribution models without leaving QGIS.
osgeokr.github.io
QGIS · Maxent · SDM · elapid · 오픈소스 플러그인
종 분포 모델링(Species Distribution Modeling, SDM)을 해본 분이라면 익숙한 작업 흐름이 있습니다. QGIS에서 출현 지점과 환경 변수 래스터를 정리하고, .asc로 내보내, Maxent 자바 GUI에서 모델을 학습시킨 뒤, 결과 래스터를 다시 QGIS로 들고 와서 시각화하는 흐름이죠. 분석을 한두 번 돌리고 끝나면 괜찮지만, 공간 교차검증을 바꿔가며 비교하거나 임계값별로 우선조사 후보지를 뽑아야 하는 순간 손이 빠르게 바빠집니다.
QMaxent는 이 왕복을 없애기 위해 만든 QGIS 플러그인입니다. elapid Python 라이브러리를 QGIS에 통합해, 데이터 준비 → 모델 학습 → 공간 교차검증 → Jackknife 변수 중요도 → 서식적합도 투영 → 우선조사 후보지 선정 → 논문용 결과 내보내기까지 Maxent SDM 전 과정을 QGIS 하나에서 끝낼 수 있도록 설계했습니다.
- 공식 페이지: https://osgeokr.github.io/qmaxent/
- GitHub: https://github.com/osgeokr/qmaxent
- 라이선스: MIT
- 현재 버전: 0.1.2 (2026-05-10 릴리스)
왜 또 하나의 Maxent 플러그인인가
기존에도 QGIS-Maxent 연계 도구가 없지는 않습니다. 다만 대부분은 자바 기반 maxent.jar를 외부 프로세스로 호출하거나, 파일 포맷 변환만 보조하는 어댑터 수준에 머물러 있습니다. QMaxent는 그 대신 다음과 같은 방향을 택했습니다.
- Maxent 알고리즘 자체를 Python으로 수행합니다. elapid의
MaxentModel(내부적으로 maxnet 규칙을 따름)을 사용해 자바 의존성을 제거했고, scikit-learn과의 호환을 유지합니다. - 공간 교차검증을 핵심 기능으로 다룹니다. Geographic K-Fold(Roberts et al. 2017), Checkerboard(Muscarella et al. 2014, ENMeval), Buffered Leave-One-Out(Pearson 2007; Ploton et al. 2020)을 옵션으로 제공하며, pooled AUC를 함께 보고합니다.
- 원본 Maxent와 비교 가능한 출력 형식을 유지합니다. Jackknife 표는 학습/검증 AUC를 fold별 평균으로 산출해, 기존 Maxent 사용자가 결과를 그대로 해석할 수 있습니다.
- 연구 산출물로 바로 쓰는 흐름을 염두에 두었습니다. 결과 내보내기는 Times New Roman 서식의 다중 시트 XLSX로 출력되어 논문 보충자료(Supplementary Table)에 거의 그대로 첨부할 수 있습니다.
주요 기능
1. Maxent 모델링
- Linear · Quadratic · Hinge · Product · Threshold 5종 피처 지원.
- 샘플 수에 따른 maxnet 자동 선택 규칙 적용 (수동 지정도 가능).
- 범주형 변수는 one-hot 인코딩으로 자동 처리.
- 거리 가중치 기반 표본편향 보정(Phillips 2009) 옵션 제공.
2. 데이터 준비 (Check + Harmonize)
- 환경 변수 래스터의 CRS · 범위(extent) · 해상도를 자동 점검하고, 불일치 시 사용자가 지정한 기준으로 일괄 조정.
- 학습 전에 데이터 정합성을 확보하므로, "왜 결과 래스터가 한 칸씩 어긋나지?" 류의 무성한 실패를 사전에 차단.

3. 예제 데이터 원클릭 로딩
elapid 튜토리얼에서 사용하는 Bradypus(세발가락나무늘보)와 Ariolimax(바나나 민달팽이) 데이터셋을 메뉴 한 번으로 불러올 수 있습니다. 워크플로 학습용으로도, 버그 리포트 재현용으로도 유용합니다.

4. 공간 교차검증 (Spatial Cross-Validation)
| 방법 | 설명 |
|---|---|
| Geographic K-Fold (기본) | 지리적으로 분리된 K개 fold로 공간 의존성 완화 |
| Random K-Fold | 비공간 베이스라인 비교용 |
| Checkerboard | ENMeval 방식의 체커보드 분할 |
| Buffered LOO | 출현 지점 주변 버퍼를 제외하는 leave-one-out |
각 방식 모두 pooled AUC를 함께 제공합니다.


5. Jackknife 변수 중요도
학습 AUC와 held-out 검증 AUC를 CV fold별 평균으로 보고합니다. 원본 Maxent의 변수 중요도 표와 동일한 구조이므로, 기존 연구와의 비교가 직관적입니다.

6. 공간 투영 (Spatial Projection)
- Cloglog · Logistic · Raw 변환을 선택 가능.
- 산출된 서식적합도 래스터는 자동으로 스타일이 적용되어 QGIS 프로젝트에 바로 추가됩니다.

7. 우선조사 후보지(Priority Sites for Survey)
현장조사 인력은 늘 부족하니, 모델 결과를 다음 조사로 연결하는 단계까지 자동화했습니다.
- Discovery 모드: 고적합도 구간(기본값: raster max × 0.9)에서 무작위 또는 상위 N개 샘플링. 기존 출현 지점과의 거리, 후보지 간 간격 제약 옵션 포함.
- Validation 모드: Rhoden et al. (2017)을 따라 적합도 4분위에 걸쳐 층화 추출. 하한 임계값은 MTP / T10 / MaxSSS / Custom 중 선택.
- 선정된 후보지는 OpenStreetMap Nominatim 역지오코딩(API 키 불필요)으로 행정구역명까지 자동 부여됩니다.

8. 모델 저장 / 불러오기 (.pkl)
학습된 모델은 elapid의 save_object를 이용해 .pkl로 저장합니다. 재사용 시 변수 매핑 대화상자가 떠서, 모델이 기대하는 변수 순서와 현재 프로젝트의 래스터 레이어를 1:1로 매칭하도록 강제합니다. 래스터 순서가 어긋난 채 그대로 투영해 잘못된 결과가 나오는 침묵의 실패(silent failure)를 사전에 막기 위함입니다.
⚠ .pkl 파일 보안 안내
Pythonpickle은 편리하지만 임의 코드 실행이 가능한 포맷입니다. scikit-learn · joblib와 같은 위험을 공유하므로, 본인 또는 신뢰할 수 있는 협력자가 만든 .pkl만 불러오세요.
9. 논문용 결과 내보내기 (XLSX)
- 실험 설정, 변수 목록, 교차검증 결과, Jackknife 중요도, Priority Sites 임계값을 다중 시트 XLSX로 출력.
- Times New Roman 서식이 적용되어 학술지 보충자료 관행에 부합합니다.
10. 이중 언어 UI (English / 한국어)
영문 원본 문자열에 한국어 번역을 모두 갖춰, QGIS 로케일에 맞춰 자동 전환됩니다.
설치
요구사항
- QGIS 3.44 이상 (LTR 계열 권장)
- Python 3.9+ (최신 QGIS 배포판에 포함)
- 최초 실행 시 인터넷 연결 필요 (의존성 약 300–500 MB 다운로드)
설치 단계
- QGIS에서 플러그인 → 플러그인 관리 및 설치를 엽니다.
- QMaxent를 검색해 설치합니다.
- 설치 후 플러그인 → QMaxent → QMaxent Dependencies를 열고 Install / Update Dependencies를 클릭합니다.
elapid,rasterio,geopandas,scikit-learn등이 플러그인 전용 가상환경에 설치됩니다.
💡 시스템 Python이나 QGIS 자체 환경에는 영향을 주지 않습니다. 의존성 충돌로 QGIS가 망가질 걱정을 덜었습니다.
빠른 시작
- 플러그인 → QMaxent → QMaxent Analysis를 엽니다.
- ① Data 탭
- 출현 지점(presence) 레이어를 선택하고, 환경 변수 래스터를 순서대로 추가합니다.
- 처음 사용한다면 우측 Example data 버튼으로 Bradypus 또는 Ariolimax 데이터셋을 불러와 흐름을 익혀보세요.
- ② Parameters 탭
- 피처 유형(Auto 권장), 정규화 강도, 공간 교차검증 방식, 출력 경로를 설정합니다.
- ▶ Run Maxent 클릭 → ③ Training 탭에 진행률 표시.
- ④ Results 탭
- ROC 곡선, 반응 곡선(response curves), Jackknife 표를 확인합니다.
- 출력 변환(
cloglog권장)을 정하고 Run Spatial Projection으로 서식적합도 래스터를 생성합니다.
- 필요 시 Priority Sites 모듈로 후속 조사 후보지를 뽑아 XLSX로 내보냅니다.
이전에 저장한 .pkl을 다시 쓰려면 ① Data 탭 상단의 Load existing model (.pkl)… 버튼을 사용하세요. 변수 매핑 대화상자가 떠서 현재 프로젝트의 래스터와 모델 변수를 정확히 짝지어 줍니다.
인용
QMaxent를 연구에 사용하셨다면 아래 인용 형식을 사용해 주세요. 저장소 루트의 CITATION.cff에서 단일 출처(single source of truth)로 관리됩니다.
APA 7th
Yu, B.-H. (2026). QMaxent: a QGIS plugin for Maxent species distribution modeling (Version 0.1.2) [Computer software]. https://osgeokr.github.io/qmaxent/
BibTeX
@software{Yu_QMaxent_2026,
author = {Yu, Byeong-Hyeok},
title = {{QMaxent: a QGIS plugin for Maxent species distribution modeling}},
version = {0.1.2},
date = {2026-05-10},
url = {https://github.com/osgeokr/qmaxent},
license = {MIT}
}
방법론 참고문헌
QMaxent의 기본값은 다음의 SDM 표준 관행을 따릅니다.
- Phillips, S. J., Anderson, R. P., & Schapire, R. E. (2006). Maximum entropy modeling of species geographic distributions. Ecological Modelling, 190, 231–259.
- Phillips, S. J., & Dudík, M. (2008). Modeling of species distributions with Maxent: new extensions and a comprehensive evaluation. Ecography, 31, 161–175.
- Phillips, S. J., Anderson, R. P., Dudík, M., Schapire, R. E., & Blair, M. E. (2017). Opening the black box: an open-source release of Maxent. Ecography, 40, 887–893.
- Muscarella, R., et al. (2014). ENMeval: An R package for conducting spatially independent evaluations and estimating optimal model complexity for Maxent ecological niche models. Methods in Ecology and Evolution, 5, 1198–1205.
- Roberts, D. R., et al. (2017). Cross-validation strategies for data with temporal, spatial, hierarchical, or phylogenetic structure. Ecography, 40, 913–929.
- Anderson, C. B. (2023). elapid: Species distribution modeling tools for Python. Journal of Open Source Software, 8(84), 4930.
라이선스 & 기여
- MIT License — 자유롭게 사용·수정·재배포할 수 있습니다.
- 버그 리포트와 기능 제안은 이슈 트래커에서 환영합니다.
- Pull Request도 환영하지만, 큰 변경은 사전 이슈로 논의 후 진행해 주세요.
마치며
QMaxent는 "QGIS에서 시작해 QGIS에서 끝나는" Maxent SDM 워크플로를 목표로 만들었습니다. 첫 공개 버전이라 다듬어야 할 부분이 많을 텐데, 사용해 보시고 피드백 주시면 다음 릴리스에 반영하겠습니다. 공식 페이지의 의견 보내기 양식이 가장 빠릅니다 — 약 5분 정도 소요됩니다.
생물다양성 보전을 위한 의사결정에 조금이라도 도움이 되길 바라며, 동료 분석가·연구자 분들의 많은 활용과 비판을 부탁드립니다. 🐢🌿
문의: bhyu@knps.or.kr · 공식 페이지: https://osgeokr.github.io/qmaxent/ · GitHub: https://github.com/osgeokr/qmaxent