Representing rough locations in KML (3)
After some reading of Bittner and Stell , I've decided that my most recent approach to representing fuzzy locations was too sloppy: spatial objects and the regions in which they are located were conflated. By leveraging the container-like nature of kml:MultiGeometry, I've come up with a new one in which my spatial objects (like an ancient city's footprint) are always represented as KML Features and the regions they occupy are always represented as KML Geometries. So far, it seems like it will let us represent vague objects (like "Narbonensis", the Roman province which covered the Mediterranean coast of what is now France and had no absolute boundaries) as well as crisp objects (like "Lattara", or your mobile device's GPS location) which are located imprecisely in our information systems.
In this approach, a MultiGeometry would represent the rough location of a
spatial object and collect statements about relations to other regions which
would also be represented as MultiGeometries, one per relationship predicate.
Predicates would be represented as text nodes of
relation elements from a
future namespace. The predicates themselves would come from 9IM or RCC models.
In the example below, I show collections of relations that form a 3-piece
concentric partition of space (like an "egg-yolk" ).
<?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://www.opengis.net/kml/2.2" xmlns:x="http://example.com/x"> <Document> <Placemark> <name>Spatial object located at an indeterminate region</name> <MultiGeometry> <!-- representation of indeterminate region --> <MultiGeometry> <!-- core/yolk --> <x:relation>Contains/hasProperPart</x:partition> <Polygon>...</Polygon> </MultiGeometry> <MultiGeometry> <!-- wide-boundary/white --> <x:relation>Within/properPartOf</x:relation> <Polygon>...</Polygon> </MultiGeometry> <MultiGeometry> <!-- exterior --> <x:relation>Disjoint</x:relation> </MultiGeometry> </MultiGeometry> </Placemark> </Document> </kml>
Test drive this if you like: http://sgillies.net/files/rough.kml.