Arcgis for Js实现Spline插值、区域裁剪以及页面的轮播效果
2016-12-26 07:45
465 查看
概述:
本文讲述如何利用Arcgis 的Gp服务实现Spline插值,并将插值的结果按照指定的区域进行裁剪,最后将裁剪的结果根据特定的样式渲染,并在页面实现多期轮播的这样一个效果。
实现效果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/06/0250152ec5dea93f2947b00e3a72fa75)
实现步骤:
1、模型构建
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/06/34f7e3191b88a396b636886cde1adf3e)
a、确定需要工具
该功能需要两个工具:1、Spline,实现插值计算;2、Extract by Mask,实现指定区域的裁剪。
b、确定模型参数
输入参数:1、计算点;
2、计算字段;
输出参数:1、裁剪后栅格;
常 量:裁剪区域
c、设置输出样式
1)执行模型,验证模型正确性;
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/06/6d15c401c719346234205499c4deeb5c)
2)设置结果样式,并导出为lyr图层;
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/06/dbc32b2380bcdbb005612a8678eb661d)
设置样式
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/06/2a5f5710ebc911f155f5b3e512887599)
存为lyr
3)设置输出栅格样式;
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/06/bc2c5b7332d41d17f7866ed26d386145)
2、服务发布
a、再执行一遍模型
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/06/f0426fbce0cc5f4ff7d4c7ef6ce47aa6)
b、设置参数,发布服务
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/06/b78a50fc7e593378697849c0000137bf)
将服务发布为一个MapService
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/06/0c99c9e9faedb42a9f440380e224d022)
填写参数
3、前台调用
/**
* 插值计算
*/
var gpUrl = "http://localhost:6080/arcgis/rest/services/lzugis/MaskSpline/GPServer/Spline";
var jobIds = [];
var calcFlag = 0;//循环请求
$("#calgp").on("click", function ()
{
$("#modal").show();
calcFlag = setInterval(calSplineGp,3000);
}
);
function calSplineGp(){
var gpFeatures = [];
var features = gpData.features;
for(var i in features){
var feature = features[i];
var gpFeature = {
"attributes": {
"id": i,
"name": feature.attributes.name,
"heat": Math.random()*100 + 1
},
"geometry": {
"x": feature.geometry.x,
"y": feature.geometry.y
}
};
gpFeatures.push(gpFeature);
}
var inputFeature = {
"features":gpFeatures
};
$.ajax(
{
type : "POST",
cache : false,
url : gpUrl + "/submitJob?InputFeatures="+JSON.stringify(inputFeature)+"&Field=heat&f=json",
async : false,
success : function (result)
{
result = eval("(" + result + ")");
var jobId = result.jobId;
if (jobId)
{
submitJob(jobId);
}
else
{
console.log("计算失败");
}
}
}
);
}
function submitJob(jobId)
{
$.ajax({
type: "POST",
cache: false,
url: gpUrl+"/jobs/"+jobId+"?f=json",
async: false,
success: function (result1) {
result1 = eval("("+result1+")");
if(result1.jobStatus==="esriJobSucceeded"){
jobIds.push(jobId);
if(jobIds.length===5){
clearInterval(calcFlag);
loadResultLayer();
}
}
else if(result1.jobStatus==="esriJobFailed"){
console.log("计算失败");
}
else{
submitJob(jobId);
}
}
});
}
var showFlag = 0, showIndex=0;
var gpLayer;
var gp = new Geoprocessor(gpUrl);
function loadResultLayer(){
$("#modal").hide();
showFlag = setInterval(function(){
var jobId = jobIds[showIndex];
gp.getResultImageLayer(jobId, null, null, function(_gpLayer){
if(gpLayer)map.removeLayer(gLayer);
gpLayer = _gpLayer;
gpLayer.setOpacity(0.9);
map.addLayer(gpLayer);
gpLayer.on("load",function(){
showIndex++;
if(showIndex===jobIds.length-1){
showIndex = 0;
}
});
});
},2000);
}
---------------------------------------------------------------------------------------------------------------技术博客http://blog.csdn.NET/gisshixisheng在线教程http://edu.csdn.Net/course/detail/799
Githubhttps://github.com/lzugis/联系方式q q:1004740957e-mail:niujp08@qq.com公众号:lzugis15Q Q 群:452117357(webgis)
337469080(Android)
本文讲述如何利用Arcgis 的Gp服务实现Spline插值,并将插值的结果按照指定的区域进行裁剪,最后将裁剪的结果根据特定的样式渲染,并在页面实现多期轮播的这样一个效果。
实现效果:
实现步骤:
1、模型构建
a、确定需要工具
该功能需要两个工具:1、Spline,实现插值计算;2、Extract by Mask,实现指定区域的裁剪。
b、确定模型参数
输入参数:1、计算点;
2、计算字段;
输出参数:1、裁剪后栅格;
常 量:裁剪区域
c、设置输出样式
1)执行模型,验证模型正确性;
2)设置结果样式,并导出为lyr图层;
设置样式
存为lyr
3)设置输出栅格样式;
2、服务发布
a、再执行一遍模型
b、设置参数,发布服务
将服务发布为一个MapService
填写参数
3、前台调用
/**
* 插值计算
*/
var gpUrl = "http://localhost:6080/arcgis/rest/services/lzugis/MaskSpline/GPServer/Spline";
var jobIds = [];
var calcFlag = 0;//循环请求
$("#calgp").on("click", function ()
{
$("#modal").show();
calcFlag = setInterval(calSplineGp,3000);
}
);
function calSplineGp(){
var gpFeatures = [];
var features = gpData.features;
for(var i in features){
var feature = features[i];
var gpFeature = {
"attributes": {
"id": i,
"name": feature.attributes.name,
"heat": Math.random()*100 + 1
},
"geometry": {
"x": feature.geometry.x,
"y": feature.geometry.y
}
};
gpFeatures.push(gpFeature);
}
var inputFeature = {
"features":gpFeatures
};
$.ajax(
{
type : "POST",
cache : false,
url : gpUrl + "/submitJob?InputFeatures="+JSON.stringify(inputFeature)+"&Field=heat&f=json",
async : false,
success : function (result)
{
result = eval("(" + result + ")");
var jobId = result.jobId;
if (jobId)
{
submitJob(jobId);
}
else
{
console.log("计算失败");
}
}
}
);
}
function submitJob(jobId)
{
$.ajax({
type: "POST",
cache: false,
url: gpUrl+"/jobs/"+jobId+"?f=json",
async: false,
success: function (result1) {
result1 = eval("("+result1+")");
if(result1.jobStatus==="esriJobSucceeded"){
jobIds.push(jobId);
if(jobIds.length===5){
clearInterval(calcFlag);
loadResultLayer();
}
}
else if(result1.jobStatus==="esriJobFailed"){
console.log("计算失败");
}
else{
submitJob(jobId);
}
}
});
}
var showFlag = 0, showIndex=0;
var gpLayer;
var gp = new Geoprocessor(gpUrl);
function loadResultLayer(){
$("#modal").hide();
showFlag = setInterval(function(){
var jobId = jobIds[showIndex];
gp.getResultImageLayer(jobId, null, null, function(_gpLayer){
if(gpLayer)map.removeLayer(gLayer);
gpLayer = _gpLayer;
gpLayer.setOpacity(0.9);
map.addLayer(gpLayer);
gpLayer.on("load",function(){
showIndex++;
if(showIndex===jobIds.length-1){
showIndex = 0;
}
});
});
},2000);
}
---------------------------------------------------------------------------------------------------------------技术博客http://blog.csdn.NET/gisshixisheng在线教程http://edu.csdn.Net/course/detail/799
Githubhttps://github.com/lzugis/联系方式q q:1004740957e-mail:niujp08@qq.com公众号:lzugis15Q Q 群:452117357(webgis)
337469080(Android)
相关文章推荐
- Arcgis for Js实现Spline插值、区域裁剪以及页面的轮播效果
- 使用html+js+css 实现页面轮播图效果(实例讲解)
- Arcgis for JS之Cluster聚类分析的实现(基于区域范围的)
- Arcgis for JS扩展GraphicLayer实现区域对象的聚类统计与展示
- Arcgis for JS之Cluster聚类分析的实现(基于区域范围的)
- Arcgis for JS扩展GraphicLayer实现区域对象的聚类统计与展示
- 如何在Joomla!管理后台中实现标签页面的效果(tabs.js) 【转】
- 用JS和CSS实现页面的向上向下滚动效果
- js 实现“倒计时” 以及 N秒后跳转页面
- marquee+js实现某个区域的“无缝滚动效果”
- 实现页面元素拖动效果的JS函数
- js实现淘宝首页图片轮播效果(修正图片滚动顺序的问题)
- js实现的定时关闭页面或定时提醒效果代码
- CSS+JS实现的静态页面翻页效果
- [js]网页侧边随页面滚动广告效果实现
- JS 实现回到页面TOP的动画效果
- 实现页面元素拖动效果的JS函数
- js基础:实现页面打开后滚动到最底端的效果
- 使用js实现滑动页面效果,很漂亮
- JS+Ajax+Jquery实现页面无刷新分页以及分组 超强的实现第1/2页