美国人口普查地理编码器的瘦python包装
censusgeocode的Python项目详细描述
人口普查地理代码
Census Geocode是用于美国人口普查的轻量级Python包装器,与Python2和3都兼容。它附带了一个简单的命令行工具,用于将地址地理编码为经纬度,或将批处理文件地理编码为解析的地址和坐标。
强烈建议在使用此模块之前查看Census Geocoder docs。
基本示例:
importcensusgeocodeascgcg.coordinates(x=-76,y=41)cg.onelineaddress('1600 Pennsylvania Avenue, Washington, DC')cg.address('1600 Pennsylvania Avenue',city='Washington',state='DC',zipcode='22052')cg.addressbatch('data/addresses.csv')
使用returnType关键字指定“位置”或“地理位置”。“地点”生成有关地址的结构化信息,“地理位置”生成有关人口普查地理位置的信息。默认为地理位置。
cg.onelineaddress('1600 Pennsylvania Avenue, Washington, DC',returntype='locations')
查询返回一个censusresult对象,它基本上是一个带有额外“input”属性的python列表,census返回这个属性来告诉您它们是如何解释您的请求的。
>>>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':[{'AREALAND':86404594,'AREAWATER':650526,'BASENAME':'2166','CENTLAT':'+41.0361462','CENTLON':'-075.9801252','COUNTY':'079','FUNCSTAT':'S','GEOID':'42079216600','INTPTLAT':'+41.0379841','INTPTLON':'-075.9743749','LSADC':'CT','MTFCC':'G5020','NAME':'Census Tract 2166','OBJECTID':61245,'OID':20790277158250,'STATE':'42','TRACT':'216600'}],'Counties':[{'AREALAND':2305974186,'AREAWATER':41240020,'BASENAME':'Luzerne','CENTLAT':'+41.1768961','CENTLON':'-075.9890400','COUNTY':'079','COUNTYCC':'H1','COUNTYNS':'01209183','FUNCSTAT':'A','GEOID':'42079','INTPTLAT':'+41.1727868','INTPTLON':'-075.9760345','LSADC':'06','MTFCC':'G4020','NAME':'Luzerne County','OBJECTID':866,'OID':27590277115518,'STATE':'42'}],'States':[{'AREALAND':115884236236,'AREAWATER':3395797284,'BASENAME':'Pennsylvania','CENTLAT':'+40.9011252','CENTLON':'-077.8369164','DIVISION':'2','FUNCSTAT':'A','GEOID':'42','INTPTLAT':'+40.9024957','INTPTLON':'-077.8334514','LSADC':'00','MTFCC':'G4000','NAME':'Pennsylvania','OBJECTID':37,'OID':27490163788605,'REGION':'1','STATE':'42','STATENS':'01779798','STUSAB':'PA'}]}]
高级
默认情况下,geocoder使用“当前”年份和基准。要使用其他年份或基准,请使用CensusGeocode
类:
importcensusgeocodecg=censusgeocode.CensusGeocode(benchmark='Public_AR_Census2010',vintage='Census2010_Census2010')cg.onelineaddress(foobar)
人口普查可能会更新现有的基准和年份。查看当前可用的benchmarks和vintages的人口普查地理编码器文档。
命令行工具
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
它还可以使用Census Geocoder的批处理功能来处理整个文件。文件必须以逗号分隔,没有标题,并且包含以下列:
unique id, street address, state, city, zip code
地理编码器可以读取文件:
censusgeocode --csv tests/fixtures/batch.csv
或者从stdin,使用-
作为文件名:
cat tests/fixtures/batch.csv | censusgeocode --csv -
根据人口普查文件,批量地理编码器限制为1000行。
输出将是一个csv文件(带有标题)和列:
- id
- 地址
- 匹配
- 匹配类型
- 已分析
- tigerlineid
- 侧面
- 纬度
- 长
如果数据没有唯一的id,请尝试使用unix命令行实用程序添加行号nl
:
nl -s , input.csv | censusgeocode --csv - > output.csv
许可证
此程序是自由软件:您可以根据自由软件基金会发布的GNU通用公共许可证(许可证的第3版或(由您选择)任何更高版本)的条款重新分发和/或修改它。
这个程序被分发,希望它是有用的,但没有任何保证;甚至没有对适销性或适合某一特定目的的默示保证。有关更多详细信息,请参阅GNU通用公共许可证。您应该已经收到一份GNU通用公共许可证的副本和这个程序。如果没有,请参阅http://www.gnu.org/licenses/。