January 31, 2006

Performance and the GeoWeb

One of the most frequently raised issues in relation to the GeoWeb is that of performance. Since the GeoWeb builds on XML and Web Services technologies this should bot be too surprising. XML provides redundant description of the content and the structure of the content which is assumed to be known by the creator or the consumer in the case of binary formats. Note further that XML is not a format and hence provides an additional isolation layer from the file structure. None of this comes without a price.

Performance than needs to be looked at in the proper light. We are likely familiar with the nice dataset demos of companies like Navteq - where one zooms from a continential view (USA, Europe) to street level in a second or so. Very impressive. One must ask though, if this is the issue that the GeoWeb is trying to solve. We need to look at that view of performance against another one implicitly expressed by Jack Dangermond in remarks to a HomeLand Security Conference following the Katrina disaster. Here it is not so much as "how fast" but can we do it - or can we do it fast enough (minutes to hours) to be of any use to anyone. In Jack's words:

‘We're not very good at bringing all this together now –we're maybe pretty good at it if you look at it one city at a time. But I have a vision that we could be good at it across the nation at some point in the future.”

’Jack Dangermond, President of ESRI, addressing the company’s Homeland Securities event,
in reference to Hurricane Katrina’s rescue efforts.

So speed is very much a relative matter. This is not something that is easily overcome by narrowly defined binary formats - it requires rich expressiveness and some ability to self document the data - precisely the things that XML and Web Services (hence GML, WFS) are designed to do.

Another way of looking at things - is to see how fast to things change - it is neat if I can send you a big file (note that the file format technologies always lead us in this direction) containing hundreds of thousands of features - and not so neat if I send you the same file tomorrow when only 5-10 of these features have changed. If my technology enables sending only the changes (and does so in a transparent or nearly transparent manner) that may be far more efficient and faster than one that leads us to wholesale file exchange. The GeoWeb is thus more about transactonal synchronization of datasets then copyng them over and over again from one place to another. Seen in this light we see that XML and Web Services (GML, WFS, WRS) offer a route to greatly increased overall performance - in the manner that matters for real business applications.
Posted by RLake at 22:53:44 | Permanent Link | Comments (5) |

January 27, 2006

Remote API'S, Web Services and the GeoWeb

Remember CORBA?  Aside from the attrocious marketing of the OMG (Surely it could have been named COBRA) this was all pretty good stuff - methods would be invoked across the Internet (remember IIOP) - things would interoperate across the web in a smooth fashion without regard to implementation languages at the server or the client.  Some how it did not happen in the way many of us thought and things move on (or back depending on your perspective) to encodings (XML) and messaging (web services).  Of course when you go to implement those web services in practice it is rather useful to have a client API.  This starts to sound again like the CORBA days except that we have less emphasis on the standardization of the API itself for a given application domain or type of service.  The standardization now is at the level of message encoding - messages which enact actions or which carry data payloads. Pretty much everyone has agreed that the messages be encoded in XML - with various "levels" of that XML for different tasks in the interaction - general message transport and routing might for example use SOAP, database requests in the GI world might use WFS, and the message transport in the GI world would likely be GML.

One might wonder why this has taken place?  Why did this web messaging/encoding approach gain near universal support when CORBA (and the Microsoft DCOM) did not?  Will we see a tilt back in the opposite direction?

What the messaging paradigm (messaging and encoding) does is to separate the "client" programming environment API completely from the actions of the server.  While the client API designer might directly refflect the XML message structure of the web service, there is no requirement that this be so.  The client API developer is free to repackage the the messages however they please.  This also means that vendors are free to provide competitive SDK's that are harder or easier to use - have performance advantages etc. - while at the SAME time ensuring interoperability (i.e. compliance with the message encoding).  So we can have vendor differentiation AND we can have standardization.  While some of this was possible in the universe of remote methods (CORBA, DCOM) things were much more restricted.
Posted by RLake at 20:42:13 | Permanent Link | Comments (1) |

January 19, 2006

GeoWeb 2006 - GeoWeb Grows Up

We last reported on the GeoWeb 2006 conference a few months ago. Big name sponsors are now coming to the fore, and this looks to be the emergence of a major new event in the GI firmament - the fusion of the Web and all things geographic - the place for standards both defacto and dejeure - the place for new technologies, new business models and new business opportunities.  From mashups to markup - from web services to location services this looks like the place to be.  For details go to http://www.geoweb.org.  If your organization is interested in GI, GIS, Internet GIS, web mapping or SDI this is the place to be! 

This is an open and inclusive conference. It will of course provide presentations, exhibits and courses on OGC specifications - but that is just the starting point - expect to see courses, exhibits and presentations on KML and Google Earth, MapPoint, SAML/XACML, geo-digital rights - GIS in the era of document and network centered computing. This is not your father's GIS conference.
Posted by RLake at 22:08:06 | Permanent Link | Comments (0) |

January 09, 2006

Dealing with time in GML

Virtually all geographic phenomena involve time. It should come as no surprise then that GML provides constructs for the description of time, and for the representation of time dependent geographic features. GML can be used to describe a wide variety of features that are time dependent from the motion of a person or vehicle, to the development of a hurricane and the impact zone of an earthquake.

