【问题标题】:persian arguments of geocode doesn't work in persian system locale地理编码的波斯参数在波斯系统语言环境中不起作用
【发布时间】:2018-05-06 09:18:16
【问题描述】:

我有一份德黑兰市中一些地区的列表,这些地区以波斯语保存在 CSV 文件中。我的第一个目标是找到这些地区。为了正确加载它们,我应该将系统的语言环境设置为“波斯语”

Sys.setlocale(locale = "persian")

但是,我发现当我尝试将它们用作 geocode() 等来自 ggmap 库的函数中的参数时,它不起作用!

>geocode(c[1])
Information from URL : http://maps.googleapis.com/maps/api/geocode/json? 
address=%C2%CC%E6%CF%C7%E4%ED%E5&sensor=false
lon lat
1  NA  NA
Warning messages:
1: In readLines(connect, warn = FALSE) :
  cannot open URL 'http://maps.googleapis.com/maps/api/geocode/json? 
address=%C2%CC%E6%CF%C7%E4%ED%E5&sensor=false': HTTP status was '400 Bad 
Request'
2: In geocode(c[1]) :   geocoding failed for "آجودانيه".
  if accompanied by 500 Internal Server Error with using dsk, try google.

这里c 是我的波斯地区向量。

另一方面,当我将系统区域设置更改为英语并在 geocode() 中以波斯语键入地区时,它可以正常工作。

>geocode("آجودانیه")
Information from URL : http://maps.googleapis.com/maps/api/geocode/json?address=%D8%A2%D8%AC%D9%88%D8%AF%D8%A7%D9%86%DB%8C%D9%87&sensor=false


      lon      lat
1 51.4861 35.80742

我怎样才能找到这些经纬地区?

总而言之,当系统语言环境为波斯语时,我会收到 NA,当我将语言环境返回为英语时,它可以正常工作。

【问题讨论】:

  • @SymbolixAU:我改了,但还是不行。正如我所写,当系统区域设置为波斯语时,我收到 NA,当我将区域设置返回为英语时,它可以正常工作
  • @SymbolixAU:是的,我的意思是我在 R 中尝试过,但现在我已经编辑了帖子。感谢您的关注。

标签: r locale geocode setlocale


【解决方案1】:

我已经构建了一个全球地理编码 api,我很高兴地注意到它在你的情况下都可以工作:

https://geocode.xyz/%D8%A2%D8%AC%D9%88%D8%AF%D8%A7%D9%86%D9%8A%D9%87

- Iran x,y z: 35.79860,51.47870  ??
- Ajwdnyh, IR Iran » Confidence Score: 0.90

http://geocode.xyz/%D8%A2%D8%AC%D9%88%D8%AF%D8%A7%D9%86%DB%8C%D9%87

- ??
- آجودانیه, IR Iran » Confidence Score: 0.90

或者,如果您更喜欢 XML 输出:http://geocode.xyz/%D8%A2%D8%AC%D9%88%D8%AF%D8%A7%D9%86%DB%8C%D9%87?geoit=xml

<geodata>
<latt>35.79860</latt>
<longt>51.47870</longt>
<elevation/>
<standard>
<addresst/>
<postal/>
<prov>IR</prov>
<city>ajwdnyh</city>
<countryname>Iran</countryname>
<confidence>0.90</confidence>
</standard>
<alt></alt>
</geodata>

.. 和 json :http://geocode.xyz/%D8%A2%D8%AC%D9%88%D8%AF%D8%A7%D9%86%DB%8C%D9%87?geoit=json

{   
  "standard" : { 
    "addresst" : {},
    "city" : "ajwdnyh",
    "prov" : "IR",
    "countryname" : "Iran",
    "postal" : {},
     "confidence" : "0.90"   
  },   
  "longt" : "51.47870",   
  "alt" : {},   
  "elevation" : {},   
  "latt" : "35.79860"
}

PS。您也可以在此处上传您的 CSV 文件进行批量地理编码:https://geocode.xyz/batch

【讨论】:

  • 非常感谢。最后我会使用它。但是,为了重现性,我应该编写一个代码,从我的 csv 文件中获取地区名称并找到它们的纬度。由于系统语言环境矛盾,这无法完成!!!
  • 如果您的终端中有 bash,您可以使用以下 bash 脚本:#!/bin/bash while IFS='' read -r line || [[ -n "$line" ]];回声 $line,curl -X POST -d locate="$line" -d geoit="csv" https://geocode.xyz; done output.csv
  • 太棒了!虽然我不擅长 bash 脚本,但我将从这个开始。非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多