【GMT-学习1】GMT中加载shp数据

1 加载面数据

  1. 使用 ogr2ogr 将 Shapefile 格式转换为 GMT 可识别的 OGR/GMT 格式
ogr2ogr -f geo3al.gmt geo3al.shp -t_srs EPSG:4326

注:

  • 原始数据使用的是以米为单位的投影坐标,而非以经纬度表示的地理坐标。因而在使用 ogr2ogr 时需要加上 -t_srs EPSG:4326 参数进行坐标转换
  • 转换时 .dbf、.prj、.shx 等文件必须和 shp 文件放在同一目录
  1. 加载数据
gmt plot -R80/130/20/60 geo3al.gmt  -W0.5p -png shp
  1. 后续可以根据属性,用不同的颜色表示

—>可自定义CPT 色标文件,存储为.cpt文件

#第一列为属性表名称   第二列为属性颜色    第三列为图例中所要显示的名称
Q    255/242/186 ;Quaternary
\N    255/230/25 ;Neogene
Pg    253/154/82 ;Paleogene
T     242/249/29 ;Tertiary (undivided)
Cz   255/255/191 ;Cenozoic (undivided)
TK   242/250/140 ;Cretaceous-Tertiary

4.填充色块,地质年代从数据的 GEN_GLG 属性中提取,用不同的颜色表示

#-aZ="GEN_GLG" 使用 GEN_GLG 元数据作为 Z 值。
#-G+z 根据 Z 值和 CPT 文件确定填充颜色。
gmt plot -R80/130/20/60 geo3al.gmt -Cgeoage.cpt -aZ="GEN_GLG" -G+z -png shp 

5.图例中选择性显示

#不显示以B、F、N、#开头的内容
#将其他行的内容读入 label、color 和 period 变量中
  gawk '!/^($|B|F|N|#)/' $cpt | while read label color period
  do
  	#将这些变量的值写入 type_legend.txt 文件中,生成图例项。每个图例项的格式如下:
    echo "S 0.2c r 0.4c $color 0.5p 0.6c $period" >> type_legend.txt
    #具体来说,echo 命令在这里的作用是将 S 0.2c r 0.4c $color 0.5p 0.6c $period 这一行文本追加到 type_legend.txt 文件中,其中 $color 和 $period 是在 while 循环中从 hydrogeo.cpt 文件中读取的变量。
  done
#-----------------------------------------------------
#若仅仅只想读取前N=4行
# 初始化计数器
count=0
gawk '!/^($|B|F|N|#)/' $cpt | while read label color period
do
    # count=$((count + 1)):每次循环时,计数器 count 增加1。
    count=$((count + 1))
    
    # 输出一行到 type_legend.txt
    echo "S 0.2c r 0.4c $color 0.5p 0.6c $period" >> type_legend.txt
    
    # 如果计数器达到4,使用 break 退出循环,
    if [ $count -eq 4 ]; then
        break
    fi
done
#-----------------------------------------------------
#如果想在读取中间插入一个新变量,替换掉原始数据
#以替换掉第N=4个为例
# 初始化计数器
count=0
gawk '!/^($|B|F|N|#)/' $cpt | while read label color period
do
    # 增加计数器
    count=$((count + 1))
    #如果 count 等于 4,即在第四次迭代时,定义一个新变量 new_variable="CustomLabel" 并用它来替换原来的 period 变量。
    if [ $count -eq 4 ]; then
        new_variable="CustomLabel"
        echo "S 0.2c r 0.4c $color 0.5p 0.6c $new_variable" >> type_legend.txt
    else
        # 正常处理其他迭代
        echo "S 0.2c r 0.4c $color 0.5p 0.6c $period" >> type_legend.txt
    fi

    # 继续循环,直到文件读取完毕
done

#------------------------------------
#如果不想替换掉原来的某一行数据而是插入
#以替第N=4插入为例
# 初始化计数器
count=0
gawk '!/^($|B|F|N|#)/' $cpt | while read label color period
do
    # 增加计数器
    count=$((count + 1))

    # 如果是第四次迭代,插入一个新变量并输出
    if [ $count -eq 4 ]; then
        new_variable="CustomLabel"
        echo "S 0.2c r 0.4c $color 0.5p 0.6c $new_variable" >> type_legend.txt
    fi
        # 正常处理其他迭代
        echo "S 0.2c r 0.4c $color 0.5p 0.6c $period" >> type_legend.txt
    

    # 继续循环,直到文件读取完毕
done

2 加载点线数据

  • 注:加载点线shp数据和面方法的差别不大,但是若在绘制图中无法显示,在确认了绘制代码没错的前提下,有可能是shp数据的坐标系有问题,应该使用地理坐标系。
ogr2ogr -f OGR_GMT point.gmt  point.shp

参考:GMT 中文社区

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值