The description of time is handled by the temporal.xsd schema. This schema defines the key GML temporal objects, namely:

· TimePeriod

· TimeInstant

The description of the temporal development of a geographic feature or features is handled in the dynamicfeature.xsd which we will discuss in more detail a little later on.

TimeInstant models a moment in time and has the following structure.

<gml:TimeInstant>
    <gml:timePosition>2003-02-13T12:28-08:00</gml:timePosition>
</gml:TimeInstant>

Several time representations are possible for timePosition including:

· XML Schema time or dataTime (this is also based on ISO 8601)

· gml:CalDate - enables a very llexible encoding of calendar dates.

· A URI reference

· A decimal value

The interpretation of the timePosition value is determined by the optional attributes of timePosition. In particular the frame attribute allows the user to specify the temporal reference system to be used for interpretation of the value of gml:timePosition.

A temporal reference system can be defined in GML using the temporalReference.xsd. Such a definition might live in a coordinate reference system dictionary, possibly managed by a registry such as the OGC Web Registry Service (WRS). The frame attrbute could then reference this definition. Alternatively it could point to some other definition expressed as text ir in some other grammar.

TimePeriods are defined in the same menner. A TimePeriod (a temporal duration or interval) can be expressed in a number of different ways to allow users to tradeoff between expressiveness and simplicity. These different forms include:

<gml:TimePeriod>
    <gml:begin>2003-02-13T12:28-08:00</gml:begin>
    <gml:end>2003-02-13T12:30-08:00</gml:end>
<gml:TimePeriod>

Here the begin, end elements are timePositions and carry the same attributes as the timePosition discussed above.

<gml:TimePeriod>
    <gml:beginPosition>
        <gml:TimeInstant>
            <gml:timePosition>2003-02-13T12:28-08:00</gml:timePosition>
        </gml:TimeInstant>
    </gml:beginPosition>
    </gml:endPosition xlink:href = "... #T001"/>
<gml:TimePeriod>

Note that this form allows the TimePeriod to be defined by TimeInstant objects and allows those TimeInstant objects to be remotely referenced using the xlink:href attribute. This means that TimeInstants can be shared across multiple TimePeriod definitions. And finally:

<gml:TimePeriod gml:id="T001">
    <gml:duration>PT130S</gml:duration>
<gml:TimePeriod>

This form allows the expression of a time period by its length rather than by begin and end positions in time. The value type of gml:duration is xsd:duration, which is defined by ISO 8601 (see http://books.xmlschemata.org/relaxng/ch19-77073.html) for additional details.

Time constructs are typically used as the values of temporal properties of features. These might describe the creation or termination "time" of the feature, "effective" dates, the time of sensor observations, or the time at which a feature was in a particular state.

GML includes two models to describe the time evoluation of a feature (an object of interest). These are:

  • SnapShot
  • TimeSlice or time history
A SnapShot is a view of a feature at an instant in time or over an interval in time (depending on the time construct used). A snapshot has a single time property whose value is a TimePeriod or a TimeInstant. For example:

<abc:Company gml:id="L31">
    <gml:name>General Motors</gml:name>
    <abc:location>...</abc:location>
    <abc:founded>
        <gml:TimeInstant>.. </gml:TimeInstant>
    </abc:founded>
</abc:Company>

Each snapshot is an individual view of the feature in question and GML implies no organization of the snap shots into any sort of temporal evolution.

Such a view is, however, provided by the Dynamic Feature. A Dynamic Feature is a feature with a gml:history property, the value of which is a set of gml:TimeSlices. The time invariant properties of the feature are outside the history property. TimeSlices contain the time varying properties of the feature. The properties in a TimeSlice are determined by the application schema for the TimeSlice just as they are for the feature as a whole. Users can thus define more or less arbitrary time dependent properties for a feature. A dynamic feature has the folowing general structure:

<abc:Hurricanegml:id="I01">
    <gml:name>Katrina</gml:name>
    <gml:history>
        <abc:TimeView gml:id="H01">
            <gml:validTime>
                <gml:TimeInstant> .. </gml:TimeInstant>
            <gml:validTime>
            <abc:position> .. </abc:position>
            <abc:windSpeed> .. </abc:windSpeed>
            <abc:category> .. </abc:category>
        </abc:TimeView>
            ...
        <abc:TimeView gml:id="H01">
            <gml:validTime>
                <gml:TimeInstant> .. </gml:TimeInstant>
            <gml:validTime>
            <abc:position> .. </abc:position>
            <abc:windSpeed> .. </abc:windSpeed>
            <abc:category> .. </abc:category>
        </abc:TimeView>
    <gml:history>
<abc:Hurricane>

Note that by having such a standard structure, software can be written which can visualize or analyze the hisory of a feature instance. Note that this also avoids propblems with handling multiple feature fragments (same id, different validTimes) with the same gml:id.

Users can also create additional patterns for describing the temporal evolution of feature objects.


Further information on creating dynamic feature schemas and using GML temporal constructs can be found in the book GML Foundation for the GeoWeb (http://ca.wiley.com/WileyCDA/WileyTitle/productCd-0470871539.html).
Posted by RLake at 22:06:27 | Permanent Link | Comments (1) |