2010-08-25 17 views
7

क्या कोई ओपन सोर्स लाइब्रेरी (अधिमानतः पायथन) है जो एक kml फ़ाइल को एक छवि फ़ाइल में परिवर्तित करेगा?प्रोग्रामेटिक रूप से kml से छवि

मेरे पास एक ओपन सोर्स वेब-आधारित एप्लिकेशन है जो उपयोगकर्ताओं को Google धरती मानचित्र पर आकृतियों को आकर्षित करने की अनुमति देता है, और मैं उन्हें एक पीडीएफ प्रदान करना चाहता हूं जिसमें उनके मानचित्र को आकार के आकार के साथ शामिल किया गया हो।

अभी उपयोगकर्ताओं को प्रिंट स्क्रीन या किमील का निर्यात करने के लिए निर्देश दिए गए हैं, लेकिन पूर्व थोड़ा लंगड़ा लगता है और बाद में उन्हें एक छवि नहीं दी जाती है जब तक कि उनके पास अन्य सॉफ़्टवेयर तक पहुंच न हो।

क्या यह एक पाइप सपना है?

उत्तर

5

मैं हाल ही में Mapnik साथ कुछ इस तरह से किया था। सभी वैकल्पिक संकुल के साथ installing Mapnik के बाद, इस अजगर स्क्रिप्ट एक PDF या बिटमैप ग्राफिक पर एक KML फ़ाइल से एक रास्ता निर्यात कर सकते हैं:

#!/usr/bin/env python 

import mapnik 
import cairo 

m = mapnik.Map(15000, 15000, "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m [email protected] +wktext +no_defs") # end result: OpenStreetMap projection 
m.background = mapnik.Color(0, 0, 0, 0) 

bbox = mapnik.Envelope(-10000000, 2000000, -4000000, -19000000) # must be adjusted 
m.zoom_to_box(bbox) 

s = mapnik.Style() 
r = mapnik.Rule() 

polygonSymbolizer = mapnik.PolygonSymbolizer() 
polygonSymbolizer.fill_opacity = 0.0 
r.symbols.append(polygonSymbolizer) 

lineSymbolizer = mapnik.LineSymbolizer(mapnik.Color('red'), 1.0) 
r.symbols.append(lineSymbolizer) 

s.rules.append(r) 
m.append_style('My Style',s) 

lyr = mapnik.Layer('path', '+init=epsg:4326') 
lyr.datasource = mapnik.Ogr(file = './path.kml', layer = 'path') 
lyr.styles.append('My Style') 
m.layers.append(lyr) 

# mapnik.render_to_file(m,'./path.png', 'png') 

file = open('./path.pdf', 'wb') 
surface = cairo.PDFSurface(file.name, m.width, m.height) 
mapnik.render(m, surface) 
surface.finish() 
0

यह वास्तव में "रूपांतरित" का सवाल नहीं है; एम एल की चीजों के सभी प्रकार के कर सकते हैं - बहुभुज, माउस, लिंक, जानकारी, आदि

हालांकि, एम एल एक्सएमएल है, इसलिए वहाँ कोई कारण नहीं क्यों आप KML निकालने के लिए expat या etree की तरह कुछ के साथ फ़ाइल को पार्स नहीं कर सकता है बहुभुज परिभाषाएं। वहां से आप (उदाहरण के लिए) उन्हें पीडीएफ पर खींच सकते हैं।

2

http://mapnik.org/faq/ देखें, यह ओजीआर प्रारूपों का समर्थन करता है (केएमएल उनमें से एक है)। मैपनिक में पाइथन बाइंडिंग है और इसका उपयोग करना आसान है।

काहिरा रेंडरर पीडीएफ और एसवीजी का समर्थन करता है, तो आपको बस सब कुछ ठीक से सेट करने की आवश्यकता है।

0

इस पोस्ट को "एचटीएमएल 5, जावास्क्रिप्ट और कैनवास के साथ इंटरएक्टिव मैपिंग" पर एक नज़र डालें। यह एचटीएमएल 5 कैनवास तत्व के साथ केएमएल को प्रस्तुत करने के बारे में है।

उम्मीद है कि यह मदद करता है।

http://indiemaps.com/blog/2010/06/interactive-mapping-with-html5-javascript-and-canvas/

+0

लिंक मर चुका है, दुर्भाग्य से –

0

आप क़यास एक नक्शे पर छवियों साजिश matplotlib और उसके टूलकिट Basemap इस्तेमाल कर सकते हैं (यदि आप उस पृष्ठभूमि मानचित्र छवि को पुनर्प्राप्त कर सकते हैं जिसे उपयोगकर्ता चाहता है ...)।

संबंधित मुद्दे