proj4php / proj4php
使用 proj4 定义进行地理坐标转换的 PHP-Class,得益于 Proj4JS 的翻译
2.0.17
2024-07-19 19:46 UTC
Requires
- php: >=7.3
Requires (Dev)
- phpunit/phpunit: 9.*
- dev-master
- 2.0.17
- 2.0.16
- 2.0.15
- 2.0.14
- 2.0.13
- 2.0.12
- 2.0.11
- 2.0.10
- 2.0.9
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.0.0
- dev-issue139_EPSG3418
- dev-bug-albers
- dev-issue117
- dev-proj4php5.2
- dev-issue111
- dev-zecheshirecat-issue-109
- dev-scrutinizer-patch-3
- dev-scrutinizer-patch-2
- dev-nboisteault-patch-1
- dev-issue87
- dev-scrutinizer-patch-1
- dev-proj4php7.1
- dev-issue80
- dev-issue73
- dev-issue74
- dev-issue75
- dev-issue70
- dev-issue67
- dev-grid_support
- dev-fix-epsg28992
- dev-sphere_property
- dev-inline-projections
- dev-standardise-conversions
This package is auto-updated.
Last update: 2024-09-19 20:11:57 UTC
README
proj4php
proj4 的 PHP-class。这是一个使用 proj4 定义进行地理坐标转换的 PHP-class,得益于 Proj4JS 的翻译。
更新需求和功能
为了跟上 PHP 版本和最佳实践的快速发展,此包正在实现以下功能
- 命名空间。
- PHP5.4+ 语法(目前不是目标,不是最前沿的)
- PSR-2 风格
- PSR-4 自动加载器
- semver 发布号到 packagist.org
- 与 composer 完全兼容
- 一旦实现上述功能,将进行测试。
遗留分支 proj4php5.2 和 proj4php7.1 将会维护,以满足需要的老旧应用程序。
安装
您可以通过 composer 安装此包
composer require proj4php/proj4php
使用
// Use a PSR-4 autoloader for the `proj4php` root namespace. include("vendor/autoload.php"); use proj4php\Proj4php; use proj4php\Proj; use proj4php\Point; // Initialise Proj4 $proj4 = new Proj4php(); // Create two different projections. $projL93 = new Proj('EPSG:2154', $proj4); $projWGS84 = new Proj('EPSG:4326', $proj4); // Create a point. $pointSrc = new Point(652709.401, 6859290.946, $projL93); echo "Source: " . $pointSrc->toShortString() . " in L93 <br>"; // Transform the point between datums. $pointDest = $proj4->transform($projWGS84, $pointSrc); echo "Conversion: " . $pointDest->toShortString() . " in WGS84<br><br>"; // Source: 652709.401 6859290.946 in L93 // Conversion: 2.3557811127971 48.831938054369 in WGS84
还有定义内联投影的方法。请查看 http://spatialreference.org/ref/epsg/ 并查找您的投影和 proj4 或 OGC WKT 定义。
使用名称从 proj4 定义中添加一个新的投影
// add it to proj4 $proj4->addDef("EPSG:27700",'+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +datum=OSGB36 +units=m +no_defs'); // then Create your projections $projOSGB36 = new Proj('EPSG:27700',$proj4);
或无名称
// Create your projection $projOSGB36 = new Proj('+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +datum=OSGB36 +units=m +no_defs',$proj4);
您也可以从 OGC WKT 定义创建您的投影
$projOSGB36 = new Proj('PROJCS["OSGB 1936 / British National Grid",GEOGCS["OSGB 1936",DATUM["OSGB_1936",SPHEROID["Airy 1830",6377563.396,299.3249646,AUTHORITY["EPSG","7001"]],AUTHORITY["EPSG","6277"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4277"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",49],PARAMETER["central_meridian",-2],PARAMETER["scale_factor",0.9996012717],PARAMETER["false_easting",400000],PARAMETER["false_northing",-100000],AUTHORITY["EPSG","27700"],AXIS["Easting",EAST],AXIS["Northing",NORTH]]',$proj4);
开发 - 如何贡献
请随意 fork 我们并提交您的更改!
OSGeo 社区项目
Proj4php 也是一个 OSGeo 社区项目。有关详细信息,请参阅 此处。