2004
puter
ed in
Data
7
and
ware
DL is
plete
full
gine.
ctive
endly
(Le.
This
S.
d be
After
n the
The
| any
licks
nt or
louse
ut to
n the
e the
event
and
le for
er its
jile it
:eded
Es
gram,
oints.
rding
wing
h are
and
ram;
rface
and
nt or
dling
tation
while
gram
CAP
X P-
d by
on on
idling
] will
International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences, Vol XXXV, Part B4. Istanbul 2004
Figure 1
be going to step 3, but if user sends ‘datapoint’,
cleanup module will be running;
After modifying the input signal according to cleanup
rules, IPCBS sends required. commands/data to
MicroStation to draws Current point, as a part of a
feature and this point's coordinates will be added to
feature's point-list and we can see digitized point on
screen, which is first point of a LineString;
If MicroStation's active command is not being
finished, then dynamic motion event hook will be
activated, and one temporary dotted line will be
drawn and when P-Cursor moves around the screen,
this dotted line will be changes dynamically;
Steps 6 to 9 will continue, until user sends ‘Reset’. In
this case, MicroStation's active command will be
terminated. Next PCAP's data will say which
command should be run by IPCBS;
IPCBS will be pending until user closes the program.
So, IPCBS always goes to step 5 and waits for
another event;
illustrates flowchart of IPCBS program.
3. IPCBS'S DATA CLEANUP METHOD
3.1 IPCBS Cleanup Module
“Cleanup module” is heart of IPCBS program. The main
purpose of this module is REAL-TIME data cleaning. Assume
that user has already picked a point by P-Cursor. Now, this
point should be checked from cleanup and topological points of
view. The main steps are as following:
1.
Setting a search criterion surrounding the point, and
beginning to search for linear objects;
Snap to nearest linear feature if exists in the search
area using these rules:
a. If a node/vertex of linear feature exists, that
node/vertex would be selected as start point;
b. If none of vertices of founded linear feature
are exist in the search area; then it would be
snapped to the linear feature
perpendicularly, and one node will be
generated at that point on the linear feature;
Store this point in the LineString’s point list, and in
buffer of DGN also;
Draw a temporary dotted rubber band line from
previous point to anywhere user moves the P-Cursor,
(erase last temporary line at each motion of P-
Cursor);
Request for another point;
Check if this point is not located at the location of
previous point; (Caused by double click). If X and Y
of second point are as same as the first point, another
module checks whether the Z values are different then
a warning will be send to user to check his input data,
because the spatial distance is not zero and in this
case, duplication may be correct (for example in
digitizing building with different floors in different
elevation). But if X, Y and Z of both points are almost
same then program will give a message to user and
ask him to confirm whether he needs this point, or
not. If user needs this point, it will be added to the
DGN buffer and point list of LineString for drawing
in future. If user does not need this duplicate/near
point, then this point will be ignored and control will
go to step 4;
393
- Performing orientations
(interior, relative,
absolute)
- Other required settings
- start to digitize features
Loading
Manual PCAP
input by P- program
Cursor
LA» PCAP I/O
>| Interrupt
handling
module
Y
Ü Loading
mm mmm IPCBS
Suspicious for ! program
1 P-Cursor event )
! 3
Suspicious for
PCAP event
A — oo
i
I
I
Manual Keyin by
user (keyboard
or UI menu) for
drawing
command
Reset
Making decision
on PCAP event
by IPCBS event-
handling
function
Datapoint
Cleanup Module
Y
-Draw current point
-Active Dynamic motion
event hook
-Draw temporary dotted
line
-Add this point to
LineString point list
Figure 1. Flowchart of IPCBS program
Setting a search criterion surrounding this point, and
beginning to search for linear objects (with tolerance
dimension);
Snap to nearest linear feature in the search area if any
exists (using rules mentioned in step 2), go to step 3;
If no linear feature exists in the search area, then go to
step 3:
Go to step 4 and repeat the entire task from step 4 to
8. After third datapoint, if distance between current