zoukankan      html  css  js  c++  java
  • MeteoInfoLab脚本示例:加载地图图层

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

    运行结果:

  • 相关阅读:
    BZOJ 1070 修车
    BZOJ 1927 SDOI2010 星际竞速 最小费用最大流
    LOJ 2321 清华集训2017 无限之环 拆点+最小费用最大流
    EZOJ 宝石迷阵 建图+网络流匹配
    BZOJ 1711 吃饭dining/Luogu P1402 酒店之王 拆点+最大流流匹配
    POJ 1637 Sightseeing tour 建图+网络流
    POJ 1149 PIGS 建图,最大流
    【2018 1月集训 Day1】二分的代价
    【2019 1月集训 Day1】回文的后缀
    20181228 模拟赛 T3 字符串游戏 strGame 博弈论 字符串
  • 原文地址:https://www.cnblogs.com/yaqiang/p/4609824.html
Copyright © 2011-2022 走看看