
हाल ही में, कार्टोग्राफिक टाइल की पीढ़ी के लिए सॉफ्टवेयर बनाने की चुनौती उत्पन्न हुई। एक आधार के रूप में, विकल्प
मेपलनिक पर गिर गया (इसके कुछ विकल्प हैं)। जैसा कि यह पता चला है, रास्ते में कई कठिनाइयां और अप्रत्याशित त्रुटियां थीं, लेकिन हम सब कुछ "टर्नकी" को कॉन्फ़िगर करने के तरीके के बारे में अधिक या कम स्पष्ट दस्तावेज नहीं पा सके। कुछ समय के लिए छेड़छाड़ करने के बाद, मैंने बहुत सारी रेक एकत्र करने में कामयाबी हासिल की और इस मामले को विजयी अंत तक पहुँचाया। इसके बारे में और लेख।
स्थापना उबंटू और डेबियन पर की गई थी। मैं तुरंत कहूंगा कि सॉफ़्टवेयर उत्पादों के नवीनतम संस्करणों का उपयोग करना बेहतर है, जो कभी-कभी रिपॉजिटरी में नहीं होते हैं। इन्हें डाउनलोड किया जा सकता है, यदि वांछित हो, तो आधिकारिक साइटों से मैन्युअल रूप से।
आवश्यक निर्भरता के अलावा, सामान्य मामले में हमें ज़रूरत है
- PostgreSQL> = 8.4
- PostGIS> = 1.5 <2
- अजगर 2.x
- मेपनिक> = 2
- Osm2pgsql
- बैश, पायथन और पोस्टग्रेक्यूएल के साथ काम करने का कुछ ज्ञान
PostgreSQL स्थापना
सबसे पहले, देखें कि हमारे पास रिपॉजिटरी में PostgreSQL का कौन सा संस्करण है:
$ apt-cache show postgresql
यदि संस्करण 8.4 या अधिक है, तो पैकेज स्थापित करें।
$ sudo apt-get install postgresql
अन्यथा, आधिकारिक वेबसाइट
www.postgresql.org/download/linux से पैकेज डाउनलोड करें और इसे इंस्टॉल करें। अगला, हमें अपने डेटाबेस को कॉन्फ़िगर करने की आवश्यकता है। डिफ़ॉल्ट रूप से, इसका उपयोगकर्ता पोस्टग्रैज है और आप केवल OC का उपयोग करके उससे केवल लॉग इन कर सकते हैं। हालाँकि, हम थोड़ा अलग तरीके से कार्य करेंगे, पहले pg_hba.conf फ़ाइल खोलें। आप पता लगाने की उपयोगिता का उपयोग करके इसके स्थान का पता लगा सकते हैं
$ sudo updatedb $ sudo locate pg_hba.conf
यदि आपके पास यह उपयोगिता स्थापित नहीं है, तो सेट करें
$ sudo apt-get install findutils locate
और ऊपर दिए गए आदेशों को दोहराएं। उदाहरण के लिए, मेरे पास यह फ़ाइल /etc/postgresql/8.4/main/pg_hba.conf पर है। इसे खोलें और संपादित करें।
$ sudo vi "/etc/postgresql/8.4/main/pg_hba.conf"
बदल देते हैं:
$ locate all all ident
पर
$ locate all all password
फ़ाइल सहेजें और PostgreSQL को पुनरारंभ करें।
$ sudo "/etc/init.d/postgresql-8.4 restart"
अब हम डेटाबेस के किसी भी उपयोगकर्ता को बना सकते हैं और बिना किसी एन्क्रिप्शन के सामान्य पासवर्ड के रूप में लॉग इन कर सकते हैं (सुपर सुरक्षा हमारे लिए महत्वपूर्ण नहीं है)। और हमें अपने OSM डेटा के लिए एक नया डेटाबेस भी चाहिए।
हम PostgreSQL प्रबंधन कंसोल पर जाते हैं।
$ su postgres $ psql postgres=
उपयोगकर्ता और डेटाबेस बनाया।
आप कमांड के साथ नए उपयोगकर्ता की संचालन क्षमता की जांच कर सकते हैं
$ psql -U osm -d osm -W
यदि आप पासवर्ड दर्ज करने के बाद PostgreSQL कंसोल में जाते हैं, तो सब कुछ ठीक हो गया।
पोस्टजीआईएस इंस्टालेशन
हमें PostGIS की आवश्यकता होगी। मेरी रिपॉजिटरी में संस्करण 1.4 था। चूंकि, इसे स्थापित करने के बाद, किसी कारण से मुझे पोस्टगिस नहीं मिला। एसक्यूएल फ़ाइल, मैंने इस संस्करण को ध्वस्त कर दिया और आधिकारिक साइट से संस्करण 1.5 डाउनलोड किया। इसलिए, लेख में, हम वही करेंगे।
$ wget "http://postgis.refractions.net/download/postgis-1.5.4.tar.gz"
संग्रह को अनपैक करें, इकट्ठा करें और इंस्टॉल करें।
$ tar xvfz "./postgis-1.5.4.tar.gz" $ cd "./postgis-1.5.4" $ sudo ./configure $ sudo make install
आवश्यक पुस्तकालयों की अनुपस्थिति में, उन्हें स्थापित करें।
इसके बाद, ओसम डेटाबेस में एक विशेष भाषा स्थापित करें।
$ createlang plpgsql osm -U osm -W
अब आपको आसम डेटाबेस में दो एसक्यूएल स्क्रिप्ट चलाने की जरूरत है: पोस्टगिस.एसक्यूएल और 900913.sql।
खोज उपयोगिता का उपयोग करके, हम उनका स्थान पाते हैं और उन्हें निष्पादित करते हैं।
$ psql -U osm -d osm -W -f "/usr/share/postgresql/8.4/contrib/postgis-1.5/postgis.sql" $ psql -U osm -d osm -W -f "/usr/share/osm2pgsql/900913.sql"
ध्यान दें, जैसा कि अभ्यास ने दिखाया है, इस कमांड को PostgreSQL सुपरयूज़र विशेषाधिकारों वाले उपयोगकर्ता से निष्पादित किया जाना चाहिए। यदि आपके पास
ERROR योजना की कोई समस्या और त्रुटियां हैं
: "ज्यामिति" मौजूद नहीं है , तो sql फ़ाइल निष्पादित करने से पहले निष्पादित करने का प्रयास करें:
$ sudo ldconfig
और sql फ़ाइल लॉन्च कमांड को फिर से जारी करें।
वह सब है! PostgreSQL सेटअप के साथ, हम कर रहे हैं। हम Mapnik स्थापित करने के लिए आगे बढ़ते हैं।
Mapnik स्थापित करें
$ sudo add-apt-repository ppa:mapnik/nightly-trunk $ sudo apt-get update $ sudo apt-get install libmapnik mapnik-utils python-mapnik
यदि सिस्टम "ऐड-एप्ट-रिपॉजिटरी: कमांड नहीं मिला" प्रदर्शित करता है, तो
$ sudo apt-get install python-software-properties
और ऊपर तीनों कमांड दोहराएं। मेपनिक स्थापित है। मैंने पायथन को स्थापित करने की आवश्यकता के बारे में नहीं लिखा था, क्योंकि ज्यादातर मामलों में यह हमेशा पहले से ही स्थापित होता है। मेपनिक के संचालन की जाँच करना।
$ python >>> import mapnik
यदि कोई त्रुटि नहीं हुई, तो सब कुछ ठीक हो गया। अब हम osm2pgsql को स्थापित करने के लिए आगे बढ़ते हैं
Osm2pgsql स्थापित करें
$ sudo apt-get install osm2pgsql
एक महत्वपूर्ण स्पर्श बना रहा। तथ्य यह है कि osm डेटा को डेटाबेस में निर्यात करने के लिए osm2pgsql द्वारा आपूर्ति की गई default.style फ़ाइल किसी कारण के लिए नवीनतम OSM प्रारूप के अनुरूप नहीं है। (शायद किसी को पता है क्यों?)। फ़ाइल को सही प्रारूप में डाउनलोड करें।
$ wget "http://svn.openstreetmap.org/applications/utils/export/osm2pgsql/default.style"
इसके बाद, जो डिफ़ॉल्ट रूप से osm2pgsql के साथ आया था उसे बदलें
$ sudo cp "./default.style" "/usr/share/osm2pgsql/default.style"
टाइल्स बनाने के लिए OpenStreetMap से स्क्रिप्ट स्थापित करना
OpenStreetMap
svn.openstreetmap.org रिपॉजिटरी में कई स्क्रिप्ट और कार्टोग्राफिक उपयोगिताओं हैं। हमें अजगर में लिखे गए अनुप्रयोगों में से एक की आवश्यकता होगी, जिसमें पहले से ही सभी स्क्रिप्ट शामिल हैं जिन्हें हमें मैपनिक के साथ काम करने की आवश्यकता है। इसे डाउनलोड करने के लिए आपको सबवर्सन इंस्टॉल करना होगा।
$ sudo apt-get install subversion
अब आप सुरक्षित रूप से OSM एप्लिकेशन डाउनलोड कर सकते हैं। इसके स्थान के लिए एक फ़ोल्डर बनाएँ। उदाहरण के लिए, मेरे पास यह / होम / ऑसम / मैपनिक है और एक चेकआउट करना है।
$ mkdir "/home/osm/mapnik" $ svn co "http://svn.openstreetmap.org/applications/rendering/mapnik" "/home/osm/mapnik"
अब एप्लिकेशन में स्थित स्क्रिप्ट को चलाएं।
$ bash /home/osm/mapnik/get-coastlines.sh
वह आवश्यक फाइलों को दुनिया के आकृतियों के साथ हमारे पास डाउनलोड करेगा।
अब आपको XML स्टाइलशीट बनाने की आवश्यकता है। यह निम्नलिखित कमांड के साथ किया जाता है:
$ python /home/osm/mapnik/generate_xml.py osm.xml my_osm.xml --dbname osm --user osm --password my_password --accept-none
PostgreSQL से कनेक्ट करने के लिए डेटा के साथ एक my_osm.xml फ़ाइल बनाई गई है।
पंख परीक्षण
तो वह क्षण आ गया है जब आप किसी भी OSM फ़ाइल को डाउनलोड कर सकते हैं और उसके आधार पर टाइलें बना सकते हैं। OSM फ़ाइलों को
wiki.openstreetmap.org/wiki/Planet.osm पर सूचीबद्ध साइटों से डाउनलोड किया जा सकता है
बेशक, आप पूरे Planet.osm फ़ाइल को डाउनलोड कर सकते हैं, लेकिन क्या आपको इसकी आवश्यकता है? जब अनपैक किया जाता है, तो इसका वजन 250 जीबी से अधिक होता है।
मान लीजिए कि हम स्केल 17 पर मॉस्को टाइल्स उत्पन्न करना चाहते हैं।
आवश्यक OSM फ़ाइल डाउनलोड करें।
$ wget "http://download.bbbike.org/osm/bbbike/Moscow/Moscow.osm.gz"
अब हम इसे डेटाबेस में निर्यात कर सकते हैं।
$ sudo osm2pgsql -U osm -d osm Moscow.osm.gz
वह सब है! यह केवल टाइल पीढ़ी की स्क्रिप्ट को चलाने के लिए बनी हुई है। लेकिन इससे पहले, हमें वांछित पैमाने और निर्देशांक को इंगित करने के लिए इसे थोड़ा संपादित करने की आवश्यकता है कि हम किस टाइल को प्राप्त करना चाहते हैं। /Home/osm/mapnik/generate_tiles.py फ़ाइल खोलें। हमारे my_osm.xml को इंगित करने के लिए mapfile चर सेट करें।
mapfile = "/home/osm/mapnik/my_osm.xml"
अगला, उस चर को फिर से परिभाषित करें जो इंगित करता है कि आप कहां टाइल जोड़ना चाहते हैं।
tile_dir = "/home/osm/mapnik/all_tiles"
हमारे द्वारा डाउनलोड की गई मॉस्को.ओएसएम फ़ाइल में वेक्टर डेटा के निर्देशांक हैं
xMin = 37.32000 yMin = 55.57000 xMax = 37.88000 yMax = 55.92000
हमें स्क्रिप्ट में ऐसी लाइनें मिलती हैं
bbox = (-180.0,-90.0, 180.0,90.0) render_tiles(bbox, mapfile, tile_dir, 0, 5, "World")
और उनसे पहले (ताकि मौजूदा कोड को ओवरराइट न करें) हम लिखते हैं:
bbox = (37.32000, 55.57000, 37.88000, 55.92000) render_tiles(bbox, mapfile, tile_dir, 17, 17, "Moscow") exit()
बाहर निकलने () लिखने की सलाह दी जाती है ताकि मॉस्को में टाइलें बनाने के बाद की स्क्रिप्ट पूरी दुनिया की पीढ़ी का उल्लंघन न करें।
4 और 5, रेंडर_टाइल्स फ़ंक्शन के पैरामीटर उस पैमाने को सेट करते हैं जिससे हम टाइलें उत्पन्न करेंगे। इस मामले में, हमने केवल 17 पैमाने चुने।
बचाओ और भागो।
$ python /home/osm/mapnik/generate_tiles.py
टाइल्स बनाने की प्रक्रिया चलेगी।
[UPD] आप एक बेहतरीन मैनुअल भी यहां
देख सकते हैं
switch2osm.org/serves-tiles/manually-building-a-tile-server