GeoJSON 표준 완벽 가이드: 지리 공간 데이터를 위한 RFC 7946 이해하기
웹 매핑 및 지리 정보 시스템(GIS)의 세계에서 GeoJSON은 공간 데이터를 공유하기 위한 보편적인 언어가 되었습니다. Leaflet, Mapbox, Google Maps 중 무엇을 사용하든 공식 GeoJSON 표준인 RFC 7946을 접하게 될 것입니다.
RFC 7946 (GeoJSON)이란 무엇인가요?
2016년에 발표된 RFC 7946은 GeoJSON 형식을 공식화했습니다. 이는 JSON(JavaScript Object Notation)을 기반으로 한 지리 공간 데이터 교환 형식입니다. 기하 구조(Geometry), 지물(Features), 지물 컬렉션을 표현할 수 있습니다.
GeoJSON은 다음과 같은 기하 구조 유형을 지원합니다.
- Point (점): 단일 위치 (경도, 위도).
- LineString (선): 연결된 점들의 연속.
- Polygon (면): 닫힌 영역 (시작점과 끝점이 동일).
- MultiPoint, MultiLineString, MultiPolygon: 위 유형들의 집합.
- GeometryCollection: 다양한 기하 구조 유형의 혼합.
GeoJSON의 핵심 원칙
1. 좌표계
RFC 7946은 WGS 84 (World Geodetic System 1984) 데이터 사용을 엄격히 규정합니다. 좌표는 항상 [경도, 위도] 순서로 정렬됩니다. 주의: 많은 개발자가 [위도, 경도]를 사용하는 실수를 범하며, 이 경우 데이터가 지구상의 잘못된 위치에 표시됩니다!
2. 지물(Feature) 객체
GeoJSON Feature 객체는 기하 구조와 추가 메타데이터(속성)를 포함합니다.
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [102.0, 0.5]
},
"properties": {
"name": "Dinagat Islands"
}
}
3. 지물 컬렉션 (FeatureCollection)
대부분의 GeoJSON 파일은 FeatureCollection 객체이며, 여러 지물을 단일 파일로 묶을 수 있습니다.
실제 응용 시나리오
웹 매핑
GeoJSON은 대부분의 현대적인 웹 매핑 라이브러리를 위한 기본 형식입니다. AJAX를 통해 쉽게 로드할 수 있으며 properties 객체를 기반으로 스타일을 동적으로 지정할 수 있습니다.
데이터베이스 저장
PostGIS가 포함된 PostgreSQL 및 MongoDB와 같은 현대적인 데이터베이스는 GeoJSON을 기본적으로 지원하여 공간 쿼리(예: "이 위치에서 5km 이내의 모든 점 찾기")를 수행할 수 있습니다.
데이터 시각화
D3.js와 같은 도구는 GeoJSON 데이터를 가져와 대화형 SVG 지도로 렌더링할 수 있어 대시보드 및 인포그래픽에 적합합니다.
GeoJSON vs. KML vs. Shapefile
| 특징 | GeoJSON | KML | Shapefile |
|---|---|---|---|
| 형식 | JSON | XML | 바이너리 (여러 파일) |
| 웹 친화성 | 매우 우수 | 보통 | 낮음 |
| 스타일 지정 | 속성을 통해 | 내장 (XML) | 별도 파일 (.qml/.sld) |
| 가독성 | 예 | 예 | 아니요 |
자주 묻는 질문 FAQ
Q: 왜 [위도, 경도]가 아니라 [경도, 위도]인가요?
A: RFC 7946은 경도가 X축에 해당하고 위도가 Y축에 해당하는 표준 데카르트 좌표계 [x, y]를 따르기 때문입니다.
Q: 다른 좌표계(CRS)를 사용할 수 있나요?
A: 이전 버전의 GeoJSON에서는 사용자 정의 CRS가 허용되었지만, RFC 7946에서는 WGS 84를 엄격히 요구합니다. 데이터가 다른 시스템(예: UTM)에 있는 경우 GeoJSON으로 공유하기 전에 WGS 84로 투영 변환해야 합니다.
Q: 대규모 데이터셋은 어떻게 처리하나요?
A: 매우 큰 공간 데이터셋의 경우 GeoJSON 로드가 느려질 수 있습니다. 위상(Topology)을 공유하여 파일 크기를 줄이는 TopoJSON이나 운영 수준의 매핑을 위한 벡터 타일(Vector Tiles) 사용을 고려해 보세요.
관련 도구
- JSON 포맷터 - GeoJSON 구조를 검증하고 정리하는 데 필수적입니다.
- URL 인코더/디코더 - GeoJSON 데이터를 URL 파라미터로 전달할 때 유용합니다.
- UUID 생성기 - GeoJSON 지물에 대한 고유 ID를 생성하는 데 자주 사용됩니다.