随笔-254  评论-3310  文章-48  trackbacks-74

SQL Server 2008空间数据应用系列九:使用空间工具(Spatial Tools)导入ESRI格式地图数据

 友情提示,您阅读本篇博文的先决条件如下:

  1、本文示例基于Microsoft SQL Server 2008 R2调测。

  2、具备 Transact-SQL 编程经验和使用 SQL Server Management Studio 的经验。

  3、熟悉或了解Microsoft SQL Server 2008中的空间数据类型。

  4、具备相应(比如OGC规范、KML规范)的GIS专业理论知识。

  5、其他相关知识。


   geography 和geometry数据类型包括以用于在OGC中所定义的地理数据的已知文本(Well Known Text,WKT)和已知二进制(Well Known Binary,WKB)格式导入和导出数据的方法,还包括普遍使用的地理标示语言(Geographic Markup Language,GML)格式,这使得很容易从支持这些格式的数据源导入地理数据。地理数据很容易从一些政府和商业数据源获得,并且可以相对容易地从许多现有的GIS应用程序和GPS系统中导出。Microsoft保持与一些第三方GIS供应商和地理数据解决方案供应商的紧密关系,这帮助确保SQL server 2008和广泛的行业标准工具间的强大兼容能力,以用于导入、导出和操纵空间数据。

 

  通常我们开发一个GIS应用,基于GIS做数据分布呈现、统计汇总、搜索等等的功能,几乎都离不开地图数据的支持,一方面是作为地图呈现需要,其次是为了方便做空间分析等诸多功能。而对于空间数据的需求,通常不需要自己去建立空间数据,市面上有许多非常成熟的地图数据可以直接被采购使用,并以此为基础直接建立基于地图空间数据的GIS应用。另外网上也提供了比较多的空间数据免费下载资源,可以轻松的获取到空间数据。本篇将使用SQL空间工具(SqlSpatialTools) 介绍ESRI地图空间数据(shpfile)导入到SQL Server 2008的实现。

 

一、SQL空间数据导入工具(Shape2SQL)

  SharpGIS发布了一个专门用来导入ESRI地图空间数据(shpfile)的工具,可以非常简单的实现将shpfile的地图数据文件中的空间数据导入到SQL Server 2008中,可以通过如下地址下载该工具。

  SQL空间工具下载地址:http://www.sharpgis.net/page/SQL-Server-2008-Spatial-Tools.aspx

        

 

  该工具的运行环境需要微软.NET Framewrok 3.5和Microsoft SQL Server System CLR Types。使用该工具通过简单的可视化界面即可连接上SQL Server 2008的数据库服务器,目前该工具仅仅只支持几种常用的主流空间类型数据,包括:Point 、MultiPoint、(Multi)Polygon 和 (Multi)LineStrings 。详细可访问:http://www.sharpgis.net/page/Shape2SQL.aspx

 

二、SQL空间数据查询工具(SqlSpatial-Query-Tool)

   SQL Server 2008空间数据查询工具可以直接连接到SQL Server 2008数据库服务器,实现空间数据的查询,可视化界面呈现。详细可访问:http://www.sharpgis.net/page/SqlSpatial-Query-Tool.aspx

        

  

 

三、导入Shpfile地图空间数据

   如本文篇前的截图,使用SQL空间导入工具实现将ESRI的shpfile地图空间数据导入SQL Server 2008其实非常简单,在导入的时候注意表名和SRID就可以了,其他的可以不用管。如下图演示了将重庆市的大区边界地图数据导入到SQL Server 2008中。

        

 

四、查询空间数据

  实现可以查询可以在SQL Server Management Studio中执行对表(CQ_Region)的的全表查询,于空间结果选项中可以看到如下图所示的空间呈现效果。  

        

  另外还可以使用空间查询工具实现SQL Server 2008中的空间数据查询,Spatial Query Tools查询出的空间输入结果如下所示。

        

 

五、空间计算支持

   数据库里面有了空间数据,就可以给予数据展开空间计算、统计、分析等给力的功能实现,与GIS客户端结合来完成各种简单、负责的空间计算、分析。如下SQL演示了计算上面导入的重庆大界区的地图的地理面积计算。

