지리 데이터 시각화를 위한 마법의 조합: Python과 Geopandas

이 기사 는 Lemony Hug가 Huawei 클라우드 커뮤니티에서 공유한 " Python 및 Geopandas: 지리적 데이터 시각화 및 분석 가이드 "입니다.

지리 데이터 시각화는 지리 공간 분포, 도시 계획, 환경 보호, 비즈니스 의사 결정 등 다양한 분야에서 중요합니다. Python 언어는 강력한 데이터 처리 및 시각화 라이브러리로 잘 알려져 있으며 지리 정보 시스템(GIS) 도메인의 확장인 Geopandas는 지리 공간 데이터 처리를 위한 편리한 도구를 제공합니다. 이 기사에서는 지리 데이터 시각화를 위해 Python 및 Geopandas를 사용하는 방법을 소개하고 실용적인 코드 예제를 제공합니다.

1. 준비

시작하기 전에 Python과 Geopandas 라이브러리가 설치되어 있는지 확인하세요. Geopandas는 pip를 사용하여 설치할 수 있습니다.

pip 설치 geopandas

2. 지리 데이터 로드

먼저 지리 데이터를 로드해야 합니다. Geopandas는 Shapefile, GeoJSON, Geopackage 등을 포함한 다양한 지리 데이터 형식을 지원합니다. 이 예에서는 Shapefile 형식의 지도 데이터를 사용합니다.

geopanda를 gpd로 가져오기

# Shapefile 형식으로 지도 데이터를 읽습니다.
세계 = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))

3. 데이터 탐색 및 처리

데이터를 로드한 후 데이터의 처음 몇 행, 데이터 유형 등을 보는 등 몇 가지 기본적인 탐색 및 처리를 수행할 수 있습니다.

# 데이터의 처음 몇 행을 봅니다.
인쇄(world.head())

# 데이터의 열 이름을 봅니다.
인쇄(world.columns)

# 데이터의 기하학 유형을 확인하십시오
인쇄(world.geom_type)

4. 지리 데이터 시각화

다음으로 Matplotlib 라이브러리를 사용하여 지리 데이터를 시각화해 보겠습니다.

matplotlib.pyplot을 plt로 가져오기

# 지도 그리기
세계.플롯()
plt.show()

5. 지도 스타일 맞춤설정

색상 변경, 라벨 추가 등 지도 스타일을 맞춤설정할 수도 있습니다.

# 맞춤 지도 스타일
world.plot(color='lightblue', edgecolor='black')
plt.title('세계지도')
plt.xlabel('경도')
plt.ylabel('위도')
plt.show()

6. 데이터 추가

지도를 그리는 것 외에도 지도에 다른 데이터를 추가하여 더 많은 정보를 제공할 수도 있습니다.

#다른 데이터 추가
도시 = gpd.read_file(gpd.datasets.get_path('naturalearth_cities'))
세계.플롯()
도시.플롯(marker='o', color='red', markersize=5)
plt.show()

7. 공간 분석 및 쿼리

Geopandas는 지리적 데이터의 시각화뿐만 아니라 공간 분석 및 쿼리에도 사용할 수 있습니다. 예를 들어 공간 쿼리를 사용하여 특정 위치 근처의 다른 장소를 찾을 수 있습니다.

Shapely.geometry 가져오기 포인트에서

#특정 위치의 위도와 경도를 나타내는 포인트 객체를 생성합니다.
포인트 = 포인트(-74.006, 40.7128)

# 지점에 가장 가까운 도시를 찾기 위한 공간 쿼리
Nearest_city = 도시[cities.distance(point).idxmin()]
print("가장 가까운 도시는 다음과 같습니다:", Nearest_city['name'])

8. 지도 오버레이 및 그룹화

지도 시각화에서는 때로는 서로 다른 지리적 데이터를 중첩하여 특정 조건에 따라 그룹으로 표시해야 할 때가 있습니다.

#대륙별그룹
world_grouped = world.groupby('continent').agg({'geometry': 'union'})
world_grouped.plot()
plt.title('대륙별로 분류된 세계지도')
plt.xlabel('경도')
plt.ylabel('위도')
plt.show()

9. 더욱 복잡한 지리 데이터 작업

위의 기본 작업 외에도 Geopandas는 공간 버퍼, 공간 오버레이, 지리적 위상 관계 분석 등과 같은 보다 복잡한 지리 데이터 작업도 지원합니다.

# 공간 버퍼 예시
buffered_area = world.geometry.buffer(5)
buffered_area.plot()
plt.title('버퍼가 있는 세계 지도')
plt.xlabel('경도')
plt.ylabel('위도')
plt.show()

13. 대화형 지리 데이터 시각화

