Loader_Generate_Census_Script — 설정한 플랫폼에 대해 설정한 주(州)를 위한, TIGER 인구조사 주(州) 구역(tract), 블록 그룹(bg), 블록(tabblock) 데이터 테이블을 다운로드해서 tiger_data
스키마에 단계별로 로드하는 셸 스크립트를 생성합니다. 각 주(州)의 스크립트를 개별 레코드로 반환합니다.
setof text loader_generate_census_script(
text[] param_states, text os)
;
설정한 플랫폼에 대해 설정한 주(州)를 위한, TIGER 인구조사 주(州) tract
, bg
, tabblocks
데이터 테이블을 다운로드해서 tiger_data
스키마에 단계별로 로드하는 셸 스크립트를 생성합니다. 각 주(州)의 스크립트를 개별 레코드로 반환합니다.
리눅스 상에서 unzip을 (윈도우 상에서는 기본적으로 7-zip을) 사용하고, 다운로드를 위해 wget을 씁니다. 데이터를 로드하는 데 Section 4.7.2, “shp2pgsql: ESRI shapefile 로더 이용하기” 를 이용합니다. 이 함수가 작업에 이용하는 가장 작은 단위가 주(州) 전체라는 점에 주의하십시오. 이 함수는 "staging" 및 "temp" 폴더에 있는 파일들만 처리할 것입니다.
처리 과정 및 서로 다른 OS 셸 문법 변수들을 제어하기 위해 다음 제어 테이블들을 이용합니다.
loader_variables
- 인구조사 현장, 연도, 데이터 및 단계별(staging) 스키마들과 같은 여러 변수들을 추적합니다.
loader_platform
- 여러 플랫폼 및 여러 실행 파일들의 위치에 대한 개요를 작성합니다. 기본적으로 윈도우와 리눅스를 가지고 있습니다. 더 많은 플랫폼을 추가할 수 있습니다.
loader_lookuptables
- 각 레코드가 테이블 유형(주, 군), 테이블에서 레코드를 처리할지 여부, 테이블에 레코드를 로드하는 방법을 정의합니다. 각 단계별로 데이터를 임포트하고 준비하며, 각 단계에 대해 열, 인덱스, 제약조건을 추가하고 제거하는 단계들을 정의합니다. 각 테이블의 접두사는 주명(州名)이며, TIGER 스키마 안의 테이블을 승계합니다. 예: tiger.faces
를 승계하는 tiger_data.ma_faces
테이블을 생성하십시오.
2.0.0 버전부터 사용할 수 있습니다.
Loader_Generate_Script 는 이 로직을 포함하지만, PostGIS 2.0.0 alpha5 이전 버전에 TIGER 지오코딩 도구를 설치한 경우, 이런 추가적인 테이블을 얻으려면 사용자가 이미 처리한 주(州)에 대해 이 함수를 실행해야 할 것입니다. |
선택한 주들을 위한 데이터를 윈도우 셸 스크립트 형식으로 로드하는 스크립트를 생성합니다.
SELECT loader_generate_census_script(ARRAY['MA'], 'windows'); -- result -- set STATEDIR="\gisdata\www2.census.gov\geo\pvs\tiger2010st\25_Massachusetts" set TMPDIR=\gisdata\temp\ set UNZIPTOOL="C:\Program Files\7-Zip\7z.exe" set WGETTOOL="C:\wget\wget.exe" set PGBIN=C:\projects\pg\pg91win\bin\ set PGPORT=5432 set PGHOST=localhost set PGUSER=postgres set PGPASSWORD=yourpasswordhere set PGDATABASE=tiger_postgis20 set PSQL="%PGBIN%psql" set SHP2PGSQL="%PGBIN%shp2pgsql" cd \gisdata %WGETTOOL% http://www2.census.gov/geo/pvs/tiger2010st/25_Massachusetts/25/ --no-parent --relative --accept=*bg10.zip,*tract10.zip,*tabblock10.zip --mirror --reject=html del %TMPDIR%\*.* /Q %PSQL% -c "DROP SCHEMA tiger_staging CASCADE;" %PSQL% -c "CREATE SCHEMA tiger_staging;" cd %STATEDIR% for /r %%z in (*.zip) do %UNZIPTOOL% e %%z -o%TMPDIR% cd %TMPDIR% %PSQL% -c "CREATE TABLE tiger_data.MA_tract(CONSTRAINT pk_MA_tract PRIMARY KEY (tract_id) ) INHERITS(tiger.tract); " %SHP2PGSQL% -c -s 4269 -g the_geom -W "latin1" tl_2010_25_tract10.dbf tiger_staging.ma_tract10 | %PSQL% %PSQL% -c "ALTER TABLE tiger_staging.MA_tract10 RENAME geoid10 TO tract_id; SELECT loader_load_staged_data(lower('MA_tract10'), lower('MA_tract')); " %PSQL% -c "CREATE INDEX tiger_data_MA_tract_the_geom_gist ON tiger_data.MA_tract USING gist(the_geom);" %PSQL% -c "VACUUM ANALYZE tiger_data.MA_tract;" %PSQL% -c "ALTER TABLE tiger_data.MA_tract ADD CONSTRAINT chk_statefp CHECK (statefp = '25');" :
.sh 스크립트를 생성합니다.
STATEDIR="/gisdata/www2.census.gov/geo/pvs/tiger2010st/25_Massachusetts" TMPDIR="/gisdata/temp/" UNZIPTOOL=unzip WGETTOOL="/usr/bin/wget" export PGBIN=/usr/pgsql-9.0/bin export PGPORT=5432 export PGHOST=localhost export PGUSER=postgres export PGPASSWORD=yourpasswordhere export PGDATABASE=geocoder PSQL=${PGBIN}/psql SHP2PGSQL=${PGBIN}/shp2pgsql cd /gisdata wget http://www2.census.gov/geo/pvs/tiger2010st/25_Massachusetts/25/ --no-parent --relative --accept=*bg10.zip,*tract10.zip,*tabblock10.zip --mirror --reject=html rm -f ${TMPDIR}/*.* ${PSQL} -c "DROP SCHEMA tiger_staging CASCADE;" ${PSQL} -c "CREATE SCHEMA tiger_staging;" cd $STATEDIR for z in *.zip; do $UNZIPTOOL -o -d $TMPDIR $z; done : :