使用bc淡水atlas的python/postgresql工具

fwakit的Python项目详细描述


fwakit

python/postgresql工具,用于处理不列颠哥伦比亚省的Freshwater Atlas

要求

  • python 2.7+(使用2.7.14、3.6.4进行测试)
  • PostgreSQL/Postgis(用10.2/2.4.2测试)
  • gdal(用于将数据加载到postgresql,使用2.2.3进行测试)

安装

$ pip install fwakit

配置

创建环境变量FWA_DB,并将其设置为数据库的SQLAlchemy db url例如:

MacOS/Linux等: export FWA_DB=postgresql://postgres:postgres@localhost:5432/fwadb

窗口: SET FWA_DB="postgresql://postgres:postgres@localhost:5432/fwadb"

有关更多配置,请参见settings.py

设置

从geobc获取fwa数据:

$ fwakit download

请注意,如果您使用的是网络代理,则下载可能无法工作如果失败,请从DataBC's ftp server手动下载并解压缩感兴趣的文件。

创建数据库、加载FWA数据、修复、索引和优化:

$ fwakit create_db
$ fwakit load
$ fwakit clean

请注意,由于该工具将整个fwa文件集下载到磁盘,然后在postgres中复制数据,因此需要大约20g的可用磁盘空间。如果这不可用,请逐层运行加载工具,或者使用ogr2ogr和GDAL VFS /vsicurl and /vsizip直接从ftp站点加载数据。

用法

使用python模块:

import fwakit as fwa

wsg = fwa.list_groups()

fwa.reference_points('point_table', 'point_id', 'event_table', 10)

在PostgreSQL中直接使用已安装的{}前缀函数:

fwakit_test=# SELECT fwa_upstreamlength(354136754, 1200) / 1000 as downstream_km, fwa_downstreamlength(354136754, 1200) / 1000 as upstream_km;
  downstream_km  |   upstream_km
-----------------+------------------
 5.1829073255008 | 9.48098793830257
(1 row)

对常见任务使用fwakit命令行界面:

$ fwakit --help
Usage: fwakit [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  clean      Clean and index the data after load
  create_db  Create a fresh database/schema
  download   Download FWA gdb archives from GeoBC ftp
  dump       Dump sample data to file
  load       Load FWA data to PostgreSQL

使用数据(加载时创建)进行映射和分析,例如:

  • whse_basemapping.fwa_named_streams命名流,简化并合并
  • whse_basemapping.fwa_watershed_groups_subdivided-细分的分水岭组,用于多边形查询中更快的点

学分

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用Eclipse Helios for Web项目   java指定行。作为编译器设置的分隔符?   osm映射中带有osmdroid的java标记   java Android ClassNotFoundException在路径:DexPathList上未找到类   java从j2me调用GWT方法   更新到java 8后的aspectj问题   如何仅从根元素java,com提取文本内容。滴虫软件。是的。html   安卓公司。谷歌。火基。数据库DatabaseException:未能转换java类型的值。将字符串改为长字符串   从java中的方法返回arraylist变量   java如果将引用重新分配给同步块内的锁对象,会是什么?   java下载。使用spring mvc的资源文件中的xlsx文件   java Eclipse提供了什么工具来运行Eclipse中未包含的程序?   spring boot Java泛型如何读取传递给泛型方法的类型上的字段或调用方法   Javacard中的javaecdsa签名