QGIS는 Pandas와 GeoPandas를 사용할 수 있습니다.

13601 단어 QGISPython

개시하다


Pandas(GeoPandas)가 편하네요.
다만 QGIS의 파이썬 콘솔에서는 사용할 수 없기 때문에 사용해야 한다.
GeoPandas에 가입하려고 했는데 해결하기 어려운 문제가 생겨서 일단 Pandas로 참아요.
참고했던 사이트가 여기 있어요.
https://umar-yusuf.blogspot.com/2018/12/install-third-party-python-modules-in.html

모듈 추가


환경 확인


이번에는 Windows 7의 QGIS3입니다.네 가지 환경에서 진행됩니다.
먼저 동작 환경을 확인합니다.
QGIS를 시작하고 파이톤 콘솔을 엽니다.
그럼 다음 지령이 판다스를 읽을 수 있는지 시험해 보겠습니다.
>>> import pandas
Traceback (most recent call last):
  File "C:\PROGRA~1\QGIS3~1.4\apps\Python37\lib\code.py", line 90, in runcode
    exec(code, self.locals)
  File "<input>", line 1, in <module>
  File "C:/PROGRA~1/QGIS3~1.4/apps/qgis-ltr/./python\qgis\utils.py", line 672, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
ModuleNotFoundError: No module named 'pandas'
예, 모듈이 없어서 오류가 발생했습니다.
나오지 않으면 이미 사용할 수 있으니 아래의 절차는 필요 없다.
다음은 파이썬 콘솔에서 사용하는 파이썬의 버전을 확인합니다.
다음 명령을 실행하십시오.
>>> import sys
>>> sys.version
'3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)]'
나는 파이톤의 3.7.0이 사용된다는 것을 알았다.
그럼 이제 관리자로서 시작 메뉴부터 QGIS 폴더 내OSGeo4W Shell까지 수행합니다.
Windows 10의 경우 컨텍스트 메뉴의 [기타] - [파일 위치 열기]에서 파일을 관리자로 선택합니다.
관리자가 실행하지 않으면 이후 설치는 권한이 없다는 욕을 먹을 수 있다.

OSGeo4W Shell이 열리면 python -V 던져주세요.
C:\Windows\System32>python -V
Python 2.7.14
여기 파이썬은 2.714를 참고했습니다.

pip 설치


모듈을 추가할 때 pip를 사용합니다.
방금 켠 OSGeo4W Shell을 사용하여 pip을 설치합니다.
설치 명령은 python -m ensurepip --default-pip입니다.
C:\Windows\System32>python -m ensurepip --default-pip
Collecting setuptools
Requirement already satisfied: pip in c:\progra~1\qgis3~1.4\apps\python27\lib\site-packages
Installing collected packages: setuptools
Successfully installed setuptools-28.8.0
괜찮아요. 들어갈게요.
(내 환경에 피프가 있는 것 같다.)
최신판이 아니면 욕먹을 수도 있으니 업데이트도 방송된다.
C:\Windows\System32>python -m pip install --upgrade pip setuptools
Collecting pip
  Downloading https://files.pythonhosted.org/packages/5c/e0/be401c003291b56efc55aeba6a80ab790d3d4cece2778288d65323009420/pip-19.1.1-py2.py3-none-any.whl (1.4MB)
    100% |################################| 1.4MB 1.6MB/s
Collecting setuptools
  Downloading https://files.pythonhosted.org/packages/ec/51/f45cea425fd5cb0b0380f5b0f048ebc1da5b417e48d304838c02d6288a1e/setuptools-41.0.1-py2.py3-none-any.whl (575kB)
    100% |################################| 583kB 2.1MB/s
Installing collected packages: pip, setuptools
  Found existing installation: pip 19.0.3
    Uninstalling pip-19.0.3:
      Successfully uninstalled pip-19.0.3
  Found existing installation: setuptools 28.8.0
    Uninstalling setuptools-28.8.0:
      Successfully uninstalled setuptools-28.8.0
Successfully installed pip-19.1.1 setuptools-41.0.1

파이썬 버전 전환


OSGeo4W Shell의 파이썬 버전이 2개 계열이기 때문에 3개 계열로 전환했다.
나는 3과면 필요 없다고 생각한다.
OSGeo4W 셸py3_env을 사용합니다.
몇 개의 SET 명령이 자동으로 재생됩니다.
C:\Windows\System32>py3_env

C:\Windows\System32>SET PYTHONPATH=

C:\Windows\System32>SET PYTHONHOME=C:\PROGRA~1\QGIS3~1.4\apps\Python37

C:\Windows\System32>PATH C:\PROGRA~1\QGIS3~1.4\apps\Python37;C:\PROGRA~1\QGIS3~1.4\apps\Python37\Scripts;C:\PROGRA~1\QGIS3~1.4\apps\Python27\Scripts;C:\PROGRA~1\QGIS3~1.4\bin;C:\windows\system32;C:\windows;C:\windows\system32\WBem
어떤 변화가 있는지 확인해 보세요.
C:\Windows\System32>python -V
Python 3.7.0
파이썬 콘솔과 같은 버전으로 바뀌었습니다.

