Hi Mattias,
On 6 Oct 2005 at 21:28, Matthias Basler wrote:
Well, I looked at JTS. JTS can intersect (or union) two geometries
and
create a new geometry from it. It doesn't need to know if the two
geometries are "feature attributes" or are used in a CAD program or
anything else. Likewise I believe a topology validation engine does
not need to know anything about "Features", "Attributes" (or
generally
speaking the context in which it is used) to do the (basic)
validation.
I understand. I also understand that probably you have a more
"mathematical" approach to topology, while I'm mostly focused on
topology application to geographic databases. Moreover, my personal
view of GIS is trongly "database oriented", so to me geometry is
nothing more than an attribute like name, address, road type and so
on.
Sure the two approaches are not "incompatible" but need to be somehow
"resized" and placed correctly one near the other so we can plan a
good API for topology.
BTW: I don't like CAD because CAD is still extensively used for
preparing maps... and people using CAD usually is still focused on
"drawing" rather than on data and database design. ;o)
Guess this is the interesting part: What I have in mind is probably
implicite relationships. If two faces share the same edge then moving
the edge will implicitely edit both face geometries. I wouldn't
intuitively use "explicite relationships" (i.e. feature attributes)
for the above task.
Maybe it's not needed at the geometric level. But think of
application tasks like "select all the borderlines that separate
polygons of type A from polygons of type B" - this of if you have
separated edges composing the faces. But maybe not - I'm a bit
sticking with ArcInfo 7.0 topology model in which the faces are made
of lists of edges, so altering an edge means altering both faces.
Otherwise, every time I need to grep the
start Junction of a given RoadElement I have to perform a query with
the intersect operator between the first coordinate of the
RoadElement geometry and the geometry of Junctions.
Huh? An intersect operation for getting the start or end junction.
Doesn't make sense for me. In my example above you would query the
geometry attribute (an edge/arc) and would simply "ask" it for it's
start and end point.
Yes, but in a GIS I usually don't need *just* the coordinates of the
start point - I need the *Junction Feature* - which has a point
geometry located at the start (or end) point of the geometry of a
RoadElement (and this is the implicit relationship) - and I need the
Feature because the Junction has related info on vehicle manoveurs,
traffic light regulation and so on...
What you say is right from a geometric perspective - moreover,
geometrically speaking a Junction could also not exist at all if I
guarantee the arc connections at endpoints. But in GIS I need to deal
with Features - so, to find the start Junction, I have to perform a
query with an intersect operator, or better find the junction which
coordinates are equal to the coordinates of the starting point of the
arc. That's why in GIS we always store the IDs. Sure the IDs can be
assigned by the topology engine, but once topology has been validated
I can traverse the graph without having to deal with geometry.
Probably we should try to separate two levels of relation: the base,
lower level is topological and deals with Geometries. The second one
is logical and deals with features (or objects, or entities, call
them as you like).
I don't agree that features don't get involved. First, you need to
know which Feature is topologically correct or not;
For me: ... which geometry is topologically correct or not ;-)
Oh, yes, that's what I wanted to ask you: let's say you deal with
geometries only. Do you expect to use IDs for geometries? Or do the
geometries relate to each other simply by reference (I mean Java
object variables or pointers).
Good point. Now we leave the territory of classical topology and come
to GIS-specific validation. I guess for such cases we would indeed
not
be able to use any existing "general topology API" as I describe it
above, but we would either need something really GIS-aware
(validation
using non-geometrical attributes as you imagine it) ...
.. or a 3D topology, which could deal with the bridge example easily
without knowing anything about "onBridge" attributes.
I don't like the idea of using 3D, mostly 'cause I'm a flat-minded
dinosaur. :o))) It's a step forward "cartography", i.e. 2D
representation... and sure in future mapping apps, especially in
urban situation, it will be more and more important.
For now I'd rather stick on 2D models. I started the Topology wiki
at
http://docs.codehaus.org/display/GEOTOOLS/Topology+Framework
and added a page with use cases from my work on road networks (just a
skeleton, I still have to write down everything, I hope during the
weekend).
You and Vitali and anybody else interested are strongly encouraged to
do the same: let's see how we think topology, for what we need it
(editing, validation, GIS, logic modelling)... this will help us in
planning a good API.
To make one point: I do not say that ALL validation should be done on
the "geometry collection" level, rather do I imagine that basic rules
like "no overlap", "common edge/node handling" etc. could be
implemented there and that GIS-specific (or feature type specific)
validations could be on top of it, at the "FeatureCollection" level.
This could be a good approach.
Ups, I see that docs.codehaus.org is down right now... Better luck
tomorrow morning I hope! ;o)
Cheers
Sig
--
Luca Sigfrido Percich ([EMAIL PROTECTED])
Agenzia Milanese Mobilità e Ambiente s.r.l. (http://www.ama-mi.it)
Direzione Sistemi Informativi e Modellistica
Via Beccaria, 19 - 20122 Milano - tel. +39 02 884.67.262
-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads,
discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
Geotools-devel mailing list
Geotools-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-devel