이 게시물 과 함께 QGIS 외부의 OSGeo4w Shell 에서 스크립트를 실행 하려고했습니다 . 그러나 다음과 같은 오류가 발생합니다.
ImportError : qgis.core라는 모듈이 없습니다.
또한 다음 게시물을 읽고 다양한 모듈을 가져 오려고했지만 아무 소용이 없습니다.
- QGIS Python 콘솔 외부에서 sextante 알고리즘을 실행하는 방법은 무엇입니까?
- 외부에서 QGIS를위한 간단한 파이썬 스크립트를 실행하는 방법 (예 : Sublime Text)?
- PyQGIS를 사용하여 독립형 Python 스크립트를 작성하십니까?
다음은 그리드를 만들고 다각형 셰이프 파일을 클립으로 만드는 간단한 스크립트입니다.
참고 : 이 스크립트는 QGIS에서 실행될 때 테스트되었으며 성공적으로 작동합니다.
##Test=name
import os
import glob
import sys
sys.path.append("C:\Program Files\QGIS Brighton\lib;%OSGEO4W_ROOT:\=/%/apps/qgis;%OSGEO4W_ROOT%\apps\qgis\bin;%OSGEO4W_ROOT%\apps\grass\grass-6.4.3\lib;%PATH%")
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from qgis.core import *
QgsApplication.setPrefixPath("C:\Program Files\QGIS Brighton\apps\qgis", True)
QgsApplication.initQgis()
from os.path import expanduser
home = expanduser("~")
# Folder path of the Results for shapefiles
path_dir = home + "\Desktop\Test\\"
path_res = path_dir + "Results\\"
def run():
# Set directory, search for all polygon .shp files and run the Create Grid and Clip algorithms then output results into Results folder
os.chdir(path_dir + "Shapefiles\\")
for fname in glob.glob("*.shp"):
outputs_1=processing.runalg("qgis:creategrid", 1000, 1000, 24108, 18351.157175, 258293.802316, 665638.226408, 1, 'EPSG:7405', None)
outputs_2=processing.runalg("qgis:clip", outputs_1['SAVENAME'], fname, path_res + "/"+ fname)
run()
QgsApplication.exitQgis()
# Remove the above line when running in QGIS
@gcarrillo가 게시 한 답변과 스크립트에 따라 qgis.core.
모듈을 성공적 으로 가져올 수 있습니다 . @gcarrillo가 제공 한 스크립트가 실행되지만 Traceback 오류가 발생합니다.
Traceback (most recent call last):
File "Test.py", line 55, in <module>
run()
File "Test.py", line 53, in run
algClip.processAlgorithm(progress)
File "C:\Users\username\.qgis2\python\plugins\processing\algs\qgis\ftools\Clip.py", line 59, in processAlgorithm
layerA.pendingFields(),
AttributeError: 'NoneType' object has no attribute 'pendingFields'