(十八)ArcGIS API For Javascript之加载shp文件

1.引言

      最近总是有人在问,如何在ArcGIS API加载本地的Shp文件,其实加载shapefile的文件有多种,比如官网提供了一种方法,但是他是基于portal服务的,官网的例子地址为:add shapefile,这个方案的缺点在与要利用在线的服务,这是一些Giser比较反感的。
      在这里我把我加载shp的方式给大家分享一下,主要的步骤为:

  • 将我们的shp压缩成一个zip包
  • 将我们的zip上传到后台(此处以Java为例)
  • 用Java将我们的zip包解压缩
  • 利用开源库GDAL将shp解析为GeoJson数据
  • 将GeoJson数据传回前台转换成Esri的Json数据
  • 利用Graphic显示数据

接下来我们实现一下上面所说的步骤。

2.配置GDAL的Java环境

      因为我们要用到GDAL来解析shp数据,所以首先配置我们的GDAL环境。已经编译好的GDAL函数库下载地址为:编译好的GDAL

  • 将zip下载下来解压之后为:

这里写图片描述

  • 将bin目录下面的所有dll拷贝到指定位置

      位置不固定,此处提供三种方案
      (1)拷贝到java工程目录下
      (2)拷贝到{JAVA_HOME}\jre\bin目录下
      (3)将bin目录配置到环境变量中(我是采用这个)
    
  • 在目录bin\gdal\java下面为:

这里写图片描述

(1)其中gdal.jar加到构建路径中,
(2)gdalconstjni.dll、gdaljni.dll、ogrjni.dll、osrjni.dll文件拷贝到java工程目录下
  • 至此GDAL的Java环境配置完成

3.实现ArcGIS API加载Shp文件

这是我建好的Web项目:

这里写图片描述

  • 介绍后台代码每个类的作用

      (1)错误忽略,这是myeclipse编译器的问题
      (2)readFile.java是接受zip文件并且给前台返回数据
      (3)ZipUtils.java和IOUtil是解压zip文件的工具类
      (4)ToGeoJson.java是将shp文件解析为geojson数据
      (5)select.java是根据文件的扩展名选择shp文件
      (6)MyFileRead.java是读取geojson数据
    
  • 介绍前台代码的作用

这里写图片描述

	(1)js/esriapi是esri提供给我们的api
	(2)js/my/geojsonUtil是我自己写的将geojson数据解析为esri json数据

4.结果运行

这里写图片描述

这里写图片描述

5.注意事项

5.1dojo/request/iframe

在使用dojo/request/iframe时,重点在与后台的数据返回上,返回的数据一定要用<textarea></textarea>包起来,不然前台会报错,找不到<textarea>对象。例如:

这里写图片描述

5.2GDAL解析数据

注意事项2在于;GDAL解析Shp数据为geojson数据时,解析出来的数据少一个]},我不清楚是我自己电脑的问题,还是都存在这个问题,因此我添加了一个]},如图所示:

这里写图片描述

6.代码下载

本博客的代码和数据下载地址为:ArcGIS API For Javascript之加载shp文件

评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值