GeoJSON과 TopoJSON의 차이점


답변:


148

파일 크기 또는 토폴로지에 관심이 있다면 TopoJSON을 사용하십시오. 어느 쪽도 신경 쓰지 않는다면 단순성을 위해 GeoJSON을 사용하십시오.

TopoJSON의 주요 장점은 크기입니다. 중복성을 제거하고 좌표의보다 효율적인 고정 정밀도 정수 인코딩을 사용함으로써 TopoJSON 파일은 GeoJSON 파일보다 훨씬 작은 경우가 많습니다. TopoJSON 파일의 두 번째 이점은 토폴로지 인코딩에 토폴로지 보존 단순화 ( MapShaper 와 유사 ) 및 자동 메시 생성 ( 이 예제 choropleth의 상태 상태 경계에서 와 같이)과 같은 유용한 응용 프로그램 이 있다는 것 입니다.

이러한 이점은 비용이 발생합니다. 더 복잡한 파일 형식입니다. 자바 스크립트에서, 예를 들어, 일반적으로 사용하는 거라고 TopoJSON 클라이언트 라이브러리를 같은 표준 도구를 사용 GeoJSON에 TopoJSON 변환 d3.geoPath . (Python에서는 topojson.py 를 사용할 수 있습니다 .) 또한 TopoJSON의 정수 형식에는 양자화 좌표가 필요하므로주의하지 않으면 반올림 오류가 발생할 수 있습니다. (에 대한 설명서를 참조하십시오 topojson -q.)

토폴로지가 필요하지 않은 지오메트리의 서버 측 조작의 경우 GeoJSON이 아마도 더 간단한 선택 일 것입니다. 그렇지 않고 토폴로지가 필요하거나 와이어를 통해 지오메트리를 클라이언트에 보내려면 TopoJSON을 사용하십시오.


2
그리고 "공유 선분"에 대해 읽은 기억이 있었지만 "토포"가 "지형"을 의미한다고 생각했지만 그렇지 않습니다. 여기에 "토폴로지"와 "토포 그래피"의 차이에 대한 좋은 읽기가 있습니다 (전자는 topojson에서 "topo"의 기원입니다). 여기에서 토폴로지 추론에 대한
The Red Pea

나는 인터넷을 통해 유선으로 연결할 때 toposjon과 같은 하이브리드 솔루션 이외의 geobuf 를 사용하는 것을 선호합니다 .
tibetty

9

TopoJSON은 행정 구역과 같이 서로 "스냅"되는 깔끔한 기능에 이상적이지만 더 복잡하거나 유기적 인 데이터에는 도움이되지 않습니다. 데이터가 단순히 포인트라면 TopoJSON은 전혀 도움이되지 않습니다.


23
공유 토폴로지가없는 경우에도 TopoJSON의 고정 정밀도 정수 인코딩은 GeoJSON의 부동 소수점보다 훨씬 효율적일 수 있습니다.
mbostock 2013

17
진실. 내가 틀렸다. 나는 내 대답을 삭제하고 귀중한 의견을 잃을 것입니다!
sgillies

하, 고마워. :) 추가 고려 사항이 포함 된 별도의 답변을 제출했습니다.
mbostock 2013

3

많은 고려 사항에 따라 다릅니다. 그중에는 다음이 있습니다.

1) 표현하려는 기능의 특성 (데이터 모델) 2) 해당 기능과 연관시키려는 모든 속성 3) 페이지에서 이러한 기능이 작동하기를 원하는 방식 (정적 vs. 동적)

그러나 이것은 초록에서 대답하기 어려운 질문입니다. 몇 가지 세부 사항과 관련하여, 연속적인 폴리곤 커버리지 또는 피쳐가 경계를 공유하는 다른 상황이있는 경우 topojson의 모델을 사용하면 중복성을 활용하고이를 모델에 반영 할 수 있습니다.

문서를 읽고 예제 (예 : bl.ocks.org)를 분석 한 다음 일부 데이터를 가져 와서 geojson과 topojson으로 표현하고 자신 만의 시각화를 만듭니다.


감사합니다 wsvekla. 나는 그것을하고있다-나는 bl.ocks.org에서 당신의 요지를 실제로 찾았 지만 ( bl.ocks.org/wsvekla/4533258 bl.ocks.org/4348435 ) Google에 쉬운 것은 아닙니다. 그러나 당신이 지적했듯이 많은 고려 사항이 있으며 이것을 배우기 위해 나란히 비교를 탐구하려고 노력하고 있습니다.
Luke

2
이 두 블록은 동일한 원본 shapefile을 참조합니다 : bl.ocks.org/4485308bl.ocks.org/4348435 . TopoJSON은 마침내 동일한 파일에서 동일한 데이터로 여러 기능 (국가, 부서 및 지방 경계)을 표현할 수있는 방법을 파악했을 때 실제로 침몰하기 시작했습니다 (geojson으로는 불가능). 이는 filter 함수를 통해 수행됩니다 : function (a, b) {return a.id! == b.id;}). 그것을 이해하려고 노력하면 topojson이 이해되기 시작할 것입니다. 더 나은 코드 참조와 미니멀리즘에 대해서는 Mike의 블록 : bl.ocks.org/4108203
wsvekla
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.