Fuzzy or relative locations in KML?
We've got a lot of approximate, relative, and fuzzy places to deal with at work. I'm designing a hypermedia application to improve the coordinate and/or relativity precision of the place locations using KML. But how do we represent uncertain locations in KML? Previously, if a location was known to be in a lon/lat box I'd include that box as a polygon geometry. It sort of gets the point across, but the "within" relationship gets lost in the process. How do we express that a place is "within" or "near" another placemark? KML doesn't give us much to work with. A Feature can "have" a Geometry, but that's all the semantics we have. The upside of weak semantics is plenty of elbow room. In the absence of better patterns to follow, I'm considering something like this:
<?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom"> <Document> <name>relative.kml</name> <open>1</open> <Style id="exampleStyleDocument"> <LabelStyle> <color>ff0000cc</color> </LabelStyle> <BalloonStyle> <displayMode>default</displayMode> </BalloonStyle> </Style> <!-- a relative placemark --> <Placemark id="3"> <name>Relative Feature 3</name> <!-- hypermedia in the user interface --> <description> <![CDATA[ This feature is somewhere near <a href="http://sgillies.net/files/located.kml#2;balloon"> feature 2 (located.kml#2)</a>. ]]> </description> <!-- a machine readable representation using a hypothetical link relation --> <atom:link rel="where:near" href="located.kml#2"/> </Placemark> <!-- located placemarks to provide context --> <NetworkLink> <name>located.kml</name> <Link> <href>http://sgillies.net/files/located.kml</href> </Link> </NetworkLink> </Document> </kml>
See for example: http://sgillies.net/files/relative.kml.
I'm interested to see how others are approaching this problem, but haven't seen any examples yet.
Update (2010-05-26): Turns out that it's just a quirk of Google Earth that you can get a popup bubble (hypermedia) for a placemark without a geometry. In Google Maps, an unlocated placemark does not surface at all. Back to the drawing board?
It seems that kml:address is KML's fuzzy counterpart to coordinates, but it's tied to particular, modern, geocoding database. I can express a location that is (at the center of) Arizona as <address>Arizona</address>, but I can't express a location like "between Arelate and Massalia" using kml:address.
Comments
Re: Fuzzy or relative locations in KML?
Author: Blair
As a spatial statistician, I deal with this problem in many contexts. Usually we use something like a probability distribution (see
a heat mapfor example). Color denotes the probability of location. You can adjust the diameter of the "kernel"
to refelect the uncertainty (the variability). For example, if the context of "walking distance" was uncertain, you could have a diameter of the kernel in the 1-3km range, if it was in driving distance, you could have the diameter in the 1-100km range. That all assumes you have some context for "near".
Re: Fuzzy or relative locations in KML?
Author: sophia
KARML is a KML extension for Augmented Reality applications which has a notion of relative locations. For example this bit of KARML would place a balloon 2 meters north of the user.
The spec is available here:
KARMLRe: Fuzzy or relative locations in KML?
Author: Sean
Measured locations (and all location is fuzzy when you get right down to it) could be well modeled like that, but I'm working with a different category of uncertainty. The location of a place that is "near the Nile", "within southwest Asia Minor", or "across the Aegean" isn't something to which you can apply the same statistics.
Re: Fuzzy or relative locations in KML?
Author: Tyler
In your example, what would be contained in your located.kml file? A placemark with a geometry element (i.e. kml:LineString for the Nile or a kml:Polygon for Asia Minor)?
WKT or GeoJSON uncertainty
Author: Kurt Schwehr
Even before the visual representation, how are you storing uncertainty in WKT or GeoJSON? This gets the extra complexity that uncertainty is usually not the same in all directions. For example in a bathymetric grid, we absolutely know x and y (to the limit of IEEE float limits) and then have an estimate for the Z based on measurements made from various instruments.
Re: Fuzzy or relative locations in KML?
Author: Sean
Kurt: I'm not talking about earth science type uncertainty at all, but the uncertainty or fuzziness in locations like the ones mentioned in Smith's "Dictionary of Greek and Roman Geography" (1854) [http://tinyurl.com/3ahxmaq]
For example:
"... Polybius places the Anamares in Gallia Transalpina near Massilia."
"The Boii occupied the country along the south side of the Po to the foot of the Apennines, and the northern slopes of these mountains."
We only know the location of these territories relative to other better-known locations. They can't be represented in WKT or GeoJSON at all. In our system, they are graphs: "A" "is near" "B" (etc). My question then is: how do we represent these graphs in KML without falsely attributing a precise location to anything? There will be some hackery, for sure. Google Earth (5) has some behavior that I like (mentioned above), but it's missing from Google Maps and probably from other KML applications as well.
I don't see how KARML's tours, billboards, and balloons will help.
Re: Fuzzy or relative locations in KML?
Author: Brandon Plewe
This is something I have thought about a lot. Unfortunately, Relative locations has received *very little* attention in GIScience research. I think it's because the applications that really need it (esp. history) aren't as common or as critical (or as well-funded) as most other GIS applications. You're right that a statistical error model (or fuzzy sets or whatever) is not appropriate here, because sometimes you know the measurement of the relationship very precisely. Then again, sometimes you don't ("near the Nile") and may need a combination of relative location and vagueness.
As far as data model goes, the approach I've used in the past is roughly the same as yours: create an arbitrary relationship between the two places that happens to be a spatial relationship. This makes the data model easy, but it leaves a lot of work for when you interpret the data (i.e., putting the places on a map).
By the way, I don't know to what kind of precision you're doing the dates in Pleiades, but the same issue arises temporally. For example, "Place X was founded in the 4th year of the reign of King Y," except we don't know exactly what years King Y reigned.