ArcGIS API For Javascript :读取 CSV 文件的方法
我们临时会遇到一些测试数据,通常从数据库中以 CSV 格式导出。最简单实用的方法就是使用 ajax 去读取文件,记得引入 jQuery 。
例如,在《ArcGIS JS API :新增一个热力图层的方法》中我们已经生成了名为“heatmapfeatureLayer_1”的图层,这时我们有若干个包含坐标信息的 CSV 文件,想要使用这些数据生成热力图。
方法一
数据准备
我们假设拿到的 CSV 数据有名称、经度、纬度和个数四个字段。
| 海洋生物保护协会 | 110.3406 | 20.07484 | 93 |
| 塞维阳光管理处 | 110.3426 | 20.06408 | 7 |
| 天润工程检测中心 | 110.3471 | 20.07359 | 35 |
| 白沙门社区居民委员会 | 110.33 | 20.07125 | 30 |
| 白沙社区居委会 | 110.3274 | 20.07546 | 89 |
| 红岛边防派出所白沙门警务室 | 110.3318 | 20.07212 | 57 |
| 红岛边防派出所 | 110.3341 | 20.07128 | 59 |
| 中共白沙门社区支部委员会 | 110.3297 | 20.07029 | 64 |
| 民生管道燃气有限公司公用管道检验中心 | 110.3366 | 20.06883 | 42 |
定义函数
我们来写一个函数实现,为了让函数有更好的伸缩性,我们将 CSV 路径与图层名称作为参数。函数如下:
function AddPoint2heatLayer(n,l){
eval(l).graphics=[];//这一步是先清空当前图层的所有几何要素
$.ajax({
url: n,
datatype: "json",
async: false,
data: {},
success: function(data) {
var dataStr = new String(data);
var lines = dataStr.split('\n');
var result = new Array();
for(var i=1, il=lines.length; i<il; i++){
var item = lines[i].split(',');
result[i-1] = {};
result[i-1].lng = Number(item[1]);// CSV 中第二列:经度
result[i-1].lat = Number(item[2]);// CSV 中第三列:纬度
result[i-1].num = item[3];// CSV 中第四列:数量
}
//csv 已转为 json
//循环每个坐标对,并将其写入图层中
for (var i = 0; i < result.length; i++) {
var x = result[i].lng;
var y = result[i].lat;
var point = new esri.geometry.Point(x, y, new esri.SpatialReference({wkid: 4326}));
eval(l).add(new esri.Graphic(point));
eval(l).graphics[i].attributes = {};
eval(l).graphics[i].attributes.num = result[i].num;
}
}});
}
其中参数 n 为 CSV 路径,例如:"test.csv",参数 l 为图层名称,例如“heatmapfeatureLayer_1”。
调用函数
当我们多次使用时,即可这样调用:
AddPoint2heatLayer("net/heatmap.csv","heatmapfeatureLayer_1");
其实这么写的原因是,后期很可能会使用多时段的数据来做动态热力图,读取数据也会直接通过后台接口来实现,届时只需要修改函数中数据封装的部分即可。
方法二
引入类
在 require 中引入:
"esri/layers/CSVLayer",
"esri/renderers/SimpleRenderer",
"esri/symbols/SimpleMarkerSymbol",
"esri/Color",
在 function 中加入相应的:
CSVLayer, SimpleRenderer, SimpleMarkerSymbol, Color
调用函数
var csv = new esri.layers.CSVLayer("test.csv");
var orangeRed = new esri.Color([0, 255, 100, 0.8]);
var marker = new esri.symbol.SimpleMarkerSymbol("solid", 12, null, orangeRed);
var renderer = new esri.renderer.SimpleRenderer(marker);
csv.setRenderer(renderer);
map.addLayer(csv);
ArcGIS API For Javascript :读取 CSV 文件的方法的更多相关文章
- 转换成CSV文件、Word、Excel、PDF等的方法--读取CSV文件的方法
1. 转换成CSV文件: http://www.dotnetgallery.com/lab/resource93-Export-to-CSV-file-from-Data-Table-in-Aspne ...
- 用程序读取CSV文件的方法
CSV全称 Comma Separated values,是一种用来存储数据的纯文本文件格式,通常用于电子表格或数据库软件.用Excel或者Numbers都可以导出CSV格式的数据. CSV文件的规则 ...
- Python中读取csv文件内容方法
gg 224@126.com 85 男 dd 123@126.com 52 女 fgf 125@126.com 23 女 csv文件内容如上图,首先导入csv包,调用csv中的方法reader()创建 ...
- 一个简易的PHP读取CSV文件的方法
1. 思路:先打开文件,读取出文件有多少行,然后逐行读取数据放入一个数组中 public function read_csv_lines($csv_file = '', $lines = 0, $of ...
- JavaScript 读取CSV文件并转为js对象
html部分 <!-- 创建隐藏file input --><button type="button" name="seach" onclic ...
- C#:StreamReader读取.CSV文件(转换成DataTable)
using System.Data; using System.IO; /// <summary> /// Stream读取.csv文件 /// </summary> /// ...
- 使用Arcgis Api for Javascript 调用 本地Portal发布的WebMap
1.环境搭建 安装Arcgis Portal 10.4,Server 10.4,DataStore ,WebAdaptor for IIS,搭建arcgis api for javascript 4. ...
- 下载并部署 ArcGIS API for JavaScript 4.10
学习ArcGIS API for JavaScript 4.10 的第一步就是下载并部署该文件. 有的读者由于之间没接触过,不知道怎么下载和部署文件.这些读者要求作者详细的写一篇关于下载和部署的文章( ...
- Javascript写入txt和读取txt文件的方法
文章主要介绍了Javascript写入txt和读取txt文件的方法,需要的朋友可以参考下1. 写入 FileSystemObject可以将文件翻译成文件流. 第一步: 例: 复制代码 代码如下: Va ...
随机推荐
- Intellij IDEA 常用的插件 建议全装
介绍几个常用的插件 Alibaba Java Coding Guidelines https://plugins.jetbrains.com/plugin/10046-alibaba-java-cod ...
- HashMap - 类注释
了解到Java8以后HashMap的实现换了,也看了很多博客一直在向我这个小菜鸡说HashMap的重要.因此我决定洗心革面,好好正视HashMap 基于jdk 8 先从类注释开始入手学习,顺便提高提高 ...
- travis-ci + php + casperjs 持续集成
.travis.yml 文件添加内容: sudo: required language: php php: - 5.5 before_script: - npm install -g casperjs ...
- 解决SpringBatch/Cloud Task的SafeMode下的报错问题
问题描述 一般公司都有DBA,DBA极有可能开启了Safe mode,也就是不支持不带索引条件过滤的update操作. 而Spring Batch /Cloud Task就有一张表 JOB_SEQ或者 ...
- 设计模式(十)Strategy模式
Strategy模式,就是用来整体地替换算法,可以轻松地以不同的算法解决同一个问题. 还是根据一个示例程序来理解这种设计模式吧.先看一下示例程序的类图. 然后看示例程序代码. package bigj ...
- fenby C语言 P31 使用数组的指针
++p代表p=p+1; #include <stdio.h> int main(void){ int a[5],i; for(i=0;i<5;i++) *(a+i)=1; print ...
- ansible模块之command、shell、script、file、copy、fetch
前戏 ansible 批量在远程主机上执行命令 openpyxl 操作excel表格 puppet ansible slatstack ansible epel源 第一步: 下载epel源 wget ...
- Unity资源加载路径及加载方式小结
Unity3D中的资源路径路径属性 路径说明Application.dataPath 此属性用于返回程序的数据文件所在文件夹的路径.例如在Editor中就是Assets了.Application.st ...
- 基于Mustache实现sql拼接
目录 一.前言 二.Mustache语法 三.Mustache拼接sql 一.前言 Mustache语法是一种模板语法,它可以帮我们拼接我们想要的东西.入职新公司,而项目里的sql语句就是用Musta ...
- vue设置页面标题
使用vue-wechat-title插件对页面标题进行设置 1.安装模块 命令行窗口中运行npm install vue-wechat-title --save PS.如果程序正在运行,ctrl ...