지리 데이터용 Python 도구
GeoPandas는 팬더 개체에 지리 데이터에 대한 지원을 추가하는 프로젝트입니다. 현재 각각 pandas.Series
및 pandas.DataFrame
의 하위 클래스인 GeoSeries
및 GeoDataFrame
유형을 구현합니다. GeoPandas 개체는 매끈한 기하학 개체에 작용하고 기하학적 작업을 수행할 수 있습니다.
GeoPandas 기하학 작업은 데카르트입니다. 좌표 참조 시스템(crs)은 객체의 속성으로 저장될 수 있으며 파일에서 로드할 때 자동으로 설정됩니다. to_crs()
메서드를 사용하면 객체를 새로운 좌표계로 변환할 수 있습니다. 현재는 작업에 대해 유사한 좌표를 적용하지 않지만 향후 변경될 수 있습니다.
문서는 geopandas.org(현재 릴리스) 및 문서 읽기(릴리스 및 개발 버전)에서 확인할 수 있습니다.
GeoPandas 프로젝트는 개방형 거버넌스 모델을 사용하며 NumFOCUS의 재정적 후원을 받습니다. 프로젝트가 개발자 시간, 전문 서비스, 여행, 워크숍 및 기타 다양한 요구 사항에 대한 비용을 지불하는 데 도움이 되도록 세금 공제 기부를 고려해보세요.
자세한 내용은 설치 문서를 참조하세요. GeoPandas는 다음 패키지에 의존합니다:
pandas
shapely
pyogrio
pyproj
packaging
또한 matplotlib
플로팅에 필요한 선택적 종속성입니다. 이러한 패키지는 지리공간 분석을 위한 여러 하위 수준 라이브러리에 의존하므로 설치가 어려울 수 있습니다. 따라서 conda 패키지 관리자를 사용하여 GeoPandas를 설치하는 것이 좋습니다. 자세한 내용은 설치 문서를 참조하세요.
>>> import geopandas
>>> from shapely.geometry import Polygon
>>> p1 = Polygon([(0, 0), (1, 0), (1, 1)])
>>> p2 = Polygon([(0, 0), (1, 0), (1, 1), (0, 1)])
>>> p3 = Polygon([(2, 0), (3, 0), (3, 1), (2, 1)])
>>> g = geopandas.GeoSeries([p1, p2, p3])
>>> g
0 POLYGON ((0 0, 1 0, 1 1, 0 0))
1 POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))
2 POLYGON ((2 0, 3 0, 3 1, 2 1, 2 0))
dtype: geometry
일부 지리적 작업은 일반 팬더 개체를 반환합니다. GeoSeries
의 area
속성은 GeoSeries
의 각 항목의 면적을 포함하는 pandas.Series
를 반환합니다.
>>> print(g.area)
0 0.5
1 1.0
2 1.0
dtype: float64
다른 작업은 GeoPandas 객체를 반환합니다.
>>> g.buffer(0.5)
0 POLYGON ((-0.3535533905932737 0.35355339059327...
1 POLYGON ((-0.5 0, -0.5 1, -0.4975923633360985 ...
2 POLYGON ((1.5 0, 1.5 1, 1.502407636663901 1.04...
dtype: geometry
GeoPandas 객체는 스스로 플롯하는 방법도 알고 있습니다. GeoPandas는 플롯을 작성하기 위해 matplotlib를 사용합니다. GeoSeries
플롯을 생성하려면 다음을 사용하세요.
>>> g.plot()
GeoPandas는 또한 pyogrio가 인식하는 모든 데이터 형식을 읽을 수 있는 대체 생성자를 구현합니다. 뉴욕시의 자치구 경계가 포함된 ESRI 셰이프파일이 포함된 zip 파일을 읽으려면(예제는 geodatasets
패키지를 사용하여 가져올 수 있음):
>>> import geodatasets
>>> nybb_path = geodatasets.get_path('nybb')
>>> boros = geopandas.read_file(nybb_path)
>>> boros.set_index('BoroCode', inplace=True)
>>> boros.sort_index(inplace=True)
>>> boros
BoroName Shape_Leng Shape_Area
BoroCode
1 Manhattan 359299.096471 6.364715e+08
2 Bronx 464392.991824 1.186925e+09
3 Brooklyn 741080.523166 1.937479e+09
4 Queens 896344.047763 3.045213e+09
5 Staten Island 330470.010332 1.623820e+09
geometry
BoroCode
1 MULTIPOLYGON (((981219.0557861328 188655.31579...
2 MULTIPOLYGON (((1012821.805786133 229228.26458...
3 MULTIPOLYGON (((1021176.479003906 151374.79699...
4 MULTIPOLYGON (((1029606.076599121 156073.81420...
5 MULTIPOLYGON (((970217.0223999023 145643.33221...
>>> boros['geometry'].convex_hull
BoroCode
1 POLYGON ((977855.4451904297 188082.3223876953,...
2 POLYGON ((1017949.977600098 225426.8845825195,...
3 POLYGON ((988872.8212280273 146772.0317993164,...
4 POLYGON ((1000721.531799316 136681.776184082, ...
5 POLYGON ((915517.6877458114 120121.8812543372,...
dtype: geometry