2024年3月30日发(作者:敛文赋)
第
44
卷第
1
期
2021
年
1
月
测绘与空间地理信息
GEOMATICS
&
SPATIAL
INFORMATION
TECHNOLOGY
Vol.44
,
No.1
Jan.
,
2021
DOM
精度检查输出系统程序设计
张德鑫
,
张玉平
(
吉林省航测遥感院
,
吉林长春
130051
)
摘
要
:
DOM
生产执行两级检查一级验收制度
,
对
DOM
平面位置精度进行检查是数据质量检查的重要过程
。在
检查过程中需要对
DOM
成果精度进行评定
,
而这一过程重复工作量大,
耗费的时间较长
。
本文主要研究
DOM
精度评定工作的流程
、
成果评分的原则
;
ArcdS
Addin
开发技术及如何利用开源组件生成报表技术
;
并且结合使
用上述技术编写精度检查程序
。
在实际项目中对程序进行测试
,
实验证明
,
DOM
精度检查程序可以提高平面精
度评定检查效率
,
生成的报表数据准确
,
编写的软件可以用于实际生产并推广使用
。
关键词
:
DOM
精度评定
;
ArcdS
Addin
;
c#
;
NPOI
中图分类号
:
P209
文献标识码
:
A
文章编号
:
1672-5867
(
2021
)
01-0185-04
Program
Design
of
DOM
Precision
Inspection
Output
System
ZHANG
Dexin,
ZHANG
Yuping
(
Aerial
Remote
Sensing
Institute
of
Jilin
Province
,
Changchun
130051
,
China
)
Abstract
:DOM
production
implements
two-level
inspection
and
one-level
acceptance
system,
checking
the
position
accuracy
of
DOM
is
an
important
process
in
data
quality
inspection.
In
the
process
of
inspection,
it
is
necessary
to
evaluate
the
accuracy
of
DOM
results.
This
process
need
a
lot
of
work
and
it
takes
a
long
time.
In
this
paper,
we
studied
the
flow
of
DOM
precision
evaluation,
the
principle
of
scoring
results
;
we
studied
ArcGIS
Addin
development
technology
and
how
to
use
open
source
components
to
generate
reports
;
we
studied
how
to
using
these
techniques
to
write
a
accuracy
check
program.
Tested
the
program
in
the
actual
project,the
experimental
re
sults
show
that
the
DOM
accuracy
inspection
program
can
improve
the
efficiency
of
plane
accuracy
evaluation
and
inspection,
the
gen
erated
report
data
is
accurate,
and
the
software
products
can
be
used
in
practical
production
and
promotion.
Key
words
:
DOM
accuracy
evaluation
;
ArcGIS
Addin
;
c#
;
NPOI
0
引
言
ArcGIS
Addin
开发技术已经逐步应用于测绘行业
,
一
定报表的方法
。
2
)
研究样本检查评分标准及计算方法
。
3
)
ArcGIS
Addin
开发流程方法
、
AO
开发组件的学习
些程序开发人员应用其技术开发了大量的插件程序
。
NPOI
是一款开源组件
,
该组件小巧
、
功能齐全
、
使用方
与研究
。
4
)
开源组件
NPOI
的学习与研究
。
便
,
可以在不安装
Office
的情况下自由读写
、
编辑Excel
文
档
,
目前已经得到了广大软件开发人员的认可
。
本文研
5
)
开发出一套
DOM
精度检查输出系统
。
究
ArcGIS
Addin
开发技术并将开源组件技术应用于
DOM
2
数据库设计
2
.
1
建立控制点库
首先建立
GDB
数据库
,
新建检查点数据集
,
在本实验
中选择
“
CGCS2000_3_Degree_GK_CM_126E
”
作为数据集
的平面坐标系统
。
精度检查程序的开发中
。
编写的程序解决了工作人员检
查效率不高的问题
,
简化了质量评定过程
。希望这种程
序开发方式可以对读者起到启发与示范作用
。
1
研究内容
1
)
研究
DOM
纠正精度评定工作的流程
、
生成精度评
收稿日期
:
2019-08-26
2
.
2
字段设计
字段表见表
1
。
作者简介
:
张德鑫
(
1981
-
)
,
男
,
黑龙江兰西人
,
高级工程师
,
硕士
,2015
年毕业于武汉大学测绘工程专业
,
主要从事遥感与地理信息
系统应用开发工作
。
186
测绘与空间地理信息
2021
年
表
1
字段表
Tab
・
1
Field
table
字段名称
类型
长度
备注
点号文本
50
类型
文本
50
位置
文本
50
X
双精度
第一个点横坐标
Y
双精度
第一个点纵坐标
XX
双精度
第二个点横坐标
YY
双精度
第二个点纵坐标
BZ1
存放两点距离的平方
BZ2
存放两点距离
2
.
3
属性域设计
类型属性域表见表
2,
位置属性域表见表
3o
表
2
类型属性域表
Tab
・
2
Type
attribute
名称
代码备注
DOM
1
DLG
2
表
3
位置属性域表
Tab・
3
Location
attribute
名称
代码备注
房角
1
道路交叉口
2
墙角
3
其他
4
3
程序设计
3
.
1
程序设计总体思路
程序采用
ArcG1S
Addin
插件开发技术
,
开发工具为
VS2010
,
语言为
C#,ArcG1S
软件版本为
10.2,
工作流程为
:
1
)
用户在地图上输入两个点,
第一个点为
DOM
上位
置
,
第二个点为外业检查点或矢量图上采集的检查点
。
2
)
在用户输入的过程中
,程序根据用户输入的顺序
,
在点的属性里录入属性以区分哪个是
DOM
上的位置
,
哪
个是检查点的位置
。
3
)
用户每次要输入两个点作为一组点对
,
程序在用
户输入时
,
将这两个点的点号设置为相同的值
,
并且点号
递增。
4
)
计算每个点的
XY
坐标
,
存放在属性字段中
;
计算
每一组点对的两点距离
、
方差
,然后将数据存放在第一个
点的属性字段中
。
5
)
COPY
模版文件
,
改文件名为图名
.xls,
应用开源组
件
NPO1
将计算的结果输出到
EXCEL
表格中
,
在输出结
果的同时
,
根据方差
、
检查点数量等数据计算该幅图的得
分情况
,
评定分数
=
60+
(
N
-
n
)
x
40
/
0.7x
N
。
其中
N
=5
(
允
许中误差
)
,
n
:
中误差
。
3
.
2
软件功能设计
1)
用户输入点对
,
在输入的同时录入点号
。
2
)
用户编辑点对属性
,
即用户选择的点是什么类别
的,如房角
、
道路交叉口
、
墙角
。
3
)
计算点坐标
:
算出所有用户输入点的坐标
。
4
)
计算同名点坐标
:
利用相同的点号
,配对两个点
,
将第二个点的坐标存储到第一个点的属性字段中
。
5
)
计算误差与方差
:
利用两天距离公式计算两点
距离
。
6
)
捕捉功能
:
在用户选择检查点的时候
,
捕捉矢量的
节点
。
7
)
打开模版
:
预先做好精度检测模版文件
,
根据项目
不同选择不同的模版
。
8
)
导出检查信息
:
当误差超限的时候
,
将超限的位置
及图幅号列出并输出为文本文件
。
9
)
报表输出
:
输出报表
,
文件格式为
*
.xlSo
3
.
3
难点问题
在输出表格的程序编写过程中
,
因为操作系统拷贝
模版文件需要时间
,
而
System.
在发出拷贝指
令后程序就继续向下运行
,
当程序需要操作
EXCEL
时
,
文
件拷贝还没有完成
,
会造成程序出错
。
经过资料查询及
试验
,
应用
FileStream
类,采用流的方式拷贝文件可以解
决这一问题
。
另外一个需要注意
:
每次用户输入点之前
,
都要对之
前存在的点要素按点号大小进行排序
,
找到当前数据中
最大的点号
,
然后点号加一作为用户新输入数据的点号
。
具体内容见本文
4.1o
3
.
4
软件界面设计
软件界面如图
1
所示
。
加载厨层
□
□
G:w201
□
0
GF2669P
清除屏幕
选取评定点对
□
Q
G:w2017CheckDOMai
融碍
匸叼
取消命令
「
1+
算与输出
1
高
:1085
距离
低
:0
□
开启捕捉
捕捉距
|10
囹
接边检査子
图
1
软件界面
Fig
・
1
Soft
face
3
.
5
软件功能设计
1
)
输入
“
检查点对
”
检查点对如图
2
所示
。
功能说明
:
用户在
DOM
的房角用鼠标点一下
,
然后
在矢量数据的房角点一下,最后手工选取这一对点的位
置
。
软件会自动计算点号
、
类别
,
形成
“
检查点对
”
数据
。
第
1
期
张德鑫等
:
DOM
精度检查输出系统程序设计
187
如图
3
所示
。
图
2
检查点对图
Fig
・
2
Double
check
point
图
3
属性表
Fig
・
3
Attribute
table
2)
输出报表
在输出报表前先执行
“
计算
XY
坐标
”
,
主要是将
“
检
查点对
”
的坐标存储在属性字段中
。
“
计算同名点坐标
”
是将
“
检查点对
”
中类别为
DLG
的点坐标存储到类别为
“
dom
”
的点中
,
存放字段为
“
XX
”
和
“
YY
”
。
“
计算误差与
方差
”
功能是用两点距离公式将两个点号相同点
(
同名
点
)
的距离存放到
“
BZ1
”
中
,
将两点距离的平方存放到
“
BZ2
”
中
。
3)
报表成果
报表成果如图
4
所示
。
产品检查记录
产品名称
数字正射影像数据成果
生产单位
吉林省航测遥感院
检查项
数字正射影像平面位置精度检査
检測方式
比较
、
检测精度
高精度
序号点位
图上坐标
(a)
检测坐标
g)
较差
△
东坐标
北坐标东坐标北坐标
(
B
)
房角
H^353
4BMMB483
1.38
‘
1.89
2
房角
•MB.
437
4BMW768
1.54
2.
36
"UC1
>IOnOA1
O
fiOA
"UC1
A
CCF
JIOCOC1C
UOU
图
4
报表成果图
Fig
・
4
Export
result
4
程序部分源码
4
.
1
自动计算当前检查点对的点号
这个功能是在用户输入
“
检查点对
”
的时候完成的。
用户在影像上选择一个点的时候
,
程序重新读取已经录
入的检查点
,
并对点号进行排序
,
找出点号的最大值
M,
然后用
M+1
作为当前用户输入
“
检查点对
”
的点号
。
IFeatureClass
pFeatureClass
=
CheckDomGlobal
.
pPointF
eatureLayer.
F
eatureClass
;
//
定义一个要素类的全局
变量
IFeatureClassWrite
fr
=
(
IFeatureClassWrite
)
pFeature
Class
;//定义一个实现新增要素的接口实例
,
并将该实例
作用于当前图层的要素集
IWorkspaceEdit
w
=
(pFeatureClass
asIDataset
)
.Work
space
asIWorkspaceEdit
;//
定义一个工作编辑工作空间
,
用于开启前图层的编辑状态
int
nIndex
=
pFeatureClass.
Fields.
FindField
("
类
别
"
)
;
int
nNumIndex
=
pFeatureClass.
Fields.
FindField
(
"
点
号
"
)
;
IFeatureCursor
pFeatureCursor
=
pFeatureClass.
Search
(
null
,
false
)
;
IFeature
pFeaturelist
=
pFeatureCursor.
NextFeature
()
;
ArrayList
plist
=
newArrayList
()
;
int
intLastNum
=
0
;
if
(
pFeaturelist
=
=
null
)
{
intLastNum
=
0
;
else
while
(
pFeaturelist
!
=
null
)
{
string
strNum
=
pFeaturelist.
get
_
Value
(
nNumIndex
).
ToString(
)
;
int
intNum
=
int
.Parse(
strNum)
;
(
intNum)
;
pFeaturelist
=
ature(
)
;
(
)
;
string
strLastNum
=
plist[
-
1].ToString()
;
intLastNum
=
int
.Parse
(
strLastNum)
;
CheckDomGlobal
.
intCurrentNumber
=
(
intLastNum
+
1)
.ToString(
)
;
diting(
true
)
;
//
开启编辑状态
ditOperation
(
)
;
//
开启编辑操作
IFeature
pFeature
;
IGeometry
pGeometry
;
if
(
CheckDomGlobal
.Snap)
{
pGeometry
=
pPoint2
;
else
{
pGeometry
=
pt
;
}
pFeature
=
pFeatureClass.
CreateFeature
(
)
;
//
实例化
IFeature
对象
,
这样
IFeature
对象就具有当前图层上要素
的字段信息
=
pGeometry
;
//
设置
【
Feature
对象的
形状属性
_Value(nIndex,
"
1"
)
;
//
设置
【
Feature
对
象
“
类别
”
字段值为
“
1
”
_Value
(
nNumIndex
,
CheckDomGlobal
.int-
188
测绘与空间地理信息
2021
年
CurrentNumber)
;
(
)
;
//
保存[
Feature
对象
fr.
WriteFeature
(
pFeature
);//将
1Feature
对象
,
添加到
当前图层上
itOperation
(
)
;
//
停止编辑操作
iting(
true
)
;
//
关闭编辑状态
,
并保存修改
4
.
2
自动评分及保存电子表格文档
自动评分公式
:
评定分数
=
60+(
N
—
n
)
x40
/
0.
7x
No
其中
N
=5(
允许中误差
)
,
n
:
中误差
。
double
dboZhongW
uCha
=
Convert
.
ToDouble
(
strALL
)
;
double
dboResult
=
60
+
((5
—
dboZhongWuCha
)
*
40)
/
(0.7
*
5)
;
if
(dboResult
〉
二
100)
iResult
=
"
100";
else
iResult
=
ng(
"
#.#")
;
if
(dboResult
〉
二
75
&&
dboResult<
=
89)
strTemp
="
良
"
;
elseif
(dboResult
〉
二
90)
strTemp
="
优
"
;
elseif
(
dboResult<
=
74
&&dboResult〉
=
60)
strTemp
="
合格
"
;
else
strTemp
="
良
"
;
CopyFile(
strAppPath,
filename,
1024
*
1024
*
5)
;
//
自定义的函数
,
用于单线程拷贝模版文件
,
strApp-
Path
:
模版文件路径
;
filename
:
目标路径
HSSFWorkbook
workbook
;
//
引用
NPO1
的类库
,
定义
一个电子表格文档变量
FileStream
file
=
newFileStream
(
fileN
ame
,
FileMode
.
Open
,
FileAccess
.
Read
)
;
workbook
=
newHSSFWorkbook
(file)
;
HSSFSheet
sheet
=
et("
精度检测
"
)
asHSSFSheet
;
//
得到电子表格对象
1Cell
cellTemp39
_
12
=
sheet.
GetRow
(39).
GetCell
;
(12)
cellTemp39_lValue(
strTemp
)
;
//
把成绩写入
的电子表格中
cellTemp39_12
=
null
;
〃
关闭并保存文档
(
)
;
FileStream
writefile
=
newFileStream
(
fileN
ame,
FileM
ode
.Create
,
FileAccess
.Write)
;
workbook.
Write(
writefile)
;
(
)
;
5
工作效率比较分析
在没使用该软件之前
,
检查人员为了制作精度评定
表格
,
常需要两个人配合作业
。
工作方法如下
:
一个人用
光标在屏幕上选点
,
然后读数
;
第二个人用另一台电脑打
开
Excel
将听到的数据录入表格中
,
然后在
Excel
中编写
公式进行计算
。
这种工作方式
,
两个人评定一幅图大约
需要30
min,
应用该软件后
,
一个人10
min
就可以完成一
幅图,工作效率提高
6
倍以上
。
6
结束语
利用
ArcMap
进行影像数据的平面精度检查是方便
可行的
,
既可以开发插件工具解决工作中的实际问题
,
也
可以将其他开源组件整合到程序的开发过程中
,
降低开
发成本和软件使用成本
。
经过实际项目的验证
,
使用上
述技术开发软件切实可行
,
工作效率较高
。
相信不久的
将来
,
这种开发模式将得到广大用户的认可
,
并广泛
应用
。
参考文献
:
[1]
柳锦宝
,
张子民
,
张永福
,
等
.
组件式
G1S
开发技术与案
例教程
[
M].
北京
:
清华大学出版社
,
2010.
[2]
李崇贵
,
陈峥
,
丰德恩
,
等
.
ArcG1S
Engine
组件式开发及
应用
[M].
北京
:
科学出版社
,2012.
[3]
赵克会
,
田永中
,
王瑞青
,
等
.
基于
ArcG1S
建库效率和精
度研究
一一
以县级土地利用数据库建设为例
[J].
中国
农学通报
,
2009,
25(6)
:
257-260.
[4]
刘仁义
,
刘南
.ArcG1S
开发宝典
一一
从入门到精通
[
M].
北京
:
科学出版社
,
2006.
[5]
吴秀芹
,
张洪岩
,
李瑞改
,
等
.ArcG1S
9
地理信息系统应
用与实践
[
M].
北京
:
清华大学出版社
,2007.
[6]
胡鹏
,
黄杏元
,
华一新
.
地理信息系统教程
[
M].
武汉
:
武
汉大学出版社
,2002.
[7]
邢超
,
李斌
.ArcG1S
学习指南
—
—
ArcToolbox[M].
北京
:
科学出版社
,2010.
[8]
田庆
,
陈美阳
,
田慧云
.ArcG1S
地理信息系统详解
10.1
版
[M].
北京
:
北京希望电子出版社
,2014.
[9]
牟乃夏
,
王海银
,
李丹
,
等
.ArcG1S
Engine
地理信息系统
开发教程[町
.
北京
:
测绘出版社
,2015.
[
编辑
:
张曦
]
2024年3月30日发(作者:敛文赋)
第
44
卷第
1
期
2021
年
1
月
测绘与空间地理信息
GEOMATICS
&
SPATIAL
INFORMATION
TECHNOLOGY
Vol.44
,
No.1
Jan.
,
2021
DOM
精度检查输出系统程序设计
张德鑫
,
张玉平
(
吉林省航测遥感院
,
吉林长春
130051
)
摘
要
:
DOM
生产执行两级检查一级验收制度
,
对
DOM
平面位置精度进行检查是数据质量检查的重要过程
。在
检查过程中需要对
DOM
成果精度进行评定
,
而这一过程重复工作量大,
耗费的时间较长
。
本文主要研究
DOM
精度评定工作的流程
、
成果评分的原则
;
ArcdS
Addin
开发技术及如何利用开源组件生成报表技术
;
并且结合使
用上述技术编写精度检查程序
。
在实际项目中对程序进行测试
,
实验证明
,
DOM
精度检查程序可以提高平面精
度评定检查效率
,
生成的报表数据准确
,
编写的软件可以用于实际生产并推广使用
。
关键词
:
DOM
精度评定
;
ArcdS
Addin
;
c#
;
NPOI
中图分类号
:
P209
文献标识码
:
A
文章编号
:
1672-5867
(
2021
)
01-0185-04
Program
Design
of
DOM
Precision
Inspection
Output
System
ZHANG
Dexin,
ZHANG
Yuping
(
Aerial
Remote
Sensing
Institute
of
Jilin
Province
,
Changchun
130051
,
China
)
Abstract
:DOM
production
implements
two-level
inspection
and
one-level
acceptance
system,
checking
the
position
accuracy
of
DOM
is
an
important
process
in
data
quality
inspection.
In
the
process
of
inspection,
it
is
necessary
to
evaluate
the
accuracy
of
DOM
results.
This
process
need
a
lot
of
work
and
it
takes
a
long
time.
In
this
paper,
we
studied
the
flow
of
DOM
precision
evaluation,
the
principle
of
scoring
results
;
we
studied
ArcGIS
Addin
development
technology
and
how
to
use
open
source
components
to
generate
reports
;
we
studied
how
to
using
these
techniques
to
write
a
accuracy
check
program.
Tested
the
program
in
the
actual
project,the
experimental
re
sults
show
that
the
DOM
accuracy
inspection
program
can
improve
the
efficiency
of
plane
accuracy
evaluation
and
inspection,
the
gen
erated
report
data
is
accurate,
and
the
software
products
can
be
used
in
practical
production
and
promotion.
Key
words
:
DOM
accuracy
evaluation
;
ArcGIS
Addin
;
c#
;
NPOI
0
引
言
ArcGIS
Addin
开发技术已经逐步应用于测绘行业
,
一
定报表的方法
。
2
)
研究样本检查评分标准及计算方法
。
3
)
ArcGIS
Addin
开发流程方法
、
AO
开发组件的学习
些程序开发人员应用其技术开发了大量的插件程序
。
NPOI
是一款开源组件
,
该组件小巧
、
功能齐全
、
使用方
与研究
。
4
)
开源组件
NPOI
的学习与研究
。
便
,
可以在不安装
Office
的情况下自由读写
、
编辑Excel
文
档
,
目前已经得到了广大软件开发人员的认可
。
本文研
5
)
开发出一套
DOM
精度检查输出系统
。
究
ArcGIS
Addin
开发技术并将开源组件技术应用于
DOM
2
数据库设计
2
.
1
建立控制点库
首先建立
GDB
数据库
,
新建检查点数据集
,
在本实验
中选择
“
CGCS2000_3_Degree_GK_CM_126E
”
作为数据集
的平面坐标系统
。
精度检查程序的开发中
。
编写的程序解决了工作人员检
查效率不高的问题
,
简化了质量评定过程
。希望这种程
序开发方式可以对读者起到启发与示范作用
。
1
研究内容
1
)
研究
DOM
纠正精度评定工作的流程
、
生成精度评
收稿日期
:
2019-08-26
2
.
2
字段设计
字段表见表
1
。
作者简介
:
张德鑫
(
1981
-
)
,
男
,
黑龙江兰西人
,
高级工程师
,
硕士
,2015
年毕业于武汉大学测绘工程专业
,
主要从事遥感与地理信息
系统应用开发工作
。
186
测绘与空间地理信息
2021
年
表
1
字段表
Tab
・
1
Field
table
字段名称
类型
长度
备注
点号文本
50
类型
文本
50
位置
文本
50
X
双精度
第一个点横坐标
Y
双精度
第一个点纵坐标
XX
双精度
第二个点横坐标
YY
双精度
第二个点纵坐标
BZ1
存放两点距离的平方
BZ2
存放两点距离
2
.
3
属性域设计
类型属性域表见表
2,
位置属性域表见表
3o
表
2
类型属性域表
Tab
・
2
Type
attribute
名称
代码备注
DOM
1
DLG
2
表
3
位置属性域表
Tab・
3
Location
attribute
名称
代码备注
房角
1
道路交叉口
2
墙角
3
其他
4
3
程序设计
3
.
1
程序设计总体思路
程序采用
ArcG1S
Addin
插件开发技术
,
开发工具为
VS2010
,
语言为
C#,ArcG1S
软件版本为
10.2,
工作流程为
:
1
)
用户在地图上输入两个点,
第一个点为
DOM
上位
置
,
第二个点为外业检查点或矢量图上采集的检查点
。
2
)
在用户输入的过程中
,程序根据用户输入的顺序
,
在点的属性里录入属性以区分哪个是
DOM
上的位置
,
哪
个是检查点的位置
。
3
)
用户每次要输入两个点作为一组点对
,
程序在用
户输入时
,
将这两个点的点号设置为相同的值
,
并且点号
递增。
4
)
计算每个点的
XY
坐标
,
存放在属性字段中
;
计算
每一组点对的两点距离
、
方差
,然后将数据存放在第一个
点的属性字段中
。
5
)
COPY
模版文件
,
改文件名为图名
.xls,
应用开源组
件
NPO1
将计算的结果输出到
EXCEL
表格中
,
在输出结
果的同时
,
根据方差
、
检查点数量等数据计算该幅图的得
分情况
,
评定分数
=
60+
(
N
-
n
)
x
40
/
0.7x
N
。
其中
N
=5
(
允
许中误差
)
,
n
:
中误差
。
3
.
2
软件功能设计
1)
用户输入点对
,
在输入的同时录入点号
。
2
)
用户编辑点对属性
,
即用户选择的点是什么类别
的,如房角
、
道路交叉口
、
墙角
。
3
)
计算点坐标
:
算出所有用户输入点的坐标
。
4
)
计算同名点坐标
:
利用相同的点号
,配对两个点
,
将第二个点的坐标存储到第一个点的属性字段中
。
5
)
计算误差与方差
:
利用两天距离公式计算两点
距离
。
6
)
捕捉功能
:
在用户选择检查点的时候
,
捕捉矢量的
节点
。
7
)
打开模版
:
预先做好精度检测模版文件
,
根据项目
不同选择不同的模版
。
8
)
导出检查信息
:
当误差超限的时候
,
将超限的位置
及图幅号列出并输出为文本文件
。
9
)
报表输出
:
输出报表
,
文件格式为
*
.xlSo
3
.
3
难点问题
在输出表格的程序编写过程中
,
因为操作系统拷贝
模版文件需要时间
,
而
System.
在发出拷贝指
令后程序就继续向下运行
,
当程序需要操作
EXCEL
时
,
文
件拷贝还没有完成
,
会造成程序出错
。
经过资料查询及
试验
,
应用
FileStream
类,采用流的方式拷贝文件可以解
决这一问题
。
另外一个需要注意
:
每次用户输入点之前
,
都要对之
前存在的点要素按点号大小进行排序
,
找到当前数据中
最大的点号
,
然后点号加一作为用户新输入数据的点号
。
具体内容见本文
4.1o
3
.
4
软件界面设计
软件界面如图
1
所示
。
加载厨层
□
□
G:w201
□
0
GF2669P
清除屏幕
选取评定点对
□
Q
G:w2017CheckDOMai
融碍
匸叼
取消命令
「
1+
算与输出
1
高
:1085
距离
低
:0
□
开启捕捉
捕捉距
|10
囹
接边检査子
图
1
软件界面
Fig
・
1
Soft
face
3
.
5
软件功能设计
1
)
输入
“
检查点对
”
检查点对如图
2
所示
。
功能说明
:
用户在
DOM
的房角用鼠标点一下
,
然后
在矢量数据的房角点一下,最后手工选取这一对点的位
置
。
软件会自动计算点号
、
类别
,
形成
“
检查点对
”
数据
。
第
1
期
张德鑫等
:
DOM
精度检查输出系统程序设计
187
如图
3
所示
。
图
2
检查点对图
Fig
・
2
Double
check
point
图
3
属性表
Fig
・
3
Attribute
table
2)
输出报表
在输出报表前先执行
“
计算
XY
坐标
”
,
主要是将
“
检
查点对
”
的坐标存储在属性字段中
。
“
计算同名点坐标
”
是将
“
检查点对
”
中类别为
DLG
的点坐标存储到类别为
“
dom
”
的点中
,
存放字段为
“
XX
”
和
“
YY
”
。
“
计算误差与
方差
”
功能是用两点距离公式将两个点号相同点
(
同名
点
)
的距离存放到
“
BZ1
”
中
,
将两点距离的平方存放到
“
BZ2
”
中
。
3)
报表成果
报表成果如图
4
所示
。
产品检查记录
产品名称
数字正射影像数据成果
生产单位
吉林省航测遥感院
检查项
数字正射影像平面位置精度检査
检測方式
比较
、
检测精度
高精度
序号点位
图上坐标
(a)
检测坐标
g)
较差
△
东坐标
北坐标东坐标北坐标
(
B
)
房角
H^353
4BMMB483
1.38
‘
1.89
2
房角
•MB.
437
4BMW768
1.54
2.
36
"UC1
>IOnOA1
O
fiOA
"UC1
A
CCF
JIOCOC1C
UOU
图
4
报表成果图
Fig
・
4
Export
result
4
程序部分源码
4
.
1
自动计算当前检查点对的点号
这个功能是在用户输入
“
检查点对
”
的时候完成的。
用户在影像上选择一个点的时候
,
程序重新读取已经录
入的检查点
,
并对点号进行排序
,
找出点号的最大值
M,
然后用
M+1
作为当前用户输入
“
检查点对
”
的点号
。
IFeatureClass
pFeatureClass
=
CheckDomGlobal
.
pPointF
eatureLayer.
F
eatureClass
;
//
定义一个要素类的全局
变量
IFeatureClassWrite
fr
=
(
IFeatureClassWrite
)
pFeature
Class
;//定义一个实现新增要素的接口实例
,
并将该实例
作用于当前图层的要素集
IWorkspaceEdit
w
=
(pFeatureClass
asIDataset
)
.Work
space
asIWorkspaceEdit
;//
定义一个工作编辑工作空间
,
用于开启前图层的编辑状态
int
nIndex
=
pFeatureClass.
Fields.
FindField
("
类
别
"
)
;
int
nNumIndex
=
pFeatureClass.
Fields.
FindField
(
"
点
号
"
)
;
IFeatureCursor
pFeatureCursor
=
pFeatureClass.
Search
(
null
,
false
)
;
IFeature
pFeaturelist
=
pFeatureCursor.
NextFeature
()
;
ArrayList
plist
=
newArrayList
()
;
int
intLastNum
=
0
;
if
(
pFeaturelist
=
=
null
)
{
intLastNum
=
0
;
else
while
(
pFeaturelist
!
=
null
)
{
string
strNum
=
pFeaturelist.
get
_
Value
(
nNumIndex
).
ToString(
)
;
int
intNum
=
int
.Parse(
strNum)
;
(
intNum)
;
pFeaturelist
=
ature(
)
;
(
)
;
string
strLastNum
=
plist[
-
1].ToString()
;
intLastNum
=
int
.Parse
(
strLastNum)
;
CheckDomGlobal
.
intCurrentNumber
=
(
intLastNum
+
1)
.ToString(
)
;
diting(
true
)
;
//
开启编辑状态
ditOperation
(
)
;
//
开启编辑操作
IFeature
pFeature
;
IGeometry
pGeometry
;
if
(
CheckDomGlobal
.Snap)
{
pGeometry
=
pPoint2
;
else
{
pGeometry
=
pt
;
}
pFeature
=
pFeatureClass.
CreateFeature
(
)
;
//
实例化
IFeature
对象
,
这样
IFeature
对象就具有当前图层上要素
的字段信息
=
pGeometry
;
//
设置
【
Feature
对象的
形状属性
_Value(nIndex,
"
1"
)
;
//
设置
【
Feature
对
象
“
类别
”
字段值为
“
1
”
_Value
(
nNumIndex
,
CheckDomGlobal
.int-
188
测绘与空间地理信息
2021
年
CurrentNumber)
;
(
)
;
//
保存[
Feature
对象
fr.
WriteFeature
(
pFeature
);//将
1Feature
对象
,
添加到
当前图层上
itOperation
(
)
;
//
停止编辑操作
iting(
true
)
;
//
关闭编辑状态
,
并保存修改
4
.
2
自动评分及保存电子表格文档
自动评分公式
:
评定分数
=
60+(
N
—
n
)
x40
/
0.
7x
No
其中
N
=5(
允许中误差
)
,
n
:
中误差
。
double
dboZhongW
uCha
=
Convert
.
ToDouble
(
strALL
)
;
double
dboResult
=
60
+
((5
—
dboZhongWuCha
)
*
40)
/
(0.7
*
5)
;
if
(dboResult
〉
二
100)
iResult
=
"
100";
else
iResult
=
ng(
"
#.#")
;
if
(dboResult
〉
二
75
&&
dboResult<
=
89)
strTemp
="
良
"
;
elseif
(dboResult
〉
二
90)
strTemp
="
优
"
;
elseif
(
dboResult<
=
74
&&dboResult〉
=
60)
strTemp
="
合格
"
;
else
strTemp
="
良
"
;
CopyFile(
strAppPath,
filename,
1024
*
1024
*
5)
;
//
自定义的函数
,
用于单线程拷贝模版文件
,
strApp-
Path
:
模版文件路径
;
filename
:
目标路径
HSSFWorkbook
workbook
;
//
引用
NPO1
的类库
,
定义
一个电子表格文档变量
FileStream
file
=
newFileStream
(
fileN
ame
,
FileMode
.
Open
,
FileAccess
.
Read
)
;
workbook
=
newHSSFWorkbook
(file)
;
HSSFSheet
sheet
=
et("
精度检测
"
)
asHSSFSheet
;
//
得到电子表格对象
1Cell
cellTemp39
_
12
=
sheet.
GetRow
(39).
GetCell
;
(12)
cellTemp39_lValue(
strTemp
)
;
//
把成绩写入
的电子表格中
cellTemp39_12
=
null
;
〃
关闭并保存文档
(
)
;
FileStream
writefile
=
newFileStream
(
fileN
ame,
FileM
ode
.Create
,
FileAccess
.Write)
;
workbook.
Write(
writefile)
;
(
)
;
5
工作效率比较分析
在没使用该软件之前
,
检查人员为了制作精度评定
表格
,
常需要两个人配合作业
。
工作方法如下
:
一个人用
光标在屏幕上选点
,
然后读数
;
第二个人用另一台电脑打
开
Excel
将听到的数据录入表格中
,
然后在
Excel
中编写
公式进行计算
。
这种工作方式
,
两个人评定一幅图大约
需要30
min,
应用该软件后
,
一个人10
min
就可以完成一
幅图,工作效率提高
6
倍以上
。
6
结束语
利用
ArcMap
进行影像数据的平面精度检查是方便
可行的
,
既可以开发插件工具解决工作中的实际问题
,
也
可以将其他开源组件整合到程序的开发过程中
,
降低开
发成本和软件使用成本
。
经过实际项目的验证
,
使用上
述技术开发软件切实可行
,
工作效率较高
。
相信不久的
将来
,
这种开发模式将得到广大用户的认可
,
并广泛
应用
。
参考文献
:
[1]
柳锦宝
,
张子民
,
张永福
,
等
.
组件式
G1S
开发技术与案
例教程
[
M].
北京
:
清华大学出版社
,
2010.
[2]
李崇贵
,
陈峥
,
丰德恩
,
等
.
ArcG1S
Engine
组件式开发及
应用
[M].
北京
:
科学出版社
,2012.
[3]
赵克会
,
田永中
,
王瑞青
,
等
.
基于
ArcG1S
建库效率和精
度研究
一一
以县级土地利用数据库建设为例
[J].
中国
农学通报
,
2009,
25(6)
:
257-260.
[4]
刘仁义
,
刘南
.ArcG1S
开发宝典
一一
从入门到精通
[
M].
北京
:
科学出版社
,
2006.
[5]
吴秀芹
,
张洪岩
,
李瑞改
,
等
.ArcG1S
9
地理信息系统应
用与实践
[
M].
北京
:
清华大学出版社
,2007.
[6]
胡鹏
,
黄杏元
,
华一新
.
地理信息系统教程
[
M].
武汉
:
武
汉大学出版社
,2002.
[7]
邢超
,
李斌
.ArcG1S
学习指南
—
—
ArcToolbox[M].
北京
:
科学出版社
,2010.
[8]
田庆
,
陈美阳
,
田慧云
.ArcG1S
地理信息系统详解
10.1
版
[M].
北京
:
北京希望电子出版社
,2014.
[9]
牟乃夏
,
王海银
,
李丹
,
等
.ArcG1S
Engine
地理信息系统
开发教程[町
.
北京
:
测绘出版社
,2015.
[
编辑
:
张曦
]