You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求将OpenStreetMap地理编码Python脚本改写为Stata代码

将Python地理编码脚本转换为Stata代码

以下是对应你提供的Python脚本的Stata实现,基于OpenStreetMap Nominatim API完成地理编码:

* 假设你的数据已加载,包含变量Locality
* 初始化纬度和经度变量,默认值为-1
gen lat = -1
gen lon = -1

* 循环处理每个观测
forvalues i = 1/`=_N' {
    * 获取当前地点名称并进行URL编码
    local locality = urlencode(Locality[`i'])
    
    * 构造Nominatim API请求URL
    local url "https://nominatim.openstreetmap.org/search/?q=`locality'&format=json&limit=1"
    
    * 发送GET请求并保存响应到临时文件
    tempfile response
    copy "`url'" "`response'", text replace
    
    * 读取并解析JSON响应
    jsonread using "`response'", table
    if `r(n_obs)' > 0 {
        * 提取第一个结果的纬度和经度
        replace lat = real(jsonval[1, "lat"]) in `i'
        replace lon = real(jsonval[1, "lon"]) in `i'
    }
    
    * 遵守Nominatim API使用规则,添加1秒延迟避免请求过于频繁
    sleep 1000
}

说明

  • 脚本会为每个Locality生成对应的lat(纬度)和lon(经度)变量,无匹配结果时保持默认值-1
  • 使用urlencode函数对地点名称进行URL编码,避免特殊字符导致请求失败
  • 添加了1秒延迟(sleep 1000),符合Nominatim API的使用限制(避免短时间内大量请求被封禁)
  • 若你的Stata版本不支持jsonread,需先安装jsonio包(执行ssc install jsonio)

内容的提问来源于stack exchange,提问作者Tomikuz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 10:59:58