利用Sql Server实现电子地图围栏
2015-02-06 10:37
232 查看
一、多边形
1、Sql Server 2008及以上版本有 geography类型,用来存储geography的各个坐标点。(注意各个坐标点必须以逆时针的顺序存储)2、插入geography类型数据----- insert into TableName(A,B,C,D,Polygon) values(A,B,C,D,geography::STGeomFromText('POLYGON((经度 纬度;经度 纬度;....... ))', 4326))
3、判断点是否在多边形内部
DECLARE @Point geography;
DECLARE @isIn INT;
SET @Point = geography::Point(@Latitude, @Longitude, 4326);
SELECT @isIn = @PolygonFencePolygon.STIntersects(@Point);
结果: @isIn=1 多边形内 ;@isIn=0 多边形外
二、圆形
1、通过Function判断所在坐标点与圆心的距离,并与半径对比2、方法:CREATE FUNCTION [dbo].[GetDistance]
(
@LatA FLOAT,
@LatB FLOAT,
@LonA FLOAT,
@LonB FLOAT
)
RETURNS FLOAT
AS
BEGIN
DECLARE @R FLOAT,
@C FLOAT
SET @R = 6371004 --地球半径(米)
SET @C = Sin(DBO.Rad(@LatA)) * Sin(DBO.Rad(@LatB)) + Cos(DBO.Rad(@LatA)) * Cos(DBO.Rad(@LatB)) * Cos(DBO.Rad(@LonA - @LonB))
RETURN (@R * Acos(@C));
3、结果判断:DBO.GetDistance(@FenceLatitude,@Latitude,@FenceLongitude,@Longitude) < @Radius--入围栏
三、行政区域边界坐标
本人遇到的案例是行政区域的多边形围栏,中国行政区域边界坐标获取---http://download.csdn.net/detail/dyc107/8428165
四、参考
https://msdn.microsoft.com/zh-cn/library/bb933968.aspxhttp://tech.it168.com/a2008/0923/206/000000206157_2.shtml
相关文章推荐
- 利用SQL SERVER 2005 中的CTE 实现树的递归
- 利用事件-委托,实现主-子窗体动态显示,不同菜单栏,不同工具栏。(类似SQL Server 2000 企业管理器)
- C#实现在手机上编辑电子地图
- SQL Server下利用vbscript 实现数据库月备份自动清理并发邮件提醒
- 本文详细介绍利用SQL SERVER 2005数据库镜像实现可用性
- SQL Server 2005: 利用新的ranking函数实现高效的数据分页操作
- 信息技术是指利用电子计算机和现代通信手段实现获取、传递、存储、处理、显示、分配信
- SQL Server通用分页存储过程:利用SQL Server未公开的存储过程实现
- 利用SQL SERVER 2005数据库镜像实现可用性 推荐
- symbian下利用基站实现定位,显示地图中自己的位置
- Sql server 2005 利用row_number() 函数实现分页
- 网上找到的,JavaScript实现的电子地图(WebGIS)拉框放大、缩小、画线求距离!放大画矩形(GIS),奉献给大家
- 利用数据库复制技术实现数据同步更新(SQL SERVER)
- 利用数据库复制技术实现数据同步更新_SQL SERVER
- 在Visual Graph中实现电子地图的“点”元素
- 【原创源码】(01):利用事件-委托,实现主-子窗体动态显示,不同菜单栏,不同工具栏。(类似SQL Server 2000 企业管理器)
- [原创]利用php和javascript实现服务器时间电子时钟
- SQL Server通用分页存储过程:利用SQL Server未公开的存储过程实现
- 【转】基于GeoServer的电子地图系统说明(五):基于GeoServer的WebGIS的实现
- aspx+AJAX+jquery 电子地图的实现