정적 지리 데이터 시각화 외에도 대화형 도구를 사용하여 지리 데이터를 탐색하고 표시할 수도 있습니다. Bokeh와 Folium은 대화형 지리 데이터 시각화를 가능하게 하는 두 가지 일반적으로 사용되는 Python 라이브러리입니다.

수입 잎

#지도 객체 생성
m = folium.Map(location=[40.7128, -74.006], Zoom_start=10)

#도시 태그 추가
idx의 경우 city.iterrows()의 행:
    folium.Marker([row['latitude'], row['longitude']], popup=row['name']).add_to(m)

# 지도 표시

14. 다층 오버레이 및 제어

대화형 지도에서는 ​​여러 레이어를 추가하고 컨트롤을 제공하여 디스플레이를 사용자 정의할 수 있습니다.

#지도 객체 생성
m = folium.Map(location=[40.7128, -74.006], Zoom_start=10)

#세계지도 레이어 추가
folium.GeoJson(world).add_to(m)

#도시 레이어 추가
city_layer = folium.FeatureGroup(name='도시')
idx의 경우 city.iterrows()의 행:
    folium.Marker([row['latitude'], row['longitude']], popup=row['name']).add_to(city_layer)
city_layer.add_to(m)

#레이어 컨트롤 추가
folium.LayerControl().add_to(m)

# 지도 표시

15. 데이터 통합 ​​및 시각화 애플리케이션

지리적 데이터 시각화를 다른 데이터와 통합함으로써 더욱 풍부한 애플리케이션 시나리오를 달성할 수 있습니다. 예를 들어, 인구 데이터, 경제 지표 및 기타 정보를 결합하여 보다 심층적인 지리 데이터 분석 및 시각적 표시를 수행합니다.

# 인구 데이터 읽기
인구_데이터 = pd.read_csv("population.csv")

# 도시 이름을 기준으로 인구 데이터와 도시 데이터를 병합합니다.
city_with_population = pd.merge(도시, 인구_데이터, 방법='왼쪽', on='이름')

# 지도에 도시를 그리고 인구에 따라 마커 크기를 조정합니다.
m = folium.Map(location=[40.7128, -74.006], Zoom_start=4)
idx의 경우 city_with_population.iterrows()의 행:
    folium.CircleMarker(location=[row['latitude'], row['longitude']], radius=row['population'] / 100000,
                        fill_color='blue', fill_opacity=0.6).add_to(m)

16. 지리정보 분석 및 시각화 사례

사례를 통해 지리 데이터 분석 및 시각화를 위해 Python 및 Geopandas를 사용하는 방법을 보여드리겠습니다. 세계 여러 나라의 GDP와 인구에 대한 데이터 세트가 있다고 가정해 보겠습니다. 각 국가의 경제 및 인구통계학적 상황을 분석하고 그 결과를 시각화하려고 합니다.

# GDP 및 인구 데이터 읽기
gdp_data = pd.read_csv("gdp_data.csv")
인구_데이터 = pd.read_csv("population_data.csv")

# 데이터를 DataFrame으로 결합
world_data = pd.merge(세계, gdp_data, How='left', left_on='이름', right_on='국가 이름')
world_data = pd.merge(world_data, 인구_데이터, How='left', left_on='이름', right_on='국가 이름')

# 1인당 GDP를 계산합니다
world_data['1인당 GDP'] = world_data['GDP (현재 미국 달러)'] / world_data['인구']

# 1인당 GDP 지도를 그려보세요
무화과, 도끼 = plt.subplots(1, 1, figsize=(10, 6))
world_data.plot(column='1인당 GDP', cmap='OrRd', linewidth=0.8, ax=ax, edgecolor='0.8', legend=True)
ax.set_title('세계 1인당 GDP')
plt.show()

17. 분석 결과

위의 코드를 통해 우리는 전 세계 국가의 1인당 GDP 지도를 얻을 수 있으며, 이를 통해 국가 간 경제 발전 수준의 차이를 확인할 수 있습니다. 다음으로, 인구밀도, 지역발전 불균형 등의 문제를 더욱 심층적으로 분석하고 이에 상응하는 정책제언을 제시할 수 있습니다.

# 인구 밀도 계산
world_data['인구 밀도'] = world_data['인구'] / world_data.geometry.area

# 인구밀도 지도 그리기
무화과, 도끼 = plt.subplots(1, 1, figsize=(10, 6))
world_data.plot(column='인구 밀도', cmap='Blues', linewidth=0.8, ax=ax, edgecolor='0.8', legend=True)
ax.set_title('세계 인구 밀도')
plt.show()

18. 결론 및 전망

이 글의 소개와 사례 시연을 통해 우리는 Python과 Geopandas를 사용하여 지리 데이터를 분석하고 시각화하는 방법을 배웠습니다. 지리 데이터 분석 및 시각화는 지구의 공간적 분포와 특성을 더 깊이 이해하는 데 도움이 되며, 이를 통해 의사 결정에 더 강력한 지원을 제공합니다.

