读取超图数据文件中的图元数量并输出

发布时间 2023-11-21 14:48:32作者: 首席吐槽官秦寿

时不时有统计数据量的需求,本来都是挨个打开数来着,后来发现,其实就是sqlite 3的数据库,干脆写个脚本得了。

 

<?php
// 本代码用于对超图数据文件中各个数据集的数量和类型进行统计
// udb/udd格式中udd是数据文件,udbx直接是数据文件,应该选择这两类文件作为参数,附加到代码命令后
// 获取文件参数
$str =$argv[1];
// 初始化图元类型常数
$typeName=array(
    1=>"点",
    3=>"线",
    5=>"面"
);
// 基本图层的排序归类
function getOrder($name){

    $nameOrder=array("省名点", "地级市", "县级市", "区县", "乡镇", "村", "市界", "区县界线", "高速公路", "都市高速路", "国道", "省道", "县道", "乡镇道路", "行人道路", "九级路", "其他道路", "地铁", "轮渡", "铁路", "水系(线)", "水系多边形", "岛屿(多边形)", "植被(多边形)", "功能面(多边形)", "餐饮", "批发零售", "金融保险", "运动休闲", "科技及技术服务", "兴趣区", "知名区域", "大城市区域", "商业设施及服务", "汽车销售及服务", "教育文化", "居民服务", "卫生社保", "农林牧渔业", "公用设施", "公司企业", "住宿", "交通运输仓储");
    $res=array_search($name,$nameOrder,true);
    return is_bool($res)?-1:$res;   
}
// 回显输入的文件名路径
echo "你输入的数据文件名称是:$str\n";
// 判断文件是否存在
if(!file_exists($str ))die("文件不存在");
// 打开sqlite数据库
$handle = new SQLite3($str);
// 从数据描述数据库中选择数据
$sqlstr="select SmDatasetID,SmDatasetName,SmDatasetType,SmObjectCount from SmRegister order by SmDatasetType,SmDatasetID";
$result = $handle->query($sqlstr);
// 打印表头
echo "序号\t排序\t名称\t类型\t数量\n";
// 自增变量
$i=1;
$row=array();
// 遍历数据并打印
while($res = $result->fetchArray()){
    echo($i."\t".getOrder($res[1])."\t".$res[1]."\t".$typeName[$res[2]]."\t".$res[3]."\n");
    $i++;
    $row[]=array($res[1],$typeName[$res[2]],$res[3]);
}