मैं एक ऐसे ठोस समाधान की तलाश में हूं, जो मुझे एक वेब मैप बनाने की अनुमति दे और वेक्टर पॉलीगॉन को ओवरले के बिना हमेशा के लिए इस तरह के डेटा को लोड करने के लिए ले जाए , जिससे मुझे प्रत्येक बहुभुज को एक हॉवर ईवेंट पर एक अलग रंग प्रदर्शित करने की अनुमति मिले।
जहां तक मुझे पता है कि कैनवास, एसवीजी, फ्लैश के माध्यम से इसे प्राप्त करने के लिए 3 विशिष्ट विकल्प हैं।
फ्लैश ऐसा लगता है कि यह सबसे अच्छा समाधान होगा यदि यह ऐप्पल आईफ़ोन / आईपैड पर काम करेगा क्योंकि यह सबसे तेज़ प्रतिपादन और स्वच्छ प्रदर्शन प्रदान करता है। कैनवस दूसरा सबसे अच्छा विकल्प लगता है, लेकिन बहुत लंबा लगता है अगर आपके पास सैकड़ों पॉलीगोन एक मानचित्र पर प्रदर्शित हो रहे हैं जबकि एसवीजी को प्रस्तुत करने में अधिक समय लगता है।
मैंने इस समस्या का समाधान खोजने में लगभग उम्मीद खो दी थी, लेकिन आज मैं GISCloud http://www.giscloud.com नामक एक कंपनी में आया (वर्तमान में फ्री साइनअप के साथ बीटा में)।
इस कंपनी ने कुछ वास्तविक समय में मानचित्र पर सैकड़ों वैक्टर को प्रस्तुत करने के लिए एक अद्भुत तरीका निकालने में कामयाबी हासिल की है। मैं उनके दृष्टिकोण से आश्चर्यचकित था और समुदाय के लिए मेरा प्रश्न इस बात से संबंधित है कि हम मौजूदा तकनीकों जैसे कि पत्रक, ओपनलेयर, मोम के साथ उपयोग के लिए उनके दृष्टिकोण को कैसे दोहरा सकते हैं ...
इस अद्भुत डेमो को देखकर अपने लिए एक नज़र डालें: http://www.giscloud.com/map/284/africa
सुनिश्चित करें कि आप पृष्ठ पर किसी भी बहुभुज पर मंडराते हैं और यह देखने के लिए जूम नियंत्रण का परीक्षण करते हैं कि ये बहुभुज वास्तव में वैक्टर हैं।
फायरबग के साथ अनुरोधों को देखकर मैंने जो ध्यान दिया है वह यह है कि मानचित्र विशिष्ट जोंस फाइलों का अनुरोध कर रहा है। ऐसा लगता है कि जूम स्तर / क्षेत्र के आधार पर कई जसन फाइलें मांगी जा रही हैं।
मुझे यहाँ यह भी उल्लेख करना चाहिए कि एक बार जब giscloud पेज पर डेटा लोड करता है तो एक वेक्टर पर होवर करता है तुरंत एक नया अनुरोध बनाए बिना रंग बदलता है।
उदाहरण:
- http://cft1.giscloud.com/t/1316509973/map284/layer1156/3/3/3.json
- http://cft1.giscloud.com/t/1316509973/map284/layer1156/3/5/3.json
- http://cft1.giscloud.com/t/1316509973/map284/layer1156/3/4/4.json
- http://cft1.giscloud.com/t/1316509973/map284/layer1156/3/3/4.json
- http://cft1.giscloud.com/t/1316509973/map284/layer1156/3/5/4.json
मैं मान रहा हूं कि url संरचना मानक टाइलिंग सेवा तर्क का अनुसरण करती है (उदाहरण के लिए 3 से आखिरी फ़ोल्डर जूम स्तर ...)।
किसी भी मामले में मैंने इन जोंस फ़ाइलों के वास्तविक डेटा का विश्लेषण किया है और ऐसा लगता है कि वे जिस तर्क का उपयोग कर रहे हैं, वह कुछ प्रकार के तर्क का अनुसरण करता है जिसके द्वारा वे इन डेटा मानों के आधार पर अपने वैक्टर का निर्माण करते हैं:
- चौड़ाई / ऊँचाई: वे प्रत्येक json अनुरोध में दिए जा रहे डेटा की चौड़ाई और ऊँचाई को परिभाषित करते हैं
- पिक्सेल: यहाँ वे पिक्सेल मानों को परिभाषित करते हैं जो मैं किसी तरह मान रहा हूँ कि सामान्यीकृत बिंदु स्तरों के लिए कुछ सामान्य x / y पिक्सेल निर्देशांक से संबंधित हैं? मुझे लगता है कि वे किसी तरह से स्वचालित रूप से ज़ूम स्तर के आधार पर क्षेत्र को सरल बनाने का एक तरीका है। मैं उनके द्वारा पिक्सल के निर्देशांक का उपयोग करके यह मान रहा हूं कि मैं अनुमान लगा रहा हूं कि वे नाटकीय रूप से उस डेटा के आकार को कम कर रहे हैं जिसे अक्षांश / लंबे डेटा की तुलना में लोड करने की आवश्यकता है।
- शैलियाँ: यहाँ वे दो RGB css मानों को परिभाषित करते हैं। बहुभुज फ़ाइल रंग का प्रतिनिधित्व "एफ" और बहुभुज सीमा रंग का प्रतिनिधित्व "एस"।
- geom: यहाँ मैं अनुमान लगा रहा हूँ कि वे किसी तरह विशेष रूप से परिभाषित कर रहे हैं टाइल के भीतर प्रत्येक बहुभुज को परिभाषित किया जा रहा है जहाँ इस तरह के डेटा को मैप कंटेनर विंडो के आधार पर परिभाषित किया जा रहा है। Whats यह भी दिलचस्प है कि प्रत्येक प्रविष्टि का एक "S" मान है, जिसे मैं मान रहा हूं कि इसे वैकल्पिक विशेषता या सुविधा लिंक मान के रूप में उपयोग किया जाता है और यहां प्रत्येक प्रविष्टि के अंत में एक क्षेत्र है जो एक विशिष्ट प्रति वेक्टर आईडी के साथ परिभाषित करता है लेयर आईडी, जिसका मैं अनुमान लगा रहा हूं, का उपयोग किसी भी तरह से प्रत्येक जॉन्स टाइल अनुरोध से डेटा में शामिल होने के लिए किया जाता है।
मैं यह भी मान रहा हूं कि उन्होंने किसी तरह से डेटा को स्वचालित रूप से निर्धारित करने और विभाजित करने का एक तरीका निकाला है, जिसे डेटा के आकार के आधार पर प्रत्येक टाइल के लिए लोड करने की आवश्यकता होती है, जिसे अनुरोधित टाइल के लिए लोड करने की आवश्यकता होती है।
यहाँ इन अनुरोधों में से एक को निकाला गया है:
{"width":256,"height":256,"tile":
{"pixels":
[0,6461,-1,0,5,148,0,509,-1,10715,-1,1,-1,251,-1,1,-1,1,-1,251,-2,3,-1,255,-1,249,-2,5,-2,247,-1,509,-3,251,-1,2,-2,253,-2,252,-2,254,-1,255,-1,254,-1,255,-1,1276,-2,13,-1,233,-1,2,-1,253,-1,1,-1,255,-1,247,-1,1306,-1,1533,-1,1269,-1,1276,-1,2303,-1]},
"styles":
[{"f":"rgb(99,230,101)","s":"rgb(5,148,0)","lw":"0"}],
"geom":
[
{"s":0,"p":[4,143,5,144,3,146,1,146,2,143,4,143],"c":"layer1156_5098"},
{"s":0,"p":[-2,143,0,140,2,141,2,144,1,146,-2,144,-2,143],"c":"layer1156_5067"},
{"s":0,"p":[7,143,5,144,4,143,2,143,2,141,5,138,6,139,5,141,7,143],"c":"layer1156_5051"},
{"s":0,"p":[10,141,11,137,12,137,14,137,12,142,9,143,9,142,10,141],"c":"layer1156_5041"},
{"s":0,"p":[1,136,0,140,-2,143,-2,136,1,136],"c":"layer1156_5038"},
{"s":0,"p":[8,143,5,141,5,137,8,136,10,137,10,141,8,143],"c":"layer1156_5033"},
{"s":0,"p":[5,137,2,141,0,140,1,136,1,136,2,135,3,136,5,137],"c":"layer1156_5028"},
{"s":0,"p":[10,134,12,136,11,138,8,135,10,134],"c":"layer1156_5020"},
{"s":0,"p":[-2,133,0,136,-2,136,-2,133],"c":"layer1156_5005"},
{...}
...
]
}
पोस्टगिस का उपयोग करके हम उसी (या समान) प्रकार की गति को कैसे दोहरा सकते हैं (जो मुझे लगता है कि वे भी उपयोग कर रहे हैं)?