该软件包已废弃,不再维护。未建议替代软件包。

geocodit的RESTful API

1.1.2 2016-03-27 09:14 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:55:58 UTC


README

Latest Version

**警告:此项目现在正在进行重构**

GeocodIT是一个使用W3C语义网最佳实践和标准管理地理编码知识库的系统。

网络上的数据集正在爆炸式增长。当然,它们仍然很分散,质量也参差不齐,但这将得到解决,这只是时间问题。有了Linked Open Data,只使用最大的数据集(例如Open Street Map和Google Maps)是没有意义的,因为最高质量的数据往往存在于最小的数据集中。这些数据位于网络的长尾中。因此,你必须使用它们,否则你会丢失很多价值。

GeocodIT公开了

  • 一个利用开放数据来丰富现有地理编码服务结果的新地理编码器(例如Google Maps、Bings Maps和OSM);
  • 一个工具,用于比较各种地理编码器的结果和性能;
  • 一个语言配置文件(本体),用于用RDF描述地理编码数据;
  • 一组网关,将3星链接数据转换为GeocodIT语言配置文件对应的5星链接数据;
  • 一个可共享的知识库描述,用于将所有必要的地理编码信息填充到图数据库中(需要LinkedData.Center摄取API)。

GeocodIT是为意大利领土设计的,但可以轻松适应其他地理区域。

有关GeocodIT项目的更多信息,请参阅这篇文章

演示

运行演示可在http://geocodit.linkeddata.center/找到。请仅将此服务器用作演示和学习资源。为了避免滥用,每个地理编码器API调用都增加了2秒的性能惩罚。

工作原理

GeocodIT使用地理编码服务(免费和私有)和开放数据来提高地理编码过程的质量。例如,它使用ISTAT开放数据为Open Street Map结果添加行政级别代码。

为什么需要它

在某些情况下,商业全球服务(如Google Maps)无法解决地址或产生不准确的结果。这通常发生在一些农村和偏远地区,在私人工业区和新建区域。这些信息有时存在于开放数据中,也可能存在于私有拥有的文件中。

GeocodIT试图使用所有这些数据源来产生准确的结果。

此外,商业服务对GeocodIT数据施加了许多限制,这限制了公司将其地理定位数据嵌入到其信息系统中。

需求

GeocodIT需要

  • LinkedData.Center账户(提供免费计划)。出于测试目的,在http://pub.linkeddata.center/demo处提供了一个有限的预填充知识库(用户名:demo 密码:demo)。注意,演示知识库是“只读”的(即您不能更改现有配置)。
  • 如果需要集成 Google Maps,请提供可选的 Google Maps API 密钥;
  • 如果需要集成 Bing Maps,请提供可选的 Bing Maps API 密钥。

GeocodIT 是一套基于 PHP 开发的网络服务,已在 Ubuntu LTS 14.04 上测试过,但没有任何东西阻止它在任何 PHP5+apache2 平台上工作(无需 MySQL!)。即使.apache2 也不是一个强烈的要求;经过一些修改(主要是对 web/.httpcaccess 文件进行修改),它应该可以与任何启用 PHP 的网络服务器一起工作。

安装

API 安装

  • 创建并登录到一个新的 Ubuntu 箱子(物理或虚拟);
  • 在 /opt/geocodit 中克隆 GeocodIT 项目: sudo cd /opt; git clone https://github.com/linkeddatacenter/geocodit.git
  • 执行安装脚本 sudo /opt/gecodit/test/_support/install.sh
  • 将 config/geocodit.ini.dist 文件复制到 geocodit.ini 中,并添加您的凭据。请确保 geocodit.it 对网络服务器(即 www-data 用户)是可读的。

重要:GeocodIT 使用您的密钥来访问付费服务,如果您将其放在公共服务器上,请考虑通过配置您的网络服务器来限制 API 访问。默认配置允许所有 API 免费访问,但每个 API 调用都会插入 2 秒的惩罚,以阻止滥用。

知识库填充

演示知识库已预先填充,请使用以下说明创建您自己的知识库

  • 将以下行添加到您的 LinkedData.Center 图形数据库实例中
    [] kees:includes <http://geocodit.linkeddata.center/kees.ttl> .
    
  • 刷新知识库(例如,创建一个新的摄取活动)。知识库中包含的大多数资源都是相当静态的(领土并不经常变化)。

