티스토리 뷰
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
반응형
'프로그래밍 > Python' 카테고리의 다른 글
[크롤링] 기준 날짜 전 또는 후(월/일) 날짜까지 크롤링하기 (0) | 2022.01.25 |
---|---|
[크롤링] Selenium 으로 네이버 로그인 하기 + 캡챠 우회 (17) | 2022.01.06 |
[Django] URL 분리하기(urls.py) (0) | 2021.12.23 |
[Django] 장고 앱 생성하기 (0) | 2021.12.22 |
[Django] 장고 프로젝트 생성하기 (0) | 2021.12.21 |
댓글