跳转到主要内容

Python制作点密度图的工具包

项目描述

多切斯特

PyPI Changelog Tests License

Python制作点密度图的工具。

警告

目前这非常原始。自行承担风险,并在发布之前评估此库的任何编辑使用。

安装

使用pip安装此工具

$ pip install dorchester

使用方法

主要命令是dorchester plot。它需要输入文件、输出文件和一个或多个属性键以提取人口计数。

dorchester plot --help
Usage: dorchester plot [OPTIONS] SOURCE DEST

  Generate data for a dot-density map. Input may be any GIS format readable
  by Fiona (Shapefile, GeoJSON, etc).

Options:
  -k, --key TEXT                  Property name for a population. Use multiple
                                  to map different population classes.

  -f, --format [csv|geojson|null]
                                  Output format. If not given, will guess
                                  based on output file extension.

  -m, --mode [w|a|x]              File mode for destination  [default: w]
  --fid TEXT                      Use a property key (instead of feature.id)
                                  to uniquely identify each feature

  --coerce                        Coerce properties passed in --key to
                                  integers. BE CAREFUL. This could cause
                                  incorrect results if misused.

  --progress                      Show a progress bar  [default: False]
  -m, --multiprocessing           Use multiprocessing
  --help                          Show this message and exit.

输入可以是Fiona可读的任何格式,例如Shapefiles和GeoJSON。输入文件需要包含人口数据和边界。在用dorchester绘制之前,您可能需要将不同的文件合并在一起。

输出格式(--format)可以是CSV或GeoJSON(即将推出更多格式)。对于GeoJSON,输出将是一系列以换行符分隔的Point功能流,如下所示

{"type": "Feature", "geometry": {"type": "Point", "coordinates": [76, 38]}, "properties": {"group": "population", "fid": 1}}
{"type": "Feature", "geometry": {"type": "Point", "coordinates": [77, 39]}, "properties": {"group": "population", "fid": 1}}
{"type": "Feature", "geometry": {"type": "Point", "coordinates": [78, 37]}, "properties": {"group": "population", "fid": 1}}

这将是非常大的文件,因为我们为每个人创建一个点。例如,马萨诸塞州2010年的人口为6,631万,这意味着点密度CSV文件将有6,336,107行,305 mb。

每个键(--key)应与每个功能上的一个属性相对应,其值为整数。在这个示例中,使用--key POP10提取人口

{
  "geometry": {
    "coordinates": [...],
    "type": "Polygon"
  },
  "id": "0",
  "properties": {
    "BLOCKCE": "4023",
    "BLOCKID10": "250010112004023",
    "COUNTYFP10": "001",
    "HOUSING10": 16,
    "PARTFLG": "N",
    "POP10": 12,
    "STATEFP10": "25",
    "TRACTCE10": "011200"
  },
  "type": "Feature"
}

您可以通过传递多个--key选项来创建不同的组,这些组将一起分层。例如,您可以通过这种方式创建显示不同种族群体的地图。

--mode选项控制输出文件如何打开

  • w将创建或覆盖输出文件
  • a将追加到现有文件
  • x 将尝试创建一个新文件,如果该文件已存在,则失败

设置 --fid 将使用属性键来标识每个特征,而不是特征的 id 字段(该字段通常缺失,或在 shapefile 中将是索引号)。在上面的普查区块示例中,BLOCKID10 将唯一标识此区块,而 id: 0 仅标识它为其源 shapefile 中的第一个特征。

对于属性作为字符串编码的数据源,--coerce 选项将使用 --key 传递的任何内容重新解释为整数。小心使用此选项,因为它涉及更改数据。如果遇到无法转换为整数的对象,它将失败(并停止绘图)。

使用 --progress 标志来显示进度条。默认情况下是关闭的。

使用 -m--multiprocessing 来使用 Python 的 multiprocessing 模块显著加快点生成速度。这将尝试使用您机器上的每个处理器,而不仅仅是其中一个。

在地图上放置点

对于较小的区域,QGIS 可以很好地渲染大量点。生成点,并将输出作为分隔符或 GeoJSON 文件加载。

要构建交互式点密度地图,可以使用 tippecanoe 生成 MBTiles 文件,该文件可以上传到 Mapbox(或可能的其他托管提供商)。这对我是有效的

tippecanoe -zg -o points.mbtiles --drop-densest-as-needed --extend-zooms-if-still-dropping points.csv

关于名称

Dorchester 是马萨诸塞州波士顿最大的最多元化的社区,常被称为点。

该名称也向 Englewood 致敬,由芝加哥论坛新闻应用团队构建。希望这是一个值得的继承者。

开发

要为此工具做出贡献,首先检出代码。然后创建一个新的虚拟环境

cd dorchester
python -m venv .venv
source .venv/bin/activate

或者如果你使用 pipenv

pipenv shell

现在安装依赖项和测试

pip install -e '.[test]'

要运行测试

pytest

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

dorchester-0.6.0.tar.gz (11.8 kB 查看哈希值)

上传时间

构建分布

dorchester-0.6.0-py3-none-any.whl (13.1 kB 查看哈希值)

上传时间 Python 3

由以下提供支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面