select geom.STArea() from CQ_Region WHERE ID=1;
select geom.STArea() from CQ_Region WHERE ID=2
select geom.STArea() from CQ_Region WHERE ID=3;
select geom.STArea() from CQ_Region WHERE ID=4;
select SUM(geom.STArea()) from CQ_Region;

 

六、相关资料

  [1]、KML规范:http://www.opengeospatial.org/standards/kml/

  [2]、Google KML文档简介:http://code.google.com/intl/zh-CN/apis/kml/documentation/

  [3]、空间工具(Spatial Tools): http://www.sharpgis.net/page/SQL-Server-2008-Spatial-Tools.aspx

 

版权说明

  本文属原创文章,欢迎转载且注明文章出处,其版权归作者和博客园共有。为了保存作者的创作热情,请在转载后的明显位置标记本文出处。  

  作      者:Beniao

 文章出处:http://beniao.cnblogs.com/  或  http://www.cnblogs.com/

posted on 2011-03-22 09:07 Bēniaǒ 阅读(2324) 评论(18) 编辑 收藏

评论:
#1楼 2011-03-22 09:16 | 观海看云      
学习了。哈哈。。。
 回复 引用 查看   
#2楼 2011-03-22 09:25 | ibrahim      
大牛开始搞GIS了
 回复 引用 查看   
#3楼[楼主] 2011-03-22 10:40 | Bēniaǒ      
@观海看云
:)一起学习,交流。

 回复 引用 查看   
#4楼[楼主] 2011-03-22 10:40 | Bēniaǒ      
@ibrahim
业余爱好,学习。

 回复 引用 查看   
#5楼 2011-03-22 13:25 | 邀月      
geography插上了SL的翅膀,天地顿时宽广了许多。
 回复 引用 查看   
#6楼[楼主] 2011-03-22 13:42 | Bēniaǒ      
@邀月
是啊,空间计算、空间分析、空间报表,都是非常给力的东东,只是目前这些功能应用到产品开发中的不多,在过1-2年或许会使用得很频繁。

给空间数据插上Silverlight的翅膀可以查看:SQL Servr 2008空间数据应用系列七:基于Bing Maps(Silverlight) 的空间数据展现

 回复 引用 查看   
#7楼 2011-03-30 09:28 | 邀月      
引用Bēniaǒ:
@邀月
是啊,空间计算、空间分析、空间报表,都是非常给力的东东,只是目前这些功能应用到产品开发中的不多,在过1-2年或许会使用得很频繁。

给空间数据插上Silverlight的翅膀可以查看:SQL Servr 2008空间数据应用系列七:基于Bing Maps(Silverlight) 的空间数据展现

感谢分享!

 回复 引用 查看   
#8楼 2011-05-10 23:36 | hanyubao      
多天来寻求beniao未果,特到此打个招呼.
 回复 引用 查看   
#9楼[楼主] 2011-05-13 16:22 | Bēniaǒ      
@hanyubao
:)欢迎再来。

 回复 引用 查看   
#10楼 2011-08-10 20:44 | dazuo      
为什么我用这个导入的shp格式地图,中文名称都成了乱码了?
 回复 引用 查看   
#11楼 2011-08-10 21:04 | dazuo      
选择Planar,平面的就提示有两个错误说是“Could not insert row #365:
NAME:
CODE: 442001
System.FormatException: 24305: 因为环包含的非重复点太少,所以多边形输入无效。多边形的每个环必须至少包含三个非重复点。”和“Could not insert row #375:
NAME: ¹ã¶«Ê¡
CODE: 442001
System.FormatException: 24305: 因为环包含的非重复点太少,所以多边形输入无效。多边形的每个环必须至少包含三个非重复点。”,而且里面的中文地名都是乱码。用球体的到365行了就停止了,不能用。请问怎么处理后的shp文件才有效啊?这个shp文件时我用FME从TAB格式中转换来的,我又从网上下了几个SHP格式的地图一样不能导入,偶尔导入成功一个点信息的文件,里面的中文也是乱码。请楼主帮忙。

 回复 引用 查看   
