파이썬을 사용하여 shapefile의 간단한 주제 매핑?


37

ArcGIS / ArcPy를 사용하지 않고 파이썬으로 지리 데이터를 시각화하고 맵을 만들고 싶습니다.

인터넷에서 파이썬을 사용하여 주제 맵을 만드는 방법을 찾았습니다 .

내가 시도한 코드는 다음과 같습니다.

import shpUtils
import matplotlib.pyplot as plt

shpRecords = shpUtils.loadShapefile('C:\\Users\\shapefile.shp')

for i in range(0,len(shpRecords)):
    x = []
    y = []
    for j in range(0,len(shpRecords[i]['shp_data']['parts'][0]['points'])):

    tempx = float(shpRecords[i]['shp_data']['parts'][0]['points'][j]['x'])
    tempy = float(shpRecords[i]['shp_data']['parts'][0]['points'][j]['y'])
    x.append(tempx)
    y.append(tempy)
    plt.fill(x,y)

plt.axis('equal')
plt.title("Testing")
plt.show()

그러나 이것을 실행하면 임의의 색상이 표시됩니다.

shapefile의 특정 열을 시각화하려면 비슷한 코드를 사용하여 어떻게 구현할 수 있습니까?

위의 링크에서 색상의 사용법에 대해서만 논의하는 것은 분명하지 않습니다 ...

descartesPySAL 과 같이 이것을 달성하기 위해 추가 모듈이 필요 할까요 ?

답변:


61

ArcPy는 모르지만 Python에서 shapefile 및 래스터로 몇 년 동안 작업합니다.

  1. 파이썬에서 shape 파일을 처리하기 위해, 같은 많은 모듈이 있습니다 를 OSGeo / OGR , 피오나 , Pysal 또는 Pyshp ( shpUtils은 ,보고, 다른 사람 그들 중 하나가 아니라 가장 많이 사용입니다) Pypi : GIS 및 gis.stackexchange에 대한 예제와 많은 예 웹 (영어뿐만 아니라). 그들 대부분은 ArcPy (또는 arcgisscripting)보다 훨씬 오래되었습니다 ...
  2. 래스터를 처리하기 위해 표준 인 osgeo / gdal을 사용할 수 있습니다
  3. 지리 형상을 처리하기위한, 거기 매끈한
  4. 형상을 플로팅하려면 matplotlib 을 사용 하고 영역에 대해 matplotlib의 "확장"을 제거 할 수 있지만 많은 다른 모듈도 Pypi : 플로팅 및 3D 표현을위한 mayavi 와 같은 모듈 (matplotlib도 참조)을 사용할 수 있습니다.
  5. mapnik 과 같은 모듈도 있습니다. 1) shapefile을 읽고 4) Pycairo 모듈을 사용하여 플로팅 할 수 있습니다.

그 후에는 GIS와 같습니다.

  • 모듈 1)을 사용하여 shapefile을 열고 저장하고 원하는 경우 numpy 또는 scipy와 같은 다른 모듈로 처리를 수행하십시오.
  • 기하학적 객체 (버퍼 등)의 조작 및 분석에 매끄럽게 사용할 수 있습니다.
  • matplotlib을 사용하여 형상을 플롯 할 수 있지만 matplotlib은 플롯 할 대상을 모릅니다. 플로팅 할 대상 (속성 등)과 방법을 지정하는 것은 모듈 1) 또는 3)과 함께합니다.

shapefile의 특정 열을 시각화하려면 코드에서 어떻게 구현할 수 있습니까?

따라서 matplotib 및 기타 모듈을 배워야합니다. ArcPy를 배워야합니다. 똑같습니다. (웹에는 특히 matplolib에 대한 훌륭한 자습서가 많이 있으며 순수한 Python이기 때문에 ArcPy보다 쉽습니다.)

파이썬 만있는 예제들

여기에 이미지 설명을 입력하십시오

속성을 기반으로 한 색상의 지질지도 (다각형 shapefile)

여기에 이미지 설명을 입력하십시오

속성을 기반으로 한 색상의 3D 점 (PointZ shapefile)

여기에 이미지 설명을 입력하십시오

DEM의 3D 점 (z가 속성 인 점 모양 파일) 및 3D 선 (PolyLineZ 모양 파일) 및 DEM 표면에 드리 워진 래스터.

여기에 이미지 설명을 입력하십시오

원래 쉐이프 파일 (폴리 라인 쉐이프 파일)의 속성 (지질 형성 = 횡단면)을 기반으로 z 값과 색상이있는 지형 프로파일

여기에 이미지 설명을 입력하십시오

Mayavi2 모듈이있는 DEM (GeoTIFF)

여기에 이미지 설명을 입력하십시오

visvis 모듈을 사용하는 DEM (ESRI ASCII 그리드, .asc) 및 점 모양 파일 (z는 속성으로)

여기에 이미지 설명을 입력하십시오

시추공은 (3D는 모듈 가시화하는 점 모양 파일 (Z와 속성으로서)로부터 그리드 모듈 계산 표면 NumPy와 및하기 matplotlib와 속성 (지질)에 기초한 색으로 PolyLineZ에의 버퍼 visvis


16

셰이프 파일을 빠르게 시각화하려는 데 비슷한 문제가 있었으며 Matplotlib 방식이 이러한 작은 작업을 수행하는 데 매우 긴 방법이라는 것을 항상 발견했습니다. 대신 "Python Geographic Visualizer"모듈 또는 GeoVis를 간단히 개발했습니다. 업데이트 : v0.2.0에는 많은 새로운 기능이 추가되었습니다.

쉐이프 파일을 시각화하는 것은 쉽지 않았습니다.

import geovis
geovis.ViewShapefile("C:/yourshapefile.shp")

Voila, 당신은지도를 Tkinter 창에 이미지로 팝업하고 맵을 이미지 파일로 저장할 수도 있습니다. , 스타일링 착색 및지도에 여러 레이어를 추가하는 것도 가능하며, 최신 버전에서 당신은 또한 수있는 속성에 따라 분류확대 특정 지역에있다. 아래지도에서 지오 비스는 약 5 분 만에 세계의 모든 GADM 주를로드하고 범주별로 채색했습니다. GeoVis는 여기에서 다운로드 할 수 있으며 여기 에서 사용 방법에 대한 자세한 내용을 볼 수 있습니다.

여기에 이미지 설명을 입력하십시오

사용 편의성만큼 쉬운 설치가 목표이므로 GeoVis는 Python을 사용하는 사람이라면 누구나 사용할 수 있으며 내장 Tkinter Canvas를 렌더러로 사용할 수 있으므로 다른 모듈이 필요하지 않습니다. 그러나 Aggdraw, PIL 또는 PyCairo를 사용하거나 가져 오는 것이 좋습니다.이 렌더링은 렌더러로도 사용할 수 있으며 훨씬 빠르고 품질이 좋습니다.

Backdraw는 형상 파일을 위도 / 경도 좌표 시스템으로 투영 해제해야하지만 아직 투영 또는 변환을 처리하지 않습니다.



1

2019 년 파이썬에서 shapefile에서 주제 맵을 만드는 가장 간단한 방법은 geopandas 입니다.

설명서의 예 : http://geopandas.org/mapping.html

import geopandas
world = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))
world['gdp_per_cap'] = world.gdp_md_est / world.pop_est
world.plot(column='gdp_per_cap')
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.