开发

代码库

pygeoapi代码库存在于https://github.com/geopython/pygeoapi。

测试

pygeoapi用途 pytest 用于管理其自动化测试。测试存在于 /tests 为提供程序、格式化程序、进程以及整个API而开发。

测试可以作为开发工作流的一部分在本地运行。它们也运行在PyGeoapi的 GitHub Actions setup 针对代码存储库的所有提交和拉取请求。

要运行所有测试,只需运行 pytest 在存储库中。要运行特定的测试文件,请运行 pytest tests/test_api.py 例如。

CQL扩展生命周期

限制

此工作流仅对 CQL-JSON 格式化。

模式

通用查询语言(Common Query Language,CQL)是标准OGC API-Feature的第3部分。此扩展的规范可在以下位置获得 OGC API - Features - Part 3: Filtering and the Common Query Language (CQL) ,并且该架构在开发中 cql.json

模型生成

Pygeapi使用基于类的Python模型接口将模式转换为由 pydantic 模特们。该模型是通过该实用程序对方案进行预处理后生成的 datamodel-codegen

# Generate from local downloaded json schema file
datamodel-codegen  --input ~/Download/cql-schema.json --input-file-type jsonschema --output ./pygeoapi/models/cql_update.py --class-name CQLModel

如何合并

一旦生成了新的PYDNIC模型,就会显示该Python文件的内容 cql_update.py 可以用来替换 cql.py 文件。更新函数上方的所有内容 get_next_node 然后验证CQL的测试是否仍在通过,例如 test_post_cql_json_between_query 在……里面 tests/test_elasticsearch__provider.py

在OSX上使用Spatialite

使用pyenv

在OSX开发人员中,使用包管理器自制来安装pyenv,以便能够管理Python的多个版本。他们可能会遇到一些关于pygeoapi用于处理空间数据格式的SQLite扩展的加载错误。为了正确运行服务器,您需要仔细遵循以下步骤。

让自制程序和pyenv完美地结合在一起:

# see https://github.com/pyenv/pyenv/issues/106
alias brew='env PATH=${PATH//$(pyenv root)\/shims:/} brew'

安装带有启用SQLite扩展的选项的Python:

LDFLAGS="-L/usr/local/opt/sqlite/lib -L/usr/local/opt/zlib/lib" CPPFLAGS="-I/usr/local/opt/sqlite/include -I/usr/local/opt/zlib/include" PYTHON_CONFIGURE_OPTS="--enable-loadable-sqlite-extensions" pyenv install 3.7.6

通过自制的SQLite配置操作系统附带的SQLite:

export PATH="/usr/local/opt/sqlite/bin:$PATH"

从自制安装Spatialite:

brew update
brew install spatialite-tools
brew libspatialite

为OSX下的Spatialite库设置变量:

SPATIALITE_LIBRARY_PATH=/usr/local/lib/mod_spatialite.dylib