美国人口普查地理编码器的瘦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)

人口普查可能会更新现有的基准和年份。查看当前可用的benchmarksvintages的人口普查地理编码器文档。

命令行工具

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

example file

或者从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/

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

推荐PyPI第三方库


热门话题
java将多个线程中的函数放入单个队列   数组在Java中,如何在不改变整数顺序的情况下找到整数组的顺序?   java控制器属于表示层?   java Apache Ivy和本地Maven repo如何处理使用Maven 3构建的快照   Java可与泛型类型进行比较   java这个表达式在泛型中是什么意思   JavaEclipse和TeamCity插件   java检测构造函数中的final是否为空   java如何在StanfordCoreNLP管道中同时使用词汇化和依赖性解析器?   java在AntUnit控制台日志中显示完整异常堆栈跟踪   lambda如何与Java 8供应商建立连锁关系   如何让GRPC的重试机制在Kubernetes集群中使用grpcjava工作?   如何使用openjdk:7 Docker映像和Gradle包装器避免“EC参数错误”?   java将集合映射扩展为一维映射新的“无法推断函数接口类型”