4cd04f02 by 杨威

gis重叠分析功能实现

1 parent 3f9a05d3
...@@ -23,7 +23,15 @@ ...@@ -23,7 +23,15 @@
23 "color": "#f50325", 23 "color": "#f50325",
24 "width": 1 24 "width": 1
25 } 25 }
26 },
27 "importSymbol": {
28 "type": "simple-fill",
29 "color": [ 245,3, 37, 0.4 ],
30 "style": "none",
31 "outline": {
32 "color": "#006cff",
33 "width": 2
34 }
26 } 35 }
27
28 } 36 }
29 } 37 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -101,7 +101,8 @@ ...@@ -101,7 +101,8 @@
101 <li v-show="zdData.type == 'zdy'" @click="deleteZdy">删除</li> 101 <li v-show="zdData.type == 'zdy'" @click="deleteZdy">删除</li>
102 </ul> 102 </ul>
103 103
104 <el-dialog title="导入图形" :visible.sync="improtDialog"> 104 <!--@close="closeImportDialog"-->
105 <el-dialog title="导入图形" :modal="false" :close-on-click-modal="false" custom-class="importDialog" :visible.sync="improtDialog" width="30%" @close="closeImportDialog">
105 <import-geo :property-info="zdData" :timeLine="new Date().getTime()" :geo-info="currentClickZdGeo" @closeImportDialog="closeImportDialog"></import-geo> 106 <import-geo :property-info="zdData" :timeLine="new Date().getTime()" :geo-info="currentClickZdGeo" @closeImportDialog="closeImportDialog"></import-geo>
106 </el-dialog> 107 </el-dialog>
107 <!-- 添加定着物弹框 --> 108 <!-- 添加定着物弹框 -->
...@@ -430,6 +431,7 @@ export default { ...@@ -430,6 +431,7 @@ export default {
430 }else { 431 }else {
431 BSM = this.zdData.bsm; 432 BSM = this.zdData.bsm;
432 } 433 }
434 //当确定导入图形是 跳转到图形界面
433 this.queryGeoByBsm(BSM,type,function (features){ 435 this.queryGeoByBsm(BSM,type,function (features){
434 if(features && features.length > 0){ 436 if(features && features.length > 0){
435 if(features[0].geometry){ 437 if(features[0].geometry){
...@@ -438,6 +440,7 @@ export default { ...@@ -438,6 +440,7 @@ export default {
438 cancelButtonText: '取消', 440 cancelButtonText: '取消',
439 type: 'warning' 441 type: 'warning'
440 }).then(() => { 442 }).then(() => {
443 self.postionToMap();
441 self.improtDialog = true; 444 self.improtDialog = true;
442 self.currentClickZdGeo = features[0]; 445 self.currentClickZdGeo = features[0];
443 }).catch(() => { 446 }).catch(() => {
...@@ -447,11 +450,13 @@ export default { ...@@ -447,11 +450,13 @@ export default {
447 }); 450 });
448 }); 451 });
449 }else { 452 }else {
453 self.postionToMap();
450 self.currentClickZdGeo = features[0]; 454 self.currentClickZdGeo = features[0];
451 self.improtDialog = true; 455 self.improtDialog = true;
452 } 456 }
453 457
454 }else{ 458 }else{
459 self.postionToMap();
455 self.currentClickZdGeo = null; 460 self.currentClickZdGeo = null;
456 self.improtDialog = true; 461 self.improtDialog = true;
457 } 462 }
...@@ -500,7 +505,6 @@ export default { ...@@ -500,7 +505,6 @@ export default {
500 }).then(res => { 505 }).then(res => {
501 debugger 506 debugger
502 });*/ 507 });*/
503
504 }else{ 508 }else{
505 self.$message.warning("暂无空间信息!!!!"); 509 self.$message.warning("暂无空间信息!!!!");
506 } 510 }
...@@ -574,6 +578,7 @@ export default { ...@@ -574,6 +578,7 @@ export default {
574 //关闭图形弹框 578 //关闭图形弹框
575 closeImportDialog(){ 579 closeImportDialog(){
576 this.improtDialog = false; 580 this.improtDialog = false;
581 this.clearOverLayer();
577 } 582 }
578 583
579 }, 584 },
...@@ -722,4 +727,8 @@ export default { ...@@ -722,4 +727,8 @@ export default {
722 center; 727 center;
723 background-size: contain; 728 background-size: contain;
724 } 729 }
730 /deep/ .importDialog{
731 margin-top: 120px!important;
732 margin-left: 291px;
733 }
725 </style> 734 </style>
......
1 <template> 1 <template>
2 <div > 2 <div >
3 <div v-if="!resultDialog && !txtResultDialog" class="importDiv"> 3 <div v-if="!resultDialog && !txtResultDialog && !dealDialog" class="importDiv">
4 <el-upload 4 <el-upload
5 class="upload-demo" 5 class="upload-demo"
6 action="#" 6 action="#"
...@@ -108,7 +108,7 @@ ...@@ -108,7 +108,7 @@
108 { required: true, message: '请选择地块', trigger: 'change' }, 108 { required: true, message: '请选择地块', trigger: 'change' },
109 ]" 109 ]"
110 > 110 >
111 <el-select v-model="txtZd.name" filterable placeholder="请选择"> 111 <el-select v-model="txtZd.name" filterable placeholder="请选择" @change="txtChange">
112 <el-option 112 <el-option
113 v-for="(item,index) in txtResult" 113 v-for="(item,index) in txtResult"
114 :key="index" 114 :key="index"
...@@ -123,6 +123,30 @@ ...@@ -123,6 +123,30 @@
123 </el-form-item> 123 </el-form-item>
124 </el-form> 124 </el-form>
125 </div> 125 </div>
126 <div v-if="dealDialog">
127 <el-form :model="dealForm" ref="dealForm" label-width="100px" size="small" @submit.native.prevent class="demo-ruleForm">
128 <el-form-item
129 label="处理方法"
130 prop="method"
131 :rules="[
132 { required: true, message: '请选择', trigger: 'change' },
133 ]"
134 >
135 <el-select v-model="dealForm.method" filterable placeholder="请选择">
136 <el-option
137 v-for="(item,index) in dealMethods"
138 :key="index"
139 :label="item.label"
140 :value="item.value">
141 </el-option>
142 </el-select>
143 </el-form-item>
144 <el-form-item>
145 <el-button type="primary" @click="submitDealForm('dealForm')">确定</el-button>
146 <el-button @click="cancelDealForm('dealForm')">取消</el-button>
147 </el-form-item>
148 </el-form>
149 </div>
126 </div> 150 </div>
127 </template> 151 </template>
128 <script> 152 <script>
...@@ -157,6 +181,25 @@ export default { ...@@ -157,6 +181,25 @@ export default {
157 txtResultDialog:null, 181 txtResultDialog:null,
158 txtZd:{ 182 txtZd:{
159 name:"" 183 name:""
184 },
185 overResults:[],//与导入宗地重叠的地块
186 currntDealGraphic:null,
187 dealMethods:[{
188 label:"不做处理",
189 value:"1"
190 },{
191 label:"删除叠加部分",
192 value:"2"
193 },{
194 label:"删除已重叠部分",
195 value:"3"
196 },{
197 label:"删除原图形",
198 value:"4"
199 }],
200 dealDialog:false,
201 dealForm:{
202 method:""
160 } 203 }
161 } 204 }
162 }, 205 },
...@@ -167,6 +210,7 @@ export default { ...@@ -167,6 +210,7 @@ export default {
167 timeLine(newValue,oldValue){ 210 timeLine(newValue,oldValue){
168 this.resultDialog = false; 211 this.resultDialog = false;
169 this.txtResultDialog = false; 212 this.txtResultDialog = false;
213 this.dealDialog = false;
170 } 214 }
171 }, 215 },
172 methods:{ 216 methods:{
...@@ -268,11 +312,7 @@ export default { ...@@ -268,11 +312,7 @@ export default {
268 attributes:null, 312 attributes:null,
269 geometry:geometry 313 geometry:geometry
270 } 314 }
271 if(self.propertyInfo.type == "zd"){ 315 self.checkGeo(graphic);
272 self.saveZd(graphic);
273 }else{
274 self.saveZRZ(graphic);
275 }
276 }else{ 316 }else{
277 this.$message.warning(response.message); 317 this.$message.warning(response.message);
278 } 318 }
...@@ -291,25 +331,95 @@ export default { ...@@ -291,25 +331,95 @@ export default {
291 graphic.geometry.spatialReference = { 331 graphic.geometry.spatialReference = {
292 wkt:wkt 332 wkt:wkt
293 } 333 }
294 //校验完整性 直接调用空间方法 提交空间表 334 self.checkGeo(graphic);
295 self.geoJoint(geometry,function (isJoint,message) { 335 }else{
296 if(isJoint){ 336 console.log('error submit!!');
297 self.$message.warning(message) 337 return false;
298 return; 338 }
299 }else { 339 })
300 if(self.propertyInfo.type == "zd"){ 340 },
341 txtChange(value){
342 var wkt = "PROJCS[\"XADFZBX\",GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"False_Easting\",0.0],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",0.0],PARAMETER[\"Scale_Factor\",1.0],PARAMETER[\"Latitude_Of_Origin\",0.0],UNIT[\"Meter\",1.0]]";
343 var graphics = self.txtResult.filter(item => {
344 return item.attributes.name == value;
345 })
346 var graphic = graphics[0];
347 graphic.geometry.type = "polygon";
348 graphic.geometry.spatialReference = {
349 wkt:wkt
350 }
351 this.addOverLayer(graphic.geometry,[]);
352 },
353 //校验空间完整性
354 checkGeo(graphic){
355 var self = this;
356 //校验完整性 直接调用空间方法 提交空间表
357 self.geoJoint(graphic.geometry,function (isJoint,message) {
358 if(isJoint){
359 self.$message.warning(message)
360 return;
361 }else {
362 var type = self.propertyInfo.type;
363 if(type == 'zd'){
364 //重叠分析
365 self.zdOverAnalys(self.propertyInfo.zdbsm,graphic,function (flag,results) {
366 if(flag){
367 self.$message.warning("导入的宗地与其他宗地有重叠,请处理!!");
368 self.dealOverData(results,graphic);
369 }else {
301 self.saveZd(graphic); 370 self.saveZd(graphic);
302 }else{ 371 }
372 });
373 }else {
374 self.zrzOverAnalys(this.propertyInfo.bsm,graphic,function (flag,mes) {
375 if(flag){
376 self.$message.warning(mes);
377 return;
378 }else {
303 self.saveZRZ(graphic); 379 self.saveZRZ(graphic);
304 } 380 }
305 } 381 });
306 }); 382 }
307 }else{ 383 }
384 });
385 },
386 //选择处理方式
387 submitDealForm(formName){
388 var self = this;
389 this.$refs[formName].validate((valid) => {
390 if(valid){
391 //选择处理方式
392 var value = self.dealForm.method;
393 switch (value) {
394 case '1':self.currntDealGraphic.attributes.BGZT =1;self.saveZd(self.currntDealGraphic);break;
395 case "2":self.getDifference(self.currntDealGraphic,self.overResults,self.delOverGeo);break;
396 case "3":self.getResultsDif(self.overResults,self.currntDealGraphic,self.delOtherGeo,true);break;
397 case "4":self.getResultsDif(self.overResults,self.currntDealGraphic,self.delOtherGeo,false);break;
398 }
399 }else {
308 console.log('error submit!!'); 400 console.log('error submit!!');
309 return false; 401 return false;
310 } 402 }
311 }) 403 })
312 }, 404 },
405 //裁剪自己在保存
406 delOverGeo(geometry){
407 this.currntDealGraphic.attributes.BGZT =2;
408 if(geometry == null){
409 this.$message.warning("完全重叠,已删除图形信息!!!")
410 this.currntDealGraphic.geometry = geometry;
411 }
412 this.saveZd(this.currntDealGraphic);
413 },
414 //裁剪别的在保存
415 delOtherGeo(results){
416 //执行编辑操作
417 var layer = this.getLayerByName("ZDJBXX");
418 var featureUrl = layer.layerUrl.replace("MapServer","FeatureServer");
419 featureUrl += "/"+layer.id;
420 this.updateGraphic(featureUrl,results);
421 this.saveZd(this.currntDealGraphic);
422 },
313 //下载文档模板 423 //下载文档模板
314 downloadFile(url,fileName){ 424 downloadFile(url,fileName){
315 let link = document.createElement("a"); 425 let link = document.createElement("a");
...@@ -336,25 +446,20 @@ export default { ...@@ -336,25 +446,20 @@ export default {
336 attributes:self.currentClickZd, 446 attributes:self.currentClickZd,
337 geometry:geometry 447 geometry:geometry
338 } 448 }
339 self.geoJoint(geometry,function (isJoint,message) { 449 self.checkGeo(graphic);
340 if(isJoint){
341 self.$message.warning(message)
342 return;
343 }else {
344 if(self.propertyInfo.type == "zd"){
345 self.saveZd(graphic);
346 }else{
347 self.saveZRZ(graphic);
348 }
349 }
350 });
351
352 } else { 450 } else {
353 console.log('error submit!!'); 451 console.log('error submit!!');
354 return false; 452 return false;
355 } 453 }
356 }); 454 });
357 }, 455 },
456 dealOverData(results,graphic){
457 this.overResults = results;
458 this.currntDealGraphic = graphic;
459 this.resultDialog = false;
460 this.txtResultDialog = false;
461 this.dealDialog = true;
462 },
358 saveZd(graphic){ 463 saveZd(graphic){
359 var self = this; 464 var self = this;
360 var points = null,lines = null, 465 var points = null,lines = null,
...@@ -363,6 +468,9 @@ export default { ...@@ -363,6 +468,9 @@ export default {
363 featureUrl += "/"+layer.id; 468 featureUrl += "/"+layer.id;
364 if(self.geoInfo){ 469 if(self.geoInfo){
365 //替换 生成图像 高亮 470 //替换 生成图像 高亮
471 if(graphic.attributes && graphic.attributes.BGZT){
472 self.geoInfo.attributes.BGZT = graphic.attributes.BGZT;
473 }
366 self.geoInfo.attributes.BSM = this.propertyInfo.zdbsm; 474 self.geoInfo.attributes.BSM = this.propertyInfo.zdbsm;
367 self.geoInfo.attributes.ZDDM = this.propertyInfo.zddm; 475 self.geoInfo.attributes.ZDDM = this.propertyInfo.zddm;
368 self.geoInfo.attributes.XMMC = this.propertyInfo.mc; 476 self.geoInfo.attributes.XMMC = this.propertyInfo.mc;
...@@ -374,34 +482,44 @@ export default { ...@@ -374,34 +482,44 @@ export default {
374 var updResult = res.updateFeatureResults[0]; 482 var updResult = res.updateFeatureResults[0];
375 if(updResult.objectId){ 483 if(updResult.objectId){
376 var OBJECTID = updResult.objectId; 484 var OBJECTID = updResult.objectId;
377 points = self.craetJZPoint(graphic); 485 if(graphic.geometry){
378 self.savejzd(points) 486 points = self.craetJZPoint(graphic);
379 //生成边框线 487 self.savejzd(points)
380 self.createJZLine(graphic,function (res){ 488 //生成边框线
381 lines = res; 489 self.createJZLine(graphic,function (res){
382 self.saveJzx(lines); 490 lines = res;
383 }); 491 self.saveJzx(lines);
492 });
493 }
494 self.$message.success("保存成功!!!");
384 self.goMap(); 495 self.goMap();
385 } 496 }
386 }); 497 });
387 }else{ 498 }else{
388 //生成图像 保存 499 //生成图像 保存
389 graphic.attributes = { 500 var attributes = {
390 BSM:this.propertyInfo.zdbsm, 501 BSM:this.propertyInfo.zdbsm,
391 ZDDM:this.propertyInfo.zddm, 502 ZDDM:this.propertyInfo.zddm,
392 XMMC:this.propertyInfo.mc 503 XMMC:this.propertyInfo.mc
504 };
505 if(graphic.attributes && graphic.attributes.BGZT){
506 attributes.BGZT = graphic.attributes.BGZT;
393 } 507 }
508 graphic.attributes = attributes;
394 self.addGraphic(featureUrl,graphic,function (res) { 509 self.addGraphic(featureUrl,graphic,function (res) {
395 var addRresult = res.addFeatureResults[0]; 510 var addRresult = res.addFeatureResults[0];
396 if(addRresult.objectId){ 511 if(addRresult.objectId){
397 var OBJECTID = addRresult.objectId; 512 var OBJECTID = addRresult.objectId;
398 points = self.craetJZPoint(graphic); 513 if(graphic.geometry) {
399 self.savejzd(points) 514 points = self.craetJZPoint(graphic);
400 //生成边框线 515 self.savejzd(points)
401 self.createJZLine(graphic,function (res){ 516 //生成边框线
402 lines = res; 517 self.createJZLine(graphic, function (res) {
403 self.saveJzx(lines); 518 lines = res;
404 }); 519 self.saveJzx(lines);
520 });
521 }
522 self.$message.success("保存成功!!!");
405 self.goMap(); 523 self.goMap();
406 } 524 }
407 }); 525 });
...@@ -459,12 +577,13 @@ export default { ...@@ -459,12 +577,13 @@ export default {
459 var featureUrl = layer.layerUrl.replace("MapServer","FeatureServer"); 577 var featureUrl = layer.layerUrl.replace("MapServer","FeatureServer");
460 featureUrl += "/"+layer.id; 578 featureUrl += "/"+layer.id;
461 if(self.geoInfo){ 579 if(self.geoInfo){
462 self.geoInfo.BSM = this.propertyInfo.bsm; 580 self.geoInfo.BSM = self.propertyInfo.bsm;
463 graphic.attributes = self.geoInfo; 581 graphic.attributes = self.geoInfo;
464 //替换 生成图像 高亮 582 //替换 生成图像 高亮
465 self.updateGraphic(featureUrl,graphic,function (res) { 583 self.updateGraphic(featureUrl,graphic,function (res) {
466 var addRresult = res.updateFeatureResults[0]; 584 var addRresult = res.updateFeatureResults[0];
467 if(addRresult.objectId) { 585 if(addRresult.objectId) {
586 self.$message.success("保存成功!!!");
468 self.goMap(); 587 self.goMap();
469 } 588 }
470 }); 589 });
...@@ -478,12 +597,13 @@ export default { ...@@ -478,12 +597,13 @@ export default {
478 self.addGraphic(featureUrl,graphic,function (res) { 597 self.addGraphic(featureUrl,graphic,function (res) {
479 var addRresult = res.addFeatureResults[0]; 598 var addRresult = res.addFeatureResults[0];
480 if(addRresult.objectId) { 599 if(addRresult.objectId) {
600 self.$message.success("保存成功!!!");
481 self.goMap(); 601 self.goMap();
482 } 602 }
483 }); 603 });
484 } 604 }
485 }, 605 },
486 //操作成功跳转 606 //操作成功不需要跳转地图 (直接定位新导入的图形)
487 goMap(){ 607 goMap(){
488 var bsm = "", type = this.propertyInfo.type; 608 var bsm = "", type = this.propertyInfo.type;
489 if(type == "zd"){ 609 if(type == "zd"){
...@@ -491,36 +611,47 @@ export default { ...@@ -491,36 +611,47 @@ export default {
491 }else { 611 }else {
492 bsm = this.propertyInfo.bsm; 612 bsm = this.propertyInfo.bsm;
493 } 613 }
494 this.resultDialog = false; 614 this.resultDialog = false;
495 this.$emit("closeImportDialog"); 615 this.txtResultDialog = false;
496 var curretRouterInfo = { 616 this.dealDialog = false;
497 path: this.$route.path, 617 this.$emit("closeImportDialog");
498 query: this.$route.query 618 //TODO 定位当前新导入的图形
499 } 619 this.addGeoByBsm(bsm,type,"testMap");
500 sessionStorage.setItem("curretRouterInfo", JSON.stringify(curretRouterInfo));
501 this.$router.push({
502 path: "/viewMap",
503 query: {
504 bsm: bsm,
505 type: this.propertyInfo.type
506 }
507 });
508 }, 620 },
509 //取消 621 //取消
510 cancel(){ 622 cancel(){
511 this.zdForm.zdBsm = ""; 623 this.zdForm.zdBsm = "";
512 this.currentClickZd = null; 624 this.currentClickZd = null;
513 this.resultDialog = false; 625 this.resultDialog = false;
626 // 清空当前图层上显示的图形
627 this.clearOverLayer();
514 }, 628 },
515 //取消文本选择的弹出框 629 //取消文本选择的弹出框
516 cancelTxtForm(){ 630 cancelTxtForm(){
517 this.txtZd.name = ""; 631 this.txtZd.name = "";
518 this.txtResultDialog = false; 632 this.txtResultDialog = false;
633 // 清空当前图层上显示的图形
634 this.clearOverLayer();
635 },
636 //取消导入处理的结果
637 cancelDealForm(){
638 this.dealForm.method = "";
639 this.dealDialog = false;
640 this.overResults = [];
641 // 清空当前图层上显示的图形
642 this.clearOverLayer();
519 }, 643 },
520 //宗地选择发生改变 644 //宗地选择发生改变
521 zdChange(value){ 645 zdChange(value){
522 this.zdForm.zdBsm = value.XMMC; 646 this.zdForm.zdBsm = value.XMMC;
523 this.currentClickZd = value; 647 this.currentClickZd = value;
648 var geometry = this.parseWktToArc(this.currentClickZd.wkt);
649 geometry.type = "polygon";
650 var wkt = "PROJCS[\"XADFZBX\",GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"False_Easting\",0.0],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",0.0],PARAMETER[\"Scale_Factor\",1.0],PARAMETER[\"Latitude_Of_Origin\",0.0],UNIT[\"Meter\",1.0]]";
651 geometry.spatialReference = {
652 wkt:wkt
653 }
654 this.addOverLayer(geometry,[]);
524 } 655 }
525 } 656 }
526 } 657 }
......
...@@ -10,6 +10,7 @@ import featureUpdate from "@libs/map/featureUpdate"; ...@@ -10,6 +10,7 @@ import featureUpdate from "@libs/map/featureUpdate";
10 import arcgisParser from 'terraformer-arcgis-parser' 10 import arcgisParser from 'terraformer-arcgis-parser'
11 import wktParse from 'terraformer-wkt-parser' 11 import wktParse from 'terraformer-wkt-parser'
12 import {maps} from '@/libs/map/mapUtils' 12 import {maps} from '@/libs/map/mapUtils'
13 import graphicSymbol from '@/assets/json/graphicSymbol.json'
13 14
14 export default { 15 export default {
15 data(){ 16 data(){
...@@ -197,8 +198,9 @@ export default { ...@@ -197,8 +198,9 @@ export default {
197 } 198 }
198 for(var i = 0;i < results.length;i++){ 199 for(var i = 0;i < results.length;i++){
199 var feature = results[i].feature; 200 var feature = results[i].feature;
200 var flag = geometryEngine.disjoint(polygon,feature.geometry); 201 var flag = geometryEngine.intersects(polygon,feature.geometry);
201 if(flag){ 202 var withinFlag = geometryEngine.within(polygon,feature.geometry);
203 if(!withinFlag && flag){
202 isJoint = true; 204 isJoint = true;
203 layerName = results[i].layerName; 205 layerName = results[i].layerName;
204 switch (layerName) { 206 switch (layerName) {
...@@ -244,7 +246,260 @@ export default { ...@@ -244,7 +246,260 @@ export default {
244 featureUpdate.methods.addGraphic(featureUrl,graphic,callBackFunction) ; 246 featureUpdate.methods.addGraphic(featureUrl,graphic,callBackFunction) ;
245 } 247 }
246 }); 248 });
247 } 249 },
250 //叠加分析 同一个图层的叠加分析
251 zdOverAnalys(bsm,graphic,callBacFunction){
252 var self = this;
253 loadModules([
254 "esri/geometry/Polygon"
255 ]).then(([
256 Polygon
257 ]) => {
258 var zdLayer = null;
259 zdLayer = self.getLayerByName("ZDJBXX");
260 var layerIds = [];
261 layerIds.push(zdLayer.id);
262 var polygon = new Polygon(graphic.geometry);
263 identifyUtils.methods.identify(zdLayer.layerUrl,layerIds,polygon,function (res) {
264 var results = res.results;
265 //判断数据是否与其他数据有重叠
266 var flag = false;
267 if(results && results.length > 0){
268 flag = true;
269 //加载在图层上 原本的要导入的数据 和重叠数据
270 self.addOverLayer(polygon,results);
271 }
272 callBacFunction(flag,results);
273 },true)
274 }).catch(err => {
275 console.log(err);
276 throw (err);
277 })
278 },
279 //添加添加元素和覆盖的元素到地图上
280 addOverLayer(geometry,results){
281 var view = maps["testMap"];
282 loadModules([
283 "esri/Graphic",
284 "esri/layers/GraphicsLayer",
285 "esri/geometry/geometryEngineAsync",
286 "esri/geometry/Extent"
287 ]).then(([
288 Graphic,
289 GraphicsLayer,
290 geometryEngineAsync,
291 Extent
292 ])=>{
293 var graphic = new Graphic({
294 geometry:geometry
295 })
296 var layer = view.map.findLayerById("overLayer");
297 if(layer){
298 layer.removeAll();
299 }else {
300 layer = new GraphicsLayer({
301 id:"overLayer"
302 })
303 view.map.add(layer);
304 }
305 var impotSymbol = graphicSymbol.fillSymbol.importSymbol,
306 defaultSymbol = graphicSymbol.fillSymbol.defaultSymbol;
307 for(var i = 0;i < results.length;i++){
308 var feature = results[i].feature;
309 feature.symbol = defaultSymbol;
310 layer.add(feature);
311 var geo = geometryEngineAsync.intersect(feature.geometry,geometry);
312 geo.then(function (res) {
313 var interGra = new Graphic({
314 geometry:res,
315 symbol:graphicSymbol.fillSymbol.highlightSymbol
316 })
317 layer.add(interGra);
318 })
319 }
320 graphic.symbol = impotSymbol
321 layer.add(graphic);
322 var extent = new Extent(JSON.parse(JSON.stringify(graphic.geometry.extent)))
323 extent.spatialReference = view.spatialReference;
324 view.extent = extent;
325 }).catch(err => {
326 console.log(err);
327
328 })
329 },
330 clearOverLayer(){
331 var view = maps["testMap"];
332 var layer = view.map.findLayerById("overLayer");
333 if(layer){
334 layer.removeAll();
335 }
336 },
337 //自然幢叠加分析 不能跨宗地 图层本身的叠加分析
338 zrzOverAnalys(bsm,graphic,callBacFunction){
339 var self = this;
340 loadModules([
341 "esri/geometry/Polygon",
342 "esri/geometry/geometryEngine"
343 ]).then(([
344 Polygon,
345 geometryEngine
346 ]) => {
347 var polygon = new Polygon(graphic.geometry);
348 var zdLayer = null,
349 zrzLayer = null;
350 zdLayer = self.getLayerByName("ZDJBXX");
351 zdLayer = self.getLayerByName("ZRZ");
352 var layerIds = [];
353 layerIds.push(zdLayer.id);
354 layerIds.push(zrzLayer.id);
355 identifyUtils.methods.identify(zdLayer.layerUrl,layerIds,polygon,function (res) {
356 var results = res.results;
357 //判断数据是否与其他数据有重叠
358 var flag = false,
359 mesge = "";
360 if(results && results.length > 0){
361 for(var i = 1;i < results.length;i++){
362 var feature = results[i].feature,
363 layerName = results[i].layerName;
364 if(layerName == 'ZRZ'){
365 if(feature.attributes['标识码'] != bsm){
366 var interFlag = geometryEngine.intersects(polygon,feature.geometry);
367 if(interFlag){
368 flag = true;
369 mesge="导入的自然幢与其他自然幢重叠,不能导入!!!";
370 break;
371 }
372 }
373 }else {
374 var interFlag = geometryEngine.intersects(polygon,feature.geometry);
375 var withinFlag = geometryEngine.within(polygon,feature.geometry);
376 if(!withinFlag && interFlag){
377 flag = true;
378 mesge="导入的自然幢与其跨宗地,不能导入!!!";
379 break;
380 }
381 }
382 }
383 }
384 callBacFunction(flag,mesge);
385 },true)
386 }).catch( err => {
387 console.log(err);
388 })
389 },
390 //去除重叠部分
391 getDifference(inputGraphic,subGraphic,callBackFuncton){
392 loadModules([
393 "esri/geometry/Polygon",
394 "esri/geometry/geometryEngine",
395 "esri/Graphic"
396 ]).then(([
397 Polygon,
398 geometryEngine,
399 Graphic
400 ])=>{
401 var inputGeometry = new Polygon(inputGraphic.geometry);
402 var outGeometry = null;
403 for(var i = 0;i < subGraphic.length;i++){
404 var feature = subGraphic[i].feature;
405 outGeometry = geometryEngine.difference(inputGeometry,feature.geometry);
406 }
407 if(callBackFuncton && typeof callBackFuncton == 'function'){
408 callBackFuncton(outGeometry);
409 }
410 }).catch(err => {
411 console.log(err);
412 })
413 },
414 //业务处理 先用query方法 查询将所有属性查询 在做空间裁剪
415 getResultsDif(subGraphics,currntGraphic,callBackFunction,flag){
416 var self = this;
417 loadModules([
418 "esri/geometry/geometryEngine",
419 "esri/geometry/Polygon"
420 ]).then(([
421 geometryEngine,
422 Polygon
423 ]) => {
424 var objectIds = [];
425 subGraphics.filter(item => {
426 objectIds.push(item.feature.attributes.OBJECTID);
427 })
428 var inputGeometry = new Polygon(currntGraphic.geometry);
429 var zdLayer = self.getLayerByName("ZDJBXX");
430 queryUtils.methods.queryByWhere(zdLayer.layerUrl+"/"+zdLayer.id,{OBJECTID:objectIds},null,true,"",subGraphics[0].feature.geometry.spatialReference,function (result) {
431 var features = result.features;
432 if(flag){
433 for(var i = 0;i < features.length;i++){
434 features[i].geometry = geometryEngine.difference(features[i].geometry,inputGeometry);
435 features[i].attributes.BGZT = 3;
436 }
437 }else {
438 for(var i = 0;i < features.length;i++){
439 features[i].geometry = null;
440 features[i].attributes.BGZT = 4;
441 }
442 }
443 if(callBackFunction && typeof callBackFunction == 'function'){
444 callBackFunction(features);
445 }
446 })
447
448 }).catch(err=>{
449 console.log(err);
450 })
248 451
452 },
453 addGeoByBsm(bsm, type,viewId) {
454 var self = this;
455 var layer = null;
456 if (type == 'zd') {
457 layer = this.getLayerByName("ZDJBXX");
458 } else if (type == 'zrz') {
459 layer = this.getLayerByName("ZRZ");
460 } else {
461 console.log("未定义类型!!");
462 return;
463 }
464 if (!layer) {
465 console.log("没有找到图层,不能查询");
466 return;
467 }
468 queryUtils.methods.queryByWhere(layer.layerUrl+"/"+layer.id, {"BSM": bsm }, null, true, null, null, function (res) {
469 var features = res.features;
470 if(features && features.length > 0){
471 if( !features[0].geometry ){
472 self.$message.success("暂无图形信息!!");
473 return;
474 }
475 loadModules([
476 "esri/layers/GraphicsLayer"
477 ]).then( ([
478 GraphicsLayer
479 ]) => {
480 var view = maps[viewId];
481 var layer = view.map.findLayerById("highlightLayer");
482 if(layer){
483 layer.removeAll();
484 }else {
485 layer = new GraphicsLayer({
486 id:"highlightLayer"
487 })
488 view.map.add(layer,5);
489 }
490 var symbol = graphicSymbol.fillSymbol.highlightSymbol;
491 var graphic = features[0];
492 graphic.symbol = symbol;
493 layer.add(graphic);
494 view.extent = graphic.geometry.extent;
495 }).catch( err => {
496 thow(err);
497 })
498 }else {
499 self.$message.success("暂无图形信息!!");
500 return;
501 }
502 });
503 }
249 } 504 }
250 } 505 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -37,20 +37,18 @@ ...@@ -37,20 +37,18 @@
37 MapView, 37 MapView,
38 esriMap 38 esriMap
39 ]) => { 39 ]) => {
40 var map = new esriMap({ 40 //
41 basemap:"hybrid" 41 var map = new esriMap();
42 });
43 //108.95 34.27 42 //108.95 34.27
44 var view = new MapView({ 43 var view = new MapView({
45 container: self.viewId, 44 container: self.viewId,
46 map: map, 45 map: map,
47 zoom:10, 46 zoom:10,
48 zoom:10, 47 center: [-0.154133333770497,0.6138183594020817],
49 center: [-0.154133333770497,0.6138183594020817], 48 spatialReference: {
50 spatialReference: { 49 wkid: 102100
51 wkid: 102100 50 }
52 } 51 });
53 });
54 maps[self.viewId] = view; 52 maps[self.viewId] = view;
55 if(self.afterLoaderFunction && typeof self.afterLoaderFunction == 'function'){ 53 if(self.afterLoaderFunction && typeof self.afterLoaderFunction == 'function'){
56 self.afterLoaderFunction(view); 54 self.afterLoaderFunction(view);
......
...@@ -24,7 +24,7 @@ export default { ...@@ -24,7 +24,7 @@ export default {
24 identifyParameters.tolerance = tolerance ? tolerance : 3; 24 identifyParameters.tolerance = tolerance ? tolerance : 3;
25 identifyParameters.mapExtent = mapExtent ? mapExtent : geometry.extent; 25 identifyParameters.mapExtent = mapExtent ? mapExtent : geometry.extent;
26 identifyParameters.returnGeometry = returnGeometry ? returnGeometry : false; 26 identifyParameters.returnGeometry = returnGeometry ? returnGeometry : false;
27 //identifyParameters.returnFieldName = false; 27 //identifyParameters.returnFieldName = true;
28 identifyParameters.spatialReference = geometry.spatialReference; 28 identifyParameters.spatialReference = geometry.spatialReference;
29 identifyTask.execute(identifyParameters).then(result => { 29 identifyTask.execute(identifyParameters).then(result => {
30 if(callBackFunction && typeof callBackFunction == 'function'){ 30 if(callBackFunction && typeof callBackFunction == 'function'){
......
...@@ -22,20 +22,29 @@ export default { ...@@ -22,20 +22,29 @@ export default {
22 var featureLayer = new FeatureLayer({ 22 var featureLayer = new FeatureLayer({
23 url:url 23 url:url
24 }) 24 })
25 var geo = null; 25 var saveGraphics = [];
26 if(graphic.geometry.type == 'point'){ 26 if(!Array.isArray(graphic)){
27 geo = new Point(graphic.geometry); 27 graphic = [graphic];
28 }else if(graphic.geometry.type == 'polyline'){ 28 }
29 geo = new Polyline(graphic.geometry); 29 for(var i = 0;i < graphic.length;i++){
30 }else if(graphic.geometry.type == 'polygon'){ 30 var geo = null;
31 geo = new Polygon(graphic.geometry); 31 if(!graphic[i].geometry){
32 geo = null;
33 }else if(graphic[i].geometry.type == 'point'){
34 geo = new Point(graphic[i].geometry);
35 }else if(graphic[i].geometry.type == 'polyline'){
36 geo = new Polyline(graphic[i].geometry);
37 }else if(graphic[i].geometry.type == 'polygon'){
38 geo = new Polygon(graphic[i].geometry);
39 }
40 var saveGraphic = new Graphic({
41 attributes:graphic[i].attributes,
42 geometry:geo
43 });
44 saveGraphics.push(saveGraphic);
32 } 45 }
33 var saveGraphic = new Graphic({
34 attributes:graphic.attributes,
35 geometry:geo
36 });
37 featureLayer.applyEdits({ 46 featureLayer.applyEdits({
38 addFeatures:[saveGraphic] 47 addFeatures:saveGraphics
39 }).then(function (res){ 48 }).then(function (res){
40 if(callBackFunction && typeof callBackFunction == 'function'){ 49 if(callBackFunction && typeof callBackFunction == 'function'){
41 callBackFunction(res); 50 callBackFunction(res);
...@@ -62,20 +71,30 @@ export default { ...@@ -62,20 +71,30 @@ export default {
62 var featureLayer = new FeatureLayer({ 71 var featureLayer = new FeatureLayer({
63 url:url 72 url:url
64 }) 73 })
65 var geo = null; 74 var updGraphics = [];
66 if(graphic.geometry.type == 'point'){ 75 if(!Array.isArray(graphic)){
67 geo = new Point(graphic.geometry); 76 graphic = [graphic];
68 }else if(graphic.geometry.type == 'polyline'){ 77 }
69 geo = new Polyline(graphic.geometry); 78 for(var i = 0;i < graphic.length;i++){
70 }else if(graphic.geometry.type == 'polygon'){ 79 var geo = null;
71 geo = new Polygon(graphic.geometry); 80 if(!graphic[i].geometry){
81 geo = new Polygon();
82 }else if(graphic[i].geometry.type == 'point'){
83 geo = new Point(graphic[i].geometry);
84 }else if(graphic[i].geometry.type == 'polyline'){
85 geo = new Polyline(graphic[i].geometry);
86 }else if(graphic[i].geometry.type == 'polygon'){
87 geo = new Polygon(graphic[i].geometry);
88 }
89 var updGraphic = new Graphic({
90 attributes:graphic[i].attributes,
91 geometry:geo
92 });
93 updGraphics.push(updGraphic);
72 } 94 }
73 var updGraphic = new Graphic({ 95
74 attributes:graphic.attributes,
75 geometry:geo
76 });
77 featureLayer.applyEdits({ 96 featureLayer.applyEdits({
78 updateFeatures:[updGraphic] 97 updateFeatures:updGraphics
79 }).then(function (res){ 98 }).then(function (res){
80 if(callBackFunction && typeof callBackFunction == 'function'){ 99 if(callBackFunction && typeof callBackFunction == 'function'){
81 callBackFunction(res); 100 callBackFunction(res);
...@@ -102,21 +121,31 @@ export default { ...@@ -102,21 +121,31 @@ export default {
102 var featureLayer = new FeatureLayer({ 121 var featureLayer = new FeatureLayer({
103 url:url 122 url:url
104 }) 123 })
105 var geo = null; 124 var delGraphics = [];
106 if(graphic.geometry.type == 'point'){ 125 if(!Array.isArray(graphic)){
107 geo = new Point(graphic.geometry); 126 graphic = [graphic];
108 }else if(graphic.geometry.type == 'polyline'){ 127 }
109 geo = new Polyline(graphic.geometry); 128 for(var i = 0;i < graphic.length;i++){
110 }else if(graphic.geometry.type == 'polygon'){ 129 var geo = null;
111 geo = new Polygon(graphic.geometry); 130 if(!graphic[i].geometry){
131 geo = null;
132 }else if(graphic[i].geometry.type == 'point'){
133 geo = new Point(graphic[i].geometry);
134 }else if(graphic[i].geometry.type == 'polyline'){
135 geo = new Polyline(graphic[i].geometry);
136 }else if(graphic[i].geometry.type == 'polygon'){
137 geo = new Polygon(graphic[i].geometry);
138 }
139 var delGraphic = new Graphic({
140 attributes:graphic[i].attributes,
141 geometry:geo
142 });
143 delGraphics.push(delGraphic);
112 } 144 }
113 var delGraphic = new Graphic({ 145
114 attributes:graphic.attributes,
115 geometry:geo
116 });
117 146
118 featureLayer.applyEdits({ 147 featureLayer.applyEdits({
119 deleteFeatures:[delGraphic] 148 deleteFeatures:delGraphics
120 }).then(function (res){ 149 }).then(function (res){
121 if(callBackFunction && typeof callBackFunction == 'function'){ 150 if(callBackFunction && typeof callBackFunction == 'function'){
122 callBackFunction(res); 151 callBackFunction(res);
......
...@@ -28,7 +28,7 @@ export default{ ...@@ -28,7 +28,7 @@ export default{
28 where += " and "; 28 where += " and ";
29 } 29 }
30 if(Array.isArray(parames[i].value)){ 30 if(Array.isArray(parames[i].value)){
31 where += parames[i].name + " in (" + parames[i].value.toString + ")"; 31 where += parames[i].name + " in (" + parames[i].value.toString() + ")";
32 }else if(typeof parames[i].value == 'number'){ 32 }else if(typeof parames[i].value == 'number'){
33 where += parames[i].name + " =" + parames[i].value ; 33 where += parames[i].name + " =" + parames[i].value ;
34 }else{ 34 }else{
......
...@@ -76,15 +76,20 @@ export default { ...@@ -76,15 +76,20 @@ export default {
76 }, 76 },
77 mixins:[mapLayerManager,findTask], 77 mixins:[mapLayerManager,findTask],
78 mounted(){ 78 mounted(){
79 var query = this.$route.query; 79
80 if(query && JSON.stringify(query) != "{}"){ 80 var query = this.$route.query
81 //self.addGeoByBsm(query.bsm,query.type,self.viewId); 81 var self = this;
82 if(query.type == 'zd'){ 82 setTimeout(function () {
83 this.getRightTree(query.bsm) 83 if(query && JSON.stringify(query) != "{}"){
84 }else if(query.type == 'zrz'){ 84 //self.addGeoByBsm(query.bsm,query.type,self.viewId);
85 this.getRightTreeByZrzbsm(query.bsm); 85 if(query.type == 'zd'){
86 self.getRightTree(query.bsm)
87 }else if(query.type == 'zrz'){
88 self.getRightTreeByZrzbsm(query.bsm);
89 }
86 } 90 }
87 } 91 },500);
92
88 93
89 }, 94 },
90 methods:{ 95 methods:{
...@@ -94,8 +99,10 @@ export default { ...@@ -94,8 +99,10 @@ export default {
94 view.ui.remove('zoom'); 99 view.ui.remove('zoom');
95 loadModules([ 100 loadModules([
96 "esri/layers/MapImageLayer", 101 "esri/layers/MapImageLayer",
102 "esri/geometry/Extent"
97 ]).then(([ 103 ]).then(([
98 MapImageLayer, 104 MapImageLayer,
105 Extent
99 ])=>{ 106 ])=>{
100 var mapImageLayer = new MapImageLayer({ 107 var mapImageLayer = new MapImageLayer({
101 url:self.layerUrl, 108 url:self.layerUrl,
...@@ -115,6 +122,13 @@ export default { ...@@ -115,6 +122,13 @@ export default {
115 }] 122 }]
116 }); 123 });
117 view.map.add(mapImageLayer,1); 124 view.map.add(mapImageLayer,1);
125 mapImageLayer.when(function () {
126 var extent = new Extent(JSON.parse(JSON.stringify(mapImageLayer.fullExtent)))
127 extent.spatialReference = view.spatialReference;
128 view.center = extent.center;
129 view.zoom = 15;
130 // view.extent = mapImageLayer.fullExtent;
131 });
118 var query = self.$route.query; 132 var query = self.$route.query;
119 if(query && JSON.stringify(query) != "{}"){ 133 if(query && JSON.stringify(query) != "{}"){
120 self.addGeoByBsm(query.bsm,query.type,self.viewId); 134 self.addGeoByBsm(query.bsm,query.type,self.viewId);
...@@ -137,9 +151,11 @@ export default { ...@@ -137,9 +151,11 @@ export default {
137 }, 151 },
138 //图层选择事件 152 //图层选择事件
139 selectLayerChange(){ 153 selectLayerChange(){
154 debugger
140 var self = this; 155 var self = this;
156 this.features = [];
141 var layerAndResult = this.results.filter(function (item) { 157 var layerAndResult = this.results.filter(function (item) {
142 return item.layerId = self.selectResLayerId; 158 return item.layerId == self.selectResLayerId;
143 }) 159 })
144 if(layerAndResult){ 160 if(layerAndResult){
145 this.features = layerAndResult[0].features; 161 this.features = layerAndResult[0].features;
......
...@@ -79,12 +79,12 @@ export default { ...@@ -79,12 +79,12 @@ export default {
79 return; 79 return;
80 } 80 }
81 for(var i = 0;i < searchResult.length;i++){ 81 for(var i = 0;i < searchResult.length;i++){
82 var layer = view.map.findLayerById("searchResult"+searchResult.layerName); 82 var layer = view.map.findLayerById("searchResult"+searchResult[i].layerId);
83 if(layer){ 83 if(layer){
84 layer.removeAll(); 84 layer.removeAll();
85 }else{ 85 }else{
86 layer = new GraphicsLayer({ 86 layer = new GraphicsLayer({
87 id:"searchResult"+searchResult.layerName 87 id:"searchResult"+searchResult[i].layerId
88 }) 88 })
89 view.map.add(layer); 89 view.map.add(layer);
90 } 90 }
......