Pandas 모듈 추가


Pip을 사용하여 Pandas를 추가하십시오.
OSGeo4W 쉘python -m pip install pandas으로 던졌다.
C:\Windows\System32>python -m pip install pandas
Collecting pandas
  Downloading https://files.pythonhosted.org/packages/61/c7/f943fceb712579bc538700e2c157dc4972e16abfe29bd4969149bad98c74/pandas-0.24.2-cp37-cp37m-win_amd64.whl (9.0MB)
    100% |████████████████████████████████| 9.0MB 24kB/s
Requirement already satisfied: python-dateutil>=2.5.0 in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from pandas) (2.7.5)
Requirement already satisfied: numpy>=1.12.0 in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from pandas) (1.16.3)
Requirement already satisfied: pytz>=2011k in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from pandas) (2018.7)
Requirement already satisfied: six>=1.5 in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)
Installing collected packages: pandas
Successfully installed pandas-0.24.2
성공했어.

동작 확인


그럼 확인해 보시죠.
QGIS를 다시 시작한 후 Python 콘솔을 다시 엽니다.
그리고 방금 오류가 발생했습니다 import pandas.
잘못 가져오지 않았으니 적절한 Excel 파일로 읽어 보세요.
>>> import pandas
>>> pandas.read_excel('c:/work/test.xlsx')
          a         b         c
0  50351610  12.25218 -10.13777
1  50351611  12.25274 -10.14224
2  50351612  12.24903 -10.14193

불러왔습니다.

GeoPandas에 도전


OSGeo4W 쉘python -m pip install geopandas으로 던졌다.
C:\Windows\System32>python -m pip install geopandas
Collecting geopandas
  Downloading https://files.pythonhosted.org/packages/74/42/f4b147fc7920998a42046d0c2e65e61000bc5d104f1f8aec719612cb2fc8/geopandas-0.5.0-py2.py3-none-any.whl (893kB)
    100% |████████████████████████████████| 901kB 6.5MB/s
Requirement already satisfied: pyproj in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from geopandas) (1.9.6)
Requirement already satisfied: shapely in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from geopandas) (1.6.4.post2)
Requirement already satisfied: pandas in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from geopandas) (0.24.2)
Collecting fiona (from geopandas)
  Downloading https://files.pythonhosted.org/packages/41/9d/63696e7b1de42aad294d4781199a408bec593d8fdb80a2b4a788c911a33b/Fiona-1.8.6.tar.gz (1.7MB)
    100% |████████████████████████████████| 1.7MB 3.1MB/s
    Complete output from command python setup.py egg_info:
    A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\hoge\AppData\Local\Temp\pip-install-p0dr78y4\fiona\
아, 오류가 났어요.
피나라는 도서관에서 gdal-config로 가는 경로를 지정하지 않아서 화가 난 것 같습니다.
같은 문제로 괴로워하는 사람을 찾을 수 있었지만, 쉽게 풀기 어려워 일단 포기했다.
참고로 여기 한번 해보면 성공이야.
https://gis.stackexchange.com/questions/82200/how-to-install-fiona-to-read-shapefile-attributes-with-osgeo4w/82206
먼저 파이썬 콘솔부터 GDAL 버전을 조사한다.
>>> import osgeo
>>> osgeo.gdal.VersionInfo("RELEASE_NAME")
'2.3.2'
변수GDAL_VERSION로 환경 변수에 값2.3.2을 추가합니다.

설정이 되면 신중을 기하기 위해 시동을 걸자.
다음 URL의 Fiona 오류, 1.8.6 오류, cp37 오류, cp37 오류, cp37 오류, winamd64.whl 다운로드
(버전 제외,cp37
https://www.lfd.uci.edu/~gohlke/pythonlibs/#fiona
다운로드한 파일을 적당한 위치로 이동하면
OSGeo4W 셸을 사용하여 설치 수행
C:\Windows\System32>python -m pip install c:/work/Fiona-1.8.6-cp37-cp37m-win_amd64.whl
Processing c:/work/fiona-1.8.6-cp37-cp37m-win_amd64.whl
Collecting click>=4.0 (from Fiona==1.8.6)
  Downloading https://files.pythonhosted.org/packages/fa/37/45185cb5abbc30d7257104c434fe0b07e5a195a6847506c074527aa599ec/Click-7.0-py2.py3-none-any.whl (81kB)
     |████████████████████████████████| 81kB 2.6MB/s
Collecting munch (from Fiona==1.8.6)
  Downloading https://files.pythonhosted.org/packages/68/f4/260ec98ea840757a0da09e0ed8135333d59b8dfebe9752a365b04857660a/munch-2.3.2.tar.gz
Collecting click-plugins>=1.0 (from Fiona==1.8.6)
  Downloading https://files.pythonhosted.org/packages/e9/da/824b92d9942f4e472702488857914bdd50f73021efea15b4cad9aca8ecef/click_plugins-1.1.1-py2.py3-none-any.wh
l
Collecting cligj>=0.5 (from Fiona==1.8.6)
  Downloading https://files.pythonhosted.org/packages/e4/be/30a58b4b0733850280d01f8bd132591b4668ed5c7046761098d665ac2174/cligj-0.5.0-py3-none-any.whl
Collecting attrs>=17 (from Fiona==1.8.6)
  Downloading https://files.pythonhosted.org/packages/23/96/d828354fa2dbdf216eaa7b7de0db692f12c234f7ef888cc14980ef40d1d2/attrs-19.1.0-py2.py3-none-any.whl
Requirement already satisfied: six>=1.7 in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from Fiona==1.8.6) (1.12.0)
Installing collected packages: click, munch, click-plugins, cligj, attrs, Fiona
  Running setup.py install for munch ... done
