码迷,mamicode.com
首页 > 其他好文 > 详细

MeteoInfoLab脚本示例:加载地图图层

时间:2015-06-30 12:27:14      阅读:686      评论:0      收藏:0      [点我收藏+]

标签:

应用最广泛的的地图数据应该是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)

 

运行结果:

技术分享

MeteoInfoLab脚本示例:加载地图图层

标签:

原文地址:http://www.cnblogs.com/yaqiang/p/4609824.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!