gis api for js 框选区域取面积 以及 取重叠区域面积
来源:互联网 发布:js上传图片本地预览 编辑:程序博客网 时间:2024/06/05 15:11
function queryBySpatial(querySign, qrylyrname, outFields, queryTaskErrorHandler, isUseBuffer, distance) {
var TotalArea = 0;//总面积
var graphic_fw; //选择的区域
var intersecthic = map.extent; //选择的区域与同一组元素交集的区域
clearQueryInfos();
queryTask = new esri.tasks.QueryTask(getQueryUrl(qrylyrname));
queryTask.on("complete", function (queryResult) {
var features = queryResult.featureSet.features;
rExtent = null;
dojo.forEach(features, function (feature) {
intersecthic = graphic_fw.getExtent().intersects(feature.geometry.getExtent());//取交叉的extent
var selectionPolygon = esri.geometry.Polygon.fromExtent(intersecthic);//将交叉的extent转换成polygon
//拿到交叉区域-计算交叉的面积
try {
var areaParams = new esri.tasks.AreasAndLengthsParameters();
areaParams.lengthUnit = esri.tasks.GeometryService.UNIT_METER;
areaParams.areaUnit = esri.tasks.GeometryService.UNIT_SQ_METERS;
geometrySvc.simplify([selectionPolygon], function (simplifiedGeometries) {
areaParams.polygons = simplifiedGeometries;
geometrySvc.areasAndLengths(areaParams, function(result1) {
alert(result1.areas[0] + "sss");
}, function(err) {
alert(err);
}
);
}, function(err1) {
alert(err1);
});
////////////////////////////////////
} catch(e) {
alert(e.name + ": " + e.message);
}
//、、、、、、、、、、、、、、、、、、、、、、、、
});
alert(TotalArea);
MyLoading(false);
map.setExtent(rExtent);
});
queryTask.on("error", queryTaskErrorHandler);
//测量面积
if (tempArea == 1) {
macHandler = dojo.connect(geometrySvc, "onAreasAndLengthsComplete", function (result) {
TotalArea = result.areas[0];
//alert(TotalArea);
clearEvents();
});
maDrawCompletedHandler = dojo.connect(drawToolbar, "onDrawEnd", function (geometry) {
graphic = measureGraphicLyr.add(new esri.Graphic(geometry, new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_DASHDOT, new dojo.Color([255, 0, 0]), 2), new dojo.Color([255, 255, 0, 0.25]))));
var areaParams = new esri.tasks.AreasAndLengthsParameters();
areaParams.lengthUnit = esri.tasks.GeometryService.UNIT_METER;
areaParams.areaUnit = esri.tasks.GeometryService.UNIT_SQ_METERS;
geometrySvc.simplify([geometry], function (simplifiedGeometries) {
areaParams.polygons = simplifiedGeometries;
geometrySvc.areasAndLengths(areaParams);
});
});
}
drawToolbar.activate(esri.toolbars.Draw.POLYGON);
tempArea++;
/////////////
queryDrawCompletedHandler = dojo.connect(drawToolbar, "onDrawEnd", function (geometry) {
//closeqPopup();
clearQueryGraphics();
if (!isUseBuffer) {
graphic_fw = geometry;//拿到选择的范围
var spatialRelationship = esri.tasks.Query.SPATIAL_REL_INTERSECTS;
var symbol = getSymbol(geometry.type);
var graphic = new esri.Graphic(geometry, symbol);
addGraphic(queryGraphicLyr, graphic);//空间查询绘制完成后不绘制框选范围
var query = buildQueryGraphicParameters(graphic, spatialRelationship, outFields);
MyLoading(true);
queryTask.execute(query);
return;
} else {
var params = buildBufferParameters(distance, geometry);
geometrySvc.buffer(params, bufferSuc);
}
});
drawToolbar.deactivate();
switch (querySign) {
case "dx": //点选
drawToolbar.activate(esri.toolbars.Draw.POINT);
break;
case "jxx": //矩形选
drawToolbar.activate(esri.toolbars.Draw.RECTANGLE);
break;
case "yxx": //圆形选
drawToolbar.activate(esri.toolbars.Draw.CIRCLE);
break;
case "dbxx": //多边形选
drawToolbar.activate(esri.toolbars.Draw.POLYGON);
break;
default:
break;
}
return true;
}
var TotalArea = 0;//总面积
var graphic_fw; //选择的区域
var intersecthic = map.extent; //选择的区域与同一组元素交集的区域
clearQueryInfos();
queryTask = new esri.tasks.QueryTask(getQueryUrl(qrylyrname));
queryTask.on("complete", function (queryResult) {
var features = queryResult.featureSet.features;
rExtent = null;
dojo.forEach(features, function (feature) {
intersecthic = graphic_fw.getExtent().intersects(feature.geometry.getExtent());//取交叉的extent
var selectionPolygon = esri.geometry.Polygon.fromExtent(intersecthic);//将交叉的extent转换成polygon
//拿到交叉区域-计算交叉的面积
try {
var areaParams = new esri.tasks.AreasAndLengthsParameters();
areaParams.lengthUnit = esri.tasks.GeometryService.UNIT_METER;
areaParams.areaUnit = esri.tasks.GeometryService.UNIT_SQ_METERS;
geometrySvc.simplify([selectionPolygon], function (simplifiedGeometries) {
areaParams.polygons = simplifiedGeometries;
geometrySvc.areasAndLengths(areaParams, function(result1) {
alert(result1.areas[0] + "sss");
}, function(err) {
alert(err);
}
);
}, function(err1) {
alert(err1);
});
////////////////////////////////////
} catch(e) {
alert(e.name + ": " + e.message);
}
//、、、、、、、、、、、、、、、、、、、、、、、、
});
alert(TotalArea);
MyLoading(false);
map.setExtent(rExtent);
});
queryTask.on("error", queryTaskErrorHandler);
//测量面积
if (tempArea == 1) {
macHandler = dojo.connect(geometrySvc, "onAreasAndLengthsComplete", function (result) {
TotalArea = result.areas[0];
//alert(TotalArea);
clearEvents();
});
maDrawCompletedHandler = dojo.connect(drawToolbar, "onDrawEnd", function (geometry) {
graphic = measureGraphicLyr.add(new esri.Graphic(geometry, new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_DASHDOT, new dojo.Color([255, 0, 0]), 2), new dojo.Color([255, 255, 0, 0.25]))));
var areaParams = new esri.tasks.AreasAndLengthsParameters();
areaParams.lengthUnit = esri.tasks.GeometryService.UNIT_METER;
areaParams.areaUnit = esri.tasks.GeometryService.UNIT_SQ_METERS;
geometrySvc.simplify([geometry], function (simplifiedGeometries) {
areaParams.polygons = simplifiedGeometries;
geometrySvc.areasAndLengths(areaParams);
});
});
}
drawToolbar.activate(esri.toolbars.Draw.POLYGON);
tempArea++;
/////////////
queryDrawCompletedHandler = dojo.connect(drawToolbar, "onDrawEnd", function (geometry) {
//closeqPopup();
clearQueryGraphics();
if (!isUseBuffer) {
graphic_fw = geometry;//拿到选择的范围
var spatialRelationship = esri.tasks.Query.SPATIAL_REL_INTERSECTS;
var symbol = getSymbol(geometry.type);
var graphic = new esri.Graphic(geometry, symbol);
addGraphic(queryGraphicLyr, graphic);//空间查询绘制完成后不绘制框选范围
var query = buildQueryGraphicParameters(graphic, spatialRelationship, outFields);
MyLoading(true);
queryTask.execute(query);
return;
} else {
var params = buildBufferParameters(distance, geometry);
geometrySvc.buffer(params, bufferSuc);
}
});
drawToolbar.deactivate();
switch (querySign) {
case "dx": //点选
drawToolbar.activate(esri.toolbars.Draw.POINT);
break;
case "jxx": //矩形选
drawToolbar.activate(esri.toolbars.Draw.RECTANGLE);
break;
case "yxx": //圆形选
drawToolbar.activate(esri.toolbars.Draw.CIRCLE);
break;
case "dbxx": //多边形选
drawToolbar.activate(esri.toolbars.Draw.POLYGON);
break;
default:
break;
}
return true;
}
0 0
- gis api for js 框选区域取面积 以及 取重叠区域面积
- 鼠标划取图像区域并计算面积的matlab代码
- 计算 矩形重叠面积
- D重叠面积
- HDU2056 矩形重叠面积
- 1504:重叠面积
- GIS面积距离计算
- HDU 2056 矩形重叠面积
- 【Algorithm】 重叠部分面积计算
- 面积
- 面积
- 面积
- 面积
- 面积
- 面积
- 面积
- 面积
- 屏幕坐标系获取两个矩形面积及重叠面积,重叠面积比率的java代码
- hdu 4165 Pills
- ANSI X9.8标准 PIN xor PAN获取PIN BlOCK
- 抛出异常与栈展开(stack unwinding)
- JAVA IO与NIO优劣浅析
- MySQL分页性能优化
- gis api for js 框选区域取面积 以及 取重叠区域面积
- abap 弹出对话框函数POPUP_GET_VALUES的使用方法
- ios: push viewcontroller 时出现Presenting view controllers on detached view controllers is discouraged
- echarts 饼图 labelLine
- fcntl.h与unistd.h头文件
- 关于android的res里面的各个drawable文件夹
- 【全栈开发】构建一个请求模拟系统
- python解压rar文件
- 一个程序员的自白