symboquine/farmos_wfs

为farmOS提供的WFS模块。

安装: 623

依赖项: 0

建议者: 0

安全性: 0

星标: 8

关注者: 1

分支: 1

开放问题: 0

类型:drupal-module

2.0.1 2024-02-12 18:20 UTC

This package is auto-updated.

Last update: 2024-09-22 15:28:29 UTC


README

Latest Stable Version License Run 2.x tests

farmOS_wfs为farmOS提供WFS模块。这使得FarmOS区域可以作为Web Feature Service (WFS)访问,它可以用在GIS软件,如Quantum GIS (QGIS)。

限制与兼容性

  • 目前仅支持WFS 1.1.0 / GML 3.1.1
  • 仅支持单几何类型的特征;点、多边形或线字符串
  • 仅支持基于BBOX或特征ID的简单过滤进行查询/更新/删除 - 未来可能会支持更复杂的OGC过滤操作
  • 仅支持farmOS使用的EPSG:4326空间参考系统(SRS) - QGIS和类似软件通常支持将数据源重新投影到其他SRS
  • 仅支持PHP >= 7.4 - 更早版本将无法工作
  • 仅针对farmOS 3.1.1进行了测试 - farmOS 1.x请参阅farmOS_wfs-7.x-1.x
  • 仅与QGIS 3.34进行了测试 - 更早版本可能可行,但无法保证

入门指南

使用Composer和Drush在farmOS 3.x中安装farmOS_wfs;

composer require drupal/farmos_wfs
drush en farmos_wfs

可用的发布版本可以在https://www.drupal.org/project/farmos_wfs/releases查看

QGIS配置

配置OAuth2

  • 名称: farmOS0-oauth2-resource-owner (根据需要命名)
  • 授权流程: 资源所有者
  • 令牌URL: https://path-to-your-farmOS-server.example.com/oauth/token
  • 客户端ID: farm
  • 用户名: your-farmOS-username
  • 密码: your-farmOS-username
  • 作用域: farm_manager

image

配置WFS服务器连接

  • 名称: FarmOS0 (根据需要命名)
  • URL: https://path-to-your-farmOS-server.example.com/wfs
  • 身份验证配置: 选择上面创建的OAuth2配置

image

添加图层

  • 点击“连接”,并将所需的图层添加到您的地图中!

image

常见问题解答

为什么这很有用?

farmOS_wfs模块允许farmOS和GIS之间进行双向集成,其中farmOS是资产数据的“事实来源”。这意味着可以使用QGIS完成复杂的地图/地理空间任务,并始终使用来自farmOS的最新数据。没有farmOS_wfs,进行类似操作将涉及在farmOS/GIS格式之间导入/导出数据,这将使得维护单一权威数据模型变得困难。

为什么不同的几何形状以单独的特征类型(图层)显示?

farmOS允许任何资产具有任意几何形状或甚至几何形状的集合,然而QGIS - 以及我相信大多数GIS工具 - 都期望特征类型中的特征几何形状是同质的。WFS规范允许具有几何类型如GeometryCollection或多几何形状的特征,但这样它们就不容易查看或编辑。因此,farmOS_wfs选择以不同的图层形式提供不同的几何类型,这是一种实用主义的选择。

为什么一些字段以两个下划线开头(例如 "__uuid")?

这些字段是farmOS/Drupal报告为只读的字段。通过farmOS_wfs设置这些字段的值的尝试是不允许的,将会产生错误。通常,这些字段也会自动填充,这意味着它们可能会在通过farmOS_wfs提交更改后发生变化,但新值将在下次从farmOS获取要素时才会出现。

为什么我不能删除某些资产?

farmOS维护资产引用的有效性。某些资产(特别是非固定资产)将会有记录它们的移动/位置日志。在删除资产之前,需要删除这些日志。

可能的未来方向

  • 显示location字段 - 这需要更多的思考,因为资产引用不容易编辑,只读名称的效用有限
  • 使用数据库事务提交对资产的更改
  • 支持更复杂的OGC过滤查询
  • 支持额外的WFS版本 - 尤其是WFS 2.0.0以获取完全功能的分页
  • 检测PostGIS空间索引是否存在于Geofield列上,并切换到使用PostGIS ST_查询 - 相关的https://www.drupal.org/project/geofield/issues/2969564 & https://www.drupal.org/project/geofield_postgis
  • 考虑添加对MultiPoint、MultiLineString和MultiPolygon要素层的支持
  • 考虑添加仅由资产类型参数化的几何无关要素层
  • 为OpenLayers客户端添加测试

开发

环境

在此存储库的docker/目录中运行;

cp docker-compose.pgsql.yml docker-compose.yml
docker-compose up -d

命令完成后,farmOS应运行在https://:80,并且安装了farmOS_wfs模块。测试站点的用户名和密码分别是'root'和'test'。

运行测试

在已启动上述开发环境的docker/目录中;

docker build -t qgis_test_harness qgis_test_harness
docker run --rm -it --name qgis --network=docker_default -v $(pwd)'/qgis_tests:/tests_directory' qgis_test_harness:latest ./run_tests.sh

更复杂的测试过滤

运行单个测试

docker run --rm -it --name qgis --network=docker_default -v $(pwd)'/qgis_tests:/tests_directory' qgis_test_harness:latest ./run_tests.sh test_suite/test_cases/qgis_basic_crud_test.py::QgisBasicCrudTest::test_qgis_create_line_string_water_asset

运行所有'非点'qgis测试

docker run --rm -i --name qgis --network=docker_default -v $(pwd)'/qgis_tests:/tests_directory' qgis_test_harness:latest ./run_tests.sh -k 'qgis and not point'

参数按原样传递给pytest。有关更多信息,请参阅https://pytest.cn/en/stable/usage.html#specifying-tests-selecting-tests

格式化测试

autopep8 --in-place --recursive docker/qgis_tests/

推送新版本的程序

从此存储库的[开发分支][development branch]开始

# Create the commit
git commit -m "Release version 2.0.1"

# Tag the release
git tag 2.0.1

# Push the 2.x branch and new tag
git push --atomic origin HEAD:2.x 2.0.1