janpieterk / gemeentekaart-rest
janpieterk/gemeentekaart-core 的 REST 接口
Requires
- php: >=5.3.10
- ext-curl: *
- ext-imagick: *
- ext-json: *
- janpieterk/gemeentekaart-core: 1.1.0
Requires (Dev)
- phpunit/phpunit: >=4 <8
- squizlabs/php_codesniffer: >=2.9
This package is auto-updated.
Last update: 2024-09-29 04:43:30 UTC
README
此文档也提供荷兰语版本:Nederlands.
这是对 janpieterk/gemeentekaart-core 的 REST 服务
如何安装
- 确保您有一个运行支持 PHP 的 Web 服务器
使用 Composer 从 github 安装
$ cd <YOUR WEBROOT> $ composer create-project janpieterk/gemeentekaart-rest --repository='{"type":"vcs","url":"https://github.com/janpieterk/gemeentekaart-rest"}'
使用 Composer 从 packagist.org 安装
$ cd <YOUR WEBROOT> $ composer create-project janpieterk/gemeentekaart-rest
使用 git 和 composer 安装
$ cd <YOUR WEBROOT> $ git clone https://github.com/janpieterk/gemeentekaart-rest.git $ cd gemeentekaart-rest $ composer install
- 现在访问
http://<YOUR WEBHOST>/gemeentekaart-rest
以查看文档和访问 REST 服务。
运行 gemeentekaart-rest 的 PHPUnit 测试
- 编辑文件 testconfig.local.inc.php 并将常量
KAART_SERVER_HOSTNAME
更改为运行 gemeentekaaart-rest REST 服务的 Web 服务器的主机名。然后运行 shell 脚本test/run_tests.sh
。
摘要
此服务可用于创建荷兰(默认:2007年的边界,443个市镇)、佛兰德(308个市镇)、荷兰和佛兰德结合(荷兰和佛兰德市镇)、荷兰的40个 COROP 区域(见 COROP)、荷兰的12个省份或 Daan/Blok(1969)的28个方言区域的 choropleth 地图。区域可以分配颜色,通常用于表示某种现象的相对频率。目前也有一些预定义的组合,例如:具有 COROP 区域的市镇、具有省份的市镇、具有方言区域的市镇。
1.1 版本新增
从版本 1.1 开始,历史市镇和省份边界来自 Dr. O.W.A. Boonstra 的数据集 NLGis shapefiles,已纳入项目中。1812-1997 年的边界可用,可以通过在请求中添加 year
参数来请求。请注意,没有 year
参数将导致版本 1.0 的 2007 年地图。NLGis 数据集的地图使用 Amsterdam codes 作为市镇的代码(见 Van der Meer & Boonstra 2011),而版本 1.0 的地图使用 CBS 代码。
入门
可以通过 GET 请求或 POST 请求(内容类型 application/json
)请求地图。如果参数仅是键值对,它们可以放在请求字符串中(GET 请求)或请求体中的 JSON 文档中(POST 请求)。如果有结构化参数,建议使用带有 JSON 请求体的 POST 请求。请求字符串参数可以与 POST 请求中的 JSON 请求体结合使用。如果请求字符串和 JSON 文档中都有相同的参数,则请求字符串中的参数优先于请求体中的参数。
GET 请求
市镇地图,默认大小和格式:http://<RESTURL>/?type=municipalities
COROP 区域地图,默认大小和格式:http://<RESTURL>/?type=corop
市镇和 COROP 区域组合地图:http://<RESTURL>/?type=municipalities&additionaldata=corop
JSON POST 请求
将以下文档(使用CBS代码)POST到REST服务
{ "type": "gemeentes", "formet": "png", "width": 500, "data": { "g_0432": "#FFE680", "g_0420": "#FFDD55", "g_0448": "#FFD42A", "g_0476": "#FFCC00", "g_0373": "#D4AA00", "g_0400": "#AA8800", "g_0366": "#806600", "g_0463": "#FFCC00", "g_0462": "#FFEEAA" } }
返回以下内容: 地图
将以下文档(使用阿姆斯特丹代码)POST到REST服务
{ "data": { "a_11150": "#990000", "a_10345": "#990000", "a_11434": "#990000", "a_10722": "#990000" }, "year": 1821, "type": "gemeentes", "format": "svg", "interactive": true }
返回以下内容: 地图
使用POST请求上传文件
内容类型应为 multipart/form-data
。
将数据输入地图服务的另一种方法是上传一个包含区域代码和颜色的逗号分隔文件。例如,上述市政地图也可以通过上传以下内容的文件到 http://<RESTURL>/?type=gemeentes&format=png&width=500
获取
"g_0432","#FFE680"
"g_0420","#FFDD55"
"g_0448","#FFD42A"
"g_0476","#FFCC00"
"g_0373","#D4AA00"
"g_0400","#AA8800"
"g_0366","#806600"
"g_0463","#FFCC00"
"g_0462","#FFEEAA"
可能的参数完整列表
additionaldata
字符串
用于向地图添加额外层数据。目前只有以下组合是可能的:type=municipalities&additionaldata=corop
、type=municipalities&additionaldata=provinces
和 type=municipalities&additionaldata=dialectareas
。
base64
布尔值
如果此参数设置为 1
、on
、true
或 yes
,则返回地图的base64编码字符串表示。
data
数组、对象或字符串
包含区域代码以及突出显示颜色或包含轮廓、填充和边框宽度的对象的列表。在JSON文档中使用。示例:突出显示的市政列表(CBS代码)
{ "g_0432" : "#FFE680", "g_0420" : "#FFDD55", "g_0448" : "#FFD42A", "g_0476" : "#FFCC00", "g_0373" : "#D4AA00", "g_0400" : "#AA8800", "g_0366" : "#806600", "g_0463" : "#FFCC00", "g_0462" : "#FFEEAA" }
绘制不填充且轮廓为红色、宽度是默认地图线宽两倍的格罗宁根省
{"p_20" : { "fill" : "none", "outline" : "red", "strokewidth": 2} }
颜色可以是颜色名称(140种HTML颜色之一)、形式为 #RRGGBB 的十六进制表示,或形式为 AABBGGRR 的十六进制表示。'AA'(不透明度)部分只有在KML地图中才有作用。
format
字符串
svg
、png
、gif
、jpeg
、kml
或 json
。 json
返回geoJSON对象。
height
整数
地图的像素高度。通常不建议显式设置高度,更好的做法是设置宽度,让地图自行计算高度。
imagemap
布尔值
如果此参数设置为 1
、on
、true
或 yes
,则返回HTML <area>
元素列表而不是地图图像。可用于创建可点击位图地图。imagemap
仅在以下情况下返回所有区域的完整 imagemap:
- 未设置
links
或tooltips
; - 设置了
links
或tooltips
且interactive
设置为 true; link
(单数)设置且未设置linkhighlightedonly
。
在其他情况下,您将获得一个部分 imagemap,其中只包含在链接或提示中设置的区域。
interactive
布尔值
如果此参数设置为 1
、on
、true
或 yes
,则对于SVG地图,将显示区域名称的 onmouseover 和 onmouseout 事件,对于位图地图,将添加所有区域(需要使用 imagemap
)的具有标题和 alt 属性的 <area>
元素。
link
字符串
添加到所有区域链接的模板。%s
占位符将被区域代码替换。对于位图格式的地图,链接将被添加到图片的 imagemap 中,对于SVG或KML格式的地图,它们将被嵌入到XML中。示例:?type=municipalities&format=svg&link=http%3A%2F%2Fwww.example.com%2F%3Fcode%3D%25s
(链接 = http://www.example.com/?code=%s
的urlencoded形式)适用于所有区域,除非将参数 linkhighlightedonly
设置为 true。
linkhighlightedonly
布尔值
如果此参数设置为 1
、on
、true
或 yes
,则只有设置了 data
参数的高亮区域会添加与 link
参数关联的链接。
链接
对象
要添加到区域的链接列表。只能在POST的JSON文档中使用。示例
{ "g_0462" : "http://www.example.com/something/", "g_0366" : "http://www.example.com/something/else/" }
pathsfile
字符串
如果需要使用带有路径的非标准文件,可以通过此参数提供文件名。请注意,此文件必须位于服务器上的正确位置(见配置文件),并且格式正确。请参阅 gemeentekaart-core
的 coords
目录中的示例。
possibleareas
布尔值
如果此参数设置为 1
、on
、true
或 yes
,则返回一个可能区域的列表(区域代码加名称)(以JSON格式)。请注意,还应存在 type
参数。对于市镇和省,可能存在 year
参数,请参阅 possiblemunicipalities
和 possibleyears
。
possibleformats
布尔值
如果此参数设置为 1
、on
、true
或 yes
,则返回一个可能地图格式的列表(以JSON格式)。
possiblemunicipalities
布尔值
如果此参数设置为 1
、on
、true
或 yes
,则返回一个可能市镇的列表(市镇代码加名称)(以JSON格式)。这是 possibleareas=1&type=municipalities
的同义词。请注意,可以省略 type
参数。请注意,添加 year
参数会导致给定年份的阿姆斯特丹代码和市镇,而没有 year
参数将导致2007年的CBS代码(1.0版本行为)。
possibletypes
布尔值
如果此参数设置为 1
、on
、true
或 yes
,则返回一个可能地图类型的列表(以JSON格式)。
possibleyears
布尔值
如果此参数设置为 1
、on
、true
或 yes
,则返回一个可能年份的列表(以JSON格式),用于给定地图类型的 year
参数。
target
字符串
可选的目标(在 link
参数中给出)。href元素的 "target" 属性的值。
tooltips
对象
要添加到区域的工具提示(信息文本)列表。只能在POST的JSON文档中使用。示例
{ "g_0462" : "informative text 1", "g_0366" : "informative text 2" }
title
字符串
可选的地图标题,将在图片上方显示。
type
字符串
choropleth 类型之一。请参阅 possibletypes
。
width
字符串
地图的像素宽度。覆盖默认值。
year
整数
所需地图类型的年份。
参考文献
J. Daan 和 D.P. Blok(1969)。《从边缘城市到边缘地带。地图说明:方言和地名学。荷兰皇家科学院阿姆斯特丹方言委员会的贡献和公告37》阿姆斯特丹,N.V. North Holland出版公司。
Meer, Ad van der 和 Onno Boonstra(2011)。《自1812年以来的荷兰市镇名录,附:阿姆斯特丹代码》。第2版。[海牙:DANS]。[DANS数据指南,2]。[https://dans.knaw.nl/nl/over/organisatie-beleid/publicaties/DANSrepertoriumnederlandsegemeenten2011.pdf](https://dans.knaw.nl/nl/over/organisatie-beleid/publicaties/DANSrepertoriumnederlandsegemeenten2011.pdf)
致谢
- 本项目是来自Meertens Kaart模块部分代码的衍生作品。
- REST服务使用Pieter van Beek的REST服务PHP库。
- 另请参阅janpieterk/gemeentekaart-core的致谢。