728x90
반응형
오늘은 Leaflet 지도 라이브러리와 Turf.js를 사용하여 폴리곤 간의 차집합(Difference)을 구현하는 방법을 알아보겠습니다.
1. 기본 지도 설정
먼저 호주 중심부를 보여주는 지도를 초기화합니다:
var map = L.map("map").setView([-26, 128], 5);
L.tileLayer('https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', {
attribution: '© Carto Maps contributors'
}).addTo(map);
여기서 지도의 중심점을 남위 26도, 동경 128도로 설정하고 줌 레벨은 5로 지정했습니다. 베이스맵으로는 Carto의 라이트 스타일을 사용했습니다.
2. 폴리곤 정의
세 개의 폴리곤을 정의합니다:
- polygon1: 기준이 되는 메인 폴리곤
- polygon2: 차집합에서 제외할 첫 번째 폴리곤
- polygon3: 차집합에서 제외할 두 번째 폴리곤
각 폴리곤은 좌표 배열로 정의되며, fill과 fill-opacity 속성을 가집니다.
3. 차집합 연산
Turf.js의 difference 함수를 사용하여 폴리곤들의 차집합을 계산합니다:
var difference = turf.difference(turf.featureCollection([polygon1, polygon2, polygon3]));
4. 결과 시각화
마지막으로 모든 폴리곤을 지도에 표시합니다:
L.geoJson(polygon1, {fillColor: '#ff0'}).addTo(map); // 노란색
L.geoJson(polygon3, {fillColor: '#0f0'}).addTo(map); // 초록색
L.geoJson(polygon2, {fillColor: '#00f'}).addTo(map); // 파란색
L.geoJson(difference, {fillColor: '#f00'}).addTo(map); // 빨간색
각 폴리곤은 서로 다른 색상으로 표시되어 차집합의 결과를 시각적으로 확인할 수 있습니다.
마치며
이 예제를 통해 Leaflet과 Turf.js를 사용하여 지도 상에서 폴리곤 간의 차집합을 구현하는 방법을 살펴보았습니다. 이러한 기능은 지리적 영역 분석이나 공간 데이터 처리가 필요한 웹 매핑 애플리케이션에서 유용하게 활용될 수 있습니다.
전체 소스는 아래 파일을 참고하세요.
728x90
반응형
'코딩 강좌 > 웹 지도 만들기' 카테고리의 다른 글
폴리곤 내부 일정간격 안에 또 다른 폴리곤 만들기 (2) | 2024.11.13 |
---|---|
Leaflet과 Turf.js를 활용한 다각형 버퍼 및 등간격 포인트 생성하기 (1) | 2024.11.07 |
지도 위에 경로를 그리고 회전시키는 웹 앱 만들기 (0) | 2024.11.05 |
다각형 외부의 점에서 가장 가까운 점 다각형 내 위치 찾기 (1) | 2024.11.04 |
leaflet - #11 통계지도 만들기 3편 (0) | 2022.02.02 |