我列出了德黑兰市的一些地区,这些地区以波斯文的形式保存在CSV文件中。我的第一个目标是找到这些区域lat-lon。为了正确加载它们,我应该将系统的语言环境设置为“波斯语”
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
我怎样才能找到这些区域的lat-lon?
总结一下,当系统区域设置是波斯语时,我收到了NA,当我将语言环境返回到英语时,它可以正常工作。
答案 0 :(得分:3)
我已经建立了一个全球性的地理编码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