友情提示,您阅读本篇博文的先决条件如下:
1、本文示例基于Microsoft SQL Server 2008 R2调测。
2、具备 Transact-SQL 编程经验和使用 SQL Server Management Studio 的经验。
3、熟悉或了解Microsoft SQL Server 2008中的空间数据类型。
4、具备相应(比如OGC规范、KML规范)的GIS专业理论知识。
5、其他相关知识。
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的聚合格式:
<?xmlversion=“1.0”encoding=“gb2312”?>
<rssversion=“2.0”>
<channel>
<title>网站或栏目的名称</title>
<link>网站或栏目的URL地址</link>
<description>网站或栏目的简要介绍</description>
<item>
<title>新闻标题</title>
<link>新闻的链接地址</link>
<description>新闻简要介绍</description>
<pubDate>新闻发布时间</pubDate>
<author>新闻作者名称</author>
</item>
<item>
……
</item>
</channel>
</rss>
而GeoRSS的XML数据格式和RSS几乎相同,只是在RSS的基础上使用GML扩展了对于地理空间数据的描述信息,如下GeoRSS数据。
<feed
xmlns="http://www.w3.org/2005/Atom"
xmlns:georss="http://www.georss.org/georss"
xmlns:gml="http://www.opengis.net/gml"
>
<entry>
<id>urn:uuid:7e8ee974-9181-4eae-ad65-55d29175d942</id>
<linkhref="http://example.org/entries/1"/>
<title>CedarburgTrip</title>
<summary>WewenttovisitdowntownCedarburgbeforethe
conference.HadsomegreatsandwichesatJoe's.Ifyou
haven'tbeentoCedarburg,Wisconsin,thenyouhaven't
reallyexperiencedtheMidWest...</summary>
<contenttype="html"src="http://example.org/entries/1"/>
</entry>
<entry>
<id>urn:uuid:53664db3-4598-45d4-a727-022c6203322e</id>
<linkrel="related"href="http://example.org/entries/1"/>
<title>DowntownCedarburg,Wis.</title>
<summary>WenttovisitdowntownCedarburg...</summary>
<georss:where>
<gml:Point>
<gml:pos>43.296700-87.98750</gml:pos>
</gml:Point>
</georss:where>
</entry>
<entry>
<id>urn:uuid:2528d1b4-b5a9-415c-be69-f83974e3e6af</id>
<linkrel="related"href="http://example.org/entries/1"/>
<title>ConventionCenter</title>
<georss:where>
<gml:LineString>
<gml:posList>43.296700-87.98750043.3-88-44-89</gml:posList>
</gml:LineString>
</georss:where>
</entry>
</feed>
二、GeoRSS空间编码
通常有三种GeoRSS编码,既简单编码、GML编码和W3C编码。详细请查阅:http://www.georss.org/Encodings。
简单编码通常用于定义点、线、多边形等规则的空间数据,GML则通常适用于定义不规则的空间数据,如地市区域。
三、定义GeoRSS数据
定义GeoRSS数据其实主要就是在玩GeoRSS空间编码,知道如何定义点、线、多边形以及不规则的空间图形。如下GeoRSS定义了一个点(重庆)坐标。
<?xmlversion="1.0"encoding="utf-8"?>
<feedxmlns="http://www.w3.org/2005/Atom"
xmlns:georss="http://www.georss.org/georss">
<title>重庆</title>
<subtitle>重庆坐标</subtitle>
<linkhref="http://example.org/"/>
<updated>2011-3-2523:34:26</updated>
<author>
<name>Beniao</name>
<email>beniao@live.cn</email>
</author>
<id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>
<entry>
<title>ChongQing</title>
<linkhref="http://example.org/2005/09/09/atom01"/>
<id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
<updated>2011-3-2523:35:00</updated>
<summary>summary>
<georss:point>29.5076372217973106.489384971208</georss:point>
</entry>
</feed>
同样的定义一条空间线段,只是使用的GeoRSS编码不同,如下定义了【成都--重庆】的空间线段示例。
<georss:line>30.6666587469201104.06202117723329.5076372217973106.489384971208</georss:line>
四、创建GeoRSS聚合存储过程
创建GeoRSS聚合存储过程的作用就是将空间数据格式化为GeoRSS的数据格式,存储过程中实现查询空间数据,转换空间数据为GML后并构造为GeoRSS的数据输出。《SQL Server 2008空间数据应用系列九:使用空间工具(Spatial Tools)导入ESRI格式地图数据》一文中实现了将shp数据导入到SQL Server 2008中,本篇以此数据为例创建存储过程发布GeoRSS。
USE[BingMapsDB]
GO
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
CREATEPROCEDURE[dbo].[CQGeoRSSFeeder]
AS
BEGIN
SETNOCOUNTON;
--定义XML类型变量用于存储GeoRSS内容
DECLARE@GeoRSSxml;
WITHXMLNAMESPACES(
'http://www.opengis.net/gml'ASgml,
'http://www.georss.org/georss'ASgeorss
)
SELECT@GeoRSS=
(SELECT
[NAME]AStitle,
[NAME]ASdescription,
'http://www.beginningspatial.com/'+CAST([ID]ASvarchar(8))ASlink,
geom.AsGml()AS[georss:where]
FROM
CQ_Region
FORXMLPATH('item'),ROOT('channel')
)
/**
*使用XQuery格式化XML结果
**/
SELECT@GeoRSS.query('
<rssversion="2.0"
xmlns:georss="http://www.georss.org/georss"
xmlns:gml="http://www.opengis.net/gml">
<channel>
<title>SQLServer2008GeoRSS</title>
<description>GeoRSS数据描述</description>
<link>http://www.beginningspatial.com</link>
{
for$einchannel/item
return
<item>
<title>{$e/title/text()}</title>
<description>{$e/description/text()}</description>
<link>{$e/link/text()}</link>
<pubDate>{$e/pubDate/text()}</pubDate>
<georss:where>
{
for$childin$e/georss:where/*
return
if(fn:local-name($child)="Point")then<gml:Point>{$child/*}</gml:Point>
elseif(fn:local-name($child)="LineString")then<gml:LineString>{$child/*}</gml:LineString>
elseif(fn:local-name($child)="Polygon")then<gml:Polygon>{$child/*}</gml:Polygon>
elseif(fn:local-name($child)="MultiPoint")then<gml:MultiPoint>{$child/*}</gml:MultiPoint>
elseif(fn:local-name($child)="MultiCurve")then<gml:MultiCurve>{$child/*}</gml:MultiCurve>
elseif(fn:local-name($child)="MultiSurface")then<gml:MultiSurface>{$child/*}</gml:MultiSurface>
elseif(fn:local-name($child)="MultiGeometry")then<gml:MultiGeometry>{$child/*}</gml:MultiGeometry>
else()
}
</georss:where>
</item>
}
</channel>
</rss>
')ASGeoRSSFeed;
end
注:执行该存储过程后的就可以将表中所有的空间数据建立GeoRSS输出,输出内容比较大,这里就不贴XML结果了,随本文末的示例代码一起提供给大家下载。
五、.NET发布GeoRSS订阅
.NET服务端可以通过ASPX、ASHX等方式来发布GeoRSS订阅服务,这一步其实非常简单,就是直接调用上面的存储过程,见数据库中的空间数据以GeoRSS的数据格式输出到客户端呈现即可。以下为详细的代码实现:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Data.SqlClient;
namespaceGeoRSSService
{
///<summary>
///发布SQLServer2008中的空间数据为GeoRSS。
///</summary>
publicclassGeoRSSHandler:IHttpHandler
{
publicvoidProcessRequest(HttpContextcontext)
{
context.Response.ContentType="text/xml";
context.Response.Charset="iso-8859-1";
context.Response.CacheControl="no-cache";
context.Response.Expires=0;
SqlConnectionmyConn=newSqlConnection(
@"server=.;database=BingMapsDB;uid=sa;pwd=beniao;");
myConn.Open();
stringmyQuery="execdbo.CQGeoRSSFeeder";
SqlCommandmyCMD=newSqlCommand(myQuery,myConn);
SqlDataReadermyReader=myCMD.ExecuteReader();
while(myReader.Read())
{
//输出GeoRSS到客户端
context.Response.Write(myReader["GeoRSSFeed"].ToString());
}
myReader.Close();
myConn.Close();
}
publicboolIsReusable
{
get
{
returnfalse;
}
}
}
}
六、相关资料
[1]、RSS官网:http://www.georss.org/georss
[2]、RSS简介:http://baike.baidu.com/view/1644.htm
[3]、GML简介:http://baike.baidu.com/view/609279.htm
分享到:
相关推荐
资源分类:Python库 所属语言:Python 资源全名:georss_client-0.3.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源分类:Python库 所属语言:Python 资源全名:georss_client-0.8.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源来自pypi官网。 资源全名:aio_georss_gdacs-0.2b2-py3-none-any.whl
资源来自pypi官网。 资源全名:georss_qld_bushfire_alert_client-0.3.tar.gz
数据模型大致遵循 OGC“SQL 的简单功能”规范,因此它应该可以很好地处理从 PostGIS 或任何空间扩展(MongoDB、MySQL...)返回的数据。 它还支持各种输出和输入格式(GeoRSS、KML、Shapefile)。 GeoRuby 是用纯 ...
安装pip install georss-ingv-centro-nazionale-terremoti-client 用法有关如何使用此库的示例,请参见下文。 实例化提要类并提供所需的参数后,您可以调用update来检索提要数据。 返回值将是状态代码的元组和特定...
esri官方在08年最后一天放出了一个例子程序:Map Viewer,不同于开发环境中模板程序web mapping application,这个名为viewer的程序涵盖了更多方面,包括:打印,输出图片,添加georss,动态上传并添加本地数据,...
___ _ ___ ... 将它用作聚合器——将您的 GeoRSS 提要发布到它,然后使用 WFS 浏览它们。 将其用作翻译器:使用 OGR 数据源加载 shapefile 并在 Google 地球中打开它。 数据源(存储) 数据源 描述 数据
shp2georss:将esri形状文件转换为GeoRSS,可以在Virtual Earth,Yahoo map,Google Map中查看,由美国国家科学基金会赞助,爱达荷州立大学,由Joe Window在爱达荷州立大学MapWindow软件实验室开发
快速,简单的Podcast RSS生成器/生成器,用于Node项目。 支持机箱和GeoRSS。 安装 $ npm install podcast 用法 创建一个新的提要 import Podcast from 'podcast' ; const feed = new Podcast ( feedOptions ) ; ...
rss RSS feed生成器。 将RSS feed添加到任何项目。 支持机箱和GeoRSS。用法创建一个新的提要var RSS = require ( 'rss' ) ;var feed = new RSS ( feedOptions ) ;feedOptions title字符串您网站或Feed的标题...
├─06 Google Maps API高级编程 │ ├─6.1 GPolyline折线对象和GPolygon多边形对象 │ │ ├─6.1.1 使用GPolyline折线对象 │ │ ├─6.1.2 使用GPolygon多边形对象 ...│ └─6.3.5 加载KML或GeoRSS文档
因为没有数据就可以进行地理编码,所以它提供了一个易于使用的导入程序,可以自动将必要的(免费)数据下载并导入到本地数据库( , , 和 :超过1亿个条目)。 您还可以使用Web界面或提供的导入器连接器添加自己的...
MediaRSS,GeoRSS等扩展的生成器和解析器。 rome-opml 解析器和工具。 rome-fetcher 已弃用(有关详细信息,请参见 ) 其他不推荐使用的模块: rome-certiorem , rome-certiorem-webapp和rome-propono 。 ...
) 这些可以通过运行(轻量级)lint自动应用/修复: make lint 此外,在寻求编写出色的代码的过程中,我们使用各种工具来帮助我们发现所写内容的问题,包括: 类型描述整理工具, 质量检查工具 , , ,静态分析 , ...
数据维基你好! 欢迎来到DataWiki项目页面:) DataWiki在Google AppEngine for Java平台上运行,因此也可以在专用网络上运行,也可以在现场在笔记本电脑上离线运行。 DataWiki具有下面列出的设计和功能,目前正在开发...
它可以读写各种格式:WKT(包括EWKT),WKB(包括EWKB),GeoJSON,KML,GPX和GeoRSS。 它适用于所有简单特征几何体(点,线串,多边形,GeometryCollection等),并且可以用于获取质心,边界框,面积以及各种其他...
PocketMaps 是小型、可折叠的 PocketMod,在每个“页面”上都有地图和说明。... 这些可以从 KML 或 GeoRSS 文件创建。 PocketMaps 需要一个 ModestMaps 服务器来创建地图缩略图。 干杯! 安德鲁·特纳
基本功能及使用 – 目前版本:GMap2 – HelloWorld程序,Maps控件,事件处理,信息窗口,层,点、折线以及多 边型等 • 高级功能简介 – 异步HTTP通讯:GXmlHttp, GDownloadUrl – 创建自己的控件:控件子类化 – ...