mirror of
https://github.com/klokantech/tileserver-php.git
synced 2025-08-05 14:18:13 +02:00
Remove old aray syntax
This commit is contained in:
42
README.md
42
README.md
@@ -41,7 +41,7 @@ Requirements:
|
||||
-------------
|
||||
|
||||
- Apache webserver (with mod_rewrite / .htaccess supported)
|
||||
- PHP 5.2+ with SQLite module (php5-sqlite)
|
||||
- PHP 5.6+ with SQLite module (php5-sqlite)
|
||||
|
||||
(or another webserver implementing mod_rewrite rules and PHP)
|
||||
|
||||
@@ -50,7 +50,7 @@ Installation:
|
||||
|
||||
Download the project files as a [zip archive](https://github.com/klokantech/tileserver-php/archive/master.zip) or source code from GitHub and unpack it into a web-hosting of your choice.
|
||||
|
||||
If you access the web address relevant to the installation directory,
|
||||
If you access the web address relevant to the installation directory,
|
||||
the TileServer.php Server should display you a welcome message and further
|
||||
instructions.
|
||||
|
||||
@@ -70,15 +70,15 @@ Supported protocols:
|
||||
--------------------
|
||||
|
||||
- OpenGIS WMTS 1.0.0
|
||||
|
||||
|
||||
The Open Geospatial Consortium (OGC) Web Map Tile Service (WMTS)
|
||||
Both KVP and RESTful version 1.0.0:
|
||||
http://www.opengeospatial.org/standards/wmts/
|
||||
|
||||
|
||||
Target is maximal compliance to the standard.
|
||||
|
||||
|
||||
Exposed at http://[...]/wmts
|
||||
|
||||
|
||||
- OSGeo TMS 1.0.0
|
||||
|
||||
The OSGeo Tile Maps Service, but with inverted y-coordinates:
|
||||
@@ -90,7 +90,7 @@ Supported protocols:
|
||||
flipped y-axis.
|
||||
|
||||
Exposed at http://[...]/tms
|
||||
|
||||
|
||||
- TileJSON
|
||||
|
||||
Metadata about the individual maps in a ready to use form for web
|
||||
@@ -98,28 +98,28 @@ Supported protocols:
|
||||
and with support for JSONP access.
|
||||
|
||||
Exposed at http://[...]/layer.json or .jsonp
|
||||
|
||||
|
||||
- Direct access with XYZ tile requests (to existing tiles in a directory
|
||||
or to .mbtiles)
|
||||
|
||||
Compatible with Google Maps API / Bing SDK / OpenStreetMap clients.
|
||||
|
||||
|
||||
Exposed at http://[...]/layer/z/x/y.ext
|
||||
|
||||
- MapBox UTFgrid request (for existing tiles in .mbtiles with UTFgrid support). Callback is supported
|
||||
|
||||
- MapBox UTFgrid request (for existing tiles in .mbtiles with UTFgrid support). Callback is supported
|
||||
|
||||
Example https://www.mapbox.com/demo/visiblemap/
|
||||
Specification https://github.com/mapbox/utfgrid-spec
|
||||
|
||||
|
||||
Exposed at http://[...]/layer/z/x/y.grid.json
|
||||
|
||||
|
||||
- MapBox Vector Tiles (for MBTiles generated by [MapBox Studio Classic](https://www.mapbox.com/mapbox-studio-classic/) or by [OSM2VectorTiles](http://osm2vectortiles.org/) project).
|
||||
|
||||
Example http://osm2vectortiles.tileserver.com/
|
||||
TileJSON can be used in MapBox Studio Classic, MapBox SDKs/APIs, OpenLayers, etc.
|
||||
|
||||
Exposed at http://[...]/layer/z/x/y.pbf
|
||||
|
||||
|
||||
- Retina / HighDPI routing with 512 tiles
|
||||
Use @2x suffix in url for JSONs and tiles. For example http://tileserver.maptiler.com/grandcanyon@2x.json
|
||||
|
||||
@@ -132,12 +132,12 @@ If you have installed the project into a root directory of a domain, then the ad
|
||||
The supported WMTS requests includes:
|
||||
|
||||
GetCapabilities RESTful/KVP:
|
||||
|
||||
|
||||
http://[...]/1.0.0/WMTSCapabilities.xml
|
||||
http://[...]?service=wmts&request=getcapabilities&version=1.0.0
|
||||
|
||||
|
||||
GetTile RESTful/KVP:
|
||||
|
||||
|
||||
http://[...]/layer/[ANYTHING-OPTIONAL][z]/[x]/[y].[ext]
|
||||
http://[...]?service=wmts&request=getTile&layer=[layer]&tilematrix=[z]&tilerow=[y]&tilecol=[y]&format=[ext]
|
||||
|
||||
@@ -248,17 +248,17 @@ Tested WMTS/TMS clients
|
||||
BSD License
|
||||
-----------
|
||||
|
||||
Copyright (C) 2015 Klokan Technologies GmbH (http://www.klokantech.com/)
|
||||
Copyright (C) 2020 MapTiler AG (https://www.maptiler.com/)
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
|
@@ -1,20 +1,20 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* TileServer.php project
|
||||
* TileServer-PHP project
|
||||
* ======================
|
||||
* https://github.com/klokantech/tileserver-php/
|
||||
* Copyright (C) 2016 - Klokan Technologies GmbH
|
||||
* https://github.com/maptiler/tileserver-php/
|
||||
* Copyright (C) 2020 - MapTiler AG
|
||||
*/
|
||||
|
||||
global $config;
|
||||
$config['serverTitle'] = 'Maps hosted with TileServer-php v2.0';
|
||||
$config['availableFormats'] = array('png', 'jpg', 'jpeg', 'gif', 'webp', 'pbf', 'hybrid');
|
||||
$config['availableFormats'] = ['png', 'jpg', 'jpeg', 'gif', 'webp', 'pbf', 'hybrid'];
|
||||
$config['dataRoot'] = '';
|
||||
//$config['template'] = 'template.php';
|
||||
//$config['baseUrls'] = array('t0.server.com', 't1.server.com');
|
||||
//$config['baseUrls'] = ['t0.server.com', 't1.server.com'];
|
||||
|
||||
Router::serve(array(
|
||||
Router::serve([
|
||||
'/' => 'Server:getHtml',
|
||||
'/maps' => 'Server:getInfo',
|
||||
'/html' => 'Server:getHtml',
|
||||
@@ -29,7 +29,7 @@ Router::serve(array(
|
||||
'/:alpha/:number/:number/:alpha' => 'Wmts:getTile',
|
||||
'/tms' => 'Tms:getCapabilities',
|
||||
'/tms/:alpha' => 'Tms:getLayerCapabilities',
|
||||
));
|
||||
]);
|
||||
|
||||
/**
|
||||
* Server base
|
||||
@@ -46,13 +46,13 @@ class Server {
|
||||
* Datasets stored in file structure
|
||||
* @var array
|
||||
*/
|
||||
public $fileLayer = array();
|
||||
public $fileLayer = [];
|
||||
|
||||
/**
|
||||
* Datasets stored in database
|
||||
* @var array
|
||||
*/
|
||||
public $dbLayer = array();
|
||||
public $dbLayer = [];
|
||||
|
||||
/**
|
||||
* PDO database connection
|
||||
@@ -182,7 +182,7 @@ class Server {
|
||||
* @return object
|
||||
*/
|
||||
public function metadataFromMbtiles($mbt) {
|
||||
$metadata = array();
|
||||
$metadata = [];
|
||||
$this->DBconnect($mbt);
|
||||
$result = $this->db->query('select * from metadata');
|
||||
|
||||
@@ -220,7 +220,7 @@ class Server {
|
||||
$e = -180 + 360 * ((1 + $resultdata[0]['e']) / pow(2, $metadata['maxzoom']));
|
||||
$n = $this->row2lat($resultdata[0]['n'], $metadata['maxzoom']);
|
||||
$s = $this->row2lat($resultdata[0]['s'] - 1, $metadata['maxzoom']);
|
||||
$metadata['bounds'] = implode(',', array($w, $s, $e, $n));
|
||||
$metadata['bounds'] = implode(',', [$w, $s, $e, $n]);
|
||||
}
|
||||
$mbt = explode('.', $mbt);
|
||||
$metadata['basename'] = $mbt[0];
|
||||
@@ -246,7 +246,7 @@ class Server {
|
||||
*/
|
||||
public function metadataValidation($metadata) {
|
||||
if (!array_key_exists('bounds', $metadata)) {
|
||||
$metadata['bounds'] = array(-180, -85.06, 180, 85.06);
|
||||
$metadata['bounds'] = [-180, -85.06, 180, 85.06];
|
||||
} elseif (!is_array($metadata['bounds'])) {
|
||||
$metadata['bounds'] = array_map('floatval', explode(',', $metadata['bounds']));
|
||||
}
|
||||
@@ -277,7 +277,7 @@ class Server {
|
||||
$metadata['scale'] = 1;
|
||||
}
|
||||
if(!array_key_exists('tiles', $metadata)){
|
||||
$tiles = array();
|
||||
$tiles = [];
|
||||
foreach ($this->config['baseUrls'] as $url) {
|
||||
$url = '' . $this->config['protocol'] . '://' . $url . '/' .
|
||||
$metadata['basename'] . '/{z}/{x}/{y}';
|
||||
@@ -297,7 +297,7 @@ class Server {
|
||||
*/
|
||||
public function DBconnect($tileset) {
|
||||
try {
|
||||
$this->db = new PDO('sqlite:' . $tileset, '', '', array(PDO::ATTR_PERSISTENT => true));
|
||||
$this->db = new PDO('sqlite:' . $tileset, '', '', [PDO::ATTR_PERSISTENT => true]);
|
||||
} catch (Exception $exc) {
|
||||
echo $exc->getTraceAsString();
|
||||
die;
|
||||
@@ -388,7 +388,7 @@ class Server {
|
||||
$mime .= $ext;
|
||||
}else{
|
||||
//detect image type from file
|
||||
$mimetypes = array('gif', 'jpeg', 'png');
|
||||
$mimetypes = ['gif', 'jpeg', 'png'];
|
||||
$mime .= $mimetypes[exif_imagetype($name) - 1];
|
||||
}
|
||||
header('Access-Control-Allow-Origin: *');
|
||||
@@ -792,15 +792,15 @@ class Wmts extends Server {
|
||||
$tileMatrix[$i]['pixel_size'],
|
||||
$tileMatrix[$i]['tile_size']
|
||||
);
|
||||
$tileMatrix[$i]['matrix_size'] = array(
|
||||
$tileMatrix[$i]['matrix_size'] = [
|
||||
$tileExtent[2] + 1,
|
||||
$tileExtent[1] + 1
|
||||
);
|
||||
];
|
||||
}
|
||||
if(!isset($tileMatrix[$i]['origin']) && isset($tileMatrix[$i]['extent'])){
|
||||
$tileMatrix[$i]['origin'] = array(
|
||||
$tileMatrix[$i]['origin'] = [
|
||||
$tileMatrix[$i]['extent'][0], $tileMatrix[$i]['extent'][3]
|
||||
);
|
||||
];
|
||||
}
|
||||
// Origins of geographic coordinate systems are setting in opposite order
|
||||
if (isset($proj4) && $proj4['proj'] === 'longlat') {
|
||||
@@ -811,7 +811,7 @@ class Wmts extends Server {
|
||||
}
|
||||
if(!isset($tileMatrix[$i]['tile_size'])){
|
||||
$tileSize = 256 * (int) $layer['scale'];
|
||||
$tileMatrix[$i]['tile_size'] = array($tileSize, $tileSize);
|
||||
$tileMatrix[$i]['tile_size'] = [$tileSize, $tileSize];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -827,12 +827,12 @@ class Wmts extends Server {
|
||||
* @return array
|
||||
*/
|
||||
public function tilesOfExtent($extent, $origin, $pixel_size, $tile_size) {
|
||||
$tiles = array(
|
||||
$tiles = [
|
||||
$this->minsample($extent[0] - $origin[0], $pixel_size[0] * $tile_size[0]),
|
||||
$this->minsample($extent[1] - $origin[1], $pixel_size[1] * $tile_size[1]),
|
||||
$this->maxsample($extent[2] - $origin[0], $pixel_size[0] * $tile_size[0]),
|
||||
$this->maxsample($extent[3] - $origin[1], $pixel_size[1] * $tile_size[1]),
|
||||
);
|
||||
];
|
||||
return $tiles;
|
||||
}
|
||||
|
||||
@@ -851,19 +851,19 @@ class Wmts extends Server {
|
||||
*/
|
||||
public function getMercatorTileMatrixSet($maxZoom = 18){
|
||||
$denominatorBase = 559082264.0287178;
|
||||
$extent = array(-20037508.34,-20037508.34,20037508.34,20037508.34);
|
||||
$tileMatrixSet = array();
|
||||
$extent = [-20037508.34,-20037508.34,20037508.34,20037508.34];
|
||||
$tileMatrixSet = [];
|
||||
|
||||
for($i = 0; $i <= $maxZoom; $i++){
|
||||
$matrixSize = pow(2, $i);
|
||||
$tileMatrixSet[] = array(
|
||||
$tileMatrixSet[] = [
|
||||
'extent' => $extent,
|
||||
'id' => (string) $i,
|
||||
'matrix_size' => array($matrixSize, $matrixSize),
|
||||
'origin' => array($extent[0], $extent[3]),
|
||||
'matrix_size' => [$matrixSize, $matrixSize],
|
||||
'origin' => [$extent[0], $extent[3]],
|
||||
'scale_denominator' => $denominatorBase / pow(2, $i),
|
||||
'tile_size' => array(256, 256)
|
||||
);
|
||||
'tile_size' => [256, 256]
|
||||
];
|
||||
}
|
||||
|
||||
return $this->getTileMatrixSet('GoogleMapsCompatible', $tileMatrixSet, 'EPSG:3857');
|
||||
@@ -874,26 +874,26 @@ class Wmts extends Server {
|
||||
* @return string Xml
|
||||
*/
|
||||
public function getWGS84TileMatrixSet(){
|
||||
$extent = array(-180.000000, -90.000000, 180.000000, 90.000000);
|
||||
$scaleDenominators = array(279541132.01435887813568115234, 139770566.00717943906784057617,
|
||||
$extent = [-180.000000, -90.000000, 180.000000, 90.000000];
|
||||
$scaleDenominators = [279541132.01435887813568115234, 139770566.00717943906784057617,
|
||||
69885283.00358971953392028809, 34942641.50179485976696014404, 17471320.75089742988348007202,
|
||||
8735660.37544871494174003601, 4367830.18772435747087001801, 2183915.09386217873543500900,
|
||||
1091957.54693108936771750450, 545978.77346554468385875225, 272989.38673277234192937613,
|
||||
136494.69336638617096468806, 68247.34668319308548234403, 34123.67334159654274117202,
|
||||
17061.83667079825318069197, 8530.91833539912659034599, 4265.45916769956329517299,
|
||||
2132.72958384978574031265);
|
||||
$tileMatrixSet = array();
|
||||
2132.72958384978574031265];
|
||||
$tileMatrixSet = [];
|
||||
|
||||
for($i = 0; $i <= 17; $i++){
|
||||
$matrixSize = pow(2, $i);
|
||||
$tileMatrixSet[] = array(
|
||||
$tileMatrixSet[] = [
|
||||
'extent' => $extent,
|
||||
'id' => (string) $i,
|
||||
'matrix_size' => array($matrixSize * 2, $matrixSize),
|
||||
'origin' => array($extent[3], $extent[0]),
|
||||
'matrix_size' => [$matrixSize * 2, $matrixSize],
|
||||
'origin' => [$extent[3], $extent[0]],
|
||||
'scale_denominator' => $scaleDenominators[$i],
|
||||
'tile_size' => array(256, 256)
|
||||
);
|
||||
'tile_size' => [256, 256]
|
||||
];
|
||||
}
|
||||
|
||||
return $this->getTileMatrixSet('WGS84', $tileMatrixSet, 'EPSG:4326');
|
||||
@@ -1192,7 +1192,7 @@ class Tms extends Server {
|
||||
}
|
||||
} else {
|
||||
$srs = 'EPSG:3857';
|
||||
$bounds = array(-20037508.34,-20037508.34,20037508.34,20037508.34);
|
||||
$bounds = [-20037508.34,-20037508.34,20037508.34,20037508.34];
|
||||
$initRes = 156543.03392804062;
|
||||
}
|
||||
$mime = ($m['format'] == 'jpg') ? 'image/jpeg' : 'image/png';
|
||||
@@ -1253,14 +1253,14 @@ class Router {
|
||||
}
|
||||
}
|
||||
$discovered_handler = null;
|
||||
$regex_matches = array();
|
||||
$regex_matches = [];
|
||||
|
||||
if ($routes) {
|
||||
$tokens = array(
|
||||
$tokens = [
|
||||
':string' => '([a-zA-Z]+)',
|
||||
':number' => '([0-9]+)',
|
||||
':alpha' => '([a-zA-Z0-9-_@\.]+)'
|
||||
);
|
||||
];
|
||||
//global $config;
|
||||
foreach ($routes as $pattern => $handler_name) {
|
||||
$pattern = strtr($pattern, $tokens);
|
||||
@@ -1281,7 +1281,7 @@ class Router {
|
||||
$discoverered_class = explode(':', $discovered_handler);
|
||||
$discoverered_method = explode(':', $discovered_handler);
|
||||
$handler_instance = new $discoverered_class[0]($regex_matches);
|
||||
call_user_func(array($handler_instance, $discoverered_method[1]));
|
||||
call_user_func([$handler_instance, $discoverered_method[1]]);
|
||||
} else {
|
||||
$handler_instance = new $discovered_handler($regex_matches);
|
||||
}
|
||||
|
Reference in New Issue
Block a user