第七章 相交

效果

数据格式 

{
	"rows": [{
		"fid": 28,
		"baohan": "f",
		"fenli": "f",
		"xiangMian": "116.66353841602242 39.87864571838519,116.66366664206161 39.87784752469844,116.66379206640433 39.87675928907318,116.66278792353614 39.87690503892958,116.66286345431911 39.87869261319021,116.66353841602242 39.87864571838519",
		"xiangjiao": "t",
		"xiangMianJi": 149.1754,
		"feiMian": [{
			"jcm": "116.66104650067415 39.878936406324584,116.66239167962088 39.878743918300074,116.66020113347075 39.87741533324694,116.6603056469199 39.87785975964694,116.66057343849101 39.878998379978725,116.66104650067415 39.878936406324584"
		}, {
			"jcm": "116.66379589067822 39.87676227788611,116.66376606166902 39.87699811816864,116.66379620658984 39.87675974619066,116.66379620658981 39.87675974619066,116.66379589067822 39.87676227788611"
		}, {
			"jcm": "116.66379620658982 39.876759746190594,116.66379330939617 39.87675942631177,116.66379620658981 39.87675974619066,116.66379620658982 39.876759746190594"
		}, {
			"jcm": "116.66379330939617 39.87675942631177,116.66379206640443 39.87675928907316,116.66379206640433 39.87675928907318,116.66379330939617 39.87675942631177"
		}],
		"beuZhu": "备注",
		"name": "名称",
		"dname": "名称",
		"chumian": "116.66057343849101 39.878998379978725,116.66104650067415 39.878936406324584,116.66178900622113 39.87706861577799,116.66168181148171 39.877088637377696,116.66020113347075 39.87741533324694,116.6603056469199 39.87785975964694,116.66057343849101 39.878998379978725",
		"mianJi": 599.7018174,
		"cid": 96,
		"fmian": "116.66286345431911 39.87869261319031,116.66386533670038 39.878659872306514,116.66379589067833 39.87676227788609,116.66379620658984 39.87675974619066,116.66278792353614 39.87690503892958,116.66286345431911 39.87869261319031",
		"fmianJi": 176.462
	}]
}

1.获取数据

根据地块的id和分期建设的id,根据两个id去两个表里面查数据,两个地块是否相交

ycddbBox: function(data) {
		ak_right_fqjstc.removeCdmap();
		viewer.entities.removeAll();
		console.log(data);
		// 关闭左侧
		ak_right.closeLeft();
		$("#ycbdcdb_panel").css('top', '20%');
		$("#ycbdcdb_panel").css('left', '5%');
		showDivPanel("#ycbdcdb_panel")
		var options = new Object();
		var temp = {};
		temp.cWaiId = data.tudiBian;
		temp.fqjsId = data.id;
		temp.type = 1;
		options.url = "/manage-api/baseFenQiJstc/duiBi";
		options.type = "GET";
		options.data = temp;
		options.errorback = akglobe_config.errBack;
		options.callback = function(data) {
			if (!data) return;
			console.log(data);
			var object = data.rows[0];
			ak_right_fqjstc.ycddbText(object);
		}
		akglobe_config.ajaxQuery(options);
	},

2.被比对的面

