我正在尝试获得纬度和经度坐标的时区,但我遇到了一些问题错误可能是非常基本的
我在数据库中有一个表,大约有600行.每行包含一个lat长坐标,用于世界某处我想将这些坐标输入函数然后检索时区.目的是将这600个地点中每个地点都有本地时间戳的事件转换为UTC时间
当我尝试运行代码时,我收到错误geonames is not defined
.我申请了一个地理名称帐户.
我想我刚刚将函数文件保存在错误的目录或简单的东西中.谁能帮忙
#-------------------------------------------------------------------------------
# Converts latitude longitude into a time zone
# REF: https://gist.github.com/pamelafox/2288222
# REF: http://blog.pamelafox.org/2012/04/converting-addresses-to-timezones-in.html
#-------------------------------------------------------------------------------
geonames_client = geonames.GeonamesClient('Username_alpha')
geonames_result = geonames_client.find_timezone({'lat': 48.871236, 'lng': 2.77928})
user.timezone = geonames_result['timezoneId']
Run Code Online (Sandbox Code Playgroud) 我正在使用以下代码php来获取时区:
$url = 'http://api.geonames.org/timezone?lat=' . $latitude . '&lng=' . $longitude . '&username=demo';
$xml = simplexml_load_file($url);
foreach($xml->children() as $timezone)
{
echo "TimezoneId: ".$timezone->timezoneId." ";
echo "DstOffset : ".$timezone->dstOffset." ";
echo "GmtOffset : ".$timezone->gmtOffset." ";
}
Run Code Online (Sandbox Code Playgroud)
它工作但是对于Antartica的纬度和经度,例如它给出错误状态消息:
<status message="no timezone information found for lat/lng" value="15"/>
Run Code Online (Sandbox Code Playgroud)
如何回应这条消息?
我试试这个:
if ($xml->status) {
echo "error: ".$timezone->status['message']. "";
}
Run Code Online (Sandbox Code Playgroud)
但是不行
问题 - 人们根据他们的兴趣在各个地方发帖,而其他人则在更大的区域搜索帖子.例如 - 用户A在悉尼郊区邦迪海滩下的帖子.用户B在悉尼搜索帖子.
期望的结果 - 自邦迪位于悉尼境内后,用户B可以看到用户A的帖子.
解:
在google places API中查找,它告诉您郊区X是Y市,依此类推.在我的例子中 - 我想获得有关邦迪的信息,告诉我它属于哪个城市.
这是我对Bodni Beach的简单查询(我使用auto complete因为它是一个自动完成下拉列表):https://maps.googleapis.com/maps/api/place/autocomplete/json?seamor = true&input = bondi%20beach&key = myKey
{
"predictions" : [
{
"description" : "Bondi Beach, New South Wales, Australia",
"id" : "ffa6ad484d2fec594378fb2a24e8328a2bc4459f",
"matched_substrings" : [
{
"length" : 11,
"offset" : 0
}
],
"place_id" : "ChIJWTi8xgGyEmsRgK0yFmh9AQU",
"reference" : "CkQ_AAAAMnfwZeK5SV6uPBnPr34JVdHudAGxMtna--JWHtwe7t81gLBGgsB6mRgmj375m7KReRhpMq1Y6AYxCrC2MnYn8hIQQfASvoG5-7LwRcVR7ELjNxoURh-iBs6M2dmrU8wLKIPcFFgymn4",
"terms" : [
{
"offset" : 0,
"value" : "Bondi Beach"
},
{
"offset" : 13,
"value" : "New South Wales" …
Run Code Online (Sandbox Code Playgroud) 有人如何将geonames.org数据导入我的数据库?我试图导入的是http://download.geonames.org/export/dump/DO.zip,我的数据库是MySQL数据库.
我正在构建一个同时使用GeoNames和Google Places API的应用程序.问题是,当我在两个服务的特定位置(比如纬度:47.16,lng:27.56)附近进行搜索时,我不知道如何删除Google地方搜索结果中出现的实体以及GeoNames的(findNearby).我在考虑使用位置(纬度和经度),但它不够准确.此外,名称差异很大,所以这也不起作用.我想到的另一个想法是使用类型(GeoNames的特征代码和Google Places的类型),但是有很多类型,显然我不能手动进行交叉引用.有任何想法吗?
注意:我想同时使用它们,因为这是一个学校项目,并且要求指定使用多个信息源.
谢谢.
我打算使用geonames API,但实际上在本地使用geonames并且不使用他们的web API似乎更合理.所以我的问题是,有没有人知道如何在本地与地理名称数据接口?
我是否需要手动将其导入数据库,然后像普通数据库一样引用它?
是否可以使用C#库或有关地理坐标的更新数据库来获取纬度和经度的国家/地区名称而不使用像Google Maps的JavaScript API这样的API?
哪个是检索给定国家/地区所有城市的最佳 api?我尝试从 geonames 下载。但似乎数据不可靠。` 是否可以在立交桥 api 中查询城市以及州和国家/地区?
您能建议一种更好的方式来下载城市及其积分吗?
对地理名称数据进行位置消歧的最佳方法是什么?
有一些用于地理名称搜索的评分算法,但他们没有开源它,我不确定它们是非常复杂的.(即soma, ca
它返回Soma lake in Canada
哪些甚至没有维基百科文章,而不是非常受欢迎Soma Neirbohood in san francisco
)
我在谷歌学者中也发现了一些作品,但它们看起来非常浅薄,与我的启发式相似,比如得分(log(population) + 1000*hasWikipedia(article)+ isCity100+isCapital(10)
).
我在旅行文章中的域名,所以我的评分功能应该提供最可能的旅游景点(城市,名胜古迹(迪士尼乐园,收藏馆,大本钟)).
你知道这个领域的任何重要文章,还是谷歌地图,雅虎,冰甚至地名的生产算法?
对于美国,admin1代码对应于州的缩写,这使得进行城市、州的查找变得非常方便。
但是,对于像加拿大这样的国家/地区,admin1 代码是一个数字(例如,阿尔伯塔省为 01),无法再进行城市、州查找。我查看了加拿大的邮政编码文件,但它没有将邮政编码与该省的数字(我认为是 FIPS)代码相对应。因此,即使邮政编码文件显示艾伯塔省的 AB,它也不会显示同一记录的 01,因此无法关联这些记录。
雪上加霜的是,在邮政编码文件中,数据集实际上在 admin1 代码字段中列出了 AB,即使在另一个文件中输入为 01。很烦人。
我想知道是否有任何数据文件将一个国家/地区 admin1 记录的数字 FIPS 代码链接到其更易于理解的缩写。
geonames ×10
geolocation ×3
python ×2
timezone ×2
algorithm ×1
c# ×1
echo ×1
geocoding ×1
google-maps ×1
hierarchy ×1
json ×1
mysql ×1
overpass-api ×1
php ×1
search ×1