2

まず、stata .do ファイルと R の MCMC 以外は、VB で AOL ウェアーズ グループ アプリケーションを作成して以来、コーディングしていません。だから私はここであなたたちと一緒に混乱してしまったことをお詫びします。

私は、国勢調査ブロック グループ レベルでの人口統計データと暴露データを扱う環境正義の論文を書いています。ブロック グループのサイズは比較的小さいため、汚染源と 1 つのブロック グループに住む人々は、少なくとも一次近隣に簡単に影響を与える可能性があります。私は退屈で、FIPS コードを元に集計するつもりでしたが、それは悪い計算です。

必要な ACS 年のシェープ ファイルを入手し、最初に arcGIS を試しましたが、どこにも行きませんでした。次に、Pysalについて読み、それをインストールしました

インポートされた形状ファイルは、216,000 個のブロック グループすべてに対して (12 時間) クイーン ネイバー分析を実行しました

[52]: w.histogram Out[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, 432), (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)]

私が必要としているのは、FIPS (ACS シェープファイルが ID に使用するもの) によって各ブロック グループを列挙する .csv (または、どこかにコピー/貼り付ければ正直に何でもできます) と、その隣人のリストです。

リストを取得できれば、より快適な環境に移動できます。私はそこに座って昨夜何時間も遊んでいましたが、numpy.savetext でいくつかの亀裂を得ることができましたが、FIPS コードは 12 桁であるため、1 つの列だけであり、数値は科学表記法で保存されていました。ある時、タプルが範囲外だと言われましたが、それが最も近いものだったと思います

事前にかなり広範囲にデータ自体を検索しました。さもないと、ここであなたの時間を無駄にすることはないと約束します。

ありがとう、デイブ

4

1 に答える 1

1

pysal を使用して W を txt ファイルに書き込むことができます。さまざまな形式がありますが、「GAL」ファイルが最も単純です。

txt ファイルで、最初の行は形状の数です。各レコードは 2 行です。

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

例えば:

 3
 0 1
 1
 1 2
 0 2
 2 1
 1

...グラフ 0-1-2 を記述します。0 には 1 つの隣接要素 (1)、1 には 2 つの隣接要素 (0、2) などがあります。

W を gal ファイルに書き込むには...

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

注: ID はオフセットです。0 は最初のポリゴン、1 は 2 番目のポリゴンなどです。

オフセットを FIPS コードにリンクする場合は、自分で行う必要があります。ただし、pysal を使用して FIPS コードを正しい順序で抽出できます。

>>> dbf = pysal.open("/path/to/shapefile.dbf", "r")
>>> print dbf.header
[column names, ... ]
>>> FIPS = dbf.by_col("name_of_fips_code_column")
>>> FIPS = map(str, FIPS) #make sure we're writing strings
>>> out = open('fips.txt','w')
>>> out.write('\n'.join(FIPS))
>>> out.close()
于 2016-04-19T19:31:43.450 に答える