<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>cfis : Category GIS, everything about GIS</title>
    <link>http://cfis.savagexi.com</link>
    <atom:link rel="self" type="application/rss+xml" href="http://cfis.savagexi.com/category/gis.rss"/>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Charlie Savage's Blog</description>
    <item>
      <title>An Update on the Ruby and Python GEOS Bindings</title>
      <description>    &lt;p&gt;Its been over a year since I blogged about &lt;a href="http://geos.refractions.net/"&gt;GEOS&lt;/a&gt;, an open source project that provides rich functionality for analyzing
    and manipulating geometries and is a key part of &lt;a href="http://postgis.refractions.net/"&gt;PostGIS&lt;/a&gt;. &lt;/p&gt;
    &lt;p&gt;&lt;a href="http://foo.keybit.net/%7Estrk/"&gt;Sandros&lt;/a&gt; and &lt;a href="http://mateusz.loskot.net/2006/04/06/say-hello-to-geos-development-team/"&gt;Mateusz&lt;/a&gt; spent a ton of time  refactoring and improving GEOS last year, and it &lt;a href="http://geos.refractions.net/pipermail/geos-devel/2007-August/002936.html"&gt;looks&lt;/a&gt; like version 3.0 will finally be released this fall. As part of the 3.0 release, I've completely rebuilt the Ruby and Python bindings to use GEOS's C API. In theory this should decouple the bindings somewhat from GEOS releases - we'll see if that works out in practice.&lt;/p&gt;
    &lt;p&gt;Over the last couple of weeks,   &lt;a href="http://www.ilande.co.uk/index.php?/authors/1-Mark-Cave-Ayland"&gt;Mark Cave Ayland&lt;/a&gt; and I have spent  time polishing off some rough edges. We managed to:&lt;/p&gt;
    &lt;ul&gt;
      &lt;li&gt;Fix various autoconf build issues&lt;/li&gt;
      &lt;li&gt;Get GEOS building with both older and newer versions of MingW and Msys on Windows&lt;/li&gt;
      &lt;/ul&gt;
    &lt;p&gt;In addition, I  added VC++ project files for the Python and Ruby bindings and updated the Ruby bindings to be more &amp;quot;Ruby&amp;quot; like. &lt;/p&gt;
    &lt;p&gt;Long story short - building GEOS and the Ruby/Python bindings should now be easier and more fool proof. If you're in the GNU world, its as simple as:&lt;/p&gt;
    &lt;pre&gt;&lt;tt&gt;./configure --enable-python --enable-ruby&lt;/tt&gt;&lt;/pre&gt;
  &lt;p&gt;If you're in the Microsoft world, just open  the  VC++ solution in the source tree (thanks Mateusz), tweak the locations of your Ruby and Python installations, and hit the compile button.&lt;/p&gt;
  &lt;p&gt;So if you are using, or planning to use, the  bindings I'd recommend  grabbing the latest from SVN. Once you've built everything, then take a look at the test scripts I've written in the swig/ruby/test and swig/python/test directories. They should provide enough examples to get you started. &lt;/p&gt;
  &lt;p&gt;Feedback is of course welcome, particularly from Python users.
    Since I use Ruby day in and day out,  I know the right Rubyisms
    to put into the bindings. But I don't know Python well enough to know the right Pythonisms.&lt;/p&gt;


</description>
      <pubDate>Mon, 10 Sep 2007 14:03:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:81f03908-302a-485c-ac03-01ae52230201</guid>
      <comments>http://cfis.savagexi.com/2007/09/10/an-update-on-the-ruby-and-python-geos-bindings#comments</comments>
      <category>GIS</category>
      <category>Ruby</category>
      <trackback:ping>http://cfis.savagexi.com/trackbacks?article_id=468</trackback:ping>
      <link>http://cfis.savagexi.com/2007/09/10/an-update-on-the-ruby-and-python-geos-bindings</link>
    </item>
    <item>
      <title>Rendering With Style</title>
      <description>			&lt;p&gt;Chris Tweedie &lt;a href="http://chris.narx.net/2007/07/05/from-the-other-side-of-the-fence/"&gt;posted&lt;/a&gt; an interesting reply to my &lt;a href="http://cfis.savagexi.com/articles/2007/06/27/the-sad-state-of-gis-web-standards"&gt;rant&lt;/a&gt; about GIS standards and took me to task for &amp;quot;&lt;a href="http://www.opengeospatial.org/standards/wms"&gt;WMS&lt;/a&gt; bashing&amp;quot; and why WMS is a useful  Enterprise standard. Perhaps - except I clearly stated in my original article that I was only talking about standards used on the web and not in the Enterprise. &lt;/p&gt;
			&lt;p&gt;Nevertheless, Chris does a good job of pointing out the flaws of tiled mapping systems. Its the usual litany of suspects - they take a lot of disk space, aren't standardized, don't  support arbitrary scales and don't  support customized styles.&lt;/p&gt;
			&lt;p&gt;Having spent four years of my life writing a WMS server, the Smallworld Internet Application Server (&lt;a href="http://www.gepower.com/prod_serv/products/gis_software/en/sias.htm"&gt;SIAS&lt;/a&gt;), I'm all too familiar with these issues. But in the end it all boils down to a fundamental conflict -  map styling versus performance.&lt;/p&gt;
			&lt;h3&gt;The Importance of Style&lt;/h3&gt;
			&lt;p&gt;Even the slightest hint that you're limiting styling options is enough to send customers into a rage. And no, I'm not kidding.&lt;/p&gt;
			&lt;p&gt;This is important stuff - so important that there are laws in Germany, and probably other countries, saying exactly how maps should be rendered. I remember long, agitated discussions with German customers about how SIAS rendered circles. Our circles weren't perfect, they were off slightly off for reasons I no longer remember and in ways no one would ever notice. But it made our system non-compliant under German law, so had to be fixed.&lt;/p&gt;
			&lt;p&gt;Styling in Smallworld is totally customizable. It can vary based any number of things - here is just a small subset: &lt;/p&gt;
			&lt;ul&gt;
			  &lt;li&gt;Object type - interstates are blue, main roads are red&lt;/li&gt;
		    &lt;li&gt;Object attribute - Steel pipes are gray, copper pipes are yellow&lt;/li&gt;
		    &lt;li&gt;Scale - A pipe is a green at less than 1:10,000, blue for 1:10,000 and greater&lt;/li&gt;
			  &lt;li&gt;Area - Roads in England are not rendered the same as in the United States&lt;/li&gt;
        &lt;li&gt;And of course the kicker - users could override the rendering methods themselves and do whatever they pleased.&lt;/li&gt;
      &lt;/ul&gt;
			&lt;p&gt;Smallworld then adds the concept of &amp;quot;drawing applications&amp;quot; (yeah, horrible name), which basically means that an engineer wants to see one set of styles, while a customer service representative wants to see another. &lt;/p&gt;
			&lt;p&gt;So when building SIAS, one of the absolute, you must meet this requirement or not bother building a product, was faithfully reproducing the styles users had set up in their Smallworld databases.&lt;/p&gt;
			&lt;h3&gt;The Importance of  Performance&lt;/h3&gt;
			&lt;p&gt;At the same time, producing a beautifully rendered map counts for diddly if users have to wait  a minute for it to  show up in their browser.&lt;/p&gt;
			&lt;p&gt;Now Smallworld's rendering system is fast - after fifteen years of optimization it is the fastest GIS rendering system I've ever seen (its used to blow away ESRI, maybe it still does). And it had a clever caching system that made it possible to keep  nearby geographic features in memory,   making panning and zooming operations lighting fast for desktop clients. &lt;/p&gt;
			&lt;p&gt;This is really important - one of the things  most people don't appreciate is how much data it takes to render a map. For example, say you want to make a  detailed map of Manhattan. It will include tens of thousands of street segments, parcels, buildings, etc. All of which have to be fetched from the database. Then you have to look up the styles for each feature, and finally, render the map. So local, in-memory, caching is key - even today. &lt;/p&gt;
			&lt;p&gt;But this system breaks down on the Intranet or Web. A SIAS server may support tens or hundreds of users - each interested in a different geographic area. Thus you're almost guaranteed to break the cache, resulting in expensive queries back to the database.&lt;/p&gt;
			&lt;p&gt; One obvious solution is tying clients to  servers based on their bounding box, but we never went down that route because we didn't see a way of doing it in a generic manner that would work out of the box. &lt;/p&gt;
			&lt;p&gt;So to support arbitrary styles and scales, and have decent performance, requires a lot of hardware. A whole lot of hardware. And that introduces a whole host of other issues - managing the hardware, client sessions, updates, etc. All of which are solvable, but it still takes time to get right. &lt;/p&gt;
			&lt;h3&gt;And the Twain Shall Meet&lt;/h3&gt;
			&lt;p&gt;So is there a middle ground? I think so - if you're willing to throw away arbitrarily scales and don't mind using lots of diskspace.&lt;/p&gt;
			&lt;p&gt;From talking to customers over the years, I don't think arbitrarily scales are as important as people think. What is important  is what features are displayed at different  scales and how they are styled. For examples, roads should be visible when the scale is less than 1:20,000 and be drawn in red.&lt;/p&gt;
			&lt;p&gt;In a typical Smallworld setup, users would create roughly 10 of these rules, which were called display scales. Other GIS systems have similar concepts. Thus, these display scales become the basis for your tiled zoom levels - although you would probably want to make sure you have 15 to 20 of them.&lt;/p&gt;
			&lt;p&gt;So what are the downsides? There are myriad:&lt;/p&gt;
			&lt;ul&gt;
			  &lt;li&gt;Users can't change map styling on the fly (and if you really want this, then you're a power user and should just install a desktop client) &lt;/li&gt;
			  &lt;li&gt;Updates to the database invalidate tiles, you need a process to determine which tiles have been invalidated and then regenerate them&lt;/li&gt;
			  &lt;li&gt;In versioned databases, like Smallworld, you can  really only support one version (unless you have *lots* of diskspace and time, a typical Smallworld database would have hundreds or thousands of alternatives). &lt;/li&gt;
		  &lt;/ul&gt;
			&lt;p&gt;And the advantage? You move map rendering out of the main code path. For an Intranet or Web client, I think its a no-brainer, you have to do it if you want a scaleable system.&lt;/p&gt;
			&lt;h3&gt;A Toy Standard &lt;/h3&gt;
			&lt;p&gt;As you might have guessed by now, I think WMS is a fatally flawed standard. Its a &amp;quot;toy&amp;quot; standard - its great if you have a few users but its extremely difficult to scale - whether you are on the Web or in the Enterprise.&lt;/p&gt;
			&lt;p&gt;Its difficult to scale because it doesn't constrain the problem. It imagines a world of instant map rendering where any client can request any bounding box, any scale, any coordinate system and any styling. Such a world does not exist today. Maybe it will in five or ten years, but that's doesn't help us now. &lt;/p&gt;
			&lt;p&gt;The obvious solution is to &lt;a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm"&gt;constrain&lt;/a&gt; the problem. If this seems like a horrible thing to do then just think of the Web. There is only one way to address things (URIs), there are only a few actions you can perform (HTTP has a handful of verbs), there is no central authority (and thus you get broken links), etc. &lt;/p&gt;
			&lt;p&gt;In the map rendering world, the constraints are fairly clear - fixed scales, fixed bounding boxes (ie, tiles) and fixed styling via pre-defined  style groups. If you're willing to make those three simplifications, then you can create a Web Mapping Standard that really works. &lt;/p&gt;