#12楼 2011-08-12 14:10 | 韩锁      
引用Bēniaǒ:
@邀月
是啊,空间计算、空间分析、空间报表,都是非常给力的东东,只是目前这些功能应用到产品开发中的不多,在过1-2年或许会使用得很频繁。

给空间数据插上Silverlight的翅膀可以查看:SQL Servr 2008空间数据应用系列七:基于Bing Maps(Silverlight) 的空间数据展现

楼主确实牛B,应该是计算机科班出身吧。
其实呢,GIS在国内外应用的都已经很广泛了。在国内从实验室走出来也有二三十年了,空间计算、空间分析、空间报表这些东西在GIS里面只不过是最基础的而已~~
国外的Esri,国内的超图公司等,都有很强大的产品。(这一类的产品很多了)

 回复 引用 查看   
#13楼 2011-08-12 14:13 | 韩锁      
基于空间数据的一些应用、项目开发等现在也是逐渐走入大众的视线。目前来说,在国土,城市规划、测绘、电力、资源等领域应用的已经很广泛了(大部分是政府、事业单位等)。
 回复 引用 查看   
#14楼[楼主] 2011-08-12 17:37 | Bēniaǒ      
@dazuo
引用dazuo:为什么我用这个导入的shp格式地图,中文名称都成了乱码了?


确实会有乱码情况的,暂时还没找到解决方案。

 回复 引用 查看   
#15楼[楼主] 2011-08-12 17:40 | Bēniaǒ      
@韩锁
引用韩锁:
引用Bēniaǒ:
@邀月
是啊,空间计算、空间分析、空间报表,都是非常给力的东东,只是目前这些功能应用到产品开发中的不多,在过1-2年或许会使用得很频繁。

给空间数据插上Silverlight的翅膀可以查看:SQL Servr 2008空间数据应用系列七:基于Bing Maps(Silverlight) 的空间数据展现

楼主确实牛B,应该是计算机科班出身吧。
其实呢,GIS在国内外应用的都已经很广泛了。在国内从实...


说得很有道理,技术知识点确实是这些,如果将自己的产品做得更灵活,操作更方面、简单,功能更强大,用户体验更好,用户业务需求集成多才是产品的重点,GIS技术应用已经不是卖点了。

 回复 引用 查看   
#16楼 2011-12-16 16:15 | pfdcnblogs      
@Bēniaǒ
乱码问题解决了
直接使用SqlSpatialTools从SHP文件导入数据库会有中文乱码,
可以先用mapinfo的uversial translater将SHP文件转为mapinfo格式,再用easyloader插件导入数据库。

 回复 引用 查看   
#17楼 2011-12-16 16:25 | pfdcnblogs      
引用pfdcnblogs:
@Bēniaǒ
乱码问题解决了
直接使用SqlSpatialTools从SHP文件导入数据库会有中文乱码,
可以先用mapinfo的uversial translater将SHP文件转为mapinfo格式,再用easyloader插件导入数据库。

忘了说了,如果导入数据库时出现某一行插入失败的错误,可以在mapinfo中将该行删除即可,应该是数据损坏的问题。
如果出现updata错误,可能是插入数据库时某一列数据格式与生成的字段类型不一致造成的,删除该列即可。比如datetime格式

 回复 引用 查看   
#18楼 2011-12-20 09:28 | afc[未注册用户]
@dazuo
我也是有中文变乱码的现象。不过字段不多,可以手动改。记录也不多。

 回复 引用   
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1989310 uO0oHm/D4JI=
微软最有价值专家(MVP)

微软技术社区精英(CNTAC)

2010年IT博客大赛50强

微软最有影响力开发者(GDI)


Bing Maps开发一群:75662563
微软技术群-重庆站:97035589
RIA技术联盟QQ群:26917590
昵称:Bēniaǒ
园龄:4年6个月
荣誉:推荐博客
粉丝:413
关注:26

随笔分类(285)

文章分类(14)

积分与排名

  • 积分 - 761107
  • 排名 - 60

最新评论