读取超图数据文件中的图元数量并输出
时不时有统计数据量的需求,本来都是挨个打开数来着,后来发现,其实就是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]); }