geometry字段的数据是平面坐标,不用投影
geography是经纬度,需要投影
1. 首先下载一个导入shp的工具,绿色版的。
http://www.sharpgis.net/page/SQL-Server-2008-Spatial-Tools.aspx
2. 导入已有的shp文件到数据库
3. 可以用sql management studio tools查询,并且显示地图,用下载的那个工具包里面的查询工具,也可以查询地图。
4. ms sqlserver 空间查询
SQL语句如下:
select SUM(geom.STArea()) from [GeoDBForFIEldInspector].[dbo].[bou2_4p] where [ID]=1 or [ID]=2;
select geom.STArea() from [GeoDBForFIEldInspector].[dbo].[bou2_4p] where [ID]=1 or [ID]=2;
select geom.STAsText() from [GeoDBForFIEldInspector].[dbo].[bou2_4p] where [ID]=1;
点执行不要点调试
5. 资料链接
空间信息基础 http://zhiwenweb.cn/jszx/sjkjs/mssql/201110/29036.html
sql Server 2008空间数据类型 http://zhiwenweb.cn/jszx/sjkjs/mssql/201110/29034.html
sql Servr 2008空间数据应用系列四:基础空间对象与函数应用 http://zhiwenweb.cn/jszx/sjkjs/mssql/201110/29033.html
空间索引(Spatial Index)基础 http://zhiwenweb.cn/jszx/sjkjs/mssql/201110/29035.html
基于Bing Maps(Silverlight) 的空间数据展现 http://zhiwenweb.cn/jszx/sjkjs/mssql/201110/29030.html
基于sqlCRL的空间数据可编程性 http://zhiwenweb.cn/jszx/sjkjs/mssql/201110/29029.html
基于Bing Maps(Silverlight)的空间数据存储 http://zhiwenweb.cn/jszx/sjkjs/mssql/201110/29026.html
使用存储过程生成GeoRSS聚合空间信息 http://zhiwenweb.cn/jszx/sjkjs/mssql/201110/29021.html
6.在程序中使用,包括使用所有sqlCLR编程中所提供的编程接口,意思是通过引用
C:\Program files\Microsoft sql Server\100\SDK\AssemblIEs\Microsoft.sqlServer.Types.dll
可以实现计算距离等功能,不止是调用数据库。
比如
var pointStart = sqlgeometry.Point(107.04352, 28.8705544326);
var pointEnd 103.8404129.170240);
var result pointStart.Stdistance(pointEnd);
//
//定义一个多边形
var polygon sqlGeography.STGeomFromText(
new sqlChars(
sqlString("polyGON ((-114.01611328125 42.0003251483162, -114.0380859375 42.0003251483162,
+ -113.994140625 37.0200982013681, -109.05029296875 37.0200982013681, -109.09423828125 41.0130657870063,0)">-111.07177734375 41.0462168145206, -111.07177734375 42.0003251483162, -114.01611328125 42.0003251483162))111)),245)">);
var sql insert CitIEs (Cityname,CityLocation) values ('test',' polygon.ToString() ');
InsertToDB(sql);
privatestaticvoID InsertToDB(string sql)
{
using (var conn sqlConnection(ConfigurationManager.AppSettings[sql2008]))
{
if (conn.State == ConnectionState.Closed) conn.open();
(var cmd sqlCommand(sql, conn))
{
int row cmd.ExecuteNonquery();
}
}
}
//
var sql select CityLocation from CitIEs where ID = 5;
var result queryDB(sql);
var polygon sqlString(result)),245)">);
Console.Writeline(polygon.ToString());
queryDB(return cmd.ExecuteScalar().ToString();
}
}
}
具体可参考:
http://www.cnblogs.com/beniao/archive/2011/02/24/1961729.html
总结以上是内存溢出为你收集整理的ms sqlserver 2008 空间查询 *** 作全部内容,希望文章能够帮你解决ms sqlserver 2008 空间查询 *** 作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)