对于美国,admin1代码对应于州的缩写,这使得进行城市、州的查找变得非常方便。
但是,对于像加拿大这样的国家/地区,admin1 代码是一个数字(例如,阿尔伯塔省为 01),无法再进行城市、州查找。我查看了加拿大的邮政编码文件,但它没有将邮政编码与该省的数字(我认为是 FIPS)代码相对应。因此,即使邮政编码文件显示艾伯塔省的 AB,它也不会显示同一记录的 01,因此无法关联这些记录。
雪上加霜的是,在邮政编码文件中,数据集实际上在 admin1 代码字段中列出了 AB,即使在另一个文件中输入为 01。很烦人。
我想知道是否有任何数据文件将一个国家/地区 admin1 记录的数字 FIPS 代码链接到其更易于理解的缩写。
我对基本问题表示歉意,我刚刚开始使用 Geonames。
Ruby geokit gem 包含以下使用 Geonames 的说明:
# To use this service either free or premium, you must register a key.
# See http://www.geonames.org
Geokit::Geocoders::GeonamesGeocoder.key = 'KEY'
Run Code Online (Sandbox Code Playgroud)
我已经在 Geonames 网站上注册,但我不知道如何为自己生成 API 密钥。我浏览了整个 geonames 网站,但找不到似乎可以执行此操作的页面。
无论如何,这一定是可能的。谁可以给我解释一下这个?
我一直在为北美和西欧/中欧的路线距离和旅行时间使用商业解决方案.我正在考虑将项目扩展到其他国家 - 也许是整个世界.各个商业提供商的预算和区域覆盖范围非常有限,可能使本地托管的OpenStreetMap成为唯一可行的选择.在有人建议在线解决方案之前,我的应用程序需要大量的密集路由计算 - 如果使用Web服务执行,这将花费很多或非常不礼貌(并且可能被禁止).计算结果将放回公共领域,因此重新编写OpenStreetMaps不是问题.
我的问题是如何评估OpenStreetMap数据库中各个国家/地区的路由数据覆盖率?这样的评估可以确定项目是否可行,以及适当的处理顺序(即,首先覆盖最佳的国家).
高端商业数据提供商通常可以提供统计描述,以及调查覆盖范围的区域描述.OpenStreetMap更加零散 - 一个区域通常包括一些道路,但不是所有道路.几米甚至10-20米的个别位置误差对我的应用来说不是问题(我正在看城市距离),但路线图连通性是.IE浏览器.道路矢量必须在交叉点逻辑上正确地相遇.
有没有人试图创建描述OpenStreetMap数据库数据覆盖范围的统计数据?
如果没有,你会怎么做?
我能想到的最好的方法是对地方(例如城市)进行随机抽样,然后尝试计算路线.必须假设主要道路将倾向于在次要道路之前添加.因此,两个遥远城市之间的路线将使用逻辑主要道路,而不是较小的道路(通常较长/较慢),因为主要道路缺失.
另一个问题是,实际上不可能在许多城镇之间开车.这通常是由于岛屿的存在(可以使用渡轮),但通常没有地面路线(例如努纳武特的定居点).那么,在(比方说)汤加和阿富汗之间进行比较时,如何使用这些统计数据.阿富汗的数据覆盖率可能非常低.汤加可能更好,但定居点遍布群岛.
关于我的申请的一些细节:所有起点和终点都是城镇和城市,其位置取自Geonames数据库.通常情况下,我正在查看一个国家中人口至少为1000的1000个最大城市.目前,路线一式两份计算为最快路线和最短路线.合理的道路速度根据广泛的道路类别而变化.估计的行程时间与道路距离一起计算.这些细节是对一致性的偏好 - 它们不是一成不变的.
我一直在使用 Google Geocoding 进行编码,直到我发现 Geocoding API 只能与 Google 地图结合使用。这很不方便,因为我不需要显示地图。所以我改用 Geonames,这太棒了!
我获取地址的纬度和经度并将其添加到我的数据库中。
下面的代码是用于文本输入的 Jquery,用户在其中添加他们的城市/城镇,并会出现自动完成,假定他们正在输入的城市。它效果很好,但我还想在 2 个隐藏表单字段中添加其城市的纬度和经度以发送到数据库。
如何从 Geonames 检索这些坐标?
$(function() {
function log( message ) {
$( "<div/>" ).text( message ).prependTo( "#log" );
$( "#log" ).attr( "scrollTop", 0 );
}
$( "#city" ).autocomplete({
source: function( request, response ) {
$.ajax({
url: "http://ws.geonames.org/searchJSON",
dataType: "jsonp",
data: {
featureClass: "P",
style: "full",
maxRows: 12,
name_startsWith: request.term
},
success: function( data ) {
response( $.map( data.geonames, function( item ) {
return {
label: item.name …
Run Code Online (Sandbox Code Playgroud) 考虑到距基地城市(地质)100公里的半径,我需要找到附近的城市.
我的脚本是在python中.是否有任何API可以找到它?
谢谢
我正在尝试使用geonames数据填充select2元素.我定义了一个formatSelection方法,但是当选择一个项目时它不会触发.
这是HTML元素:
<input id="location" size="30" type="text">?
Run Code Online (Sandbox Code Playgroud)
使用格式函数选择2绑定:
function locationFormatResult(location) {
var markup = "<table class='location-result'><tr>";
if (location.countryCode !== undefined) {
markup += "<td class='flag-image'><img src='http://www.geonames.org/flags/x/" + location.countryCode.toLowerCase() + ".gif' /></td>";
}
markup += "<td class='location-info'>";
markup += "<div class='location-name'>" + location.name + ", " + location.adminName1 + ", " + location.countryName + "</div>";
markup += "</td></tr></table>";
return markup;
}
function locationFormatSelection(location) {
return location.name + ", " + location.adminName1 + ", " + location.countryName;
}
$(function () {
$('#location').select2({
placeholder: …
Run Code Online (Sandbox Code Playgroud) 我从geonames下载了一个国家数据集,并使用这一行将数据集解析为列:
data = pd.read_csv("C:/Users/Documents/TR.txt", sep="\t", header = None)
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,这不能正确解析所有行。大多数行都被正确解析,大约 2K 没有被正确解析。我使用这一行能够看到它没有被正确解析:
data.to_csv("C:/Users/Documents/output.csv")
Run Code Online (Sandbox Code Playgroud)
然后我在excel中打开output.csv,看到有些行没有被解析。但是,当我在 excel 上打开原始 TR.txt 数据集并使用制表符分隔符时,所有行都正确显示为已解析。所以我在我的 python 代码中做错了什么,但我不知道是什么。我输出的数据集错了吗??谢谢
抱歉,如果这是重复的,但我到处都查过了,似乎找不到任何可以解决我在 R 中的特定问题的内容。我有一个包含城市名称的列:
cities <-data.frame(c("Sydney", "Dusseldorf", "LidCombe", "Portland"))
colnames(cities)[1]<-"CityName"
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想附加一个列,其中包含每个城市或时区的纬度/经度。我尝试过在 R 中使用“ggmap”包,但我的请求超出了他们每天允许的最大请求数。我找到了“geonames”包,可以将纬度/经度转换为时区,所以如果我得到城市的纬度/经度,我应该能够从那里获取它。
编辑以解决潜在的重复问题:我想在不使用 ggmap 包的情况下执行此操作,因为我有太多行,并且它们每天有最大请求数。
我正在尝试使用 GeoPy 和 Python 来获取某个位置的纬度和经度。我尝试实现这个问题,如下:
from geopy.geocoders import GeoNames
gn = GeoNames(username='[my username]')
gn.geocode("Cleveland, OH 44106")
Run Code Online (Sandbox Code Playgroud)
但我收到这个错误:
geopy.exc.GeocoderAuthenticationFailure:HTTP 错误 401:未经授权
我在http://www.geonames.org上注册,我也尝试查看这个问题,但我得到同样的错误,除非必须在http://www.geonames.orguser_agent
的某个地方指定?
我究竟做错了什么?
我正在向Geonames Search api发送 ajax 请求。它在 http 协议上运行良好。
但是当我切换到 https(我自己的服务器和 api 请求)时,我的请求被浏览器阻止:Geonames https 证书似乎无效。
我错过了什么?
geonames ×10
javascript ×2
python ×2
ajax ×1
api ×1
city ×1
dictionary ×1
export ×1
geocode ×1
geokit ×1
geolocation ×1
geopy ×1
geospatial ×1
gis ×1
https ×1
import ×1
jquery ×1
jsonp ×1
pandas ×1
php ×1
python-3.x ×1
r ×1
routing ×1