// 初步调查的面
	getCbMap: function(object) {
		var db = object;
		var name = object.name;
		var id = Number((new Date()).getTime() + "" + Number(Math.random() * 1000).toFixed(0));
		db.addtypemarker = config.addtypemarker.polygon;

		var lnglatList = []; //经纬度数组
		var geoXyz = object.chumian;
		var xyzList = geoXyz.split(",");
		for (var j = 0; j < xyzList.length; j++) {
			var xyz = xyzList[j].split(" ");
			if (j == 0) {
				db.x = parseFloat(xyz[0]);
				db.y = parseFloat(xyz[1]);
			}
			var sm1 = [];
			sm1.push(parseFloat(xyz[0]));
			sm1.push(parseFloat(xyz[1]));
			sm1.push(parseFloat(xyz[2]));
			lnglatList.push(sm1);
		}
		var mianJi = object.mianJi;
		mianJi = mianJi.toFixed(2)
		mianJi = mianJi + '㎡'
		var positions = cCesium.lnglatArrToCartesianArr(lnglatList); //经纬度转为笛卡尔坐标系

		if (positions) {
			console.log(positions)
			var positionPointer = positions[2];

			var lnglat = cCesium.cartesianToLnglat(positionPointer);
			var newLnglat = Cesium.Cartesian3.fromDegrees(lnglat[0], lnglat[1], 5);
			var c001 = newLnglat;


			db.cartesianList = positions; //将转换后的坐标放入到对象中 在编辑的时候直接使用
			var proper = new Cesium.PropertyBag(db);
			var options = new Object();
			options.material = Cesium.Color.DARKKHAKI.withAlpha(0.8);
			//options.material =Cesium.Color.DARKKHAKI;
			// options.extrudedHeight = 200; //  

			var polygonInit = new geo_draw_polygon(options);
			polygonInit.createGon(positions);
			polygonInit.polygon.properties = proper;

			// var polyPositions = polygonInit.polygon.polygon.hierarchy.getValue(Cesium.JulianDate.now()).positions;//properties.hierarchy
			// var polyCenter = Cesium.BoundingSphere.fromPoints(polyPositions).center;//中心点
			// polyCenter = Cesium.Ellipsoid.WGS84.scaleToGeodeticSurface(polyCenter);
			// 添加label
			var hdObj = {
				position: c001,
				label: {
					backgroundColor: Cesium.Color.fromCssColorString('#000'),
					// position: c001,
					text: "初步调查面积是" + mianJi,
					color: Cesium.Color.white,
					fillColor: Cesium.Color.white,
					font: 'normal 24px MicroSoft YaHei',
					showBackground: true,
					scale: 0.5,
					verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
					// horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
					// heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
				}
			}
			viewer.entities.add(hdObj);
		}

		var jsonstr = JSON.stringify(db); //将json对象转换为json字符串
	},

parseFloat() 函数可解析一个字符串,并返回一个浮点数

根据返回数据进行绘制面的图形:

var positions = cCesium.lnglatArrToCartesianArr(lnglatList); //经纬度转为笛卡尔坐标系

        if (positions) {
            console.log(positions)
            var positionPointer = positions[2];

            var lnglat = cCesium.cartesianToLnglat(positionPointer);
            var newLnglat = Cesium.Cartesian3.fromDegrees(lnglat[0], lnglat[1], 5);
            var c001 = newLnglat;


            db.cartesianList = positions; //将转换后的坐标放入到对象中 在编辑的时候直接使用
            var proper = new Cesium.PropertyBag(db);
            var options = new Object();
            options.material = Cesium.Color.DARKKHAKI.withAlpha(0.8);
            //options.material =Cesium.Color.DARKKHAKI;
            // options.extrudedHeight = 200; //  

            var polygonInit = new geo_draw_polygon(options);
            polygonInit.createGon(positions);
            polygonInit.polygon.properties = proper;
}

添加label:
            var hdObj = {
                position: c001,
                label: {
                    backgroundColor: Cesium.Color.fromCssColorString('#000'),
                    // position: c001,
                    text: "初步调查面积是" + mianJi,
                    color: Cesium.Color.white,
                    fillColor: Cesium.Color.white,
                    font: 'normal 24px MicroSoft YaHei',
                    showBackground: true,
                    scale: 0.5,
                    verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
                    // horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
                    // heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
                }
            }
            viewer.entities.add(hdObj);

3.分类数据

