Skip to main content

【mike】02流速图

基础流程

经过采样点示意图后,当前手上应该拥有以下图层:

  • 河道背景 - 线图层
  • 全局河道 - 线图层
  • 工程前河道 - 面图层
  • 工程后河道 - 面图层
  • 水位采样点 - 点图层
  • 流速流场采样点 - 点图层
  • 工程位置 - 点图层
  • 水文、水位站位置 - 点图层
  • 显示范围 - 面图层

新增的为数据图层:

  1. 图层生成:流速{工况}_DONE{n} - 线图层,通过编写工程或者手动提取,工程插件:cps_test > 00流速-生成等值线图层
  2. 显示修正:生成数据图层后,对齐进行最基本的视觉检查,将一些不需要显示的进行隐藏,或者将一些被隐藏的进行显示修正
  3. 显示范围:根据实际工况生成显示范围图层,该图层命名为显示范围.shp,添加一个字段pageID
  4. 从模板.mxd中打开,或者通过脚本将数据图层和模板mxd文件进行关联

图层生成

  1. 通过dfsu、mesh等文件,获取对应的河道河道shp(面)文件
    • 用来裁剪克里金插值后的数据
    • 用来制作底图的河道样式
  2. 数据删栏化
    • 分别将数据进行提取,最终导出xyz文件
    • 将xyz文件导入arcgis,具体步骤:
      • 点文件信息
      • 3D ASCII 文件转要素类
      • 点转栅格
  3. 数据插值,如果工程前后采用的网格不相同,则需要进行插值
  4. 数据差值计算,工程后-工程前,获得对应的数据删栏
    • 3D Analyst Tools > 删栏计算 > 减
  5. 数据平滑处理
    • 提取河道范围的栅格数据:数据管理工具>栅格>栅格处理>裁剪
    • 绘制等值线
    • 平滑等值线:10~30数值
    • 过滤等值线
      • 根据等值线值计算正负关系
      • 过滤一些太小的线段
  6. 数据展示

过滤字段

  • 仅限制长度
def test(Contour, Shape_Length):
Contour = float(round(Contour, 2))
length = int(Shape_Length)
limt = 1000

if length >= limt:
if Contour==0:
return "流速不变"
elif Contour>0:
return "流速增大"
else:
return "流速减少"
else:
return ""
test(!Contour!, !Shape_Length!)
  • 限制长度等值线范围
def test(Contour, Shape_Length):
Contour = float(round(Contour, 2))
length = round(Shape_Length, 2)
limt = 900
contour_limt = [0, 0.01, -0.01, 0.03, -0.03]

if length >= limt and Contour in contour_limt:
if Contour == 0:
return "流速不变"
elif Contour > 0:
return "流速增大"
else:
return "流速减少"
return ""
test(!Contour!, !Shape_Length!)
  • 仅过滤流速变化
def test(Contour):
Contour = float(round(Contour, 2))

if Contour == 0:
return "流速不变"
elif Contour> 0:
return "流速增大"
else:
return "流速减少"

test(!Contour!)

标注相关

  • 仅根据
// 假设当前字段名称为 
// static字段,记录了三种状态
// 流速增大、流速不变、流速减小
function FindLabel ( [static], [Contour])
{
tar = [static].toString()
if(tar !== ""){return [Contour]}
return "";
}
// 添加条件限制
function FindLabel ( [static], [Contour], [Shape_Length] )
{
var tar = [static].toString()
var limt = 300

if(tar != "" && [Shape_Length] >= limt) return [Contour]

return "";
}