</description>
      <pubDate>Wed, 11 Jul 2007 12:47:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:438a6bd8-505b-41ef-8489-e6c0ebf00ea8</guid>
      <comments>http://cfis.savagexi.com/2007/07/11/rendering-with-style#comments</comments>
      <category>GIS</category>
      <category>Smallworld</category>
      <category>Web</category>
      <trackback:ping>http://cfis.savagexi.com/trackbacks?article_id=447</trackback:ping>
      <link>http://cfis.savagexi.com/2007/07/11/rendering-with-style</link>
    </item>
    <item>
      <title>My Experiences with OGC </title>
      <description>			&lt;p&gt;Some of my &lt;a href="http://cfis.savagexi.com/articles/2007/05/01/lost-in-abstraction-what-went-wrong-with-gml"&gt;recent&lt;/a&gt; &lt;a href="http://cfis.savagexi.com/articles/2007/06/27/the-sad-state-of-gis-web-standards"&gt;posts&lt;/a&gt; could be interpreted as veiled critisism of the Open Geopspatial Consortium (&lt;a href="http://www.opengeospatial.org/"&gt;OGC&lt;/a&gt;). But in truth, I've been very impressed how OGC has reinvented itself over the last six or seven years. So I thought I'd post about my experiences with OGC - and of course give you my spin!&lt;/p&gt;
			&lt;p&gt;Back  when I was with Smallworld and &lt;a href="http://cfis.savagexi.com/articles/2006/03/21/rest-leading-to-rails"&gt;leading&lt;/a&gt; the development of the Smallworld Internet Application Server, I was Smallworld's, and then  General Electric's, representative to the OGC. It was hardly a plum assignment - I was the only one who wanted it - and it took plenty of cajoling to get reluctant management buy-in. &lt;/p&gt;
		  &lt;p&gt;Now to be clear, I was hardly a mover and shaker in OGC.  I attended the meetings, spoke up ever so often, drove Smallworld's participation in testbeds (see below) and helped write a &lt;a href="http://portal.opengeospatial.org/files/?artifact_id=1337"&gt;discussion&lt;/a&gt; paper. But it sure was an interesting experience, and I quickly figured out that  making standards is really hard.&lt;/p&gt;
      
			&lt;h3&gt;The Early Years&lt;/h3&gt;
			&lt;p&gt;Smallworld was   an early participant in OGC, but eventually gave up on the process as OGC developed a series of standards that went nowhere - like Simple Features for &lt;a href="http://www.opengeospatial.org/standards/sfs"&gt;SQL&lt;/a&gt; (the most successful), &lt;a href="http://www.opengeospatial.org/standards/sfc"&gt;CORBA&lt;/a&gt; and &lt;a href="http://www.opengeospatial.org/standards/sfo"&gt;COM&lt;/a&gt;. These standards never made any sense for two main reasons. First, they  require a fundamental rewrite to support, and no vendor has the stomach for that. Second, they are based on a faulty assumption that distributed object protocols actually work.&lt;/p&gt;
			&lt;p&gt;The combination of suffering through the inevitable, and interminable squabbles about technical minutiae, with the full realization it was all for naught, was too much to take for the Smallworld representatives before me and they eventually stopped going.&lt;/p&gt;
			&lt;h3&gt;The Web Testbed  Years&lt;/h3&gt;
			&lt;p&gt;I got involved with OGC right after the first &lt;a href="http://www.opengeospatial.org/projects/initiatives/wmt1"&gt;Web Mapping Testbed&lt;/a&gt;, so around 2000/2001.  The Web Mapping Testbed was a brilliant idea - sitting around in a room writing standards wasn't working out. So the OGC decided to create six month testbeds, with each testbed focused on solving some problem that a large OGC member had (with the member funding some of the cost of the testbed). By the end of the six months you needed a rough spec, and much more importantly, a working implementation. That set off a torrent of innovation - and gave birth to all of the important OGC specs used today, including WMS, GML, WFS, etc.&lt;/p&gt;
			&lt;p&gt; But	back in 2000, none of that existed. As we wrote SIAS, we sure wanted some standard, any standard, to follow. And thus I pushed Smallworld and GE to get back into the OGC process. On our part, we implemented full support for WMS (including SVG at a later release!) and were one of the first companies to support GML.&lt;/p&gt;
			&lt;p&gt;But it still took lots of cajoling to convince anyone it was a good idea.  I used to give talks about OGC at our user conferences, and I remember sitting on panels at &lt;a href="http://www.gita.org/"&gt;GITA&lt;/a&gt; with titles such as &amp;quot;Why Use OGC Standards.&amp;quot;&lt;/p&gt;
			&lt;p&gt;More interesting was the reaction of our customers.  Smallworld/GE dominated the utility and telecoms business at the time. Utilities and telecoms are some of the most conservative organizations around - telling them they could now share their data on the Web was enough to send them into epileptic shock.&lt;/p&gt;
			&lt;p&gt;US customers were particularly uninterested. But European customers were different, particularly German customers. Many of our German customers were actually small organizations, with a service area limited to a city or two. They were huge supporters of OGC standards, and that's where we made most of our progress.&lt;/p&gt;
			&lt;h3&gt;And What About the Web?&lt;/h3&gt;
			&lt;p&gt;A quick caveat before continuing - since leaving  GE for Ubisense and later MapBuzz, I haven't been involved in OGC. So beware - some of these thoughts may be wrong.&lt;/p&gt;
			&lt;p&gt;As I've talked about in a previous &lt;a href="http://cfis.savagexi.com/articles/2007/06/27/the-sad-state-of-gis-web-standards"&gt;post&lt;/a&gt;, I don't think the OGC standards have  succeeded on the Web. I find nothing surprising about it -   there are a couple of good reasons for it.&lt;/p&gt;
			&lt;p&gt;First, the OGC testbeds are designed to solve hard problems for large organizations. For example, the last one I took part in modeled a disaster response to a series of tornadoes that touched down in the Washington DC metro area. They goal was for the federal, state  and scores of local governments to  effectively share information in real-time to manage the emergency response. Thus the demos were all about combining data from multiple sources -  the latest satellite imagery, reconnaissance missions flow by droids in real-time,  street vector data, parcel data, etc. If something 1/100 as effective as these demos had been used in New Orleans after hurricane Katrina, a lot of people would have been spared a lot of misery.&lt;/p&gt;
			&lt;p&gt;To get this to work you need complex standards - things like GML, SLD, WCS and WFS. But this was certainly not the Web. Sure the &amp;quot;Web Services&amp;quot; moniker was thrown around all the time, but these were SOAP  services combined with sophisticated Java clients, and very few browsers in site.&lt;/p&gt;
			&lt;p&gt;Second, the OGC membership is a combination of academics, leading companies in the industry, and large organizations like Lockheed Martin and the Federal Government. Thus, the organization is geared towards writing standards that play in that world. &lt;/p&gt;
			&lt;h3&gt;The Role of Google&lt;/h3&gt;
			&lt;p&gt;It seems like a great coup to me that Google submitted KML to the OGC for standardization. &lt;/p&gt;
			&lt;p&gt;The big question in my mind is how will Google change OGC?   The Web is in Google's  DNA. Will it be able to use its knowledge, and power in web mapping, to nudge the OGC to a more web centric view? Time obviously will tell, but it sure seems like a great time to be part of  OGC and watch the technical minutiae fly. &lt;/p&gt;