ycddbText: function(object) {
		ak_right_fqjstc.getCbMap(object)
		// title
		var name = object.name;
		var title = name + '图形与初调图形对比结果如下:';
		var mianjiName = name + '图形面积';
		$("#ycbdcdb_panel_title_top").text(title);
		$("#ycbdcdb_panel_nameMj").text(mianjiName);

		// 是否相交
		var xiangjiao = object.xiangjiao;
		// 是否包含
		var baohan = object.baohan;

		// 初步调查的面积
		if (object.mianJi) {
			var mianJi = object.mianJi;
			mianJi = mianJi.toFixed(2)
			mianJi = mianJi + '㎡'
			$("#ycbdcdb_panel_cdtxmj").text(mianJi);
		}
		// 分期建设的面积
		if (object.fmianJi) {
			var fmianJi = object.fmianJi;
			fmianJi = fmianJi.toFixed(2)
			fmianJi = fmianJi + '㎡'
			$("#ycbdcdb_panel_jstxmj").text(fmianJi);
		}
		// 相交部分的面积
		if (object.xiangMianJi) {
			var xiangMianJi = object.xiangMianJi;
			xiangMianJi = xiangMianJi.toFixed(2)
			xiangMianJi = xiangMianJi + '㎡'
			$("#ycbdcdb_panel_cdxjmj").text(xiangMianJi);
		}
        // 非相交部分的面积
		if (object.fmianJi && object.xiangMianJi) {
			var fXiangMianJi = object.fmianJi - object.xiangMianJi;
			fXiangMianJi = fXiangMianJi.toFixed(2)
			fXiangMianJi = fXiangMianJi + '㎡'
			$("#ycbdcdb_panel_jsbxjmj").text(fXiangMianJi);
		}
		if (xiangjiao == 't' && baohan == 'f') {
			$("#ycbdcdb_panel_sfxj").text('是');
			$("#ycbdcdb_panel_sfxj").css('color', 'red');
			$("#ycbdcdb_panel_xjbf").css('display', 'block');
			$("#ycbdcdb_panel_bxjbf").css('display', 'block');
			ak_right_fqjstc.getXjMap(object);
			ak_right_fqjstc.getFxjMap(object);
		} else if (xiangjiao == 'f' || (xiangjiao == 't' && baohan == 't')) {
			$("#ycbdcdb_panel_sfxj").text('否');
			$("#ycbdcdb_panel_sfxj").css('color', '#00FFFF');
			$("#ycbdcdb_panel_xjbf").css('display', 'none');
			$("#ycbdcdb_panel_bxjbf").css('display', 'none');
		}

	},

 判断是相交并且不包含

 if (xiangjiao == 't' && baohan == 'f') {
            $("#ycbdcdb_panel_sfxj").text('是');
            $("#ycbdcdb_panel_sfxj").css('color', 'red');
            $("#ycbdcdb_panel_xjbf").css('display', 'block');
            $("#ycbdcdb_panel_bxjbf").css('display', 'block');
            ak_right_fqjstc.getXjMap(object);
            ak_right_fqjstc.getFxjMap(object);

判断不相交,或相交并且包含
 } else if (xiangjiao == 'f' || (xiangjiao == 't' && baohan == 't')) {
            $("#ycbdcdb_panel_sfxj").text('否');
            $("#ycbdcdb_panel_sfxj").css('color', '#00FFFF');
            $("#ycbdcdb_panel_xjbf").css('display', 'none');
            $("#ycbdcdb_panel_bxjbf").css('display', 'none');
}

4.相交面展示
 

