GeoRSS是一种描述和查明互联网内容所在物理位置的方法。通过使用GeoRSS,搜索Web站点或者与地理位置有关的项目就成为可能。GeoRSS利用地理标识语言(GML),即利用可扩展标记语言 (Extensible Markup Language, XML)存储和传输地理数据的方法。原始的GML模型以由World Wide Web联盟(W3C)所开发的资源描述框架(RDF)为基础。GML保持着RDF的许多特性,包括智能代理和一个用于描述和查询数据的标准语法。GeoRSS 是在 RSS 订阅源中包含地理空间数据时所用的一个标准,它定义了一种名为 GeoRSS GML 的特定格式,用来在订阅源中包含 GML 格式的数据。客户端应用程序可以订阅 GeoRSS 订阅源,订阅方式与订阅常规 RSS 订阅源相同。可以轻松地将 GeoRSS 格式的数据导入Microsoft Bing Maps、Google Maps中。
一、GeoRSS聚合格式
相信很多朋友多玩过RSS订阅的,其聚合数据的格式以XML方式承载,主要包括头信息和体信息,体信息可能是一项或多项的数据组成。以下为RSS的聚合格式:
< xml version=“1.0” en coding=“gb2312” >
网站或栏目的URL地址
新闻的链接地址
……
而GeoRSS的XML数据格式和RSS几乎相同,只是在RSS的基础上使用GML扩展了对于地理空间数据的描述信息,如下GeoRSS数据。
xmlns:georss="http://www.georss.org/georss"
xmlns:gml="http://www.opengis.net/gml"
>
http://example.org/entries/1"/>
conference. Had some great sandwiches at Joe's. If you
haven't been to Cedarburg, Wisconsin, then you haven't
really experienced the MidWest...
http://example.org/entries/1"/>
http://example.org/entries/1"/>

二、GeoRSS空间编码
通常有三种GeoRSS编码,既简单编码、GML编码和W3C编码。详细请查阅:http://www.georss.org/Encodings。
简单编码通常用于定义点、线、多边形等规则的空间数据,GML则通常适用于定义不规则的空间数据,如地市区域。
三、定义GeoRSS数据
定义GeoRSS数据其实主要就是在玩GeoRSS空间编码,知道如何定义点、线、多边形以及不规则的空间图形。如下GeoRSS定义了一个点(重庆)坐标。
< xml version="1.0" encoding="utf-8" >
xmlns:georss="http://www.georss.org/georss">
http://example.org/"/>
http://example.org/2005/09/09/atom01"/>
同样的定义一条空间线段,只是使用的GeoRSS编码不同,如下定义了【成都--重庆】的空间线段示例。
四、创建GeoRSS聚合存储过程
创建GeoRSS聚合存储过程的作用就是将空间数据格式化为GeoRSS的数据格式,存储过程中实现查询空间数据,转换空间数据为GML后并构造为GeoRSS的数据输出。《SQL Server 2008空间数据应用系列九:使用空间工具(Spatial Tools)导入ESRI格式地图数据》一文中实现了将shp数据导入到SQL Server 2008中,本篇以此数据为例创建存储过程发布GeoRSS。
USE [BingMapsDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[CQGeoRSSFeeder]
AS
BEGIN
SET NOCOUNT ON;
-- 定义XML类型变量用于存储GeoRSS内容
DECLARE @GeoRSS xml;
WITH XMLNAMESPACES (
'http://www.opengis.net/gml' AS gml,
'http://www.georss.org/georss' AS georss
)
SELECT @GeoRSS =
(SELECT
[NAME] AS title,
[NAME] AS description,
'http://www.beginningspatial.com/' + CAST([ID] AS varchar(8)) AS link,
geom.AsGml() AS [georss:where]
FROM
CQ_Region
FOR XML PATH('item'), ROOT('channel')
)
/**
* 使用XQuery格式化XML结果
**/
SELECT @GeoRSS.query('
xmlns:gml="http://www.opengis.net/gml">
http://www.beginningspatia