</description>
      <pubDate>Fri, 29 Jun 2007 09:59:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:31c5e6ac-3776-451b-ab31-03ec5537542c</guid>
      <comments>http://cfis.savagexi.com/2007/06/29/my-experiences-with-ogc#comments</comments>
      <category>GIS</category>
      <category>Technology</category>
      <trackback:ping>http://cfis.savagexi.com/trackbacks?article_id=444</trackback:ping>
      <link>http://cfis.savagexi.com/2007/06/29/my-experiences-with-ogc</link>
    </item>
    <item>
      <title>The Sad State of GIS Web Standards</title>
      <description>      &lt;p&gt;Let's face facts - the stable of GIS Web standards is suboptimal. To show you what I mean, let's think about the common  things you'd want to do with web mapping and see if there is a successful standard that you can leverage. &lt;/p&gt;
      &lt;p&gt;We'll define success as the  widespread use of the standard on the web - there are  thousands, or tens of thousands, of working examples (of a web nearing billions of users, that doesn't seem too much to ask). Of course a standard may be wildley successful  in another domain, such as Enterprise software, but that doesn't count as the web. &lt;/p&gt;
      &lt;h3&gt;Rendering  Maps&lt;/h3&gt;
      &lt;p&gt;Let's start with the most obvious thing - making maps. This is the domain of  Web Map Service (&lt;a href="http://www.opengeospatial.org/standards/wms"&gt;WMS&lt;/a&gt;) and Style Layer Descriptor (&lt;a href="http://www.opengeospatial.org/standards/sld"&gt;SLD&lt;/a&gt;).  &lt;/p&gt;
      &lt;p&gt;It doesn't take long to figure out why no main stream mapping sites actually uses WMS. Its design makes it difficult to cache results and unfortunately rendering maps ain't quick nor easy - there is a reason Google/Microsoft/Yahoo use cached tiles. The biggest WMS server I know of is &lt;a href="http://terraserver.microsoft.com/"&gt;Terraserver&lt;/a&gt;, and its seems to have kept Microsoft researchers  busy happily writing &lt;a href="http://research.microsoft.com/search/search.aspx?View=en-us&amp;amp;charset=iso-8859-1&amp;amp;qu=terraserver"&gt;papers&lt;/a&gt; about how  to scale it.&lt;/p&gt;
      &lt;p&gt;Instead, everyone has seemed to come up with the same &lt;a href="http://cfis.savagexi.com/articles/2006/05/03/google-maps-deconstructed"&gt;approach&lt;/a&gt; for web mapping - use pre-rendered tiles that use the Mercator projection. Or, if you have a desktop client (Google Earth, Virtual Earth), then the engineering is difficult enough that you use your own  proprietary algorithms/encodings to actually make the system scaleable enough to work. &lt;/p&gt;
      &lt;p&gt;And as far as styling maps - have you actually read the SLD standard or used it? I didn't think so. &lt;/p&gt;
      &lt;p&gt;So we'll say no success in the standards world here. Which raises an interesting question - is there any room or need for a web map tiling standard (and the Web Coverage Standard, &lt;a href="http://www.opengeospatial.org/standards/wcs"&gt;WCS&lt;/a&gt;, doesn't count since it support arbitrarily bounding boxes like WMS). &lt;/p&gt;
      &lt;h3&gt;Adding Points to a Map &lt;/h3&gt;
      &lt;p&gt;To provide some hooks into Google Earth, Google offers &lt;a href="http://code.google.com/apis/kml/documentation/"&gt;KML&lt;/a&gt;, which lets developers add  custom information to maps. Behind the might of Google, KML has gained a large market share. Since Google has  recently  submitted KML  to  the OGC for standardization,  we'll call this a standards win. &lt;/p&gt;
      &lt;h3&gt;Specifying Locations &lt;/h3&gt;
      &lt;p&gt;This is the world of &lt;a href="http://www.georss.org/"&gt;GeoRss&lt;/a&gt;, which lets you specify  points/lines/polgyons.  GeoRss has clawed its way into importance due to its simplicity and one would assume developer fatigue with reading the &lt;a href="http://www.opengeospatial.org/standards/gml"&gt;GML&lt;/a&gt; spec. GeoRss is  fine for what it does, but this is the most basic level possible,  akin to a first-grade reading level. But we'll call it a win.&lt;/p&gt;
      &lt;h3&gt;Sharing Data&lt;/h3&gt;
      &lt;p&gt;This is the world of Web Feature Server (&lt;a href="http://www.opengeospatial.org/standards/wfs"&gt;WFS&lt;/a&gt;) and Geography Markup Language (&lt;a href="http://www.opengeospatial.org/standards/gml"&gt;GML&lt;/a&gt;). I've previously &lt;a href="http://cfis.savagexi.com/articles/2007/05/01/lost-in-abstraction-what-went-wrong-with-gml"&gt;blogged&lt;/a&gt; about why I think GML is too complex for the web, and since WFS depends on GML, the same arguments apply. Just to add some spice to the party, WFS adds its own &lt;a href="http://www.opengeospatial.org/standards/filter"&gt;proprietary&lt;/a&gt; (is it fair to call a standard proprietary?) XML query language for reasons that have never been obvious to me (&lt;a href="http://www.w3.org/TR/xquery/"&gt;XQuery&lt;/a&gt; anyone?).&lt;/p&gt;
      &lt;p&gt;So do you see these standards used on the Web? I sure don't. Instead I see people using RSS and ATOM with GeoRSS, or shoehorning feature information into KML. There is event talk of shoehorning GML into KML.&lt;/p&gt;
      &lt;p&gt;In my view this is the biggest gap in GIS web standards - something, someday is going to fill it in. If you are a standards wonk, and want to make a difference, I'd say start here.&lt;/p&gt;
      &lt;p&gt;If it was up to me, such a standard would be designed as an &lt;a href="http://cfis.savagexi.com/articles/2007/04/26/atom-will-change-the-world"&gt;Atom&lt;/a&gt; extension that provides a super-simple way of including feature property values. And it would use GeoRSS for geometries.&lt;/p&gt;
      &lt;h3&gt;Remembering Context&lt;/h3&gt;
      &lt;p&gt;There is remarkable amount of state involved when looking at a map. The most obvious thing is where you are looking at - but you also have to remember the scale, the layers that are on or off, the projection, the styles in use, etc. This is the world of the Web Map Context (&lt;a href="http://www.opengeospatial.org/standards/wmc"&gt;WMC&lt;/a&gt;) standard. Since I've never implemented WMC, I don't have an opinion on its technical merits. But going back to our measure of success, is it used on the web? Not as far as I can see. &lt;/p&gt;
      &lt;h3&gt;Dejure versus Defacto? &lt;/h3&gt;
      &lt;p&gt;So standards strike out on map rendering and sharing geographic features, but have succeeded in specifying locations and custom map content. And there is an interesting pattern here - the dejure standards have failed, while the defacto standards have succeeded. Perhaps more about that in another post.&lt;/p&gt;
      &lt;p&gt;But after the incredible amout of energy and time spent developing these standards, it feels like precious little success.&lt;/p&gt;


