linkeddatacenter / geocodit
geocodit的RESTful API
Requires
- php: >=5.5.0
- botk/context: ~4.1
- botk/core: ~5.1
- botk/rdf: ~4.1
- easyrdf/easyrdf: ~0.9
- ml/json-ld: *
- willdurand/geocoder: *
This package is not auto-updated.
Last update: 2022-02-01 12:55:58 UTC
README
**警告:此项目现在正在进行重构**
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)