使用方法

GeocodIT 可以以不同的方式使用

  • 使用地理编码器 API,就像您应该使用 Google Maps API 或 Openstreet map 一样。GeocodIT 地理编码器是一个支持所有主要 GeocodIT 格式的 RESTful 网络服务。 GeocodIT 能够与您的信任度兼容所有地理编码算法,允许您选择您首选的信任配置文件(例如,开放数据、谷歌、微软等);
  • 使用 GeocodIT 基准测试来了解不同的地理编码器如何表现;
  • 查询知识库并将地理编码原始数据导入到您的系统中;
  • 使用提供的网关将 3 星级开放数据转换为 5 星级全标记的 Linked Open Data;
  • 将其作为 composer 库来构建您自己的服务;

使用数据接口

数据摄取后,知识库数据接口将在 /queries(例如 https://hub1.linkeddata.center/demo/queries)处可用。只需将您的浏览器(或您的 HTTP 客户端)指向所需的表(例如 https://hub1.linkeddata.center/demo/table/istat:comuni),并使用基本 HTTP 身份验证提供您的 LinkedData.Center 凭据。数据接口支持内容协商。当然,您可以完全访问符合 SPARQL 1.1 规范 和协议的 SPARQL 端点(例如 https://hub1.linkeddata.center/demo/query)。

使用地理编码器 API

地理编码器端点将在 /api/geocode(例如 http://geocodit.linkeddata.center/api/geocode)处可用

geocode?q=address[&trust=trust_profile]

它使用地理编码优化返回地址地理定位。

可用的信任配置文件

  • opendata (默认): 搜索知识库,如果找不到地址,则回退到开放街图,并使用istat代码丰富结果
  • ms: 首先尝试必应地图,如果没有结果再尝试搜索KB;
  • google: 首先尝试谷歌地图,如果没有结果再尝试搜索KB;
  • osm: 首先尝试开放街图,如果没有结果再尝试搜索KB;
  • all: 首先尝试谷歌地图,然后必应地图,然后开放街图,如果仍然没有结果再尝试搜索KB。

除此之外,您还可以信任来自单个提供商的结果

  • geocodit:仅使用KB数据(免费);
  • geocoditOSM:使用KB数据丰富后的开放街图(免费,每秒查询不超过一次);
  • google_map:谷歌地图(需要密钥,数据使用受许可限制);
  • bin_map:必应地图(需要密钥,数据使用受许可限制);
  • openstreetmap:开放街图(免费,每秒查询不超过一次)。

使用基准API

基准端点将在 /api/benchark 上可用(例如 http://geocodit.linkeddata.center/api/benchark

benchmark?q=address

它比较了所有支持的地理编码器的结果。

使用网关

GeocodIT网关将在 /gw/{网关名称} 上可用(例如 http://geocodit.linkeddata.center/gw/)。

所有网关都流出一个三颗星资源作为RDF turtle资源。数据实时转换[待定:并缓存一天]。

将geocodit用作库

将以下依赖项添加到您的项目根目录中的 composer.json 文件中

    {
        "require": {
            "linkeddatacenter/geocodit": "dev-master"
        }
    }

GeocodIT是Geocoder的伴侣。

它公开了两个额外的提供商:geocodit和geocoditOSM,第一个是一个独立提供商,它使用知识库数据进行地名解析,第二个是开放街图提供商的扩展,它通过一些开源数据(主要是istat)丰富地理编码器算法。

首先选择适合您需求的提供商。假设您正在寻找的是geocoditOSM,那么让我们看看如何使用它。在下面的代码片段中,curl被选为HTTP层,但这是由您决定的,因为每个基于HTTP的提供商都实现了PSR-7

$curl     = new \Ivory\HttpAdapter\CurlHttpAdapter();
$geocoder = new \Geocodit\Provider\GeocoditOSM($curl,  'demo', 'demo');

$geocoder->geocode(...);

扩展geocodit

您只需要找到新的数据源,并设计一个适当的摄取策略以添加到知识库配置文件中。在某些情况下,您将不得不编写一个网关来转换数据为RDF。以现有网关作为起点。有关开发环境的说明,请参阅[CONTRIBUTING.md]文件。

许可和作者

作者:E.Fagnoni - 版权:© 2016 http://LinkedData.Center/ The MIT License (MIT)