</description>
      <pubDate>Wed, 27 Jun 2007 22:02:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:222c3300-fb3c-4e7d-86d5-d1b960f88443</guid>
      <comments>http://cfis.savagexi.com/2007/06/27/the-sad-state-of-gis-web-standards#comments</comments>
      <category>GIS</category>
      <category>Web</category>
      <trackback:ping>http://cfis.savagexi.com/trackbacks?article_id=443</trackback:ping>
      <link>http://cfis.savagexi.com/2007/06/27/the-sad-state-of-gis-web-standards</link>
    </item>
    <item>
      <title>The Who's Who of the Frugos Unconference</title>
      <description>&lt;p&gt;Last Saturday I had the pleasure of attending the first FRUGOS &lt;a href="http://groups.google.com/group/geosummit/web/geosummit-2007"&gt;unconference&lt;/a&gt; - which was a meeting of 20 or so open source GIS enthusiasts who live along Colorado's Front Range. &lt;a href="http://www.thetimoneygroup.com/WhoWeAre.html"&gt;Brian&lt;/a&gt; and &lt;a href="http://zcologia.com/news/"&gt;Sean&lt;/a&gt; organized, while &lt;a href="http://www.churchillnavigation.com/"&gt;Tom&lt;/a&gt; played host. &lt;a href="http://geothought.blogspot.com/2007/06/quick-report-on-frugos-unconference.html"&gt;Peter&lt;/a&gt; and &lt;a href="http://zcologia.com/news/485/geosummit-conclusion/"&gt;Sean&lt;/a&gt; both had nice writeups of the conference - so I won't repeat what they've said.&lt;/p&gt;
&lt;p&gt;Instead, here is a list of attendees and what they do. The list is taken from my notes, so I'm sure I've messed up some details and missed a person or two. If so, let me know, and I'll fix any mistakes. &lt;/p&gt;
&lt;dl&gt;
  &lt;dt&gt;Gregor Allensworth-Mosheh&lt;/dt&gt;
  &lt;dd&gt;Gregor is one of
    the people behind &lt;a href="http://www.hostgis.com/"&gt;HostGIS &lt;/a&gt;and gave a couple of interesting talks &#8211; both of which I sadly missed but
    Peter has the scoop on his &lt;a
href="http://geothought.blogspot.com/2007/06/quick-report-on-frugos-unconference.html"&gt;blog&lt;/a&gt;.&lt;/dd&gt;
  &lt;dt&gt;Norman Barker&lt;/dt&gt;
  &lt;dd&gt;Norman, visiting from England, is one  of the main developers of hibernate support for PostGis.&lt;/dd&gt;
  &lt;dt&gt;Peter Batty&lt;/dt&gt;
  &lt;dd&gt;Take a look at Peter&#8217;s nice &lt;a
href="http://geothought.blogspot.com/2007/06/quick-report-on-frugos-unconference.html"&gt;summary&lt;/a&gt; of the unconference.  Peter and I have worked together for a number of years &#8211; including at Smallworld, GE and Ubisense.  More recently Peter was the CTO of Integraph, but is now looking for a new gig.  Check out his blog at http://geothought.blogspot.com/.&lt;/dd&gt;
  &lt;dt&gt;Tom Churchill&lt;/dt&gt;
  &lt;dd&gt;Tom hosted the meeting at is the founder of
    Churchill Navigation, which makes extremely cool software for the next
    generation personal navigation devices.  &lt;/dd&gt;
  &lt;dt&gt;G Hussain Chinoy&lt;/dt&gt;
  &lt;dd&gt;Hussain is an active developer on NASA&#8217;s opensource WorldWind project.
    Besides giving a great demo of both the .NET and Java versions of WorldWind, he also provides a fascinating glimpse into the
    politics of WorldWind, NASA and OpenSource.&lt;/dd&gt;
  &lt;dt&gt;Scott Davis&lt;/dt&gt;
  &lt;dd&gt;Scott recently started his own consulting
    company, and has just finished &lt;a
