smindel / silverstripe-gis
SilverStripe 的地理类型
1.5.2
2021-10-20 20:48 UTC
Requires
- proj4php/proj4php: ^2.0
- silverstripe/framework: >=4 <4.3.1 || >=4.3.3
- silverstripe/vendor-plugin: ^1.0
Requires (Dev)
- phpunit/phpunit: ~5.7
Suggests
- ext-gd: to use GD library based tile rendering.
- ext-imagick: to use Imagick based tile rendering.
README
SilverStripe 的 GIS 开发工具包,将 SilverStripe 转换为 GeoCMS 和地图服务。
功能
- 新字段类型:为 DataObjects 提供地理字段类型 Geometry 和 Geography(仅限 Postgres)
- 新表单字段:使用 MapField 编辑新的地理类型,或将地图添加到 ModelAdmin 中的 GridFields
- 可配置的投影:通过 proj4 支持多种投影
- 基本和多部分几何形状:点、线字符串、多边形、多点、多线字符串、多边形
- 开发工具:许多有用的助手,例如用于重新投影、距离测量、EWKT
- MySQL、Postgres 和 Sqlite3:支持 Postgres 与 PostGIS、MySQL 5.7+,对 MariaDB 和 Sqlite3 与 SpatiaLite 的部分支持
- ORM 集成:数据列表过滤器,例如查找交叉的 DataObjects 或在距离内
- GeoJSON 导入器:将 GeoJSON 源作为 DataObjects 导入
- GeoJSON 网络服务:为 DataObjects 提供 GeoJSON API
- WFS:为 DataObjects 提供 WFS(实验性)
- WMTS:将 DataObjects 渲染为 ZXY 瓦片,例如用于 leaflet 前端
- 栅格:(仅限 Postgres)导入 GeoTIFF,访问值,生成统计信息并渲染地图瓦片
要求
- MySQL 5.7+ 或带有 PostGIS 扩展的 Postgres 或带有 SpatiaLite 的 Sqlite3
- SilverStripe 框架 4
- GDAL 用于栅格支持
安装
建议使用 composer 安装该模块
$ composer require smindel/silverstripe-gis
$ vendor/bin/sake dev/build flush=all
MySQL 从 5.7.6 版本开始原生支持几何形状,但不支持地理形状或栅格数据。
当使用 Postgres 时,您必须安装 PostGIS 并执行以下命令 composer require silverstripe/postgresql
。在 Ubuntu 和 Debian 上运行以下命令
$ sudo apt-get install postgis
$ sudo apt-get install postgresql-9.5-postgis-scripts
$ sudo apt-get install postgresql-9.5-postgis-2.2
$ sudo -u postgres psql SS_gis -c "create extension postgis;"
(将 'SS_gis' 替换为您的数据库名称)
步骤二和三可能不是必需的,因此您可能想先尝试步骤一和四,如果步骤四失败,再执行步骤二、三和四。
为了安装 Sqlite3,您必须安装 SpatiaLite 并执行以下命令 composer require silverstripe/sqlite3
。在 Ubuntu 和 Debian 上运行以下命令
$ sudo apt install sqlite3 php-sqlite3 libsqlite3-mod-spatialite
$ sudo updatedb & locate mod_spatialite.so
> /usr/lib/x86_64-linux-gnu/mod_spatialite.so
update php.ini, set:
sqlite3.extension_dir = /usr/lib/x86_64-linux-gnu
配置
silverstripe-gis,就像其他 SilverStripe 模块一样,可以使用 YAML 文件、Config 类或 Configurables 的私有静态属性进行配置。查看以下部分,了解可以配置的内容。
示例和操作方法
- 为什么要这样做? - 如果您应该这样做,您应该关注什么?
- 数据对象示例 - 如何设置您自己的 DataObjects
- GridFieldMap - 如何创建空间感知的行政界面
- MapField - 如何编辑地理类型
- ORM 过滤器 - 如何使用空间过滤器从数据库中检索 DataObjects
API
- GIS - 具有各种有用辅助工具的空间实用类
- GeoJSONImporter - 将GeoJSON文件导入数据库
- GridFieldMap - 以地图方式浏览DataObjects的GridField组件
- MapField - 用于编辑地理类型的表单字段
- GeoJsonService - 通过API动态暴露GeoJSON格式的DataObjects
- WebMapTileService - 从DataObjects生成地图瓦片,适用于Leaflet或Openlayers
- WebFeatureService - 从DataObjects生成WFS,适用于Leaflet或Openlayers(实验性)
- Rasters - 导入栅格文件,访问值和统计信息,渲染WMTS瓦片
注意
此模块与框架版本4.3.1和4.3.2不兼容,因为不允许参数化字段赋值。该问题已在此处修复,因此4.3.1之前和4.3.2之后的框架所有版本都正常工作。