SQLserver空间数据的保存及编辑(以Polygon为例)

注意

SQLServer 所用的Geometry一般的开发语言并不包含,所以需要转化,如图,最简便的转化是用Polygon包含。
SQLserver空间数据的保存及编辑(以Polygon为例)_第1张图片

SQL语句

//插入语句(编辑语句应该不用给出了)
INSERT INTO table_name (polygon,...) VALUES (POLYGON((X1 Y1,X2 Y2,X3 Y3,X1 Y1)),....)
//从表中读出空间数据支持传到程序中
SELECT polygon.ToString() AS geom FROM table_name WHERE ID=...

用Openlayer来交互实现保存和修改(删除太简单就不说了)

JS部分的增加,核心是弄懂openlayer对polygon的封装,而传到后台就是实现保存语句了,不同框架方式不同,不详细介绍。
    /**
     * 空间数据的增加
     * @param fenceid 唯一标识值
     */
    function addFence(fenceid){
    	//定义交互方式
		var draw = new ol.interaction.Draw({
			source: olkit.fenceSource,
			type: 'Polygon'	
		});
		map.addInteraction(draw); //添加绘制
		
		//绘制结束的回调函数
		draw.on('drawend',function(evt){
			var currentfea = evt.feature; //当前要素
			var coor = currentfea.getGeometry().getCoordinates(); //当前要素几何坐标(重要,数据库只能存坐标)
			var geoCoor  = coor[0]; //起点终点一致(解去js的封装)
			for (var i=0,l=geoCoor.length; i
JS部分的编辑,通过modify来实现更新
/**
     * 编辑
     * @param fenceid id
     * @param polygon 空间数据
     */
    function editFence(fenceid,polygon){
    	$.messager.confirm("Tips", "确定进行编辑吗?", function (data) {
            if (data) {
            	//利用已知坐标进行绘制
            	var gis = polygon.substring(10,polygon.length-2).split(', '); //截去Polygon包含
            	var temp = new Array();
            	var point = new Array();
            	for(var i=0;i




你可能感兴趣的:(开源WebGIS)