我有一个地址数据库,我尝试使用google geocoding和yahoo API查找纬度和经度。是否还有其他流行的 API 或程序。我正在使用ubuntu平台。
5 回答
我知道至少还有一个其他地理编码系统OpenStreetMap。我发现这些 API 的唯一主要区别是每个 API 的详细程度。OpenStreetMap 的数据少得多,但更容易与自定义数据集成。另外,我认为google制作的地图是三者中最漂亮的。
我通常通过 HTTP 使用 Google Maps 地理编码服务,它会根据需要返回 Json 或 XML。在此处浏览以获取有关此的更多信息。
另一个选择可能是GeoNames.org。它还提供了一些有趣的服务和客户端库。
对于您提到的这两种情况,如果您在查询 API 时对它们进行大量处理或未向用户显示地图,则您违反了 TOS。
满足您需求的更好解决方案是LiveAddress。我实际上在SmartyStreets工作,我们自己开发它 - 没有许可证限制,例如会阻止您运行数百万个地址。除了返回坐标外,LiveAddress 还会为您验证地址的存在并对其进行标准化。这有助于删除重复项,并具有许多业务优势。
如果您还有任何与地址相关的问题,我很乐意亲自提供帮助。
您可能还会发现geocoder.us很有用。
使用 YQL,您可以获得可能的预测列表第一步:反向地理编码
SELECT woeid
FROM geo.places
WHERE text="##LATITUDE##, ##LONGITUDE##"
然后应用过滤器按 placeType 对结果进行排序。这有助于您按地图级别的准确性(城镇、城市、邮政编码、地区......)订购预测
SELECT woeid
FROM geo.places
WHERE text="##LATITUDE##, ##LONGITUDE##" |
SORT(field="placeTypeName.code")
现在使用 simile join 来获取最后一个查询产生的 woeid 的所有预测并过滤空结果
SELECT channel
FROM weather.woeid
WHERE w in (
SELECT woeid
FROM geo.places
WHERE text="##LATITUDE##, ##LONGITUDE##" |
SORT(field="placeTypeName.code"))
AND channel.