开发
代码库
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