// 相交的面
	getXjMap: function(object) {
		var db = object;
		var name = object.name;
		var id = Number((new Date()).getTime() + "" + Number(Math.random() * 1000).toFixed(0));
		db.addtypemarker = config.addtypemarker.polygon;

		var lnglatList = []; //经纬度数组
		var geoXyz = object.xiangMian;
		var xyzList = geoXyz.split(",");
		for (var j = 0; j < xyzList.length; j++) {
			var xyz = xyzList[j].split(" ");
			if (j == 0) {
				db.x = parseFloat(xyz[0]);
				db.y = parseFloat(xyz[1]);
			}
			var sm1 = [];
			sm1.push(parseFloat(xyz[0]));
			sm1.push(parseFloat(xyz[1]));
			sm1.push(parseFloat(xyz[2]));
			lnglatList.push(sm1);
		}
		var xiangMianJi = object.xiangMianJi;
		xiangMianJi = xiangMianJi.toFixed(2)
		xiangMianJi = xiangMianJi + '㎡'
		var positions = cCesium.lnglatArrToCartesianArr(lnglatList); //经纬度转为笛卡尔坐标系

		if (positions) {
			console.log(positions)
			var positionPointer = positions[2];

			db.cartesianList = positions; //将转换后的坐标放入到对象中 在编辑的时候直接使用
			var proper = new Cesium.PropertyBag(db);
			var options = new Object();
			options.material = Cesium.Color.BLUE.withAlpha(0.8);
			//options.material =Cesium.Color.DARKKHAKI;
			options.extrudedHeight = 200; //  

			var polygonInit = new geo_draw_polygon(options);
			polygonInit.createGon(positions);
			polygonInit.polygon.properties = proper;

			var polyPositions = polygonInit.polygon.polygon.hierarchy.getValue(Cesium.JulianDate.now())
				.positions; //properties.hierarchy
			var polyCenter = Cesium.BoundingSphere.fromPoints(polyPositions).center; //中心点
			polyCenter = Cesium.Ellipsoid.WGS84.scaleToGeodeticSurface(polyCenter);

			var lnglat = cCesium.cartesianToLnglat(polyCenter);
			var newLnglat = Cesium.Cartesian3.fromDegrees(lnglat[0], lnglat[1], 412);
			var c001 = newLnglat;

			var hiline = ak_marker.heightLine(lnglat[0], lnglat[1], 412);
			var hlineEntine = viewer.entities.add(hiline);

			// 添加label
			var hdObj = {
				position: c001,
				label: {
					showBackground: true, //指定标签后面背景的可见性。

					backgroundColor: Cesium.Color.fromCssColorString('#000'),
					text: "相交的面积是" + xiangMianJi,
					color: Cesium.Color.RED,
					fillColor: Cesium.Color.YELLOW,
					font: 'normal 24px MicroSoft YaHei',

					scale: 0.5,
					verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
					horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
					// heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
				}
			}
			viewer.entities.add(hdObj);
		}

		var jsonstr = JSON.stringify(db); //将json对象转换为json字符串
	},

如果相交的话回返面坐标,根据面坐标绘制相交面的图形,并且绘制给了高度

 var positions = cCesium.lnglatArrToCartesianArr(lnglatList); //经纬度转为笛卡尔坐标系

if (positions) {
            console.log(positions)
            var positionPointer = positions[2];

            db.cartesianList = positions; //将转换后的坐标放入到对象中 在编辑的时候直接使用
            var proper = new Cesium.PropertyBag(db);
            var options = new Object();
            options.material = Cesium.Color.BLUE.withAlpha(0.8);
            //options.material =Cesium.Color.DARKKHAKI;
            options.extrudedHeight = 200; //  

            var polygonInit = new geo_draw_polygon(options);
            polygonInit.createGon(positions);
            polygonInit.polygon.properties = proper;

            var polyPositions = polygonInit.polygon.polygon.hierarchy.getValue(Cesium.JulianDate.now())
                .positions; //properties.hierarchy
            var polyCenter = Cesium.BoundingSphere.fromPoints(polyPositions).center; //中心点
            polyCenter = Cesium.Ellipsoid.WGS84.scaleToGeodeticSurface(polyCenter);

            var lnglat = cCesium.cartesianToLnglat(polyCenter);
            var newLnglat = Cesium.Cartesian3.fromDegrees(lnglat[0], lnglat[1], 412);
            var c001 = newLnglat;

            var hiline = ak_marker.heightLine(lnglat[0], lnglat[1], 412);
            var hlineEntine = viewer.entities.add(hiline);
}

5.非相交面

