공간데이터 (1)

커넥트·2023년 8월 21일
0

지리좌표체계

(GCS: Geographic Coordinate System)

지구상의 한 점의 위치는 좌표로 나타낼 수 있는데, 가장 보편적으로 사용하고 있는 좌표 체계
즉, 지구상의 어떤 물체의 절대적 위치를 나타내는 좌표체계
지구 타원체를 '동→서 방향의 위도선'과 '남→북 방향의 경도선'을 종횡으로 일정한 간격을 두고, '도, 분, 초'로 표시한다.

지리 좌표계 종류

  • WGS84
    지구 중심에 회전 타원체의 중심을 위치시키는 방식
    경도, 위도를 갖고 있는 데이터라면 대부분 WGS84 좌표계

  • Bessel
    지구 중심이 아닌 다른 곳에 회전 타원체를 위치시키는 방식
    우리나라에서는 기관에 따라 WGS84, Bessel을 모두 사용

평면 지각 좌표체계

3차원 지리 좌표 체계를 2차원에서 이용하려면 투영법(Projection) 이 필요하다. 투영법은 3차원의 지구를 2차원 평면으로 옮기는 방법이다.

우리나라의 경우 TM(Transvers Mercator) 투영법을 사용한다. TM 투영법은 가로로 눕힌 원통에 지구를 투영하는 방법으로 남/북 방향의 왜곡이 적어 우리나라와 같은 남/북으로 긴 형태에 적용하기 적합한 투영법이다.

3차원 지리좌표를 2차원으로 변환하기 위한 parameter

  • 데이텀(Datum)
    측정의 기준이 되는 선과 점이며, 측지계라고도 한다. 타원체의 종류, 좌표체계의 기준점과 방향 등을 정의

  • 투영법(Projection)

  • 중앙 경선(Centeral Meridian) / 중앙 위선(Latitude of Origin)
    평면 직각 좌표체계의 원점을 의미

  • False Northing / False Easting
    지리 좌표계값을 평면 직각 좌표계로 바꿔줄 때 위치에 따라 좌표값에 일정한 값을 더하거나 빼주어야 하는데, 이때 사용되는 값 (음수도 가능)

  • 단위(Unit)
    Meter

  • 선 증대율(Scale Factor)
    타원체 상의 거리와 지도상의 거리의 비율을 의미

.

평면 직각 좌표 체계의 종류

  • TM(Transverse Mercator)
    지구를 평면에 투영하기 위해 원통을 적도와 접하는 대신, 90도 회전 시켜 원통 면이 지구 타원체의 임의의 자오선과 접하도록 하여 투영하는 방법

  • UTM
    각 지점의 위치를 위도와 경도가 아닌 구역(zone) 의 고유번호 숫자와 가상의 기준점에서 북(North)/동(East)으로 떨어진 거리를 'Meter'로 나타내는 방법.

EPSG 코드체계

전세계의 좌표계를 표준화된 코드로 정의

종류

  • GCS(지리좌표체계)
    WGS84 = EPSG4326

  • PCS(평면 직각 좌표계)
    UTM-K = EPSG5179

공간데이터 유형

  • 벡터
    점(point) : x,y 좌표에 의해 위치가 정해지는 객체
    선(line) : 두개 이상의 point와 선분으로 구성
    면(Polygon) : 면적, 둘레, 모양의 정보

  • 레스터
    픽셀 단위의 색 또는 색조 값을 가지고 있는 데이터 형태

데이터 가져오기

공간정보는 각종 공공데이터포털을 통해 파일 다운로드나 Open API 형태로 활용 가능하다. Open API(Open Application Programming Interface, 오픈 API)란 누구나 사용할 수 있도록 공개된 API를 뜻하며, 여기서 API는 개발자가 응용프로그램을 개발하는데 쓰이는 인터페이스를 말한다.

Open API 형태의 공간정보는 Open API 호출 URL과 인증키를 입력하면, 원하는 데이터를 XML(eXtensible Markup Language) 또는 JSON(JavaScript Object Notation)과 같은 형태로 제공받아 활용할 수 있다.

import pandas as pd
import request          # 통신 라이브러리
def function_name(parameter1):
    request_get = requests.get(
        url="_somthing_",
        params={
            "serviceKey": parameter1
        }
    )

    request_df = pd.DataFrame(request_get.json()["가져올 데이터"])
  
    return request_df
serviceKey = ""

# api
# id와 key를 발급받아 토큰을 가져온 후에 데이터를 가지고 온다
import requests
# sgis
def get_access_token(consumer_key, consumer_secret):
    temp_res = requests.get(
        url="https://sgisapi.kostat.go.kr/OpenAPI3/auth/authentication.json",
        params={
            "consumer_key": consumer_key,
            "consumer_secret": consumer_secret
        }
    )

    access_token = temp_res.json()["result"]["accessToken"]
  
    return access_token

consumer_key = ""
consumer_secret = ""

# 토큰으로 json데이터 받기
def get_vaccination_center(serviceKey):
    temp_res = requests.get(
        url="",
        params={
            "serviceKey": serviceKey
        }
    )

    temp_df = pd.DataFrame(temp_res.json()["data"])
  
    return temp_df

Geopandas

파이썬에서 지리정보 데이터 처리의 기하하적 연산과 시각화 등을 돕는 패키지, GeoPandas의 자료형은 GeoSeries와 GeoDataFrame이 있다.
두 객체의 plot()을 사용하면 Geometry 데이터를 쉽게 시각화할 수 있다. Geometry 데이터는 지리정보를 표현하는 다각형, 선, 점을 의미하는데, 각각 'Polygon, LineString, Point'으로 정의되어 있다.

profile
안농하데욤

0개의 댓글