2024-04-29 16:58:11 发布
网友
我想使用python将地理空间数据(主要是热图)覆盖在高分辨率卫星图像之上。(我是新手,所以对我要温柔;—))
这是我的心愿单
我认为谷歌地图/地球,雅虎地图,必应等。。。可能是潜在的候选人,但我不确定如何方便地获得他们。代码示例将非常有用。
有什么建议吗?
谷歌地图明确禁止离线使用地图块或缓存地图块,但我认为微软必应地图没有明确表示反对,我猜你也不打算在商业上使用你的程序(?)
那么,你可以用这个。它创建一个缓存,首先从内存加载一个磁贴,或者从磁盘加载,或者从internet加载,总是将所有内容缓存到磁盘以供重用。当然,你必须找出如何调整它,特别是如何得到你需要的平铺坐标和缩放级别,为此我强烈建议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()
所以你想做一件几乎完全像这样的事情:
http://www.jjguy.com/heatmap/
我在谷歌上找到了“Python热图”。
现在你有点不清楚你想用这些图片做什么,所以记住Google Earth图片是受版权保护的,你可以用它们做什么有一系列限制。
Open Street Map相当于Google地图(我不太清楚)。
他们的数据库随着时间的推移而增加。这是一个开源的地图采集尝试。它们有时比Google地图更精确,请参见Berlin zoo example。
它有几个api,它们是只读访问:http://wiki.openstreetmap.org/wiki/XAPI。
它似乎使用了REST协议。
对于REST和Python的使用,我建议使用这个SO link。
谷歌地图明确禁止离线使用地图块或缓存地图块,但我认为微软必应地图没有明确表示反对,我猜你也不打算在商业上使用你的程序(?)
那么,你可以用这个。它创建一个缓存,首先从内存加载一个磁贴,或者从磁盘加载,或者从internet加载,总是将所有内容缓存到磁盘以供重用。当然,你必须找出如何调整它,特别是如何得到你需要的平铺坐标和缩放级别,为此我强烈建议this site。好好学习!
所以你想做一件几乎完全像这样的事情:
http://www.jjguy.com/heatmap/
我在谷歌上找到了“Python热图”。
现在你有点不清楚你想用这些图片做什么,所以记住Google Earth图片是受版权保护的,你可以用它们做什么有一系列限制。
Open Street Map相当于Google地图(我不太清楚)。
他们的数据库随着时间的推移而增加。这是一个开源的地图采集尝试。它们有时比Google地图更精确,请参见Berlin zoo example。
它有几个api,它们是只读访问:http://wiki.openstreetmap.org/wiki/XAPI。
它似乎使用了REST协议。
对于REST和Python的使用,我建议使用这个SO link。
相关问题 更多 >
编程相关推荐