// 非相交的面
	getFxjMap: function(object) {
		var db = object;
		var name = object.name;
		var id = Number((new Date()).getTime() + "" + Number(Math.random() * 1000).toFixed(0));
		db.addtypemarker = config.addtypemarker.polygon;

		var lnglatList = []; //经纬度数组
		var geoXyz = object.feiMian;
		for (var i = 0; i < geoXyz.length; i++) {
			if (i == 0) {
				continue;
			}
			var xyzList = geoXyz[i].jcm.split(",");
			for (var j = 0; j < xyzList.length; j++) {
				var xyz = xyzList[j].split(" ");
				if (j == 0) {
					db.x = parseFloat(xyz[0]);
					db.y = parseFloat(xyz[1]);
				}
				var sm1 = [];
				sm1.push(parseFloat(xyz[0]));
				sm1.push(parseFloat(xyz[1]));
				sm1.push(parseFloat(xyz[2]));
				lnglatList.push(sm1);
			}
			var fXiangMianJi = object.fmianJi - object.xiangMianJi;
			fXiangMianJi = fXiangMianJi.toFixed(2)
			fXiangMianJi = fXiangMianJi + '㎡'
			var positions = cCesium.lnglatArrToCartesianArr(lnglatList); //经纬度转为笛卡尔坐标系

			if (positions) {
				console.log(positions)
				var positionPointer = positions[2];

				db.cartesianList = positions; //将转换后的坐标放入到对象中 在编辑的时候直接使用
				var proper = new Cesium.PropertyBag(db);
				var options = new Object();
				options.material = Cesium.Color.RED.withAlpha(0.8);
				//options.material =Cesium.Color.DARKKHAKI;
				options.extrudedHeight = 200; //  

				var polygonInit = new geo_draw_polygon(options);
				polygonInit.createGon(positions);
				polygonInit.polygon.properties = proper;

				var polyPositions = polygonInit.polygon.polygon.hierarchy.getValue(Cesium.JulianDate.now())
					.positions; //properties.hierarchy
				var polyCenter = Cesium.BoundingSphere.fromPoints(polyPositions).center; //中心点
				polyCenter = Cesium.Ellipsoid.WGS84.scaleToGeodeticSurface(polyCenter);

				var lnglat = cCesium.cartesianToLnglat(polyCenter);
				var newLnglat = Cesium.Cartesian3.fromDegrees(lnglat[0], lnglat[1], 412);
				var c001 = newLnglat;

				var hiline = ak_marker.heightLine(lnglat[0], lnglat[1], 412);
				var hlineEntine = viewer.entities.add(hiline);


				// 添加label
				var hdObj = {
					position: c001,
					label: {
						showBackground: true, //指定标签后面背景的可见性。

						backgroundColor: Cesium.Color.fromCssColorString('#000'),
						text: "非相交的面积是" + fXiangMianJi,
						color: Cesium.Color.RED,
						fillColor: Cesium.Color.YELLOW,
						font: 'normal 24px MicroSoft YaHei',

						scale: 0.5,
						verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
						horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
						// heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
					}
				}
				viewer.entities.add(hdObj);
			}

			var jsonstr = JSON.stringify(db); //将json对象转换为json字符串
		}
	},

如果不相交的话回返面坐标,根据面坐标绘制相交面的图形,并且绘制给了高度 

if (positions) {
                console.log(positions)
                var positionPointer = positions[2];

                db.cartesianList = positions; //将转换后的坐标放入到对象中 在编辑的时候直接使用
                var proper = new Cesium.PropertyBag(db);
                var options = new Object();
                options.material = Cesium.Color.RED.withAlpha(0.8);
                //options.material =Cesium.Color.DARKKHAKI;
                options.extrudedHeight = 200; //  

                var polygonInit = new geo_draw_polygon(options);
                polygonInit.createGon(positions);
                polygonInit.polygon.properties = proper;

                var polyPositions = polygonInit.polygon.polygon.hierarchy.getValue(Cesium.JulianDate.now())
                    .positions; //properties.hierarchy
                var polyCenter = Cesium.BoundingSphere.fromPoints(polyPositions).center; //中心点
                polyCenter = Cesium.Ellipsoid.WGS84.scaleToGeodeticSurface(polyCenter);

                var lnglat = cCesium.cartesianToLnglat(polyCenter);
                var newLnglat = Cesium.Cartesian3.fromDegrees(lnglat[0], lnglat[1], 412);
                var c001 = newLnglat;

                var hiline = ak_marker.heightLine(lnglat[0], lnglat[1], 412);
                var hlineEntine = viewer.entities.add(hiline);
}