href="http://www.pragmaticprogrammer.com/titles/sdgis/"&gt;Pragmatic GIS&lt;/a&gt;.   Can&#8217;t wait to get my copy!  His blog is at &lt;a
href="http://www.davisworld.org/blojsom/blog/"&gt;http://www.davisworld.org/blojsom/blog/&lt;/a&gt;.&lt;/dd&gt;
  &lt;dt&gt;Tom Gehring&lt;/dt&gt;
  &lt;dd&gt;Tom worked a number
    of years on IBM mainframes, and recently decided to change careers and get
    involved with GIS [Not sure if I have spelled Tom&#8217;s last name correctly]. &lt;/dd&gt;
  &lt;dt&gt;Randy George&lt;/dt&gt;
  &lt;dd&gt;Randy is with &lt;a href="http://www.cadmaps.com/"&gt;CadMaps&lt;/a&gt; and has worked extensively with vector map technologies such as SVG, VML, and more recently, XAML.  Check out the Cadmaps blog at http://www.cadmaps.com/gisblog.htm.&lt;/dd&gt;
  &lt;dt&gt;Sean Gillies&lt;/dt&gt;
  &lt;dd&gt;Sean is one of the main organizers of Frugos, and works as a web developer for the
    University of North Carolina for their &lt;a href="http://www.unc.edu/awmc/"&gt;ancient world&#8217;s&lt;/a&gt; project.  It sounds like a great project &#8211; mapping
    whatever information they can find about ancient Greece and Rome. Sean
    is a big Python user and has one of the best know GIS blogs - http://zcologia.com/news.&lt;/dd&gt;
  &lt;dt&gt;Chris Haller&lt;/dt&gt;
  &lt;dd&gt;Chris works part time at the University of Colorado medical center and part time at &lt;a href="http://www.placematters.org/"&gt;PlaceMatters&lt;/a&gt;.  In his free time he&#8217;s works on a Social
    Mapping site called iCommunityTv that combines maps and multimedia.  Check it out at &lt;a
href="http://blog.eparticipation.com/"&gt;http://blog.eparticipation.com/&lt;/a&gt;.&lt;/dd&gt;
  &lt;dt&gt;Chris Helm&lt;/dt&gt;
  &lt;dd&gt;Another Chris who is at the
    University of Colorado.  Chris works with Bruce on &lt;a
href="http://nsidc.org/data/nsidc-0272.html"&gt;GLIMS&lt;/a&gt;, which is  a database of the world's glaciers based on reflections from a radiomter.  GLIMS is a big Postgresql/PostGIS database with a MapServer front end.  Output is done via OGR or KML. &lt;/dd&gt;
  &lt;dt&gt;Dan Moore&lt;/dt&gt;
  &lt;dd&gt;Dan is a Web
    developer and has done a fair bit of work with Google maps.&lt;/dd&gt;
  &lt;dt&gt;Jim Olsten&lt;/dt&gt;
  &lt;dd&gt;Jim has worked extensively
    with GIS for a variety of projects including NEPA impact studies, etc.&lt;/dd&gt;
  &lt;dt&gt;Trent Pigeno&lt;/dt&gt;
  &lt;dd&gt;Trent is a GIS/web developer, and works with
    Brian at the Timoney Group.   
    Trent recently traveled to South America (I think it was Chile), where he did some volunteer
    GIS work, before returning to the states [Not sure if I have spelled Tom&#8217;s last
    name correctly].&lt;/dd&gt;
  &lt;dt&gt;Bruce Raup&lt;/dt&gt;
  &lt;dd&gt;Bruce works at the &lt;a
href="http://nsidc.org/"&gt;National Snow and Ice Data Center&lt;/a&gt; in Boulder.  He is the technical lead for the &lt;a
href="http://nsidc.org/data/nsidc-0272.html"&gt;Global Land Ice Measurements from
    Space (GLIMS)&lt;/a&gt; database and is a heavy user of &lt;a href="http://grass.itc.it/"&gt;GRASS&lt;/a&gt;, &lt;a href="http://www.gdal.org/ogr/"&gt;OGR&lt;/a&gt; and his own Perl scripts.&lt;/dd
&gt;
  &lt;dt&gt;Charlie Savage&lt;/dt&gt;
  &lt;dd&gt;Well you already know me since you&#8217;re
    reading this blog.&lt;/dd&gt;
  &lt;dt&gt;John Spinney&lt;/dt&gt;
  &lt;dd&gt;John
    works for OpenWave, which is one of the main
    providers of software and browser that run on mobile phones.  John&#8217;s blog is at http://www.maperture.net/.&lt;/dd&gt;
  &lt;dt&gt;Brian Timoney&lt;/dt&gt;
  &lt;dd&gt;Brian is one of the main organizers of Frugos, and runs the &lt;a
href="http://www.thetimoneygroup.com/index.html"&gt;Timoney Group&lt;/a&gt; in Denver,
    which does map consulting work based on open source software, with a focus on
    the petroleum industry.  One of the
    interesting things Brian mentioned was that a number of their customers want to
    use Google Earth as a document management system.&lt;/dd&gt;
  &lt;dt&gt;Bill Thorp&lt;/dt&gt;
  &lt;dd&gt;Bill works for the National Park Service in Fort Collins, and is
    involved with cataloging and managing their numerous web services. You can see
    a nice picture of Bill at &lt;a
href="http://science.nature.nps.gov/im/contactsim/index.cfm"&gt;http://science.nature.nps.gov/im/contactsim/index.cfm&lt;/a&gt; - just scroll down a bit.&lt;/dd&gt;
  &lt;dt&gt;Eric Weisbender&lt;/dt&gt;
  &lt;dd&gt;Eric has the
    honor of being listed last!  Eric is a
    GIS specialist for &lt;a href="http://www.wapa.gov/"&gt;Western Area Power
    Administration&lt;/a&gt;, which is part of the Department of Energy.  He&#8217;s a strong proponent of open source
    software, including PostGIS, OGR, Hibernate, etc.&lt;/dd&gt;
&lt;/dl&gt;


</description>
      <pubDate>Tue, 19 Jun 2007 02:00:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:36bdf4fb-e650-4285-b001-82e3f3f7798c</guid>
      <comments>http://cfis.savagexi.com/2007/06/19/the-whos-who-of-the-frugos-unconference#comments</comments>
      <category>Cartography</category>
      <category>GIS</category>
      <trackback:ping>http://cfis.savagexi.com/trackbacks?article_id=439</trackback:ping>
      <link>http://cfis.savagexi.com/2007/06/19/the-whos-who-of-the-frugos-unconference</link>
    </item>
    <item>
      <title>Styling GeoRSS Points</title>
      <description>      &lt;p&gt;As we add custom styles for &lt;a href="http://www.mapbuzz.com"&gt;MapBuzz&lt;/a&gt;, an obvious question is how to style &lt;a href="http://georss.org/"&gt;GeoRss&lt;/a&gt; points. In particular, I would like to specify two images/icons for each Atom entry that has a GeoRss point - a normal image and a hover image for mouse overs.&lt;/p&gt;       &lt;p&gt;I&amp;#39;m wondering if there is any community consensus on how to do this? Doing a bit of research, I found a discussion about this on the GeoRss mailing list  in January. A  good starting point is a &lt;a href="http://lists.eogeo.org/pipermail/georss/2007-January/000922.html"&gt;post&lt;/a&gt; by Christopher Schmidt who talked about reusing KML, while Mikel Maron  &lt;a href="http://lists.eogeo.org/pipermail/georss/2007-January/000927.html"&gt;asked&lt;/a&gt; if reusing CSS was more appropriate.&lt;/p&gt;       &lt;p&gt;I agree that styling information shouldn&amp;#39;t  be added to GeoRss and that reusing CSS  is a good choice. However, CSS doesn&amp;#39;t work for points when you want to represent them with an image/symbol. Based on its HTML heritage, CSS considers images to be markup and not presentation and thus does not support changing an image&amp;#39;s src attribute. The closest it gets is supporting background images, but that seems like the wrong solution for this problem.&lt;/p&gt;       &lt;p&gt;Thus, we need to find another solution. Some ideas I&amp;#39;ve pondered include:&lt;/p&gt;       &lt;p&gt;1. Use KML as Chris suggested. It would look something like this: &lt;/p&gt; &lt;pre&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;Style&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900"&gt;id&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;quot;highlightPlacemark&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;IconStyle&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;Icon&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;href&amp;gt;&lt;/span&gt;&lt;/span&gt;http://maps.google.com/mapfiles/kml/paddle/red-stars.png&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/href&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/Icon&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/IconStyle&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/Style&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;Style&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900"&gt;id&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;quot;normalPlacemark&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;IconStyle&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;Icon&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;href&amp;gt;&lt;/span&gt;&lt;/span&gt;http://maps.google.com/mapfiles/kml/paddle/wht-blank.png&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/href&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/Icon&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/IconStyle&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/Style&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;StyleMap&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900"&gt;id&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;quot;exampleStyleMap&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;Pair&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;key&amp;gt;&lt;/span&gt;&lt;/span&gt;normal&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;styleUrl&amp;gt;&lt;/span&gt;&lt;/span&gt;#normalPlacemark&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/styleUrl&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/Pair&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;Pair&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;key&amp;gt;&lt;/span&gt;&lt;/span&gt;highlight&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;styleUrl&amp;gt;&lt;/span&gt;&lt;/span&gt;#highlightPlacemark&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/styleUrl&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/Pair&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/StyleMap&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;       &lt;p&gt;The          obvious downside to this is how verbose it is - which is fine for KML but doesn&amp;#39;t fit the GeoRss philosphy of keeping things simple. &lt;/p&gt;       &lt;p&gt;2. Reuse atom&amp;#39;s icon element:&lt;/p&gt; &lt;pre&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;atom:icon&amp;gt;&lt;/span&gt;&lt;/span&gt;http://www.mapbuzz.com/images/marker.gif&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/atom:icon&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;atom:icon&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900"&gt;pseudo-class&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;quot;hover&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    http://www.mapbuzz.com/images/marker_hover.gif&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/atom:icon&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;       &lt;p&gt;The downsides to this approach are:&lt;/p&gt;       &lt;ul&gt;         &lt;li&gt;atom:icon is defined only at the feed level.&lt;/li&gt;         &lt;li&gt;we have to introduce a custom attribute, which I called pseudo-class to match CSS&amp;#39;s terminology.&lt;/li&gt;         &lt;li&gt;If Atom ever supports icon at the entry level the semantics likely will be a bit different.&lt;/li&gt;         &lt;li&gt;atom:icon does not specify widths or heights, which is important to support SVG symbols. &lt;/li&gt;       &lt;/ul&gt;       &lt;p&gt;3. Reuse XHTML&amp;#39;s img element:&lt;/p&gt; &lt;pre&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;xhtml:img&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900"&gt;href&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;quot;http://www.mapbuzz.com/images/marker.gif&amp;quot;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #009900"&gt;height&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;quot;32&amp;quot;&lt;/span&gt; &lt;span style="color: #009900"&gt;width&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;quot;32&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;xhtml:img&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900"&gt;href&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;quot;http://www.mapbuzz.com/images/marker.gif&amp;quot;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #009900"&gt;height&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;quot;32&amp;quot;&lt;/span&gt; &lt;span style="color: #009900"&gt;width&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;quot;32&amp;quot;&lt;/span&gt;&lt;span style="color: #009900"&gt;alt&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;quot;hover&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;       &lt;p&gt;The advantage to this approach is that Atom&amp;#39;s content element already allows mixing in of XHTML, so there is some precedence. It also supports image sizes and we could hijack alt to specify different images types.&lt;/p&gt;       &lt;p&gt;4. Reuse SVG&amp;#39;s image element:&lt;/p&gt; &lt;pre&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;xhtml:img&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900"&gt;xlink:href&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;quot;http://www.mapbuzz.com/images/marker.gif&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #009900"&gt;x&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;quot;100&amp;quot;&lt;/span&gt; &lt;span style="color: #009900"&gt;y&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;quot;100&amp;quot;&lt;/span&gt;&lt;span style="color: #009900"&gt;height&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;quot;32&amp;quot;&lt;/span&gt; &lt;span style="color: #009900"&gt;width&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;quot;32&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;xhtml:img&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900"&gt;xlink:href&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;quot;http://www.mapbuzz.com/images/marker.gif&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #009900"&gt;x&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;quot;100&amp;quot;&lt;/span&gt; &lt;span style="color: #009900"&gt;y&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;quot;100&amp;quot;&lt;/span&gt;&lt;span style="color: #009900"&gt;height&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;quot;32&amp;quot;&lt;/span&gt; &lt;span style="color: #009900"&gt;width&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;quot;32&amp;quot;&lt;/span&gt; &lt;span style="color: #009900"&gt;pseudo-class&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;quot;hover&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;/pre&gt;       &lt;p&gt;An SVG image introduces a funny twist - it let&amp;#39;s you specify x and y values.I could see this being confused with the x/y values in a GeoRss point. Alternatively, it could be helpful to precisely postion this image. SVG images also support a number of style related attributes, such as opacity, which could be helpful.&lt;/p&gt;       &lt;p&gt;Currently, option #4 looks like the best choice to me, but just wondering what other people think. &lt;/p&gt;

</description>
      <pubDate>Sun, 03 Jun 2007 21:42:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:4de7caa9-0fb2-4c78-854f-9a1fb06f1c03</guid>
      <comments>http://cfis.savagexi.com/2007/06/03/styling-georss-points#comments</comments>
      <category>GIS</category>
      <trackback:ping>http://cfis.savagexi.com/trackbacks?article_id=434</trackback:ping>
      <link>http://cfis.savagexi.com/2007/06/03/styling-georss-points</link>
    </item>
    <item>
      <title>Under the Influence of Metcalfe's Law</title>
      <description>      &lt;p&gt;Its not every day &lt;a href="http://home.badc.rl.ac.uk/lawrence/blog/"&gt;someone&lt;/a&gt; takes the time to write me an &lt;a href="http://home.badc.rl.ac.uk/lawrence/blog/2007/05/08/it%27s_not_how_big_the_tool_is%2C_it%27s_what_you_do_with_it"&gt;open letter&lt;/a&gt; - I have to say its kind of fun. Brian added  some additional thoughts to our ongoing conversation about GML. In truth, this is where blogging breaks down a bit, it would be  much easier to sit down in a room for an hour and have a great in-depth technical discussion (of course, then our discussion wouldn't be available for the whole world to see which is significant downside).&lt;/p&gt;
      &lt;p&gt;Since its a bit hard sifting through where things stand in a long discussion, let me recap the points I think we agree on: &lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;GML is a toolkit that provides rules for translating your proprietary data model into XML &lt;/li&gt;
        &lt;li&gt;Having translated your data model into GML/XML,  it is then necessary to code both clients and servers to understand it&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;Where we disagree is whether this is a good idea or not.&lt;/p&gt;
      &lt;p&gt;I see at least three very different use cases here:&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt; I want to share within my own organization&lt;/li&gt;
        &lt;li&gt;I want to share with a preselected set of outside organizations&lt;/li&gt;
        &lt;li&gt;I want to share with the world&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;I'll agree with Brian that for the first two use cases, GML 2 (and 3) provides a workable solution (although I think GML 1 was a better solution and that the overhead of GML 2 is prohibitive).&lt;/p&gt;
      &lt;p&gt;Its item #3 though that really matters. One of the things that makes  the Web different  is &lt;a href="http://en.wikipedia.org/wiki/Metcalfe%27s_law"&gt;Metcalfe's Law&lt;/a&gt; (and &lt;a href="http://en.wikipedia.org/wiki/Reed's_law"&gt;Reed's Law)&lt;/a&gt; becomes predominant -  the value of something becomes much more important the more people use it. Which leads me to the conclusion that everyone has to agree to a shared data model and format. Otherwise you end with thousands of one-off data integrations, which does nothing to solve the general problem. &lt;/p&gt;
      &lt;p&gt;There are obvious downsides to agreeing to a general data model - it will always be a lowest common denominator and wont work for many complex integrations that live in the realm of the first two use cases. But there is an obvious upside - it is the only thing that has any chance of working out on the web. If you don't agree,  then please show me  a real-life example that disproves it.&lt;/p&gt;
      &lt;p&gt;So where does that leave us? I believe that GML as it is formulated has no chance of success out on the Web because its simply not designed for it. The obvious consequence is the emergence of the Atom  / GeoRSS combination and KML. And truth be told,  those standards solve the problem of rendering maps made up of multiple geographic data sources well enough.&lt;/p&gt;
      &lt;p&gt;What they don't solve is exchanging attribute data between systems. And this leads right into the hornet's nest of the Semantic Web and data modeling - no one has every come up with a solution to this problem and I doubt anyone ever will.&lt;/p&gt;
      &lt;p&gt; So faced with that daunting task - why not try the &lt;a href="http://c2.com/xp/DoTheSimplestThingThatCouldPossiblyWork.html"&gt;simplest  thing that could possibly work&lt;/a&gt; - which ironically was more or less GML 1: &lt;/p&gt;
      &lt;pre&gt;&lt;tt&gt;&#65279;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;Feature&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900"&gt;typeName&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #FF0000"&gt;&amp;quot;Road&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;
  &amp;lt;description&amp;gt;&lt;/span&gt;&lt;/span&gt;M11&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;/description&amp;gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;property&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900"&gt;typeName&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #FF0000"&gt;&amp;quot;classification&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;motorway&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;/property&amp;gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;property&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900"&gt;typeName&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #FF0000"&gt;&amp;quot;number&amp;quot;&lt;/span&gt; &lt;span style="color: #009900"&gt;type&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #FF0000"&gt;&amp;quot;integer&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;11&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;/property&amp;gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;geometricProperty&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900"&gt;typeName&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #FF0000"&gt;&amp;quot;linearGeometry&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;LineString&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900"&gt;srsName&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #FF0000"&gt;&amp;quot;EPSG:4326&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;coordinates&amp;gt;&lt;/span&gt;&lt;/span&gt;
        0.0,100.0 100.0,0.0
      &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;/coordinates&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;/LineString&amp;gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;/geometricProperty&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;/Feature&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;      
      &lt;p&gt;In today's world, I'd modify this a bit and start with Atom, add in GeoRSS, and then add in an new namespace that encodes properties like above. And I'd stick the same stuff in the KML metadata tag. &lt;/p&gt;
      &lt;p&gt;Now, I don't expect this to do diddly-squat for machine to machine integration. What I do expect it to do is make it easy for clients to show a nice property browser to users when they mouse over a feature on a map. And for the web, that's good enough since it all comes down to humans in the end anyway.&lt;/p&gt;


</description>
      <pubDate>Wed, 09 May 2007 16:03:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:1fad815f-2253-41ef-bae8-7ff5ee9a75a0</guid>
      <comments>http://cfis.savagexi.com/2007/05/09/under-the-influence-of-metcalfes-law#comments</comments>
      <category>GIS</category>
      <category>Modeling</category>
      <category>Web</category>
      <trackback:ping>http://cfis.savagexi.com/trackbacks?article_id=433</trackback:ping>
      <link>http://cfis.savagexi.com/2007/05/09/under-the-influence-of-metcalfes-law</link>
    </item>
    <item>
      <title>Lost in Abstraction - What Went Wrong with GML</title>
      <description>      &lt;p&gt;Joel Spolsky wrote a classic post back in 2001 titled &lt;a href="http://www.joelonsoftware.com/articles/fog0000000018.html"&gt;Don't Let Architecture Astronauts Scare You&lt;/a&gt;, which warns that the more abstract a solution to a problem is the less useful it becomes. Abstraction is a funny thing - just the right amount  gives you the insight to solve previously unsolvable problems but too much  obscures what you are trying to accomplish thereby leading you astray.&lt;/p&gt;
      &lt;p&gt;Atom is great example of an standard that gets the abstraction level right - as I &lt;a href="http://cfis.savagexi.com/articles/2007/04/26/atom-will-change-the-world"&gt;wrote&lt;/a&gt; the other day its simple model of collections containing entries turns out be a very useful way to view the world.&lt;/p&gt;
      &lt;p&gt;In contrast, the  &lt;a href="http://en.wikipedia.org/wiki/Geography_Markup_Language"&gt;Geography Markup Language&lt;/a&gt; (GML), which is the &lt;a href="http://en.wikipedia.org/wiki/Gis"&gt;GIS&lt;/a&gt; industry's primary data exchange format, is a standard that gets it wrong. Even if you know nothing about GIS or GML its a good example of trying so solve a problem by adding one too many levels of abstraction thereby solving  nothing. &lt;/p&gt;
      &lt;h3&gt;What's Your View of the World? &lt;/h3&gt;
      &lt;p&gt;GML sets out to solve an awfully difficult problem -  how can different systems exchange geographic information (if you want to be hip,  go with spatial information instead)?&lt;/p&gt;
      &lt;p&gt;The funny thing is the geometry part is fairly easy - put a few smart people in a room and they can come up with some reasonable way of describing points, lines, polygons and how they may or may not connect (you'd say roads connect with one another, but probably not to your front yard).&lt;/p&gt;
      &lt;p&gt;No, the hard bit is trying to describe the world. When you work with geographic information you immediately come face-to-face with the realization you're trying to model the real world. Of course that's true for any computer system, such as your company's payroll system, but somehow dealing with the physicality of the world really drives the point home.&lt;/p&gt;
      &lt;p&gt;Thus the real problem GML tries to solve is how can your computer system and my computer system exchange data about the world in a meaningful way? In my opinion that's an unsolvable problem,  because the way your database models the world is  different than mine. There is a fantastic book on the subject, called &lt;a href="http://www.amazon.com/gp/product/1585009709/103-5418670-2734224?v=glance&amp;amp;n=283155"&gt;Data and Reality&lt;/a&gt;, that every programmer, architect and model should read. I &lt;a href="http://cfis.savagexi.com/articles/2006/03/29/data-and-reality"&gt;wrote&lt;/a&gt; about it last year, and to quote the post:&lt;/p&gt;
      &lt;blockquote&gt;Take a simple term - say a street. What it is it? Have you ever been on a street that ends, and then starts up            in a few blocks? Is that the same street? How about a street whose name            changes - is it still the same street? Does a street  include boulevards,            highways, freeways? Does a street  cross city, county, state boundaries?            Do you and I live on the same street, although I live in the United States and you live in Canada? &lt;/blockquote&gt;
      &lt;h3&gt;A Good Start - Take #1&lt;/h3&gt;
      &lt;p&gt;GML 1 took a fairly simplistic way of solving the problem. You could define collections of features, with each feature having &amp;quot;normal&amp;quot; properties and geometric properties. For example, a road might look like this: &lt;/p&gt;
      &lt;pre&gt;&lt;tt&gt;&#65279;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;Feature&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900"&gt;typeName&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #FF0000"&gt;&amp;quot;Road&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;description&amp;gt;&lt;/span&gt;&lt;/span&gt;M11&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;/description&amp;gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;property&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900"&gt;typeName&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #FF0000"&gt;&amp;quot;classification&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;motorway&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;/property&amp;gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;property&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900"&gt;typeName&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #FF0000"&gt;&amp;quot;number&amp;quot;&lt;/span&gt; &lt;span style="color: #009900"&gt;type&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #FF0000"&gt;&amp;quot;integer&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;11&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;/property&amp;gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;geometricProperty&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900"&gt;typeName&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #FF0000"&gt;&amp;quot;linearGeometry&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;LineString&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #009900"&gt;srsName&lt;/span&gt;&lt;span style="color: #990000"&gt;=&lt;/span&gt;&lt;span style="color: #FF0000"&gt;&amp;quot;EPSG:4326&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;coordinates&amp;gt;&lt;/span&gt;&lt;/span&gt;
        0.0,100.0 100.0,0.0
      &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;/coordinates&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;/LineString&amp;gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;/geometricProperty&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-weight: bold"&gt;&lt;span style="color: #0000FF"&gt;&amp;lt;/Feature&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;

      &lt;p&gt;Having implemented the first commercial support of GML (in the Smallworld Internet Application Server), I can say that GML 1 was  easy to implement and gave us a good way to exchange data between clients and servers.&lt;/p&gt;
      &lt;h3&gt;A Standard Goes Awry -  Take #2&lt;/h3&gt;
      &lt;p&gt;And then things fell apart. GML 2 abandoned its RDF like flavor and replaced it with...well...nothing. Instead, GML moved up a level of abstraction. &lt;/p&gt;
      &lt;p&gt;Say what? Instead of saying &amp;quot;this is how you encode a road&amp;quot; it now says &amp;quot;this is how you construct a model that will let you encode a road.&amp;quot; Thus GML turned itself into a modeling language. If you're a programmer, a good analogy is UML, the universal modeling language. UML provides you the tools for modeling computer programs, which you then implement in some programming language. GML provides you the tools to model the world in the way you see fit, and then implement it via XML. To do this,  GML uses XML Schema as its  modeling language and makes use of every last obscure feature, including such gems as  substitution groups. &lt;/p&gt;
      &lt;h3&gt;What is a Client to Do?&lt;/h3&gt;
      &lt;p&gt;So how does this work in the real world? Let's say I want to model the road I showed above. First I have to create an XML Schema that defines a Road Feature, which must inherit from the appropriate abstract GML classes. Then I write out the road in an XML document that validates against the schema I just wrote.&lt;/p&gt;
      &lt;p&gt;But think of the poor client - what is it supposed to do with the xml document it just received from my server? Well - there are three obvious approaches.&lt;/p&gt;
      &lt;p&gt; First choice - hard-code the client to know exactly how I described a road. &lt;/p&gt;
      &lt;p&gt;Second choice -  build a hugely complex piece of software that can read in the XML schema, generate an implementation of it on the fly, then load in the XML data. This is in fact possible - and exactly what I did when  implementing our GML 2.0 support. However, after all that work, you still need a human to map the incoming data to your data model. In theory, being able to declare the mapping in a configuration file should be more flexible/powerful than coding the transformation by hand (like in the first choice). And maybe that's true in some programming languages. But if you're using a dynamic language like Ruby or Python, then the advantage is much less clear-cut. Having taken this approach once, I would not do it again.&lt;/p&gt;
      &lt;p&gt;Third choice - Every one agrees on a standard way of exchanging information and everyone then hard-codes their system to use it. This in fact is the solution that GML is headed towards by creating &amp;quot;GML Profiles.&amp;quot; As the &lt;a href="http://portal.opengeospatial.org/modules/admin/license_agreement.php?suppressHeaders=0&amp;amp;access_license_id=3&amp;amp;target=http://portal.opengeospatial.org/files/index.php?artifact_id=15201"&gt;GML Simple Profile Feature&lt;/a&gt; states:&lt;/p&gt;
      &lt;blockquote&gt;
      The GML specification declares a large number of XML elements and attributes meant to
        support a wide variety of capabilities...With such a wide scope, interoperability can only be achieved by defining 
        profiles of GML that deal with a restricted subset of GML capabilities. &lt;/blockquote&gt;
      &lt;p&gt;At this point you might be asking why exactly you went through the whole effort of creating a custom xml schema or even using GML. Good question - I don't have a good answer.&lt;/p&gt;
      &lt;h3&gt;And This Solves What? &lt;/h3&gt;
      &lt;p&gt;After seven years, the GML spec now weighs in at 548 pages with a 24 page index. Its numbing complexity has resulted in the development of several GML profiles, with the &amp;quot;Simple&amp;quot; one coming in at over 100 more pages.&lt;/p&gt;
      &lt;p&gt;In my view, the fundamental premise of GML is wrong. The ability to create custom data models is an anti-feature that makes integration between different computer systems impossible because it assumes that those  systems can actually understand the data. Computer systems have no such intelligence - they only understand what someone has programmed them to understand. &lt;/p&gt;
      &lt;p&gt;To hit the sweet spot you must come up with a standard, simple format that every system can use. As Tim Bray, the father of XML, &lt;a href="http://www.tbray.org/ongoing/When/200x/2006/01/08/No-New-XML-Languages"&gt;states&lt;/a&gt;:&lt;/p&gt;
      &lt;blockquote&gt;The value of a markup language is proportional  approximately to the square of the number of different software  implementations that can process it.  I could argue this from theory but would prefer to do so by example: HTML.  RSS.  PDF.  &lt;/blockquote&gt;
      &lt;p&gt;If you insist upon adding extensions, then at least come up with a standard base format like Atom has. GML offers no such simple standard, and as a result its adoption in the world is much less that it could have been, or should have been. &lt;/p&gt;
      &lt;p&gt;Instead mindshare has now switched to KML, a  simpler and easier to understand format. KML is hardly perfect - you can't define your own properties (as far as I can see) and it commits the cardinal sin of mixing presentation and data (didn't we finally get past that with  HTML and CSS?).  But this game is over, KML has won.&lt;/p&gt;

</description>
      <pubDate>Tue, 01 May 2007 13:13:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:23634d84-8056-48e7-87ae-d6a42e9d53ea</guid>
      <comments>http://cfis.savagexi.com/2007/05/01/lost-in-abstraction-what-went-wrong-with-gml#comments</comments>
      <category>GIS</category>
      <trackback:ping>http://cfis.savagexi.com/trackbacks?article_id=429</trackback:ping>
      <link>http://cfis.savagexi.com/2007/05/01/lost-in-abstraction-what-went-wrong-with-gml</link>
    </item>
    <item>
      <title>Can't Miss Web Mapping Seminar at GITA </title>
      <description>        &lt;p&gt;With a headline like that, this better be good, right?&lt;/p&gt;
        &lt;p&gt;  I'm  excited to announce the speakers for the  &lt;a href="http://gita.org/events/annual/30/seminars.asp#gis" title="GITA Seminar"&gt;Mapping Applications on the Web&lt;/a&gt; seminar on March 4th at  &lt;a href="http://www.gita.org/" title="GITA"&gt;GITA's&lt;/a&gt; annual conference in San Antonio.&lt;/p&gt;
        &lt;p&gt; Its an all-star team, including:&lt;/p&gt;
        &lt;p&gt;&lt;a href="http://www.ebatty.com/" title="Peter Batty"&gt;Peter Batty&lt;/a&gt;, Vice President of &lt;a href="http://www.intergraph.com/" title="Integraph"&gt;Integraph&lt;/a&gt;. Peter's presentation is titled &amp;quot;The disruption of geospatial technology&amp;quot; and will cover the radical changes that have reshaped the industry over the last few years and how traditional GIS vendors are adapting to the changed geospatial world.&lt;/p&gt;
        &lt;p&gt;&lt;a href="http://geospatial.blogs.com/" title="Geoff Zeiss"&gt;Geoff Zeiss&lt;/a&gt;, Director of Technology at &lt;a href="http://usa.autodesk.com/adsk/servlet/home?siteID=123112&amp;amp;id=129446" title="Autodesk"&gt;Autodesk&lt;/a&gt;. Geoff, who has a great &lt;a href="http://geospatial.blogs.com/" title="Geoff Zeiss"&gt;blog&lt;/a&gt;, will talk about open source geospatial software and open standards, and how Web 2.0 technologies can be used by enterprises and utilities to improve their operations.&lt;/p&gt;
        &lt;p&gt;Bill Gail, &lt;a href="http://www.microsoft.com/en/us/default.aspx"&gt;Microsoft&lt;/a&gt;, Virtual Earth team. Bill will offer a peek behind the curtain of Virtual Earth by talking about the challenges of managing such massive amounts of data. He'll also  provide his insight on what is coming next from Microsoft, and how he thinks  the new geospatial Internet will be used in the future.&lt;/p&gt;
        &lt;p&gt;And for my presentation, I'll  talk about social mapping - using the  web to create mashups, share data and create communities of users.&lt;/p&gt;
        &lt;p&gt;Best of all, the last 40 minutes of the seminar will be a question and answer session. So if you're attending GITA, make sure to sign up for the seminar and come prepared  with lots of questions!&lt;/p&gt;


</description>
      <pubDate>Fri, 09 Feb 2007 10:56:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:7b677e77-b7a0-4063-90e0-29374f56adf0</guid>
      <comments>http://cfis.savagexi.com/2007/02/09/cant-miss-web-mapping-seminar-at-gita#comments</comments>
      <category>GIS</category>
      <trackback:ping>http://cfis.savagexi.com/trackbacks?article_id=416</trackback:ping>
      <link>http://cfis.savagexi.com/2007/02/09/cant-miss-web-mapping-seminar-at-gita</link>
    </item>
    <item>
      <title>A Bit of GIS History - the Smallworld Technical Papers</title>
      <description>&lt;p&gt;For those interested in the history of GIS, in the late 1980's and early
      1990's, the founders of Smallworld laid out their vision for the future of
      GIS in a series of technical papers. I recently noticed the papers are no
      longer online, so I fished them out of the &lt;a href="http://www.archive.org/web/web.php"&gt;Internet
        Archive WayBack Machine&lt;/a&gt; and have &lt;a href="http://cfis.savagexi.com/pages/technical_papers"&gt;posted&lt;/a&gt; them
      on my site.&lt;/p&gt;
    &lt;p&gt; Fifteen years later, its interesting to reread the papers, and see how these
      ideas changed the industry. The best known of the articles is &lt;a href="http://cfis.savagexi.com/pages/technical_paper_1"&gt;Ten
    Difficult Problems in Building a GIS, &lt;/a&gt;by Richard Newell. The keypoints are: &lt;/p&gt;
    &lt;ul&gt;
      &lt;li&gt;Spatial data should be stored in seamless databases, not tiled systems&lt;/li&gt;
      &lt;li&gt;Spatial databases should support huge amounts of data&lt;/li&gt;
      &lt;li&gt;Spatial databases should be &lt;a href="http://cfis.savagexi.com/pages/technical_paper_4"&gt;versioned&lt;/a&gt; to enable &lt;a href="http://cfis.savagexi.com/pages/technical_paper_9"&gt;long
      transactions&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://cfis.savagexi.com/pages/technical_paper_10"&gt;Topology&lt;/a&gt; should
        be supported &lt;/li&gt;
      &lt;li&gt;Vector and raster data should  be supported&lt;/li&gt;
      &lt;li&gt;Interaction with spatial data should be done via a &lt;a href="http://cfis.savagexi.com/pages/technical_paper_5"&gt;dynamic&lt;/a&gt;,
        &lt;a href="http://cfis.savagexi.com/pages/technical_paper_3"&gt;object-oriented&lt;/a&gt; language
        (in the same way Ruby and ActiveRecord work in Ruby on Rails) &lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;These ideas were so far ahead of their time that they propelled Smallworld
      into a hundred million dollar a year company and an IPO on Nasdaq  a mere
      six years after its founding in 1990.  They also created an extraordinarily
      loyal user base. Once you used it, you never wanted to go back. Just like Mac
      users knew their machines were vastly superior to Wintel boxes, Smallworld
      users knew their software was light years ahead of anything ESRI, or anyone
      else, offered.&lt;/p&gt;
    &lt;p&gt;When I started
      at Smallworld in 1997 no other GIS system had these features. ESRI was struggling
      to overcome its ancient, ArcInfo/ArcGIS tiled-based technology that used AML
      and Avenue for customization.  Technically, we beat them hand-downs in every
      technical benchmark. When we lost a deal, it was always for political
      reasons. &lt;/p&gt;
    &lt;p&gt;It was only recently have these ideas have entered the mainstream:&lt;/p&gt;
    &lt;ul&gt;
      &lt;li&gt;Spatial data is stored in relational database such as
        Oracle or PostGIS&lt;/li&gt;
      &lt;li&gt;Terabyte size GIS databases are common &lt;/li&gt;
      &lt;li&gt;Smallworld, Oracle and ESRI support versioned databases&lt;/li&gt;
      &lt;li&gt;Google maps has trained user to think something is wrong if you can't see
      vector data overlaid on top of raster data&lt;/li&gt;
      &lt;li&gt;Perl, Python and Ruby show the productivity gains provided by object-oriented,
        dynamic languages&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;But even today, there are very few environments that combine all these elements
      together. And Smallworld still
      has some unique features. For example, it has the concept of worlds. In most
      GIS systems there is one world - the outside world where you see map data.
      But let's say your map shows a building. Often times it is useful to click
      on the building and go inside of it - you've entered the building's world which
      has its own coordinate system and bounds. Once inside the building, you may
      want to open a switch box and see how fibers connect to each other. And then
      you might want to know where does a particular fiber lead, what customers will
      be impacted if it gets turned off. &lt;/p&gt;
    &lt;p&gt;Another thing Smallworld excels at is speed - it was built when network connections
      were painfully slow. Thus the system does some very clever &lt;a href="http://cfis.savagexi.com/pages/technical_paper_13"&gt;caching&lt;/a&gt; at
      the client, resulting in near instantaneous response times, even when working
      against a terabyte sized database. All this happens under the hood, the user
      doesn't have to know anything about it. And it even works across dial up lines,
      which of course were the norm back in the early 90's.&lt;/p&gt;
    &lt;p&gt;So if you have a few minutes, its definitely worth you time to look through
      these papers. &lt;/p&gt;


</description>
      <pubDate>Tue, 08 Aug 2006 02:03:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:13182962-8904-4488-b501-7eaf87afa477</guid>
      <comments>http://cfis.savagexi.com/2006/08/08/a-bit-of-gis-history-the-smallworld-technical-papers#comments</comments>
      <category>GIS</category>
      <category>Smallworld</category>
      <trackback:ping>http://cfis.savagexi.com/trackbacks?article_id=360</trackback:ping>
      <link>http://cfis.savagexi.com/2006/08/08/a-bit-of-gis-history-the-smallworld-technical-papers</link>
    </item>
  </channel>
</rss>
