Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 pygmaps 패키지로 구글 지도에 데이터 시각화하기

파이썬 pygmaps 라이브러리는 구글 맵스 자바스크립트 API(Google Maps JavaScript API)를 감싸는 래퍼(wrapper) 역할을 합니다. 이 라이브러리를 활용하면 matplotlib와 비슷한 인터페이스로 HTML과 자바스크립트 코드를 손쉽게 생성할 수 있고, 구글 지도 위에 사용자가 원하는 다양한 정보를 시각화하여 표시할 수 있습니다.

필수 라이브러리 설치

이 예제에서는 pygmaps 라이브러리만 사용합니다. pip 명령어로 간단히 설치할 수 있습니다.

$pip install pygmaps (윈도우 OS)
$sudo pip3 install pygmaps (리눅스 OS)

구현할 주요 기능

이번에 작성할 프로그램은 다음 기능들을 하나의 지도에 담아 보여줍니다.

  • 위도(latitude), 경도(longitude), 줌 레벨(zoom level)을 지정하여 지도 생성하기

  • 그리드의 시작·종료 위경도 좌표와 그리드 크기를 지정하여 지도에 격자(grid) 설정하기

  • 지도에 포인트(point)를 추가하고 색상을 지정하여 표시하기

  • 미터 단위의 반지름을 지정하여 특정 지점 주변에 원(circle) 그리기

  • 위경도 좌표 목록을 전달하여 지도 위에 경로(path) 그리기

전체 구현 코드

아래 코드는 pygmaps의 핵심 함수들을 활용해 다양한 기능을 구현한 예제입니다.

import pygmaps
#========================================================================================
# 생성자: pygmaps.maps(latitude, longitude, zoom)
# DESC : 중심점의 위도와 경도, 지도 줌 레벨 "15"로 지도를 초기화합니다.
# PARAMETER1: latitude (float) - 지도 중심점의 위도
# PARAMETER2: longitude (float) - 지도 중심점의 경도
# PARAMETER3: zoom (int) - 지도 줌 레벨 (0~20)
# RETURN: pygmaps 인스턴스
#========================================================================================
mymap = pygmaps.pygmaps(17.45,78.29, 15)

#========================================================================================
# 함수: setgrids(start-Lat, end-Lat, Lat-interval, start-Lng, end-Lng, Lng-interval)
# DESC : 지도에 그리드(격자)를 설정합니다.
# PARAMETER1: start-Lat (float) - 그리드의 최소 위도
# PARAMETER2: end-Lat (float) - 그리드의 최대 위도
# PARAMETER3: Lat-interval (float) - 위도 방향 그리드 크기
# PARAMETER4: start-Lng (float) - 그리드의 최소 경도
# PARAMETER5: end-Lng (float) - 그리드의 최대 경도
# PARAMETER6: Lng-interval (float) - 경도 방향 그리드 크기#========================================================================================
mymap.setgrids(17.45, 17.46, 0.001, 78.29,78.30, 0.001)

#========================================================================================
# 함수: addpoint(latitude, longitude, [color])
# DESC : 지도에 포인트를 추가하고 표시합니다. color는 선택 사항이며 기본값은 빨간색입니다.
# PARAMETER1: latitude (float) - 포인트의 위도
# PARAMETER2: longitude (float) - 포인트의 경도
# PARAMETER3: color (string) - 지도에 표시될 포인트 색상 (HTML 색상 코드 사용)
# HTML COLOR CODE: https://www.computerhope.com/htmcolor.htm
# 예: 빨강 "#FF0000", 파랑 "#0000FF", 초록 "#00FF00"
# RETURN: 없음
#========================================================================================
mymap.addpoint(17.45,78.29, "#FF0000","Hello")

#========================================================================================
# 함수: addradpoint(latitude, longitude, radius, [color])
# DESC : 반지름(미터)을 가진 포인트를 추가합니다. - 원(Circle) 그리기
# PARAMETER1: latitude (float) - 포인트의 위도
# PARAMETER2: longitude (float) - 포인트의 경도
# PARAMETER3: radius (float) - 반지름 (미터 단위)
# PARAMETER4: color (string) - 지도에 표시될 포인트 색상 (HTML 색상 코드 사용)
# RETURN: 없음
#========================================================================================
mymap.addradpoint(17.45,78.29, 150, "#0000FF")

#========================================================================================
# 함수: addpath(path,[color])
# DESC : 지도에 경로를 추가합니다. 경로의 자료 구조는 좌표 포인트의 리스트입니다.
# PARAMETER1: path (좌표 리스트) 예: [(lat1,lng1),(lat2,lng2),...]
# PARAMETER2: color (string) - 지도에 표시될 경로 색상 (HTML 색상 코드 사용)
# RETURN: 없음
#========================================================================================
path = [(17.45,78.29),
(17.55, 78.39),
(17.65,78.49),
]
mymap.addpath(path,"#00FF00")

#========================================================================================
# 함수: draw(file)
# DESC : HTML 지도 파일(.html)을 생성합니다.
# PARAMETER1: file (string) - 저장할 지도의 경로와 파일명
# RETURN: 없음, 지정한 디렉터리에 HTML 파일 생성
#========================================================================================
mymap.draw('./mymap.html')

print('OK')

주의 사항: TypeError 발생 시 해결 방법

코드를 실행하는 과정에서 mymap.addpoint 함수 호출 시 다음과 같은 오류가 발생할 수 있습니다.

TypeError: addpoint() takes from 3 to 4 positional arguments but 5 were given

이 오류를 피하려면 pygmaps.py 패키지 내부의 addpoint 함수에 title 인자를 직접 추가해 주면 됩니다. 이렇게 수정하면 포인트에 제목을 함께 표시하면서 오류 없이 정상적으로 동작합니다.

실행 결과

파이썬 pygmaps 패키지로 구글 지도에 데이터 시각화하기

위 결과 이미지에서 확인할 수 있듯이, 단일 지도 안에서 그리드, 포인트, 반경 원, 경로 등 여러 기능을 동시에 시각화할 수 있습니다. pygmaps를 활용하면 위치 데이터를 간편하게 구글 지도에 표현할 수 있어 GPS 로그 분석이나 위치 기반 데이터 시각화에 유용하게 사용됩니다.