6.后台代码

 /**
     * 比对
     */
    @RequestMapping(value = "/duiBi", method = RequestMethod.GET)
    public Map chuBi(HttpServletRequest request) {

        Map paramMap = getParameters(request);
        Map  mapuser= getParametersUserinfo(request);

        Map ret = new HashMap();
        Map page = new HashMap();
        // 统一校验 传入的参数是否有特殊字符  或者 sql 注入  等保需要 校验
        if (paramMap.containsKey("flagTGG1001") && !StringUtils.isEmpty(paramMap.get("flagTGG1001"))) {
            ret.put("flag", false);
            ret.put("msg", StatusCode.C00511.getMsg());
            ret.put("status",StatusCode.C00511.getCode());
            ret.put("total", 0);
            ret.put("rows", null);
            return ret;
        }
        Integer userid=Integer.parseInt(mapuser.get("userid").toString());
        List<TBaseWuranFqjstc> list = null;
        List<TBaseWuranFqjstc> list2 = null;
        TBaseWuranFqjstc list3 = null;
        Integer usertype=Integer.parseInt(mapuser.get("usertype").toString());
        if(usertype!=1) {
            page.put("createUser",userid);
        }
        if (paramMap.containsKey("cWaiId")
                &&!StringUtils.isEmpty(paramMap.get("cWaiId"))) {
           Integer cWaiId=Integer.parseInt(paramMap.get("cWaiId").toString());
            page.put("cWaiId", cWaiId );
        }
        if (paramMap.containsKey("fqjsWaiId")
                &&!StringUtils.isEmpty(paramMap.get("fqjsWaiId"))) {
            Integer fqjsWaiId=Integer.parseInt(paramMap.get("fqjsWaiId").toString());
            page.put("fqjsWaiId", fqjsWaiId );
        }
        if (paramMap.containsKey("fqjsId")
                &&!StringUtils.isEmpty(paramMap.get("fqjsId"))) {
            Integer fqjsId=Integer.parseInt(paramMap.get("fqjsId").toString());
            page.put("fqjsId", fqjsId );
        }
        Integer type=Integer.parseInt(paramMap.get("type").toString());
        Map  maps=new HashMap();
        ArrayList at=new ArrayList();
        
            list= objServices.chuBu(page);
            if(list!=null && !list.isEmpty()) {
                String pan = list.get(0).getXiangJiao();
                if (pan.equals("t")) {
                    list2 = objServices.cbMian(page);
                    if(list2!=null && !list2.isEmpty()){
                        String geom = list2.get(0).getXiangMian();
                        String geolist = geom.substring(geom.indexOf("(") + 2, geom.indexOf(")"));
                        maps.put("xiangMian", geolist);
                        String str = list2.get(0).getFeiMian();
                        String geolist2 = str.substring(str.indexOf("(") + 1, str.lastIndexOf(")"));
                        String[] als = geolist2.split("\\)\\),");
                        ArrayList ak = new ArrayList();
                        for (int i = 0; i < als.length; i++) {
                            String a1 = als[i];
                        }
                        for (int i = 0; i < als.length; i++) {
                            String a1 = als[i];
                            Map obj = new HashMap();
                            if (i == als.length - 1) {
                                a1 = a1.substring(a1.indexOf("(") + 2, a1.indexOf(")"));
                            } else {
                                a1 = a1.substring(a1.indexOf("(") + 2);
                            }
                            obj.put("jcm", a1);
                            ak.add(obj);
                        }
                        maps.put("feiMian", ak);
                        maps.put("xiangMianJi", list2.get(0).getXiangMianJi());
                    }

                }else{
                    maps.put("xiangMian", "");
                    maps.put("feiMian", "");
                }
                maps.put("name", list.get(0).getName());
                maps.put("beuZhu", list.get(0).getBeuZhu());
                maps.put("cid", list.get(0).getcId());
                maps.put("fid", list.get(0).getfId());
                maps.put("dname", list.get(0).getDiname());
                String geom = list.get(0).getChuMian();
                String geolist = geom.substring(geom.indexOf("(") + 3, geom.indexOf(")"));
                maps.put("chumian", geolist);
                String geom2 = list.get(0).getfMian();
                String geolist2 = geom2.substring(geom2.indexOf("(") + 3, geom2.indexOf(")"));
                maps.put("fmian", geolist2);
                maps.put("baohan", list.get(0).getBaoHan());
                maps.put("xiangjiao", list.get(0).getXiangJiao());
                maps.put("mianJi", list.get(0).getMianJi());
                maps.put("fmianJi", list.get(0).getFmianJi());
            }else{
                maps.put("name","");
                maps.put("beuZhu","");
                maps.put("cid","");
                maps.put("fid","");
                maps.put("dname","");
                maps.put("chumian","");
                maps.put("fmian","");
                maps.put("baohan","");
                maps.put("xiangjiao","");
                maps.put("xiangMian", "");
                maps.put("feiMian", "");
                maps.put("mianJi", "");
                maps.put("fmianJi","");
                maps.put("xiangMianJi","");
            }
        at.add(maps);
        ret.put("rows", at);
        return ret;
    }

 判断是否相交,如果是则获取相交的geometry面进行截取,如果不相交则相交面积和非相交面积返回空

 if (pan.equals("t")) {
                    list2 = objServices.cbMian(page);
                    if(list2!=null && !list2.isEmpty()){
                        String geom = list2.get(0).getXiangMian();
                        String geolist = geom.substring(geom.indexOf("(") + 2, geom.indexOf(")"));
                        maps.put("xiangMian", geolist);
                        String str = list2.get(0).getFeiMian();
                        String geolist2 = str.substring(str.indexOf("(") + 1, str.lastIndexOf(")"));
                        String[] als = geolist2.split("\\)\\),");
                        ArrayList ak = new ArrayList();
                        for (int i = 0; i < als.length; i++) {
                            String a1 = als[i];
                        }
                        for (int i = 0; i < als.length; i++) {
                            String a1 = als[i];
                            Map obj = new HashMap();
                            if (i == als.length - 1) {
                                a1 = a1.substring(a1.indexOf("(") + 2, a1.indexOf(")"));
                            } else {
                                a1 = a1.substring(a1.indexOf("(") + 2);
                            }
                            obj.put("jcm", a1);
                            ak.add(obj);
                        }
                        maps.put("feiMian", ak);
                        maps.put("xiangMianJi", list2.get(0).getXiangMianJi());
                    }

}

