名稱

Loader_Generate_Script — 為指定平台和指定州產生 shell 腳本,該腳本將下載 Tiger 資料,暫存並載入到 tiger_data 綱要中。每個州的腳本會以個別記錄回傳。最新版本支援 Tiger 2010 的結構變更,並且載入人口普查區、區塊群組和區塊表格。

概要

setof text loader_generate_script(text[] param_states, text os);

說明

為指定平台和指定州產生 shell 腳本,該腳本將下載 Tiger 資料,暫存並載入到 tiger_data 綱要中。每個州的腳本會以個別記錄回傳。

它在 Linux 上使用 unzip(預設在 Windows 上使用 7-zip),並使用 wget 來進行下載。它使用第 4.7.2 節, 「使用 Shapefile 載入器」來載入資料。請注意,它最小的處理單位是一個州,但您可以自行下載檔案來覆寫此設定。它只會處理暫存和臨時資料夾中的檔案。

它使用以下控制表格來控制程序和不同的作業系統 shell 語法變體。

  1. loader_variables 追蹤各種變數,例如人口普查站點、年份、資料和暫存綱要

  2. loader_platform 各種平台及其各種可執行檔所在位置的設定檔。內建 Windows 和 Linux 的設定檔。可以新增更多設定檔。

  3. loader_lookuptables 每個記錄定義一種表格(州、縣),是否處理其中的記錄以及如何載入它們。定義匯入資料、暫存資料、新增、移除欄位、索引和每個約束的步驟。每個表格都以州為前綴,並繼承自 tiger 綱要中的表格。例如,建立 tiger_data.ma_faces,它繼承自 tiger.faces

可用性:2.0.0 版本開始支援 Tiger 2010 結構化資料,並載入人口普查區 (tract)、區塊群組 (bg) 和區塊 (tabblocks) 表格。

[Note]

如果您使用 pgAdmin 3,請注意,預設情況下 pgAdmin 3 會截斷長文字。若要修正此問題,請將 檔案 -> 選項 -> 查詢工具 -> 查詢編輯器 -> 每欄最大字元數 更改為大於 50000 個字元。

範例

使用 psql,其中 gistest 是您的資料庫,而 /gisdata/data_load.sh 是要建立的檔案,其中包含要執行的 shell 命令。

psql -U postgres -h localhost -d gistest -A -t \
 -c "SELECT Loader_Generate_Script(ARRAY['MA'], 'gistest')" > /gisdata/data_load.sh;

產生腳本以 Windows shell 腳本格式載入 2 個州的資料。

SELECT loader_generate_script(ARRAY['MA','RI'], 'windows') AS result;
-- result --
set TMPDIR=\gisdata\temp\
set UNZIPTOOL="C:\Program Files\7-Zip\7z.exe"
set WGETTOOL="C:\wget\wget.exe"
set PGBIN=C:\Program Files\PostgreSQL\9.4\bin\
set PGPORT=5432
set PGHOST=localhost
set PGUSER=postgres
set PGPASSWORD=yourpasswordhere
set PGDATABASE=geocoder
set PSQL="%PGBIN%psql"
set SHP2PGSQL="%PGBIN%shp2pgsql"
cd \gisdata

cd \gisdata
%WGETTOOL% ftp://ftp2.census.gov/geo/tiger/TIGER2015/PLACE/tl_*_25_* --no-parent --relative --recursive --level=2 --accept=zip --mirror --reject=html
cd \gisdata/ftp2.census.gov/geo/tiger/TIGER2015/PLACE
:
:

產生 sh 腳本

SELECT loader_generate_script(ARRAY['MA','RI'], 'sh') AS result;
-- result --
TMPDIR="/gisdata/temp/"
UNZIPTOOL=unzip
WGETTOOL="/usr/bin/wget"
export PGBIN=/usr/lib/postgresql/9.4/bin
-- variables used by psql: https://postgresql.dev.org.tw/docs/current/static/libpq-envars.html
export PGPORT=5432
export PGHOST=localhost
export PGUSER=postgres
export PGPASSWORD=yourpasswordhere
export PGDATABASE=geocoder
PSQL=${PGBIN}/psql
SHP2PGSQL=${PGBIN}/shp2pgsql
cd /gisdata

cd /gisdata
wget ftp://ftp2.census.gov/geo/tiger/TIGER2015/PLACE/tl_*_25_* --no-parent --relative --recursive --level=2 --accept=zip --mirror --reject=html
cd /gisdata/ftp2.census.gov/geo/tiger/TIGER2015/PLACE
rm -f ${TMPDIR}/*.*
:
: