International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences, Vol XXXV, Part B-YF. Istanbul 2004
The concept of the test is fairly simple but there are some more
difficult points in programming, which will not be discussed in
this paper. To test if the representative is inside of the polygonal
outline, it has to be connected with a very far point by a line.
Now the intersection points of this line with the outline are
counted. Even number of intersections means the point is
outside, an odd number of points means point is inside. This
test works also if the geometry has got void areas inside (Finley,
1998).
2.5 Select a building
To select a building the pick()-method of the Cortona Viewer is
used. This pick() method works with the "ray" concept. When
the user clicks into the scene the coordinates of the pointer are
taken and a ray is sent through this position. The first object hit
by the ray is the result of the pick() method. A pointer to this
object is returned and you have access to the object and its
fields. Now it is possible to read the DEF-Name of the returned
object and find the corresponding land registry dataset in the
connection table. With the dbf index the attribute information
can be read from the dbf dataset and be displayed in a dialog
(see Fig.2), the scene itself or used in any other way, for
example, written to a file.
This method enables the user to use the 3D scene as an interface
to the attribute data. So you can navigate through the scene and
get information about any object, which has connection
information. Though the connection is realized on a system
working with files, it is possible to get geometry and attribute
information from a database to do the connection. In this case a
connection table is not necessary, because the DEF-Name of the
3D object can be add as a column to the database table. So it is
possible to find object attributes by a SQL query. The
connection to the database could be realized by ODBC in case
of Visual C++, for example.
Figure 2. Selection and attribute display of the building
(© Stadtmessungsamt Stuttgart)
2.6 Surface Visualization
The surface information is given as a TIN in DXF format. This
format contains much information, which is not needed for
visualization, like layer numbers, line colors, etc. Therefore it
was parsed into a text file, which contains only the triangle
information.
24
To visualize the surface a rectangle is calculated around the area
with buildings. Then all triangles of the TIN, which are inside
of this rectangle are selected and converted into an IFS- Node.
We are working on a concept to create IFS-Nodes for each
parcel. At the moment, the surface is only one object so the
connection to parcel attributes is not possible. To get one object
for one parcel, which would be selectable, it is necessary to
intersect the 2D parcel outline with the TIN to get the parts of
the parcel for each triangle, as shown in figure 3.
Figure 3. Clipping of TIN based on parcel polygon
These "result" parts (polygons) can be transferred into an IFS-
Node. To visualize the surface for the buildings in scene, all
parcel objects for the “building”-rectangle have to be created
and visualized in the scene. In this way you can get a surface
consisting of selectable parcel objects. The outline of the parcel
is taken from the land registry dataset and it is connected to
attribute data, so the index of the attribute data record can be
used as DEF-Name for the created IFS-Node. In that way you
have a connection between 3D object and attributes of the land
registry.
To select a parcel object the pick() method is used again, and it
will return the result object, and with the dbf index stored in the
DEF-Name field the attributes can be read and displayed.
2.7 Query example
To show a kind of query or thematic map a small query example
was realized. The query functionality can be extended with
useful functions, but this test.software only wants to show what
is possible.
In this query example the user can color the building walls
according to the use of the building, so when the user navigates
through the scene, he can differentiate buildings with their
colors for example university buildings in blue, offices in green
etc, (see Fig.4).
To color the buildings a text file was created containing a table,
which connects a use with a RGB triple (use-color table).
To color all buildings in the scene the connection table is used
to find the corresponding data records to the buildings, the use
of the object is read from the data record, the corresponding
color is read from the use-color table and a VRML Viewer
interface function is used to color the building with this color.