<select id="cbbd" resultMap="TObjectMap" useCache="false">
    SELECT
    p1.id as cid,
    p2.id as fid,
    p2.NAME,
    p2.beu_zhu,
    p1.NAME AS dname,
    ST_AsText(p1.geometry) as chumian,
    ST_AsText(p2.geometry) as fmian,
    ST_Contains ( p1.geometry, p2.geometry ) AS baohan,
    ST_NumGeometries ( ST_Intersection ( p1.geometry, p2.geometry ) ) > 0 AS xiangjiao,
    st_disjoint ( p1.geometry, p2.geometry ) AS fenli,
    st_area ( ST_Transform (p1.geometry, 4527 )) as mianji,
    st_area ( ST_Transform (p2.geometry, 4527 )) as fmianji
    FROM
    t_base_wuran_mdkxx AS p1,
    t_base_wuran_fqjstc AS p2
    <include refid="findPage_where"/>
    <include refid="limit"/>
  </select>

是否相交 ST_NumGeometries(ST_Intersection(p1.geometry, p2.geometry))>0,

sql: SELECT p1.NAME AS dname, ST_AsText(p1.geometry) as chumian, ST_AsText(p2.geometry) as fmian,  ST_NumGeometries ( ST_Intersection ( p1.geometry, p2.geometry ) ) > 0 AS xiangjiao, FROM t_base_wuran_mdkxx AS p1, t_base_wuran_fqjstc AS p2 WHERE p1.wai_id = 102 AND p2.id = 28 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

akglobe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值