标签:
应用最广泛的的地图数据应该是shape格式,网络上有很多免费下载资源。MeteoInfoLab中读取shape文件的函数是shaperead,参数即文件名,返回数据包含图形和属性信息的图层对象。矢量图层按照图元类型通常分点、线、面三种,都可以通过geoshow函数加入到地图坐标系(Axesm)中。在geoshow函数中可以指定图层的显示的Symbol(颜色等),可以设置facecolor, edgecolor, size等,这种情况下图层的所有图元都会以同一个Symbol来显示。也可以利用图层的属性信息来生成更复杂的图例(makesymbolspec函数),函数第一个参数是图元类型(point, line, polygon),还需要设置一个属性字段(field=‘NAME‘),然后利用属性数据来设置图例。这里例子中加载了rivers.shp图层,该图层是世界主要河流,这里只显示长江、黄河,用下面的代码处理:
ss = makesymbolspec(‘line‘, {‘value‘:‘Yangtze‘, ‘color‘:(0,255,255), ‘size‘:1}, {‘value‘:‘Huang He‘, ‘color‘:(0,255,255), ‘size‘:1}, field=‘NAME‘) geoshow(river_layer, symbolspec=ss)
例子中还加载了中国省会城市点图层,可以在geoshow函数中设置labelfield等参数来给图层添加标注(城市名)。
脚本代码如下:
#Set data folders basedir = ‘D:/MyProgram/Distribution/java/MeteoInfo/MeteoInfo‘ mapdir = os.path.join(basedir, ‘map‘) #Read shape files bou2_layer = shaperead(os.path.join(mapdir, ‘bou2_4p.shp‘)) bou1_layer = shaperead(os.path.join(mapdir, ‘bou1_4l.shp‘)) river_layer = shaperead(os.path.join(mapdir, ‘rivers.shp‘)) city_layer = shaperead(os.path.join(mapdir, ‘res1_4m.shp‘)) #Plot axesm() geoshow(bou2_layer, edgecolor=‘lightgray‘) geoshow(bou1_layer, facecolor=(0,0,255)) ss = makesymbolspec(‘line‘, {‘value‘:‘Yangtze‘, ‘color‘:(0,255,255), ‘size‘:1}, {‘value‘:‘Huang He‘, ‘color‘:(0,255,255), ‘size‘:1}, field=‘NAME‘) geoshow(river_layer, symbolspec=ss) geoshow(city_layer, facecolor=‘r‘, size=4, labelfield=‘NAME‘, fontname=u‘楷体‘, fontsize=16, yoffset=15) xlim(72, 136) ylim(16, 55)
运行结果:
标签:
原文地址:http://www.cnblogs.com/yaqiang/p/4609824.html