तृतीय-पक्ष सेवाओं का उपयोग करके जियोसेवर में मानचित्र कैश बनाना

यह सब इस तथ्य के साथ शुरू हुआ कि जब आर्कगिस का उपयोग करके जियोफोर्टल विकसित कर रहे थे, ग्राहकों ने तेजी से कुछ कहना शुरू कर दिया: "हमें सब कुछ पसंद है, लेकिन आप एक ही काम कर सकते हैं, लेकिन ओपन सोर्स सॉफ्टवेयर का उपयोग कर", एमएसक्यूएल + आर्कजी बंडल को बदलने का अर्थ है। सर्वर + आर्कगिस जावास्क्रिप्ट (सिल्वरलाइट) टूलकिट ऑन पोस्टग्रेज (पोस्टगिस) + जियोस्वर + ओपनलेकर।

ठीक है, सामान्य तौर पर, आप उन्हें समझ सकते हैं, क्योंकि 0 रूबल से 1-2-3 मिलियन रूबल। अधिकांश भाग के लिए, यह एक विशेष समस्या पेश नहीं करता था; वेक्टर डेटा या तो SHP फ़ाइलों के माध्यम से, या MSSQL से PostGis (या बस SQL ​​प्रश्नों के माध्यम से) कन्वर्टर्स के माध्यम से स्थानांतरित किया जाता है। रैस्टर डेटा के साथ एक सवाल था। उदाहरण के लिए, रूस का एक अच्छी तरह से तैयार, कॉन्फ़िगर और बहु-स्तरीय कैश मैप है। आर्कगिस में, इसे या तो एक कॉम्पैक्ट रूप में संग्रहीत किया जाता है (बंडलों के रूप में जो केवल आर्कगिस प्रारूप में समझ में आता है) या गैर-कॉम्पैक्ट, यानी मैप टाइलें बस निर्देशिकाओं में निहित हैं। तब मुझे खुशी हुई और मुझे लगा कि दूसरे मामले में, सब कुछ निश्चित रूप से सरल होगा। लेकिन नहीं - टाइलें निश्चित रूप से स्तर से टूट गई हैं, हालांकि उनके पास अजीब नाम हैं और अजीब सबफ़ोल्डर में झूठ बोल सकते हैं, लेकिन इस कैश के भू-संदर्भित के साथ, यह सिर्फ एक आपदा है।

लेकिन फिर एक बहुत ही सरल और त्वरित समाधान आया - अपनी स्वयं की सेवा को स्कैन करने के लिए (क्योंकि सेवा टाइलों को समझने योग्य URL पर भेजती है जैसे "... MapServer / टाइल / Z / Y / X" जहां Z स्तर संख्या है, और X और Y टाइल नंबर हैं क्रमशः क्षैतिज और ऊर्ध्वाधर)। अब एक और सवाल शेष है - इन लंगर वाली टाइलों को जियोसेवर पर कैसे रखा जाए? Geoserver ऐसे उद्देश्यों के लिए Image Pyramid Plugin का उपयोग करता है, या ऐसा करने के लिए काफी नहीं है - यह मुख्य रूप से विशाल TIFF फ़ाइलों के साथ काम को सरल बनाने के लिए उपयोग किया जाता है, gdal पैकेज से gdal_retile स्क्रिप्ट एक TIFF फ़ाइल के माध्यम से जाती है और विभिन्न स्तरों पर छोटे छोटे जियोफेरिफ़ाइड टाइल बनाता है, जिन्हें फ़ोल्डर्स में विभाजित किया जाता है। स्तर संख्या के साथ।

यहाँ सभी इनपुट डेटा है। उनका उपयोग करते हुए, मैंने पहली बार अपने मूल C # में एक आवेदन लिखा था, लेकिन वास्तविक OSS के रास्ते का पालन करने और जावा में इसे फिर से लिखने का फैसला किया, स्वाभाविक रूप से GitHub पर कोड बाहर रखा।

मूल रूप इस प्रकार है:

छवि

यहाँ सब कुछ सरल है:
- टाइल url पैटर्न - टाइल के लिए url टेम्पलेट, जहां {2} स्तर संख्या की स्थिति है, {0} टाइल नंबर की स्थिति क्षैतिज (X), {1} - लंबवत (Y)।
- अधिकतम परत की सीमा - पूरी परत का भू-मंडलीकरण, अर्थात। जहां टाइलों की उलटी गिनती शुरू होती है और समाप्त होती है
- क्षेत्र परत सीमा - इच्छित क्षेत्र का भू-विक्षेपण
- स्तर: प्रारंभ - प्रारंभिक "निचला" स्तर, उदाहरण के लिए 4, अंतिम "ऊपरी", उदाहरण के लिए 0 (एक टाइल में पूरा नक्शा)
-टाइल का आकार - उस टाइल का आकार जो सेवा देता है
- Jpeg संपीड़न - यदि आप संपीड़न का उपयोग करने के लिए आउटपुट टिफ चाहते हैं
- संदर्भ प्रणाली WKT - समन्वय प्रणाली का वर्णन करने वाला पाठ, समन्वय प्रणालियों के उदाहरण यहां देखे जा सकते हैं
- आउटपुट फ़ाइलों के लिए पथ फ़ोल्डर

यह सब है - इन मापदंडों को निर्धारित करने के बाद, रन पर क्लिक करें और टाइल्स डाउनलोड करें।

आप यहां प्रोग्राम डाउनलोड कर सकते हैं (जावा की जरूरत है)
INFA यहाँ है
कोड यहाँ है

और अब उन लोगों के लिए एक छोटा ट्यूटोरियल जो कुछ भी नहीं समझते थे, लेकिन यह दिलचस्प हो गया

1. जियोसर्वर डाउनलोड और इंस्टॉल करें ;
2. ImagePyramid प्लगइन डाउनलोड और स्थापित करें;
3. डाउनलोड करें , अनपैक करें और एप्लिकेशन चलाएं;
4. OSM उदाहरण बटन दबाएं - पहले 5 परतों वाले OpenStreetMap टाइल के लिए फ़ील्ड स्वचालित रूप से भर जाते हैं;
5. उस फ़ोल्डर का चयन करें जहां टाइल बनाने के लिए;
6. पूरा होने के बाद, जियोसर्वर खोलें और एक पिरामिड भंडारण और परत बनाएं;
7. परत पूर्वावलोकन खोलें और आनंद लें;
8. सभी समान, लेकिन यहां चित्रों के साथ।

PS गैर-वर्ग पिरामिडों के साथ एक गड़बड़ है, अर्थात, जिनका आधार एक वर्ग नहीं है, लेकिन एक आयत (एसके एप्सग में बहुत बार: 4326)। सभी आयताकार के लिए (EPSG: 3857 (90013), EPSG: 3395) 0 से शुरू होता है, यह सही ढंग से काम करने लगता है (OSM, Google, Yandex)। और सामग्री का उपयोग करते समय सेवाओं के लाइसेंसिंग समझौतों के बारे में याद रखें। उन्हें मत तोड़ो।

Source: https://habr.com/ru/post/In166205/


All Articles