跳转到主要内容

Python的Terraserver模块

项目描述

pyTerra是一个Python模块,允许您向微软的Terraserver(http://msrmaps.com/)发出请求。使用它,您可以下载(较旧的)美国几乎所有地理范围的地图图像。

Terraserver为两个非常重要的地图产品提供了对美国几乎全部的覆盖,即地形图和数字正射影像(有时称为DOQs或DOQQs)。您可以在http://mapping.usgs.gov/www/ndop/了解更多关于DOQs的信息,以及更多关于地形图的信息http://mac.usgs.gov/mac/isb/pubs/booklets/symbols/。Terraserver已有一段时间没有更新,现在有许多其他图像源可用,但Terraserver是第一个拥有全国覆盖的。

所有方法都反映TerraService API。有关如何发出调用的更多信息,请参阅http://msrmaps.com/TerraService2.asmx?WSDL处的WSDL文件。

Terraserver将图像存储为瓦片金字塔。每个瓦片始终是200像素的平方,与其实际的地面分辨率无关。航空照片的分辨率有1、2、4、8、16、32和64米。地形图的所有上述分辨率都可用,除了1米。

获取指定区域的图像涉及三个步骤:1. 定义要下载区域的边界框。边界框是一个由框的左上角和左下角点定义的框。该点可以是地理坐标(北纬42.9332度 x 西经-93.2112度)或投影UTM坐标(东经437679.183和北纬4658340.891)。2. 向TerraServer发送请求,返回所有位于边界框内的瓦片。3. 向TerraServer发送请求以获取每个瓦片中的图像数据,并将其粘贴到新的PIL图像中。

历史

这个版本,0.9,使pyTerra与过去几年中发生的许多TerraServer变化保持最新。API已经略有变动,以避免与TerraServer USA的商业产品混淆,并且由于基于四叉树的图像缓存现在非常流行,TerraServer的SOAP API似乎有些过时。它确实提供了一些独特的东西,如元数据和地名录,这可能使它在其他环境中变得有用。我曾使用pyTerra作为avTerra的基础,avTerra是一个ArcView 3.x扩展,用于获取TerraServer图像。我怀疑pyTerra缺乏维护意味着avTerra处于混乱状态,但通过这次更新,它有可能被重新激活。

此代码的先前版本是PSF许可的,但这样做似乎有些愚蠢。0.9+现在是MIT许可,许可文本包含在源代码发布中。

除此之外,使这个代码库现代化的大部分工作都是为了虚荣心,尽管我仍然有一两样东西可能需要它。看看代码,很难相信它已经近九年了……

变更日志

0.9为pyTerra带来了许多变化。首先,SOAPpy已被移除,以换取suds。Suds对于简单任务来说比SOAPpy更好,并且它能够很好地处理Microsoft WSDL。转向Suds大大简化了内部结构,应该更容易理解。

我还将setup.py现代化,并基于distribute,声明了依赖项PILsuds。此外,之前必须手动运行的单元测试现在可以通过简单的python setup.py test调用获取。

最后,外部API已经以多种方式进行了更新。这包括诸如在适当的地方返回datetime实例、支持PNG等。由于多年未见有人使用pyTerra,我怀疑我做的API更改不会有太大影响。

用法

pyTerra现在包含两个模块——apiimage。这些以前是TerraImage.TerraImage和pyTerra.pyTerra的混乱模块结构。

简短示例

from pyTerra import image

class Object:
    pass

lg_ul = Object()
lg_ul.X = 433714.25
lg_ul.Y = 4661043.80
lg_ul.Zone = 15

lg_lr = Object()
lg_lr.X = 438603.35
lg_lr.Y = 4656591.96
lg_lr.Zone = 15

scale = 'Scale2m'
theme = 'Ortho'

img = image.TerraImage(ul, lr, scale, theme, lr.Zone, "/tmp")
t = img.download() # <-- PIL.Image instance you can do what you need with

有关在获取瓦片信息后获取图像的更多示例,请参阅pyTerra.image。测试目录还包含各种API方法的良好示例调用和预期输出。

项目详情


下载文件

下载适用于您平台的应用程序文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

pyTerra-0.9.tar.gz (17.9 kB 查看哈希值)

上传于 源代码

构建分发

pyTerra-0.9-py2.6.egg (15.9 kB 查看哈希值)

上传于 源代码

支持