미래에는 데이터 수집 및 처리 기술이 지속적으로 발전함에 따라 지리 데이터 분석 및 시각화가 점점 더 중요한 역할을 담당하게 되어 인류 사회의 지속 가능한 발전과 환경 보호를 위해 더욱 유용한 정보와 통찰력을 제공할 것입니다.

이 글을 읽어주셔서 감사합니다. 이 글이 여러분에게 영감을 주고 도움이 되기를 바랍니다!

요약하다

이 기사에서는 지리 데이터 시각화 및 분석을 위해 Python 및 Geopandas를 사용하는 방법을 심층적으로 살펴보고 풍부한 코드 예제와 사례 데모를 제공합니다. 다음은 이 글의 주요 요약입니다.

  1. 준비 : 시작하기 전에 Python 및 Geopandas 라이브러리가 설치되어 있는지 확인해야 합니다. pip를 사용하여 Geopandas를 설치할 수 있습니다.

  2. 지리 데이터 로드 : Geopandas는 Shapefile, GeoJSON, Geopackage 등을 포함한 다양한 지리 데이터 형식을 지원합니다. gpd.read_file()함수를 사용하여 데이터를 로드할 수 있습니다.

  3. 데이터 탐색 및 처리 : 데이터를 로드한 후 데이터의 처음 몇 행, 열 이름, 데이터 유형 등을 보는 등 몇 가지 기본적인 탐색 및 처리를 수행할 수 있습니다.

  4. 지리 데이터 시각화 : Matplotlib 라이브러리를 사용하여 지리 데이터를 시각화하고 스타일을 조정하고 레이블을 추가하여 지도를 사용자 정의합니다.

  5. 공간 분석 및 쿼리 : Geopandas는 공간 쿼리, 공간 버퍼 및 기타 작업과 같은 공간 분석 및 쿼리를 지원합니다.

  6. 데이터 저장 및 내보내기 : Geopandas를 사용하여 지리 데이터를 Shapefile, GeoJSON 및 기타 형식의 파일로 저장할 수 있습니다.

  7. 데이터 투영 및 좌표 변환 : Geopandas는 데이터 투영 및 좌표 변환을 지원하며 지도를 다양한 투영 방법으로 투영할 수 있습니다.

  8. 대화형 지리 데이터 시각화 : Bokeh 및 Folium과 같은 라이브러리를 통해 대화형 지리 데이터 시각화를 실현하여 데이터 탐색 및 표시의 상호 작용을 향상시킬 수 있습니다.

  9. 지리 데이터 분석 및 시각화 사례 : 사례 시연을 통해 Python과 Geopandas를 활용하여 세계 각국의 경제 및 인구통계학적 상황을 분석하고 그 결과를 시각화하는 방법을 보여준다.

  10. 결론 및 전망 : 지리학적 데이터 분석과 시각화는 기술의 발전과 함께 우리에게 더욱 유용한 정보와 통찰력을 제공할 것으로 예상된다.

이 기사를 연구함으로써 독자는 Python 및 Geopandas를 사용하여 지리 데이터를 처리하고 시각화하는 기본 방법을 익힐 수 있으며 실제 응용 프로그램에 대한 지원 및 지침을 제공할 수 있습니다.

 

화웨이 클라우드의 신기술에 대해 빨리 알아보고 팔로우하려면 클릭하세요~

알려지지 않은 오픈 소스 프로젝트가 얼마나 많은 수익을 가져올 수 있습니까? Microsoft의 중국 AI 팀은 수백 명의 사람들을 모아 미국으로갔습니다. Huawei는 Yu Chengdong의 직업 변경이 15년 동안 "FFmpeg Pillar of Shame"에 못 박혔다 고 공식 발표했습니다. 이전에는 그랬지만 오늘은 우리에게 감사해야 합니다.— Tencent QQ Video가 과거의 굴욕을 복수한다고요? Huazhong University of Science and Technology의 오픈 소스 미러 사이트가 외부 액세스 보고를 위해 공식적으로 공개되었습니다 . Django는 여전히 74%의 개발자가 선택한 제품입니다. Zed 편집자는 유명한 오픈 소스 회사의 전직 직원이었습니다 . 소식을 전했습니다: 기술 리더는 부하 직원의 도전을 받은 후 격노하고 무례하게 행동하여 해고되었으며 임신했습니다. 여직원 Alibaba Cloud가 공식적으로 Tongyi Qianwen 2.5를 출시했습니다. Microsoft는 Rust Foundation에 100만 달러를 기부했습니다.
{{o.이름}}
{{이름}}

추천

출처my.oschina.net/u/4526289/blog/11121311