ms sqlserver 2008 空间查询操作
来源:互联网 发布:阿里云计算 北京地址 编辑:程序博客网 时间:2024/04/28 09:51
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.870554, 4326);
var pointEnd = SqlGeometry.Point(103.84041, 29.170240, 4326);
var result = pointStart.STDistance(pointEnd);
//
//定义一个多边形
var polygon = SqlGeography.STGeomFromText(
new SqlChars(
new SqlString("POLYGON ((-114.01611328125 42.0003251483162, -114.0380859375 42.0003251483162,"
+ "-113.994140625 37.0200982013681, -109.05029296875 37.0200982013681, -109.09423828125 41.0130657870063, "
+ "-111.07177734375 41.0462168145206, -111.07177734375 42.0003251483162, -114.01611328125 42.0003251483162))",
111)),
4326);
var sql = "insert Cities (CityName,CityLocation) values ('test','" + polygon.ToString() + "')";
InsertToDB(sql);
private static void InsertToDB(string sql)
{
using (var conn = new SqlConnection(ConfigurationManager.AppSettings["SQL2008"]))
{
if (conn.State == ConnectionState.Closed) conn.Open();
using (var cmd = new SqlCommand(sql, conn))
{
int row = cmd.ExecuteNonQuery();
}
}
}
//
var sql = "select CityLocation from Cities where ID = 5";
var result = QueryDB(sql);
var polygon = SqlGeography.STGeomFromText(
new SqlChars(
new SqlString(result)), 4326);
Console.WriteLine(polygon.ToString());
private static string QueryDB(string sql)
{
using (var conn = new SqlConnection(ConfigurationManager.AppSettings["SQL2008"]))
{
if (conn.State == ConnectionState.Closed) conn.Open();
using (var cmd = new SqlCommand(sql, conn))
{
return cmd.ExecuteScalar().ToString();
}
}
}
具体可参考:
http://www.cnblogs.com/beniao/archive/2011/02/24/1961729.html
- ms sqlserver 2008 空间查询操作
- Python操作MS SqlServer
- MS Sqlserver 优化--查询相关
- Ms SqlServer高级查询小结
- Ms SQLServer 查询 区分大小写
- MS SQLServer 高级查询总结
- SQLserver空间大小查询
- MS SQLServer 2008 基础教程
- MS Sqlserver优化实战(解决CPU利用率高及查询操作速度慢)
- MS Sqlserver优化实战(解决CPU利用率高及查询操作速度慢)
- MS Sqlserver优化实战(解决CPU利用率高及查询操作速度慢)
- MS SQLSERVER分步式是查询
- MS SQLServer多对多表间的查询
- MS SQLSERVER如何实现跨服务器查询
- 多表左连接查询-MS-SQLServer/基础类
- 在MS Sqlserver里操作ACCESSS数据库
- SQLServer查询操作
- MySQL、Oracle、MS SQLserver限制查询所返回的行数
- ajax介绍
- oracle sqlplus @@用法
- Sql Server 数据库恢复和日志文件的详细介绍
- static的详解
- 第一篇
- ms sqlserver 2008 空间查询操作
- SQL中ROW_NUMBER和APPLY在处理TOP N等类似问题的一点比较
- rpmbuild打包错误:*** ERROR: No build ID note found in ******
- 求关键路径、AOE网
- html系统学习之二 <样式,锚>
- .net知识结构
- 想成功?努力吧!
- 使用 P6Spy+sqlprofiler 监听和分析JDBC SQL语句
- 12这样的数字为什么成为业务运营的测量数