티스토리 뷰

728x90
반응형

 

 

geojson 파일안에 아래와 같은 폴리곤 바운더리 데이터가 있습니다.

특정 좌표가 이 바운더리 안에 해당되는지 알아보는 방법입니다 !! 

polyList = [(126.991058, 37.57415), (126.990971, 37.574445), (126.99068, 37.574386), (126.990017, 37.574284), (126.989087, 37.574182), (126.98771, 37.57354), (126.987727, 37.573512), (126.987871, 37.573566), (126.987967, 37.573386), (126.988527, 37.572729), (126.988513, 37.572651), (126.988499, 37.57257), (126.98849, 37.572519), (126.988174, 37.572555), (126.987989, 37.572462), (126.987901, 37.571964), (126.98773, 37.57198), (126.987616, 37.571452), (126.987648, 37.570731), (126.987675, 37.570187), (126.987725, 37.570188), (126.988518, 37.570237), (126.98877, 37.570252), (126.989436, 37.570293), (126.992129, 37.570456), (126.992084, 37.570821), (126.99154, 37.572586), (126.991237, 37.573562), (126.991058, 37.57415)]

 

우선 shapely 라이브러리를 설치하고 임포트 해주세요

import pandas as pd
from shapely.geometry import Point
from shapely.geometry.polygon import Polygon

 

Polygon으로 좌표바운더리들을 출력해보면

아래 구역처럼 바운더리를 시각화하여 볼 수 있습니다.

 

 

그리고 아래는 바운더리 구역 안에 들어가는지 알고싶은 좌표들입니다

여러 좌표들을 확인해보기 위해 pandas 를 이용하였어요.

file = pd.DataFrame([
    {'x': 126.766388, 'y': 37.555132},
    {'x': 126.772685, 'y': 37.550692},
    {'x': 126.780620, 'y': 37.549874},
    {'x': 126.781810, 'y': 37.546282},
    {'x': 126.990981, 'y': 37.574332}
])

 

polygon.contains 함수를 사용해서

한 행마다 x, y 좌표가 폴리곤 바운더리 안에 들어가는지 확인합니다.

 이 함수는 바운더리 안에 들어가면 True, 들어가지 않으면 False 값을 반환해줍니다.

x, y 좌표 컬럼을 넣고 True, False 값을 판다스 file의 inside 컬럼에 넣어주었어요.

 

file['inside'] = file.apply(lambda x: polygon.contains(Point(x['x'], x['y'])), axis=1)

 

file을 출력해보면

좌표들이 바운더리에 들어가는지 아닌지 확인할 수 있습니다!!

 

728x90
반응형
댓글