2011-01-26 4 views
5

के साथ भू-स्थानिक डेटा विज़ुअलाइजेशन के लिए नि: शुल्क उच्च रिज़ॉल्यूशन उपग्रह छवियां कहां/कैसे प्राप्त करें I Python का उपयोग कर उच्च रिज़ॉल्यूशन उपग्रह छवियों के शीर्ष पर भू-स्थानिक डेटा (अधिकतर तापमैप) को ओवरले करना चाहते हैं। (पिछले कई वर्षों के भीतर कब्जा कर लिया) (i नौसिखिया हूँ, इसलिए ;-) मुझ पर कोमल हो)पायथन

यहाँ मेरी इच्छा सूची के

  • काफी विस्तृत सड़कों और इमारतों को दिखाने के लिए
  • काफी हाल ही में होना चाहिए है
  • निर्देशांक और छवियों/नक्शे का प्रक्षेपण पता होना चाहिए कि हीटमैप मैं बनाया ओवरले जा सकती है
  • आसान पुनर्प्राप्ति (उम्मीद, अजगर कोड की कई पंक्तियां सही छवियों होने का ख्याल रखेंगे)
  • मुफ्त

मुझे लगता है कि Google मानचित्र/पृथ्वी, याहू मानचित्र, बिंग, आदि ... संभावित उम्मीदवार हो सकते हैं, लेकिन मुझे यकीन नहीं है कि उन्हें आसानी से कैसे पहुंचाया जाए। कोड उदाहरण बहुत उपयोगी होंगे।

कोई सुझाव?

+1

यह http://code.activestate.com/recipes/496966-download-satellite-images-from-nasas-site/ मदद कर सकता है – Benjamin

+0

वहाँ गूगल मानचित्र/पृथ्वी, याहू नक्शा, आदि के लिए कोड कर रहे हैं? – user186477

+1

निशुल्क बीयर या "फ्री" जैसे फ्री स्पीच में "फ्री"? – Spacedman

उत्तर

4

Open Street Map Google मानचित्र के बराबर है (जो मुझे बहुत अच्छी तरह से नहीं पता)।

उनका डेटाबेस समय के साथ बढ़ता है। यह एक ओपन सोर्स मैप अधिग्रहण प्रयास है। वे कभी-कभी Google मानचित्र की तुलना में थोड़ा अधिक सटीक होते हैं, Berlin zoo example देखें।

इसमें कई एपीआई हैं, जो केवल पढ़ने योग्य पहुंच हैं: http://wiki.openstreetmap.org/wiki/XAPI

यह आरईएसटी प्रोटोकॉल का उपयोग प्रतीत होता है।

आरईएसटी और पायथन के उपयोग के लिए, मैं इस SO link का सुझाव दूंगा।

+1

विस्तृत, हालिया, उच्च-रिज़ॉल्यूशन उपग्रह इमेजरी में OpenStreetMapों की काफी कमी है। – Spacedman

1

एक संभावित स्रोत images from NASA World Wind है। आप look at the their source यह पता लगाने के लिए कर सकते हैं कि वे अपने डेटा स्रोतों तक कैसे पहुंचते हैं, और अपने आवेदन में ऐसा ही करते हैं।

4

तो तुम इस तरह लगभग ठीक कुछ करना चाहता हूँ:

http://www.jjguy.com/heatmap/

मैं "अजगर हीटमैप" के लिए googling द्वारा पाया है।

अब आप इन छवियों के साथ क्या करना चाहते हैं, इसके बारे में थोड़ा अस्पष्ट हैं, इसलिए याद रखें कि Google धरती इमेजरी कॉपीराइट है और आप उनके साथ क्या कर सकते हैं, इस पर प्रतिबंधों का एक सेट है।

1

गूगल मैप्स स्पष्ट मानचित्र टाइल ऑफ़लाइन उपयोग या उन्हें कैशिंग न करे, लेकिन मुझे लगता है कि माइक्रोसॉफ्ट बिंग मैप्स है इसके खिलाफ स्पष्ट रूप से कुछ नहीं कहा, और मैं तुम्हें व्यावसायिक रूप से आपके प्रोग्राम का उपयोग करने की योजना बना नहीं कर रहे हैं लगता है (?)

फिर, आप इसका इस्तेमाल कर सकते हैं। यह एक कैश बनाता है, पहले स्मृति से टाइल लोड कर रहा है, अन्यथा फोम डिस्क, इंटरनेट से, हमेशा पुन: उपयोग के लिए डिस्क पर सबकुछ कैश करता है। निस्संदेह आपको यह समझना होगा कि इसे कैसे ट्विक करना है, विशेष रूप से टाइल निर्देशांक और ज़ूम स्तर को कैसे प्राप्त करें, और इसके लिए मैं दृढ़ता से this site का सुझाव देता हूं। अच्छी पढ़ाई!

#!/usr/bin/env python 
# coding: utf-8 

import os 
import Image 
import random 
import urllib 
import cStringIO 
import cairo 
#from geofunctions import * 


class TileServer(object): 
    def __init__(self): 
     self.imdict = {} 
     self.surfdict = {} 
     self.layers = 'ROADMAP' 
     self.path = './' 
     self.urltemplate = 'http://ecn.t{4}.tiles.virtualearth.net/tiles/{3}{5}?g=0' 
     self.layerdict = {'SATELLITE': 'a', 'HYBRID': 'h', 'ROADMAP': 'r'} 

    def tiletoquadkey(self, xi, yi, z): 
     quadKey = '' 
     for i in range(z, 0, -1): 
      digit = 0 
      mask = 1 << (i - 1) 
      if(xi & mask) != 0: 
       digit += 1 
      if(yi & mask) != 0: 
       digit += 2 
      quadKey += str(digit) 
     return quadKey 

    def loadimage(self, fullname, tilekey): 
     im = Image.open(fullname) 
     self.imdict[tilekey] = im 
     return self.imdict[tilekey] 

    def tile_as_image(self, xi, yi, zoom): 
     tilekey = (xi, yi, zoom) 
     result = None 
     try: 
      result = self.imdict[tilekey] 
     except: 
      filename = '{}_{}_{}_{}.jpg'.format(zoom, xi, yi, self.layerdict[self.layers]) 
      fullname = self.path + filename 
      try: 
       result = self.loadimage(fullname, tilekey) 
      except: 
       server = random.choice(range(1,4)) 
       quadkey = self.tiletoquadkey(*tilekey) 
       print quadkey 
       url = self.urltemplate.format(xi, yi, zoom, self.layerdict[self.layers], server, quadkey) 
       print "Downloading tile %s to local cache." % filename 
       urllib.urlretrieve(url, fullname) 
       result = self.loadimage(fullname, tilekey) 
     return result 

if __name__ == "__main__": 
    ts = TileServer() 
    im = ts.tile_as_image(5, 9, 4) 
    im.show()