GeoJSON
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
GeoJSON은 지리 데이터를 인코딩하기 위한 JSON(JavaScript Object Notation) 기반의 개방형 표준 형식이다. 2008년에 사양이 확정되었으며, 점, 선, 폴리곤과 같은 다양한 지오메트리 타입을 지원한다. GeoJSON은 웹 매핑 및 GIS 소프트웨어에서 널리 사용되며, TopoJSON과 같은 확장 형식을 통해 위상 정보도 표현할 수 있다.
더 읽어볼만한 페이지
- JSON - JSON 웹 토큰
JSON 웹 토큰(JWT)은 헤더, 페이로드, 서명으로 구성되어 정보를 안전하게 전송하는 개방형 표준으로, 사용자 인증 및 권한 부여에 주로 사용되지만 알고리즘 관련 취약점, 키 관리, 토큰 무효화 등의 문제점도 존재한다. - JSON - JSON-LD
JSON-LD는 JSON 데이터를 RDF 모델로 표현하는 직렬화 방법으로, 컨텍스트를 활용해 JSON 속성을 온톨로지 개념에 연결하며 SEO, 의료 정보학, IoT 등 다양한 분야에서 활용되고 Schema.org, 구글 지식 그래프 등에서 중요한 역할을 한다. - 지리 정보 시스템 - 웨이즈
웨이즈는 사용자 참여형 실시간 교통 정보 기반 내비게이션 앱으로, 정확한 길 안내와 다양한 기능으로 인기를 얻었지만, 정보 공유 논란, 개인 정보 문제, 보안 취약성 및 국가 안보 우려 등의 비판도 존재한다. - 지리 정보 시스템 - 오픈스트리트맵
오픈스트리트맵(OSM)은 전 세계 사용자들이 참여하여 자유롭게 이용할 수 있도록 만들어진 크라우드소싱 기반의 세계 지도로, 오픈 데이터베이스 라이선스(ODbL)에 따라 배포되며 다양한 분야에서 활용되고 지속적으로 발전하고 있다. - 자유 소프트웨어 - 김프
김프(GIMP)는 GNU 프로젝트에서 개발된 크로스 플랫폼 기반의 무료 오픈소스 래스터 그래픽 편집기로, 다양한 운영체제를 지원하며 풍부한 기능을 제공하지만 사용자 인터페이스에 대한 비판과 일부 기능의 부족함에 대한 평가도 존재한다. - 자유 소프트웨어 - PHP
PHP는 라스무스 러도프가 개발한 범용 스크립팅 언어로, 웹 개발에 널리 사용되며 LAMP 아키텍처의 핵심 요소이다.
| GeoJSON - [IT 관련 정보]에 관한 문서 | |
|---|---|
| GeoJSON | |
| 유형 | GIS 파일 형식 |
| 확장자 | .json, .geojson |
| MIME 유형 | application/geo+json |
| 기반 언어 | JSON |
| 웹사이트 | GeoJSON 공식 웹사이트 |
2. 역사
GeoJSON 형식에 대한 워킹 그룹 구성과 논의는 2007년 3월에 시작되었으며, 형식 사양은 2008년 6월에 최종 확정되었다.[37][4][16]
GeoJSON은 JSON 형식을 기반으로 지리 공간 데이터를 표현하는 표준 형식이다. JSON을 기반으로 하므로 사람이 읽고 쓰기 쉬우며(가독성), 다양한 프로그래밍 언어에서 별도의 파싱 라이브러리 없이 쉽게 처리할 수 있다는 장점이 있다.
2015년 4월 인터넷 엔지니어링 태스크 포스 (IETF)는 '지리적 JSON 워킹 그룹'을 설립했고[5][17], 이 그룹은 2016년 8월에 GeoJSON을 RFC 7946으로 발표했다.[38]
3. 특징
GeoJSON은 점, 선, 다각형과 같은 기본적인 지오메트리 객체부터 여러 객체를 묶은 복합 객체(MultiPoint, MultiLineString, MultiPolygon) 및 서로 다른 종류의 지오메트리를 포함하는 GeometryCollection까지 다양한 형태의 공간 데이터를 표현할 수 있다. 이러한 다양한 지오메트리 타입 지원은 복잡한 지리 정보를 효과적으로 나타내는 데 도움을 준다.
각 지리 객체는 'properties' 속성을 통해 속성 정보(예: 장소 이름, 주소, 측정값 등)를 함께 포함할 수 있어, 지도 위에 표현되는 객체에 대한 풍부한 부가 정보를 제공하는 데 유용하게 사용된다.
표준 좌표계인 WGS84 (경도, 위도)를 주로 사용하지만, 필요에 따라 대한민국에서 사용하는 GRS80이나 Bessel 기반 좌표계 등 다양한 좌표계를 명시적으로 지정하여 사용할 수 있다. EPSG 코드 등을 활용하여 좌표계 정보를 명확히 할 수 있다.
3. 1. 지오메트리(Geometries)
GeoJSON은 다양한 지리적 형상을 표현하기 위한 여러 지오메트리 타입을 지원한다. 각 좌표는 기본적으로 [경도, 위도] 순서의 지리 좌표계 값으로 표현되며, 이는 십진수 형태이다. 필요에 따라 미터 단위의 고도(z) 값을 세 번째 숫자로 추가할 수 있다.[18][6][7] 예를 들어, 런던(북위 51.5074°, 서경 0.1278°)의 좌표는 GeoJSON에서 [-0.1278, 51.5074]와 같이 표현된다.
GeoJSON에서 지원하는 주요 지오메트리 타입은 다음과 같다. 각 타입에 대한 자세한 설명과 예시는 하위 섹션에서 다룬다.3. 1. 1. 기본 형태
점 (Point)은 `[x, y]` 또는 `[x, y, z]`로 표현된다. 이는 경도, 위도 또는 동경, 북위일 수 있다. 미터 단위의 고도는 선택적인 세 번째 숫자이며, 이는 십진수이다.[18]
예를 들어, 런던 (북위 51.5074°, 서경 0.1278°)은 `[-0.1278, 51.5074]`로 표현된다.
| 유형 | 예시 | |
|---|---|---|
| 다중 점 (MultiPoint) | ||
| 다중 선형 링 (MultiLineString) | ||
| 다중 다각형 (MultiPolygon) | ||
| 기하 컬렉션 (GeometryCollection) | ||
3. 1. 2. 복잡한 형태
3. 1. 3. GeometryCollection
GeometryCollection은 여러 종류의 지오메트리 객체(점, 선형 링, 다각형 등)를 하나의 객체 안에 모아 놓은 것이다. 예를 들어, 점, 선형 링, 다각형을 하나의 GeometryCollection으로 묶을 수 있다.아래는 GeometryCollection의 예시이다.
"type": "GeometryCollection",
"geometries": [
{
"type": "Point",
"coordinates": [40.0, 10.0]
},
{
"type": "LineString",
"coordinates": [
[10.0, 10.0],
[20.0, 20.0],
[10.0, 40.0]
]
},
{
"type": "Polygon",
"coordinates": [
[
[40.0, 40.0],
[20.0, 45.0],
[45.0, 30.0],
[40.0, 40.0]
]
]
}
]
}
4. 예시
다음은 말레이시아, 싱가포르 등이 위치해 있는 자바 해의 말레이 제도에서의 가상의 GeoJson 표현이다.[39]
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [102.0, 0.5]
},
"properties": {
"prop0": "value0"
}
},
{
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0]
]
},
"properties": {
"prop0": "value0",
"prop1": 0.0
}
},
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[100.0, 0.0], [101.0, 0.0], [101.0, 1.0],
[100.0, 1.0], [100.0, 0.0]
]
]
},
"properties": {
"prop0": "value0",
"prop1": { "this": "that" }
}
}
]
}
5. 지원 소프트웨어
GeoJSON은 OpenLayers[40][19], Leaflet[20], MapServer[41], Geoforge 소프트웨어[42], GeoServer[43][21], GeoDjango[44][22], GDAL[45][23], Safe Software FME[46] 등 많은 매핑 및 GIS 소프트웨어 패키지에서 지원된다. PostGIS[48][25]와 Mapnik[49][26]에서도 GeoJSON을 사용할 수 있는데, 이는 CartoDB[47][24]나 GDAL OGR 변환 라이브러리를 통해 형식을 처리하는 방식으로 이루어진다.
Bing Maps, 야후![50], HERE[50] 및 구글은 API 서비스에서 GeoJSON을 지원한다. 구글 지도 JavaScript API v3는 2014년 3월 19일부터 GeoJSON 데이터 레이어의 통합을 직접 지원한다.[51][52] 줄리아 언어의 경우 GeoJSON.jl 패키지를 사용할 수 있다.
깃허브는 GeoJSON 렌더링[53][28]과 Potrace GeoJSON 내보내기를 지원하며, Geojson.io는 웹 브라우저에서 GeoJSON 렌더링 및 편집을 지원한다.
6. 확장성 및 파생 포맷
GeoJSON은 GPX와 호환되지만, XML에 기반한 GPX와는 달리 스키마나 태그의 엘리먼트 제약으로부터 훨씬 자유롭다. 이러한 특징 덕분에 폴리라인(라인스트링) 압축이 가능하고 데이터 크기가 작아 응용 프로그램에 데이터를 적재하기 용이하다.[54][55]
위상 정보를 효율적으로 표현하기 위한 확장 포맷으로 TopoJSON이 있다. TopoJSON은 공유된 선분('호', arc)을 사용하여 형상을 정의함으로써 파일 크기를 줄이고 위상 관련 응용 프로그램 개발을 용이하게 한다. 자세한 내용은 TopoJSON에서 다룬다.
또한, 대용량 데이터 처리나 스트리밍 방식 처리를 위해 GeoJSON을 변형하거나 확장한 포맷들이 존재한다. 각 지리적 특징을 줄바꿈이나 레코드 구분 문자로 구분하여 파싱 속도를 높이고 병렬 처리를 가능하게 하는 방식이 대표적이다. 이는 줄 바꿈으로 구분된 JSON과 유사하다. 이러한 방식의 예로는 다음이 있다.
이 외에도 전송 효율 향상, 스트리밍 처리 등을 목표로 하는 다양한 파생 포맷이 개발되었다.
- Newline-delimited GeoJSON
- FlatGeobuf
- GeoArrow
- GeoParquet
6. 1. TopoJSON
'''TopoJSON'''은 위상을 인코딩하는 GeoJSON의 확장이다. TopoJSON 파일의 형상은 개별적으로 표현하는 대신, '호'(arc)라고 하는 공유된 선분에서 함께 연결된다.[10] '호'는 점의 시퀀스이며, 선 문자열(LineString)과 폴리곤(Polygon)은 호의 시퀀스로 정의된다. 각 호는 한 번만 정의되지만 여러 모양에서 여러 번 참조될 수 있어 중복을 줄이고 파일 크기를 줄일 수 있다.[11] 또한 TopoJSON은 위상을 사용하는 응용 프로그램, 예를 들어 위상 보존 모양 단순화, 자동 지도 채색 및 카토그램 생성을 용이하게 한다.TopoJSON 사양의 참조 구현은 GeoJSON(또는 ESRI 셰이프 파일)에서 TopoJSON을 인코딩하는 명령줄 도구와 TopoJSON을 다시 GeoJSON으로 디코딩하는 클라이언트 측 자바스크립트 라이브러리로 제공된다. TopoJSON은 버전 1.11부터 OGR 도구와 버전 2.1.0부터 PostGIS에서도 지원된다.[12][13]
좌표계 위도 0° 및 경도 0° 근처에 있는 GIS 도형을 기준으로, 모든 메타데이터, ''Polygon'', ''LineString'', ''Point'' 요소, ''arcs'', ''properties''를 포함하는 간단한 TopoJSON 파일 예시는 다음과 같다.
{
"type":"Topology",
"transform":{
"scale": [1,1],
"translate": [0,0]
},
"objects":{
"two-squares":{
"type": "GeometryCollection",
"geometries":[
{"type": "Polygon", "arcs":0,1,"properties": {"name": "Left_Polygon" }},
{"type": "Polygon", "arcs":2,-1,"properties": {"name": "Right_Polygon" }}
]
},
"one-line": {
"type":"GeometryCollection",
"geometries":[
{"type": "LineString", "arcs": [3],"properties":{"name":"Under_LineString"}}
]
},
"two-places":{
"type":"GeometryCollection",
"geometries":[
{"type":"Point","coordinates":[0,0],"properties":{"name":"Origine_Point"}},
{"type":"Point","coordinates":[0,-1],"properties":{"name":"Under_Point"}}
]
}
},
"arcs": [
1,2],[0,-2,
1,0],[-1,0],[0,2],[1,0,
1,2],[1,0],[0,-2],[-1,0,
0,-1],[2,0
]
}
참조
[1]
간행물
IETF
2016-08
[2]
웹사이트
Providing Directions
https://developer.ap[...]
[3]
웹사이트
GeoJSON Info Page
http://lists.geojson[...]
[4]
웹사이트
The GeoJSON March 2007 Archive by thread
http://lists.geojson[...]
[5]
웹사이트
Geographic JSON (geojson) -
https://datatracker.[...]
[6]
간행물
The GeoJSON Format
https://datatracker.[...]
Internet Engineering Task Force
2016-08
[7]
웹사이트
GeoJSON RFC #3.1.1
https://datatracker.[...]
2016-08
[8]
간행물
GeoJSON Text Sequences
https://datatracker.[...]
Internet Engineering Task Force
2017-04
[9]
웹사이트
GeoJSONL: An optimized format for large geographic datasets
https://www.interlin[...]
2024-11-11
[10]
웹사이트
topojson/topojson-specification
https://github.com/t[...]
2020-12-11
[11]
웹사이트
topojson/topojson
https://github.com/t[...]
[12]
웹사이트
Release/1.11.0-News – GDAL
https://trac.osgeo.o[...]
[13]
웹사이트
AsTopoJSON
http://postgis.net/d[...]
[14]
웹사이트
RFC7946 The GeoJSON Format
https://datatracker.[...]
IETF
2022-01-03
[15]
문서
The GeoJSON Discussion List
http://lists.geojson[...]
[16]
문서
March 2007 Archives by thread
http://lists.geojson[...]
[17]
웹사이트
Geographic JSON (geojson) -
https://datatracker.[...]
2021-12-04
[18]
웹사이트
GeoJSON RFC #3.1.1
https://datatracker.[...]
2021-12-04
[19]
문서
http://openlayers.or[...]
[20]
문서
http://leafletjs.com[...]
[21]
문서
http://svn.codehaus.[...]
[22]
문서
http://geodjango.org[...]
[23]
문서
http://gdal.org/ogr/[...]
[24]
문서
http://developers.ca[...]
[25]
문서
http://pugs.postgres[...]
[26]
문서
http://svn.mapnik.or[...]
[27]
문서
https://github.com/J[...]
[28]
문서
https://github.com/b[...]
[29]
웹인용
The GeoJSON Format (RFC 7946)
https://tools.ietf.o[...]
Internet Engineering Task Force (IETF)
[30]
문서
The GeoJSON Format
https://tools.ietf.o[...]
[31]
웹인용
보관된 사본
https://web.archive.[...]
2018-08-15
[32]
문서
https://tools.ietf.o[...]
[33]
문서
OSM
https://wiki.openstr[...]
[34]
문서
iOS Location and Maps Programming Guide
https://developer.ap[...]
[35]
웹인용
The GeoJSON Discussion List
https://web.archive.[...]
2018-08-14
[36]
문서
lon,lat-4. Coordinate Reference System
https://tools.ietf.o[...]
[37]
웹인용
March 2007 Archives by thread
http://lists.geojson[...]
2018-08-14
[38]
웹사이트
https://datatracker.[...]
[39]
웹사이트
http://geojson.io/#m[...]
[40]
웹인용
Archived copy
http://openlayers.or[...]
2010-03-16
[41]
웹사이트
http://mapserver.org[...]
[42]
웹인용
보관된 사본
http://leafletjs.com[...]
2018-08-14
[43]
웹인용
Archived copy
http://svn.codehaus.[...]
2009-12-13
[44]
웹인용
Archived copy
http://geodjango.org
2009-10-09
[45]
웹인용
Archived copy
http://gdal.org/ogr/[...]
2009-10-09
[46]
웹인용
Archived copy
http://www.safe.com/[...]
2008-07-24
[47]
웹인용
보관된 사본
http://developers.ca[...]
2018-08-14
[48]
웹인용
Archived copy
http://pugs.postgres[...]
2010-06-01
[49]
웹인용
Archived copy
http://svn.mapnik.or[...]
2009-05-02
[50]
웹인용
보관된 사본
https://developer.he[...]
2018-08-14
[51]
웹사이트
https://developers.g[...]
[52]
웹사이트
http://googledevelop[...]
[53]
웹사이트
https://github.com/b[...]
[54]
웹사이트
구글맵
https://developers.g[...]
[55]
웹인용
구글맵
https://google-devel[...]
2018-08-15
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com