GeoJSON और TopoJSON के बीच अंतर


जवाबों:


147

यदि आप फ़ाइल आकार या टोपोलॉजी की परवाह करते हैं, तो TopoJSON का उपयोग करें। अगर आपको इसकी कोई परवाह नहीं है, तो सादगी के लिए जियोसन का उपयोग करें।

TopoJSON का प्राथमिक लाभ आकार है। अतिरेक को समाप्त करने और निर्देशांक के अधिक प्रभावी निश्चित-सटीक पूर्णांक एन्कोडिंग का उपयोग करके, TopoJSON फाइलें अक्सर GeoJSON फ़ाइलों की तुलना में छोटे परिमाण का एक क्रम होती हैं। TopoJSON फ़ाइलों का द्वितीयक लाभ यह है कि टोपोलॉजी को एन्कोडिंग में उपयोगी अनुप्रयोग हैं, जैसे टोपोलॉजी-संरक्षण सरलीकरण ( MapShaper के समान ) और स्वचालित जाल पीढ़ी (जैसा कि इस उदाहरण में राज्य-राज्य की सीमाओं में है )।

ये फायदे लागत पर आते हैं: एक अधिक जटिल फ़ाइल प्रारूप। उदाहरण के लिए, उदाहरण के लिए, आप आमतौर पर Top3JSON क्लाइंट लाइब्रेरी का उपयोग करके Top3JSON को जियोजॉन में बदलने के लिए मानक उपकरण जैसे कि d3.geoPath का उपयोग करेंगे । (पायथन में, आप topojson.py का उपयोग कर सकते हैं ।) इसके अलावा, TopoJSON के पूर्णांक प्रारूप में निर्देशांक की मात्रा निर्धारित करने की आवश्यकता होती है, जिसका अर्थ है कि यदि आप सावधान नहीं हैं तो यह राउंडिंग त्रुटि का परिचय दे सकता है। (इसके लिए दस्तावेज देखें topojson -q)

जियोमेट्री के सर्वर-साइड हेरफेर के लिए जिसे टोपोलॉजी की आवश्यकता नहीं होती है, फिर जियोसन संभवतः सबसे आसान विकल्प है। अन्यथा, यदि आपको टोपोलॉजी की आवश्यकता है या किसी क्लाइंट को वायर पर ज्यामिति भेजना चाहते हैं, तो TopoJSON का उपयोग करें।


2
और भले ही मुझे "साझा लाइन सेगमेंट" के बारे में पढ़ना याद था, फिर भी मैंने "टोपो" को "स्थलाकृति" के लिए खड़ा माना, जो ऐसा नहीं था। यहाँ "टोपोलॉजी" और "स्थलाकृति" के बीच अंतर के बारे में एक अच्छा पढ़ा है (पूर्व में "टॉपोजोन में" टोपो "की उत्पत्ति है) - और मुझे टोपोलॉजी के
द रेड मटर

मैं इंटरनेट पर तार होने पर टॉपोसजॉन जैसे हाइब्रिड समाधानों के अलावा जियोफ्यू का उपयोग करना पसंद करूंगा ।
tibetty

9

TopoJSON प्रशासनिक क्षेत्रों की तरह, एक दूसरे को "स्नैप" करने वाली सुव्यवस्थित विशेषताओं के लिए आदर्श है, लेकिन अधिक गन्दा या जैविक डेटा के साथ मदद नहीं करता है। यदि आपका डेटा केवल अंक है, तो TopoJSON कोई मदद नहीं है।


22
जब कोई साझा टोपोलॉजी नहीं है, तब भी TopoJSON की निश्चित-सटीक पूर्णांक एन्कोडिंग GeoJSON के फ्लोटिंग पॉइंट की तुलना में काफी अधिक कुशल हो सकती है।
mbostock

16
सच। मैं गलत हूँ। मैं अपना उत्तर हटा दूंगा, लेकिन हम आपकी बहुमूल्य टिप्पणी खो देंगे!
sgillies

हा, धन्यवाद। :) मैंने एक अलग उत्तर प्रस्तुत किया है जिसमें अतिरिक्त विचार शामिल हैं।
mbostock

3

यह कई विचारों पर निर्भर करता है। उनमें से निम्नलिखित हैं:

1) आप जिस सुविधा या सुविधाओं का प्रतिनिधित्व करना चाहते हैं, उसका स्वरूप (डेटा मॉडल) 2) आप उन विशेषताओं के साथ किसी भी विशेषता को जोड़ना चाहते हैं 3) आप पेज पर व्यवहार करने के लिए इन सुविधाओं को कैसे पसंद करेंगे (स्थैतिक बनाम गतिशील)

हालांकि, यह अमूर्त में जवाब देने के लिए एक कठिन सवाल है। कुछ बारीकियों के बारे में, यदि आपके पास एक सन्निहित बहुभुज कवरेज है या एक अन्य स्थिति है जहां विशेषताएं सीमाएं साझा कर रही हैं, तो टॉपोजेन का मॉडल आपको अतिरेक और कारक का शोषण करने की अनुमति देता है जो मॉडल में है।

प्रलेखन पढ़ें, उदाहरणों को विच्छेदित करें (उदाहरण के लिए, bl.ocks.org), और फिर कुछ डेटा प्राप्त करें और इसे जियोजेन्सन और टॉपोजोन दोनों में प्रतिनिधित्व करें और अपनी खुद की विज़ुअलाइज़ेशन बनाएं।


धन्यवाद wsvekla मैं यह कर रहा हूं - मैंने तुम्हारा gists bl.ocks.org पर पाया है। वास्तव में ( bl.ocks.org/wsvekla/4533258 bl.ocks.org/4348435 ) लेकिन Google के लिए आसान नहीं है। हालाँकि, जैसा कि आप बताते हैं कि बहुत सारे विचार हैं और मैं इसे सीखने के लिए अगल-बगल तुलना द्वारा तलाशने की कोशिश कर रहा हूं।
ल्यूक

2
ये दोनों ब्लॉक एक ही मूल आकृति का संदर्भ देते हैं: bl.ocks.org/4485308 और bl.ocks.org/4348435 । TopoJSON वास्तव में डूबने लगा जब मैंने अंततः समझा कि मैं एक ही फाइल में एक ही डेटा के साथ कई विशेषताओं (राष्ट्रीय, विभागीय और नगरपालिका की सीमाओं) का प्रतिनिधित्व कैसे कर सकता हूं (आप जियोजोन के साथ ऐसा नहीं कर सकते)। यह फिल्टर फ़ंक्शन के माध्यम से पूरा किया जाता है: फ़ंक्शन (ए, बी) {वापसी a.id! == b.id;})। यह समझने की कोशिश करें, और टोपोजोन समझ में आने लगेगा। बेहतर कोड संदर्भ और नंगे अतिसूक्ष्मवाद के लिए, माइक के ब्लॉक देखें: bl.ocks.org/4108203
wsvekla
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.