访问量: 271 次浏览
Basemap是matplotlib提供的用于在地图上绘制二维数据的工具。
它不是matplotlib默认安装的一部分(源码竟然包竟然100M以上,难怪不被默认包含)。所以需要我们自己动手安装:
https://github.com/matplotlib/basemap
通过git或者直接下载压缩的源码包。而后解压,查看README
我使用的Ubuntu 11.04,先安装一些东西
sudo apt-get install python-matplotlib swig python2.7-dev
而后按照安装说明:
进入 GEOS 子目录
./configure --enable-python make sudo make install
回到顶级目录
sudo python setup.py install
按照README,运行例子确认安装是否成功,切换到examples目录,运行simpletest.py

python simpletest.py
basemap 例子中有一个wxpython的例子 embedding_map_in_wx.py
我们参考它写一个pyqt4的例子,运行起来

代码如下:
"""
An example of how to use Basemap in pyqt4 application.
Copyright(C) 2011 dbzhang800#gmail.com
"""
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
from mpl_toolkits.basemap import Basemap
from PyQt4 import QtGui
class Widget(FigureCanvas):
def __init__(self, parent=None, width=5, height=4, dpi=100):
fig = Figure(figsize=(width, height), dpi=100)
FigureCanvas.__init__(self, fig)
self.setParent(parent)
self.axes = fig.add_subplot(111)
map = Basemap(ax=self.axes)
map.drawcoastlines()
map.drawcountries()
map.drawmapboundary()
map.fillcontinents(color='coral', lake_color='aqua')
map.drawmapboundary(fill_color='aqua')
self.setWindowTitle("PyQt4 and Basemap -- dbzhang800")
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())