跳转到主要内容

美国人口普查地理编码的Python轻量级封装

项目描述

人口地理编码

人口地理编码是一个轻量级的Python封装,用于美国人口普查的地理编码API,兼容Python 3。它包含一个简单的命令行工具,可以将地址地理编码到经纬度,或将批量文件解析为地址和坐标。

在使用此模块之前,强烈建议您查阅人口地理编码文档

基本示例

import censusgeocode as cg

cg.coordinates(x=-76, y=41)
cg.onelineaddress('1600 Pennsylvania Avenue, Washington, DC')
cg.address('1600 Pennsylvania Avenue', city='Washington', state='DC', zip='20006')
cg.addressbatch('data/addresses.csv')

使用returntype关键字指定'locations'或'geographies'。'locations'返回有关地址的结构化信息,而'geographies'返回有关人口普查地理区域的信息。默认为'geographies'。

cg.onelineaddress('1600 Pennsylvania Avenue, Washington, DC', returntype='locations')

查询返回一个CensusResult对象,基本上是一个带有额外'input'属性的Python列表,人口普查用它来告诉您如何解释您的请求。

>>> result = cg.coordinates(x=-76, y=41)
>>> result.input
{
    u'vintage': {
        u'vintageName': u'Current_Current',
        u'id': u'4',
        u'vintageDescription': u'Current Vintage - Current Benchmark',
        u'isDefault': True
    },
    u'benchmark': {
        u'benchmarkName': u'Public_AR_Current',
        u'id': u'4',
        u'isDefault': False,
        u'benchmarkDescription': u'Public Address Ranges - Current Benchmark'
    },
    u'location': {
        u'y': 41.0,
        u'x': -76.0
    }
}
>>> result
[{
    '2010 Census Blocks': [{
        'AREALAND': 1409023,
        'AREAWATER': 0,
        'BASENAME': '1045',
        'BLKGRP': '1',
        'BLOCK': '1045',
        'CENTLAT': '+40.9957436',
        'CENTLON': '-076.0089338',
        'COUNTY': '079',
        'FUNCSTAT': 'S',
        'GEOID': '420792166001045',
        'INTPTLAT': '+40.9957436',
        'INTPTLON': '-076.0089338',
        'LSADC': 'BK',
        'LWBLKTYP': 'L',
        'MTFCC': 'G5040',
        'NAME': 'Block 1045',
        'OBJECTID': 9940449,
        'OID': 210404020212114,
        'STATE': '42',
        'SUFFIX': '',
        'TRACT': '216600'
    }],
    'Census Tracts': [{
        # snip 
        'NAME': 'Census Tract 2166',
        'OBJECTID': 61245,
        'OID': 20790277158250,
        'STATE': '42',
        'TRACT': '216600'
    }],
    'Counties': [{
        # snip
        'NAME': 'Luzerne County',
        'OBJECTID': 866,
        'OID': 27590277115518,
        'STATE': '42'
    }],
    'States': [{
        # snip
        'NAME': 'Pennsylvania',
        'REGION': '1',
        'STATE': '42',
        'STATENS': '01779798',
        'STUSAB': 'PA'
    }]
}]

高级

默认情况下,地理编码器使用"Current" vintage和benchmarks。要使用另一个vintage或benchmark,请使用CensusGeocode

from censusgeocode import CensusGeocode
cg = CensusGeocode(benchmark='Public_AR_Current', vintage='Census2020_Current')
cg.onelineaddress(foobar)

人口普查可能更新可用的基准和版本。请查看人口普查地理编码器文档,了解当前可用的基准版本

命令行工具

censusgeocode工具有两个设置。

最简单的情况下,它接受一个参数,即地址,并返回逗号分隔的经纬度对。

censusgeocode '100 Fifth Avenue, New York, NY'
-73.992195,40.73797

censusgeocode '1600 Pennsylvania Avenue, Washington DC'
-77.03535,38.898754

人口普查地理编码器在识别非标准地址方面表现相当不错。

censusgeocode 'Hollywood & Vine, LA, CA'
-118.32668,34.101624

它还可以使用人口普查地理编码器的批量功能处理整个文件。文件必须是逗号分隔的,没有标题,并包含以下列

unique id, street address, state, city, zip code

地理编码器可以从文件中读取

censusgeocode --csv tests/fixtures/batch.csv

(示例文件)

或从stdin读取,使用-作为文件名

head tests/fixtures/batch.csv | censusgeocode --csv -

根据人口普查文档,批量地理编码器限制为10,000行。

输出将是一个CSV文件(带标题)和以下列

  • id
  • address
  • match
  • matchtype
  • parsed
  • tigerlineid
  • side
  • lat
  • lon

如果您的数据没有唯一的id,请尝试使用Unix命令行工具nl添加行号

nl -s , input.csv | censusgeocode --csv - > output.csv

许可

本程序是免费软件:您可以在自由软件基金会发布的GNU通用公共许可证的条款下重新分发和/或修改它,许可证版本为3,或(根据您的选择)任何较新版本。

本程序是在希望它将是有用的前提下分发的,但没有任何保证;甚至没有关于适销性或针对特定目的的适用性的暗示保证。有关更多详细信息,请参阅GNU通用公共许可证。

您应该已随本程序收到一份GNU通用公共许可证副本。如果没有,请参阅https://gnu.ac.cn/licenses/

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定要选择哪一个,请了解有关安装包的更多信息。

源分发

censusgeocode-0.5.2.tar.gz (20.9 kB 查看哈希值)

上传时间

构建分发

censusgeocode-0.5.2-py3-none-any.whl (9.2 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面