Successfully installed Fiona-1.8.6 attrs-19.1.0 click-7.0 click-plugins-1.1.1 cligj-0.5.0 munch-2.3.2
방금 실패한 피나가 설치되었으니 GeoPandas를 한 번 더 추가하세요.
C:\Windows\System32>python -m pip install geopandas
Collecting geopandas
  Using cached https://files.pythonhosted.org/packages/74/42/f4b147fc7920998a42046d0c2e65e61000bc5d104f1f8aec719612cb2fc8/geopandas-0.5.0-py2.py3-none-any.whl
Collecting pyproj (from geopandas)
  Using cached https://files.pythonhosted.org/packages/ce/36/2d8f1fe6bf32eebc0e880d9f27b394b97dd5119303986de691d7e91e1a51/pyproj-2.2.1-cp37-cp37m-win_amd64.whl
Requirement already satisfied: fiona in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from geopandas) (1.8.6)
Collecting shapely (from geopandas)
  Using cached https://files.pythonhosted.org/packages/a2/fb/7a7af9ef7a35d16fa23b127abee272cfc483ca89029b73e92e93cdf36e6b/Shapely-1.6.4.post2.tar.gz
Requirement already satisfied: pandas in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from geopandas) (0.24.2)
Requirement already satisfied: click>=4.0 in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from fiona->geopandas) (7.0)
Requirement already satisfied: attrs>=17 in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from fiona->geopandas) (19.1.0)
Requirement already satisfied: cligj>=0.5 in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from fiona->geopandas) (0.5.0)
Requirement already satisfied: six>=1.7 in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from fiona->geopandas) (1.12.0)
Requirement already satisfied: munch in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from fiona->geopandas) (2.3.2)
Requirement already satisfied: click-plugins>=1.0 in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from fiona->geopandas) (1.1.1)
Requirement already satisfied: numpy>=1.12.0 in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from pandas->geopandas) (1.15.4)
Requirement already satisfied: pytz>=2011k in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from pandas->geopandas) (2018.7)
Requirement already satisfied: python-dateutil>=2.5.0 in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from pandas->geopandas) (2.7.5)
Installing collected packages: pyproj, shapely, geopandas
  Running setup.py install for shapely ... done
Successfully installed geopandas-0.5.0 pyproj-2.2.1 shapely-1.6.4.post2
이번에는 성공한 것 같다.

동작 확인


QGIS를 다시 시작한 후 파이톤 콘솔을 엽니다.
실행해 보세요import geopandas.
잘못 가져오지 않았으니 적당한 농담 파일로 읽어 보세요.
>>> import geopandas
>>> geopandas.read_file('c:/work/test_pl.shp')
           gid                                            geometry
0      1845193   LINESTRING (-34287.477 -89755.997, -34283.604 ...
1      1847175   LINESTRING (-30711.356 -90881.484, -30712.981 ...
2      1847176   LINESTRING (-33770.897 -91487.429, -33769.417 ...
3      1847177   LINESTRING (-34019.315 -87829.27899999999, -34...
・
・省略
・
13548  1661930   LINESTRING (-32960.024 -87385.46400000001, -32...
13549  1661931   LINESTRING (-36652.435 -88311.53999999999, -36...
13550  1661932   LINESTRING (-33645.849 -89185.613, -33619.816 ...

[13551 rows x 5 columns]
대박이다.

최후


이번에는 판다스를 대상으로 다른 모듈도 당연히 추가할 수 있다.
(GeoPandas 실패)
그리고 이 플러그인도 판다스를 사용할 수 있다.
개인적으로 QGIS 플러그인 등 연산 성능이 필요한 상황에서 만만치 않은 효과가 있다고 본다.
그러나 사용할 수 있도록 상술한 절차가 필요하기 때문에 공개 플러그인에는 적용되지 않는다.
만약 나에게 좋은 방법이 있다면 나는 매우 기쁠 것이다.

본 보도의 허가증



이 글은 창의 공통 모델 4.0 국제 허가증 표시의 아래에서 제공한 것이다.

좋은 웹페이지 즐겨찾기