在Pysal(人口普查区块组)中将完整的QUEEN邻居阵列保存为CSV

时间:2016-04-19 14:49:20

标签: python geospatial pysal

首先我要说的是,除了stata .do文件和R中的一些MCMC之外,我还没有编写自VB中的AOL warez组应用程序以来的编码;所以我为你们所有人开始道歉而道歉。

我正在撰写一份环境司法文件,负责人口普查区群层面的人口统计和曝光数据。由于区块组的规模相对较小,污染源和居住在一个区块组中的人们很容易影响至少一级邻居。我将成为一个愚蠢的人,只是通过FIPS代码汇总备份,但这只是糟糕的数学。

获得我想要的ACS年份的形状文件,首先尝试了arcGIS,但我没有到达任何地方。然后我读了关于Pysal并安装了

导入的形状文件 对所有216,000个区块组进行了(12小时)女王邻居分析

在[52]中:w .histogram 出[52]:

[(0,87),  (1,709),  (2,3634),  (3,16627),  (4,48736),  (5,56952),  (6,42848),  (7,24878),  (8,12646),  (9,6294),  (10,3040),  (11,1515),  (12,759),  (13,436),  (14,233),  (15,128),  (16,85),  (17,44),  (18,34),  (19,20),  (20,21),  (21,13),  (22,8),  (23,7),  (24,6),  (25,1),  (26,3),  (27,1),  (28,2),  (29,1),  (30,2),  (31,1),  (32,0),  (33,2),  (34,0),  (35,1),  (36,1),  (37,1),  (38,0),  (39,0),  (40,0),  (41,0),  (42,0),  (43,0),  (44,0),  (45,0),  (46,1),  (47,0),  (48,0),  (49,0),  (50,0),  (51,0),  (52,0),  (53,0),  (54,0),  (55,0),  (56,0),  (57,0),  (58,0),  (59,0),  (60,0),  (61,1)]

我需要的是一个.csv(或者老实说,如果我将它复制/粘贴到某个地方会做什么),它通过FIPS枚举每个块组(这应该是ACS shapefile用于ID的内容)和它的邻居列表。 / p>

如果我能够获得该列表,我可以将其移到我更舒服的环境中。昨晚我坐在那里和它一起玩了好几个小时,可以在numpy.savetext上找到一些裂缝来工作,但它只是一个列,并且数字以科学记数法存储,因为FIPS代码是12位数。有一次它告诉我元组超出范围,我认为那是我最接近的

我手头搜索了数据本身,或者我保证不会浪费你的时间。

谢谢你, 戴夫

1 个答案:

答案 0 :(得分:1)

您可以使用pysal将W写入txt文件。 有许多不同的格式,但“GAL”文件是最简单的。

这是一个txt文件,第一行是形状的数量。 每条记录都是2行,

      if CFArrayGetCount(credentials) > 0 {
            let dict = unsafeBitCast(CFArrayGetValueAtIndex(credentials, 0), CFDictionaryRef.self) as NSDictionary
            let username = dict[kSecAttrAccount as String] as! String
            let password = dict[kSecSharedPassword as String] as! String
            dispatch_async(dispatch_get_main_queue()) {
                completion(error: nil, username: username, password: password)
            }

例如:

id n
id0, id1, ... 

where:
  id is the id of the polygon,
  n is the number of neighbors
  id0 is the id of the first neighbor
  ... and so on

...描述图0-1-2,0有1个邻居(1),1有2个邻居(0,2),依此类推。

将您的W写入gal文件......

 3
 0 1
 1
 1 2
 0 2
 2 1
 1

注意:ID是偏移量。 0是第一个多边形,1是第二个,依此类推。

如果您想将偏移链接到FIPS代码,您需要自己完成此操作。但是,您可以使用pysal以正确的顺序提取FIPS代码。

>>> W = pysal.queen_from_shapefile("/path/to/shapefile.shp")
>>> out = pysal.open("output.gal", 'w')
>>> out.write(W)
>>> out.close()