使用Python辅助ArcGIS API for JS SDK(V4.14)进行本地部署(IIS服务器)

目录

  1. 前言
  2. 下载文件及部署API
  3. 修改SDK文件内的引用路径并部署
  4. 结束语

1.前言

在线查看ArcGIS API for JS的帮助文档时,经常被网络搞得抓狂。为了更高效的学习,将SDK进行本地部署。下载文件(API和SDK)并解压后,都会有一个部署的教程。API的本地部署倒还顺利,官方SDK的部署却要下载node.js、glob。结果我安装之后运行官方脚本失败。

通过阅读部署步骤,发现要想本地部署SDK的关键就是把Sample Code和sandbox文件里的引用路径换成本地即可,官方的解释:
在这里插入图片描述
这里使用Python实现修改。

2.下载文件及部署API

在本地部署SDK之前,需要将API部署好。首先当然是要下载这两个文件,在官网https://developers.arcgis.com/downloads/apis-and-sdks中下载两个文件(需要登录账号)。网上有说网站打不开,无法登录账号的现象。该现象确实存在,但我使用校园网进行访问时是成功的。并借助迅雷,在迅雷的搜索框里输入网址,完成下载,解压。我这里下载了4.14版本(其他版本部署方式略有不同,但是思想一致)。打开api和sdk文件夹,里边都会有一个install.html文件,打开就是官方给出部署的方法。
在这里插入图片描述
接下来就是部署ArcGIS API for JS了。其实就是将

arcgis_js_api\library\4.14\dojo\dojo.js

arcgis_js_api\library\4.14\init.js

文件中的

https://[HOSTNAME_AND_PATH_TO_JSAPI]dojo

字符串替换成IIS服务器的地址。当然要把整个文件夹放在IIS服务器里才生效,如何打开windows的IIS服务器可以在网上搜索。网上有说先把文件放进IIS服务器,再修改字符串的。但有时候C盘的内容要较高权限才能修改,因此我采用先修改字符串,后放入IIS服务器的步骤。

这里我替换的的地址为(两个文件的替换字符串一样):

http://localhost/arcgis_js_api/library/4.14/dojo

也就是说,之后我会把arcgis_js_api整个文件夹放在我电脑的路径为

‪C:\inetpub\wwwroot\...

在这里插入图片描述
这里需要说明,我把原来文件里的 https 改为了http 。官方的文档是不需要这样的,但是我这边使用https却无法运行。

修改之后,把文件夹放入IIS服务器中。至此,ArcGIS API for JS就在本地部署成功(其他博客用更清晰的部署步骤,我这里只是简单的写一下)。

3.修改SDK文件内的引用路径并部署

通过阅读官方的SDK本地部署的方案,发现只要将

..\arcgis_js_v414_sdk\arcgis_js_api\sdk\latest\sample-code\sandbox\index.html

..\arcgis_js_v414_sdk\arcgis_js_api\sdk\latest\sample-code\*\live\index.html

中CDN链接换成本地部署的API即可。星号(*)表示所有文件夹。

以我的电脑为例:
将每个文件中link标签的href中的:

https://js.arcgis.com/xxxxxxxx

替换为:

http://localhost/arcgis_js_api/library/xxxxxxx

将每个文件中script标签的src为:

https://js.arcgis.com/4.14/

替换为:

http://localhost/arcgis_js_api/library/4.14/dojo/dojo.js

实现代码如下:

import os
from bs4 import BeautifulSoup

#V4.14

#寻找到要改的文件的路径
rootpath='/sdk/latest/sample-code'
files=os.listdir(rootpath)  #文件夹下所有目录的列表
for f in files:
    indexpath=os.path.join(rootpath,f,'live','index.html')
    if os.path.isfile(indexpath):
        #修改内容
        print('start:'+indexpath)
        with open(indexpath,"r",encoding="utf-8") as f:
            bsp=BeautifulSoup(f.read(), 'lxml')
            linklist=bsp.find_all('link')
            scrilist=bsp.find_all('script')
        for link in linklist:
            if link.get('href'):
                if link['href'].find('https://js.arcgis.com/')!=-1:
                    link['href']=link['href'].replace('https://js.arcgis.com/','http://localhost/arcgis_js_api/library/')
                else:
                    continue
            else:
                continue
        for srci in scrilist:
            if srci.get('src'):
                if srci['src']=='https://js.arcgis.com/4.14/':
                    srci['src']='http://localhost/arcgis_js_api/library/4.14/dojo/dojo.js'
                else:
                    continue
            else:
                continue
        with open(indexpath, 'w',encoding="utf-8") as fnew:
            fnew.write(bsp.prettify())
    else:
        continue

以上还漏掉了一个,即:

..\arcgis_js_v414_sdk\arcgis_js_api\sdk\latest\sample-code\sandbox\index.html

这个文件根据上方要求手动更改。
之后将sdk文件夹里的全部内容拷贝至IIS服务器中。
在这里插入图片描述

4.结束语

根据sdk中index.html的文件路径。我电脑中的路径是:

C:\inetpub\wwwroot\arcgis_js_sdk\4.14\sdk\index.html

在浏览器中输入:

http://localhost/arcgis_js_sdk/4.14/sdk/index.html

即可打开引导页:
在这里插入图片描述
查看事例:
在这里插入图片描述
sandbox:
在这里插入图片描述
在代码区可以看到link标签的href和script标签的src属性已经变为本地。

不同的版本的修改是由差别的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值