背景:

在项目中,我需要对解析后的nc文件数据进行筛选,选出符合要求的点,绘制相应的polygon。

代码:ajax获取某一时刻的数据

var url ="/api/config/PostCoordinates/"+times+"/0";
$.ajax({
type:"GET",
url:url,
success:function(data){
//画polygon
createPolygon(data);
},
error:function(data){
console.log(data);
}
});

绘制polygon的方法,数据解析完成后,发现数据的是有规则的,每一行的维度都是一样的,那么为了筛选出边界点,我需要将维度不一样的第一个点拿到,并将其push到数组中。同时,在实际的效果中,我发现生成的polygon并不是我想要的。这样我发现利用arcgis绘制polygon的过程是按照点的添加顺序来绘制的,因而我不能只接将符合要求的点push到数组中,我还需要做进一步的操作,将同一行的最后一个点的数据放在另一个数组中,并倒叙取出,再push到最终的数组中。代码如下:

//画polygon
function createPolygon(data){

//设置polygon的颜色填充
var polySymbolRed = new esri.symbol.SimpleFillSymbol(
esri.symbol.SimpleLineSymbol.STYLE_SOLID,
new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,
new Color([0, 0, 0, 0]),3),
new Color([255, 106, 106,0.3])
);

var polygon = new Polygon(new SpatialReference({wkid:4326}));

//定义数组
var ring = new Array();var pts,pts2;
var result = new Array();
for(var i=0;i<data.length-1;i++){

//数据点的第一个和最后一个点push到数组中
if(i==0||i==data.length-1){
pts = new Point(data[i].winddir,data[i].windspeed,sr);
ring.push(pts);
}

//将维度不一样的第一个点,和前一个点push到不同的数组中
if(data[i].windspeed!=data[i+1].windspeed){
pts2 = new Point(data[i+1].winddir,data[i+1].windspeed,sr);
ring.push(pts2);
pts = new Point(data[i].winddir,data[i].windspeed,sr);
result.push(pts);
}
}

//倒叙取出同一行的最后一个点的数据
for(var j=result.length-1;j>0;j--){
console.log("result is "+result[j]);
ring.push(result[j]);
}
//绘制polygon
polygon.addRing(ring);
var gra = new esri.Graphic(polygon,polySymbolRed);
map.graphics.add(gra);
}

部分数据如下,windspeed是维度,winddir为经度,数组长度580:

最终的效果如下,粉红色的部分就是从nc文件中解析出来的数据绘制的polygon:

利用javascript实现二维数组的筛选的更多相关文章

  1. 同事问如何判断同花顺,我用javascript的二维数组写了个简易demo

    有个前同事在群里问如何判断是否为同花顺我用javascript的二维数组写了个简易demo. <!DOCTYPE html> <html> <body> <s ...

  2. 一道JavaScript的二维数组求平均数的题

    JavaScript中只支持一维数组,但是可以在数组中嵌套数组来创建二维以至于多维的数组.今天下午在看书时候,发现一道感觉比较有意思的题,就是js中如何求二维数组的列之和和行之和,现在就给大家分享下, ...

  3. JavaScript -- 定义二维数组

    方法一:直接定义并且初始化,这种遇到数量少的情况可以用var _TheArray = [["0-1","0-2"],["1-1"," ...

  4. JavaScript的二维数组

    二维数组的初始化: 实例① var arr = [[1,2],['a','b']]; console.log(arr[1][0]); //a 第2列第1行所在的元素 实例② var arr = new ...

  5. javascript定义二维数组与添加

    你定义的已经就是的了啊.不是很明白你的问的什么.你是说如何向里面填充?双层循环就行了撒:for(var i = 0; i < X; i++){ for(var j = 0; j < Y; ...

  6. javascript 二维数组的例子

    javascript没有二维数组.所有自定义了一个数组类,下面是实例代码. 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Trans ...

  7. C++二维数组的动态声明

    int **a  =  new int* [m]   //分配一个指针数组,将其首地址保存在a中   . for(int i = 0; i < m; i++)   //为指针数组的每个元素分配一 ...

  8. Vector 二维数组 实现

    1.C++实现动态二维数组 int **p; p = ]; //注意,int*[10]表示一个有10个元素的指针数组 ; i < ; ++i) { p[i] = ]; } 2.利用指针数组实现二 ...

  9. java基础:进制详细介绍,进制快速转换,二维数组详解,循环嵌套应用,杨辉三角实现正倒直角正倒等腰三角,附练习案列

    1.Debug模式 1.1 什么是Debug模式 是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序. 1.2 Debug介绍与操作流程 如何加断点 选择 ...

随机推荐

  1. HTTPS为什么更安全,请看这里

    本文转载于https://foofish.net/https-story-1.html HTTPS 是建立在密码学基础之上的一种安全通信协议,严格来说是基于 HTTP 协议和 SSL/TLS 的组合. ...

  2. springcloud2 (三) 服务治理Eureka及其实现原理

    代码地址:https://gitlab.com/showkawa/architect/tree/master/microservice/eurake 基于springcloud2分析eurake知识点 ...

  3. VRTK3.3.0-001头盔相机

    VRTK3.3.0下载地址:https://github.com/ExtendRealityLtd/VRTK/tree/3.3.0 SteamVR1.2.3下载地址:https://github.co ...

  4. 在虚拟机中设置NAT模式实现主机和虚拟机的通信

    1.打开虚拟机,对几个节点进行网络连接的设置.虚拟机设置/网络连接,选择“NAT模式” 2.编辑—>虚拟网络编辑器来查看NAT模式中所用到的网段. 从上图可以看出,NAT中的子网IP是192.1 ...

  5. ssh断开后保持程序运行

    https://blog.csdn.net/gatieme/article/details/52777721 https://blog.51cto.com/zjking/1117828 https:/ ...

  6. jQuery EasyUI/TopJUI实现数据表格的增删改查功能(不写js,纯HTML实现!!!)

    jQuery EasyUI/TopJUI实现数据表格的增删改查功能(不写js,纯HTML实现!!!) 废话不多说,直接贴上代码 <table id="configEdatagrid&q ...

  7. random 库

    random 是使用随机数的python 标准库 ——为随机数:采用梅森旋转算法生成的(伪)随机序列中的元素 —— import random 基本随机数函数:seed(),random() 扩展随机 ...

  8. 洛谷 P4549 【模板】裴蜀定理

    https://www.luogu.org/problemnew/show/P4549 (1)证明方程ax+by=gcd(a,b)(a,b为常数;a>0,b>0;a,b,x,y为整数)有解 ...

  9. 部署iis服务器与c#程序遇到的问题小结

    记得上次部署IIS服务器比较顺利,半天搞定的?有点忘了. 但,服务器版本各有不同,这次装的是server2008 R2 Ennterprice版.虽然忘了上次装的是哪个版本,但进去后发现有些东西明显不 ...

  10. Perl的Notepad++环境配置

    Notepad++打开pl文件F5录入命令分别保存. Run_Perl(F9): cmd /k F:\Strawberry\perl\bin\perl.exe -w "$(FULL_CURR ...