使用负载均衡解决天地图缩放时切片丢失等418、404错误

贴个群号

WebGIS学习交流群461555818,欢迎大家。

原理

在这里插入图片描述
一般我们调用的天地图都是这样的链接,但是根据官网上这句话其实可以看到,那个t2其实完全可以改成t1、t0、甚至t7.
调用的时候随机调用一个就可以,但是我们如果真的只调用一个的话,往往会出现丢失切片,尤其是在缩放的时候,直接白了一片,还有418、404等各种问题。究极原因就是因为一个域名的访问太频繁了,到之后他会出现这种问题。
那么这个时候我们就可以使用一个随机数,从0-7的,放在这个t的后面,让他每次调用的时候都随机调用一个地址,结果是一样的,但是域名访问的压力一下子就变成了之前的1/8.基本就不会出现这种问题了。

解决示例

const servers = [...Array(8).keys()];
const rand = (min = 0, max = 1) => (
  Math.round(Math.random() * (max - min) + min)
)
const serversProxy = new Proxy(servers, {
    get(target, prop){
        if (prop === 'server') {
            return target[rand(1, target.length - 1)]
        }
        return target[prop]
    }
})

//下面的url就可以换成
const tianditu = 'http://t'+serversProxy.server+'.tianditu.gov.cn/vec_c/wmts?tk=您的密钥'
### 天地图错误418解决方案 当遇到天地图返回错误418的情况,这通常意味着服务器拒绝了客户端的请求,并且该状态码有被用于表示一种特殊的拒绝形式——例如,“我是茶壶(I'm a teapot)”这种幽默的状态码。对于实际应用中的解决方法可以考虑以下几个方面: #### 修改HTTP请求头 通过调整发送给天地图API的HTTP请求头部信息可能有助于解决问题。之前有案例表明,在向天地图发出请求加入特定的请求头能够绕过某些限制[^2]。虽然这些具体的头部字段(如`User-Agent`, `HWWAFSESID`)可能是针对特定场景下的配置,但是尝试设置合理的`User-Agent`字符串以及任何其他必要的自定义头部可能会有所帮助。 #### 检查API调用参数 确保所有的必填参数都已正确提供,并遵循官方文档中规定的格式和范围。不正确的参数可能导致各种异常响应,包括但不限于418这样的非标准错误码。 #### 验证账户权限与配额 确认当前使用的API Key具有足够的访问权限并且未超出每日或每月的数据传输限额。如果接近或超过了设定的服务级别协议(SLA),则有可能触发类似的保护机制从而导致此类问题的发生。 #### 联系技术支持团队 假如上述措施均未能有效改善状况,则建议直接联系天地图的技术支持部门寻求进一步的帮助和支持。他们可以根据具体情况给出更专业的指导并协助排查潜在的问题根源。 ```python import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', } response = requests.get('https://api.tianditu.gov.cn/', headers=headers) if response.status_code == 418: print("Error 418 encountered, please check the request parameters and try again.") else: data = response.json() print(data) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值