├── .gitignore ├── config ├── stateabbrev.txt ├── counties-2017.ini └── counties-2018.ini ├── README.md └── Makefile /.gitignore: -------------------------------------------------------------------------------- 1 | www2.census.gov 2 | temp 3 | -------------------------------------------------------------------------------- /config/stateabbrev.txt: -------------------------------------------------------------------------------- 1 | 01 al 2 | 02 ak 3 | 04 az 4 | 05 ar 5 | 06 ca 6 | 08 co 7 | 09 ct 8 | 10 de 9 | 11 dc 10 | 12 fl 11 | 13 ga 12 | 15 hi 13 | 16 id 14 | 17 il 15 | 18 in 16 | 19 ia 17 | 20 ks 18 | 21 ky 19 | 22 la 20 | 23 me 21 | 24 md 22 | 25 ma 23 | 26 mi 24 | 27 mn 25 | 28 ms 26 | 29 mo 27 | 30 mt 28 | 31 ne 29 | 32 nv 30 | 33 nh 31 | 34 nj 32 | 35 nm 33 | 36 ny 34 | 37 nc 35 | 38 nd 36 | 39 oh 37 | 40 ok 38 | 41 or 39 | 42 pa 40 | 44 ri 41 | 45 sc 42 | 46 sd 43 | 47 tn 44 | 48 tx 45 | 49 ut 46 | 50 vt 47 | 51 va 48 | 53 wa 49 | 54 wv 50 | 55 wi 51 | 56 wy 52 | 60 as 53 | 64 fm 54 | 66 gu 55 | 68 mh 56 | 69 mp 57 | 70 pw 58 | 72 pr 59 | 78 vi 60 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # geocoder-loader 2 | 3 | An alternative way of adding TIGER data to a Postgres database for PostGIS geocoding. 4 | 5 | This follows the same rules as the `Loader_Generate_Script` function, but runs somewhat more robustly and adds cleaning tasks for corrupted downloads. 6 | 7 | ### Install 8 | 9 | Create the geocoder extension in your Postgres db: 10 | ```sql 11 | CREATE EXTENSION postgis_tiger_geocoder CASCADE; 12 | CREATE EXTENSION address_standardizer CASCADE; 13 | ``` 14 | 15 | To specify your database connection, use the [`PG` environment variables](https://www.postgresql.org/docs/current/libpq-envars.html) (e.g. `export PGUSER=postgres PGDATABASE=postgres`) 16 | 17 | Then add the national files: 18 | ```bash 19 | make nation 20 | ``` 21 | 22 | ### Usage 23 | 24 | Working with a single state: 25 | 26 | ```bash 27 | # Download data for a state and load into database 28 | make STATEFIPS=36 29 | ``` 30 | 31 | ```bash 32 | # Remove downloaded and loaded data for a state 33 | make STATEFIPS=36 clean 34 | ``` 35 | 36 | ```bash 37 | # Download data for a state 38 | make STATEFIPS=36 download 39 | ``` 40 | 41 | To download then load data for all states (and territories), use `xargs` or [GNU `parallel`](https://www.gnu.org/software/parallel/): 42 | ```bash 43 | cut -f 1 config/stateabbrev.txt | xargs -I {} make download STATEFIPS={} 44 | cut -f 1 config/stateabbrev.txt | xargs -I {} make default STATEFIPS={} 45 | ``` -------------------------------------------------------------------------------- /config/counties-2017.ini: -------------------------------------------------------------------------------- 1 | counties_01 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 2 | counties_02 = 013 016 020 050 060 068 070 090 100 105 110 122 130 150 158 164 170 180 185 188 195 198 220 230 240 261 275 282 290 3 | counties_04 = 001 003 005 007 009 011 012 013 015 017 019 021 023 025 027 4 | counties_05 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 5 | counties_06 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 6 | counties_08 = 001 003 005 007 009 011 013 014 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 7 | counties_09 = 001 003 005 007 009 011 013 015 8 | counties_10 = 001 003 005 9 | counties_11 = 001 10 | counties_12 = 001 003 005 007 009 011 013 015 017 019 021 023 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 086 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 11 | counties_13 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 201 205 207 209 211 213 215 217 219 221 223 225 227 229 231 233 235 237 239 241 243 245 247 249 251 253 255 257 259 261 263 265 267 269 271 273 275 277 279 281 283 285 287 289 291 293 295 297 299 301 303 305 307 309 311 313 315 317 319 321 12 | counties_15 = 001 003 005 007 009 13 | counties_16 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 14 | counties_17 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 201 203 15 | counties_18 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 16 | counties_19 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 17 | counties_20 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 201 203 205 207 209 18 | counties_21 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 201 203 205 207 209 211 213 215 217 219 221 223 225 227 229 231 233 235 237 239 19 | counties_22 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 20 | counties_23 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 21 | counties_24 = 001 003 005 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 510 22 | counties_25 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 23 | counties_26 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 24 | counties_27 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 25 | counties_28 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 26 | counties_29 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 186 187 189 195 197 199 201 203 205 207 209 211 213 215 217 219 221 223 225 227 229 510 27 | counties_30 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 28 | counties_31 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 29 | counties_32 = 001 003 005 007 009 011 013 015 017 019 021 023 027 029 031 033 510 30 | counties_33 = 001 003 005 007 009 011 013 015 017 019 31 | counties_34 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 32 | counties_35 = 001 003 005 006 007 009 011 013 015 017 019 021 023 025 027 028 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 33 | counties_36 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 34 | counties_37 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 35 | counties_38 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 36 | counties_39 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 37 | counties_40 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 38 | counties_41 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 39 | counties_42 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 40 | counties_44 = 001 003 005 007 009 41 | counties_45 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 42 | counties_46 = 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 102 103 105 107 109 111 115 117 119 121 123 125 127 129 135 137 43 | counties_47 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 44 | counties_48 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 201 203 205 207 209 211 213 215 217 219 221 223 225 227 229 231 233 235 237 239 241 243 245 247 249 251 253 255 257 259 261 263 265 267 269 271 273 275 277 279 281 283 285 287 289 291 293 295 297 299 301 303 305 307 309 311 313 315 317 319 321 323 325 327 329 331 333 335 337 339 341 343 345 347 349 351 353 355 357 359 361 363 365 367 369 371 373 375 377 379 381 383 385 387 389 391 393 395 397 399 401 403 405 407 409 411 413 415 417 419 421 423 425 427 429 431 433 435 437 439 441 443 445 447 449 451 453 455 457 459 461 463 465 467 469 471 473 475 477 479 481 483 485 487 489 491 493 495 497 499 501 503 505 507 45 | counties_49 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 46 | counties_50 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 47 | counties_51 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 036 037 041 043 045 047 049 051 053 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 125 127 131 133 135 137 139 141 143 145 147 149 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 191 193 195 197 199 510 520 530 540 550 570 580 590 595 600 610 620 630 640 650 660 670 678 680 683 685 690 700 710 720 730 735 740 750 760 770 775 790 800 810 820 830 840 48 | counties_53 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 49 | counties_54 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 50 | counties_55 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 078 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 51 | counties_56 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 52 | counties_72 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 054 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 53 | -------------------------------------------------------------------------------- /config/counties-2018.ini: -------------------------------------------------------------------------------- 1 | counties_01 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 2 | counties_02 = 013 016 020 050 060 068 070 090 100 105 110 122 130 150 158 164 170 180 185 188 195 198 220 230 240 261 275 282 290 3 | counties_04 = 001 003 005 007 009 011 012 013 015 017 019 021 023 025 027 4 | counties_05 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 5 | counties_06 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 6 | counties_08 = 001 003 005 007 009 011 013 014 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 7 | counties_09 = 001 003 005 007 009 011 013 015 8 | counties_10 = 001 003 005 9 | counties_11 = 001 10 | counties_12 = 001 003 005 007 009 011 013 015 017 019 021 023 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 086 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 11 | counties_13 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 201 205 207 209 211 213 215 217 219 221 223 225 227 229 231 233 235 237 239 241 243 245 247 249 251 253 255 257 259 261 263 265 267 269 271 273 275 277 279 281 283 285 287 289 291 293 295 297 299 301 303 305 307 309 311 313 315 317 319 321 12 | counties_15 = 001 003 005 007 009 13 | counties_16 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 14 | counties_17 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 201 203 15 | counties_18 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 16 | counties_19 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 17 | counties_20 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 201 203 205 207 209 18 | counties_21 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 201 203 205 207 209 211 213 215 217 219 221 223 225 227 229 231 233 235 237 239 19 | counties_22 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 20 | counties_23 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 21 | counties_24 = 001 003 005 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 510 22 | counties_25 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 23 | counties_26 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 24 | counties_27 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 25 | counties_28 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 26 | counties_29 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 186 187 189 195 197 199 201 203 205 207 209 211 213 215 217 219 221 223 225 227 229 510 27 | counties_30 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 28 | counties_31 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 29 | counties_32 = 001 003 005 007 009 011 013 015 017 019 021 023 027 029 031 033 510 30 | counties_33 = 001 003 005 007 009 011 013 015 017 019 31 | counties_34 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 32 | counties_35 = 001 003 005 006 007 009 011 013 015 017 019 021 023 025 027 028 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 33 | counties_36 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 34 | counties_37 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 35 | counties_38 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 36 | counties_39 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 37 | counties_40 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 38 | counties_41 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 39 | counties_42 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 40 | counties_44 = 001 003 005 007 009 41 | counties_45 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 42 | counties_46 = 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 102 103 105 107 109 111 115 117 119 121 123 125 127 129 135 137 43 | counties_47 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 44 | counties_48 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 201 203 205 207 209 211 213 215 217 219 221 223 225 227 229 231 233 235 237 239 241 243 245 247 249 251 253 255 257 259 261 263 265 267 269 271 273 275 277 279 281 283 285 287 289 291 293 295 297 299 301 303 305 307 309 311 313 315 317 319 321 323 325 327 329 331 333 335 337 339 341 343 345 347 349 351 353 355 357 359 361 363 365 367 369 371 373 375 377 379 381 383 385 387 389 391 393 395 397 399 401 403 405 407 409 411 413 415 417 419 421 423 425 427 429 431 433 435 437 439 441 443 445 447 449 451 453 455 457 459 461 463 465 467 469 471 473 475 477 479 481 483 485 487 489 491 493 495 497 499 501 503 505 507 45 | counties_49 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 46 | counties_50 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 47 | counties_51 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 036 037 041 043 045 047 049 051 053 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 125 127 131 133 135 137 139 141 143 145 147 149 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 191 193 195 197 199 510 520 530 540 550 570 580 590 595 600 610 620 630 640 650 660 670 678 680 683 685 690 700 710 720 730 735 740 750 760 770 775 790 800 810 820 830 840 48 | counties_53 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 49 | counties_54 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 50 | counties_55 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 055 057 059 061 063 065 067 069 071 073 075 077 078 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 51 | counties_56 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 52 | counties_72 = 001 003 005 007 009 011 013 015 017 019 021 023 025 027 029 031 033 035 037 039 041 043 045 047 049 051 053 054 055 057 059 061 063 065 067 069 071 073 075 077 079 081 083 085 087 089 091 093 095 097 099 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 53 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | SHELL = /bin/bash 2 | .SHELLFLAGS = -o pipefail 3 | 4 | export PGDATABASE PGPORT PGUSER PGHOST 5 | 6 | .NOTPARALLEL: 7 | 8 | unzip = unzip 9 | wget = wget 10 | psql = psql 11 | s2pgflags = -D -s 4269 -g the_geom -W latin1 12 | s2pg = shp2pgsql $(s2pgflags) 13 | temp = temp 14 | 15 | STATEFIPS = 41 16 | YEAR = 2017 17 | 18 | include config/counties-$(YEAR).ini 19 | 20 | sa := $(shell grep $(STATEFIPS) config/stateabbrev.txt | cut -f 2) 21 | countyfips := $(addprefix $(STATEFIPS),$(counties_$(STATEFIPS))) 22 | 23 | base = www2.census.gov/geo/tiger/TIGER$(YEAR) 24 | 25 | place = PLACE/tl_$(YEAR)_$(STATEFIPS)_place 26 | cousub = COUSUB/tl_$(YEAR)_$(STATEFIPS)_cousub 27 | tract = TRACT/tl_$(YEAR)_$(STATEFIPS)_tract 28 | bg = BG/tl_$(YEAR)_$(STATEFIPS)_bg 29 | tabblock = TABBLOCK/tl_$(YEAR)_$(STATEFIPS)_tabblock10 30 | addr = $(foreach f,$(countyfips),ADDR/tl_$(YEAR)_$f_addr) 31 | faces = $(foreach f,$(countyfips),FACES/tl_$(YEAR)_$f_faces) 32 | edges = $(foreach f,$(countyfips),EDGES/tl_$(YEAR)_$f_edges) 33 | featnames = $(foreach f,$(countyfips),FEATNAMES/tl_$(YEAR)_$f_featnames) 34 | state = STATE/tl_$(YEAR)_us_state 35 | county = COUNTY/tl_$(YEAR)_us_county 36 | zcta = ZCTA5/tl_$(YEAR)_us_zcta510 37 | shps = $(cousub) $(place) $(tract) $(bg) $(tabblock) $(addr) $(faces) $(edges) $(state) $(county) $(zcta) 38 | dbfs = $(featnames) 39 | files = $(shps) $(dbfs) 40 | 41 | layers = tract bg tabblock cousub place faces featnames edges addr 42 | 43 | tables = $(layers) zip_lookup_base zip_state zip_state_loc 44 | 45 | .PHONY: default $(layers) post-% load-% preload-% stage clean clean-% download 46 | 47 | default: $(layers) 48 | 49 | nation: state county zcta 50 | 51 | $(layers) state county zcta: %: post-% 52 | 53 | post-cousub: load-cousub 54 | $(psql) -c "ALTER TABLE tiger_data.$(sa)_cousub ADD CONSTRAINT chk_statefp CHECK (statefp = '$(STATEFIPS)')" 55 | $(psql) -c "CREATE INDEX tiger_data_$(sa)_cousub_the_geom_gist ON tiger_data.$(sa)_cousub USING gist(the_geom);" 56 | $(psql) -c "CREATE INDEX idx_tiger_data_$(sa)_cousub_countyfp ON tiger_data.$(sa)_cousub USING btree(countyfp);" 57 | 58 | post-place: load-place 59 | $(psql) -c "CREATE INDEX idx_$(sa)_place_soundex_name ON tiger_data.$(sa)_place USING btree (soundex(name));" 60 | $(psql) -c "CREATE INDEX tiger_data_$(sa)_place_the_geom_gist ON tiger_data.$(sa)_place USING gist(the_geom);" 61 | $(psql) -c "ALTER TABLE tiger_data.$(sa)_place ADD CONSTRAINT chk_statefp CHECK (statefp = '$(STATEFIPS)');" 62 | 63 | post-faces: load-faces 64 | $(psql) -c "CREATE INDEX tiger_data_$(sa)_faces_the_geom_gist ON tiger_data.$(sa)_faces USING gist(the_geom);" 65 | $(psql) -c "CREATE INDEX idx_tiger_data_$(sa)_faces_tfid ON tiger_data.$(sa)_faces USING btree (tfid);" 66 | $(psql) -c "CREATE INDEX idx_tiger_data_$(sa)_faces_countyfp ON tiger_data.$(sa)_faces USING btree (countyfp);" 67 | $(psql) -c "ALTER TABLE tiger_data.$(sa)_faces ADD CONSTRAINT chk_statefp CHECK (statefp = '$(STATEFIPS)');" 68 | $(psql) -c "vacuum analyze tiger_data.$(sa)_faces;" 69 | 70 | post-featnames: load-featnames 71 | $(psql) -c "CREATE INDEX idx_tiger_data_$(sa)_featnames_snd_name ON tiger_data.$(sa)_featnames USING btree (soundex(name));" 72 | $(psql) -c "CREATE INDEX idx_tiger_data_$(sa)_featnames_lname ON tiger_data.$(sa)_featnames USING btree (lower(name));" 73 | $(psql) -c "CREATE INDEX idx_tiger_data_$(sa)_featnames_tlid_statefp ON tiger_data.$(sa)_featnames USING btree (tlid,statefp);" 74 | $(psql) -c "ALTER TABLE tiger_data.$(sa)_featnames ADD CONSTRAINT chk_statefp CHECK (statefp = '$(STATEFIPS)');" 75 | $(psql) -c "vacuum analyze tiger_data.$(sa)_featnames;" 76 | 77 | post-edges: load-edges 78 | $(psql) -c "ALTER TABLE tiger_data.$(sa)_edges ADD CONSTRAINT chk_statefp CHECK (statefp = '$(STATEFIPS)');" 79 | $(psql) -c "CREATE INDEX idx_tiger_data_$(sa)_edges_tlid ON tiger_data.$(sa)_edges USING btree (tlid);" 80 | $(psql) -c "CREATE INDEX idx_tiger_data_$(sa)_edgestfidr ON tiger_data.$(sa)_edges USING btree (tfidr);" 81 | $(psql) -c "CREATE INDEX idx_tiger_data_$(sa)_edges_tfidl ON tiger_data.$(sa)_edges USING btree (tfidl);" 82 | $(psql) -c "CREATE INDEX idx_tiger_data_$(sa)_edges_countyfp ON tiger_data.$(sa)_edges USING btree (countyfp);" 83 | $(psql) -c "CREATE INDEX tiger_data_$(sa)_edges_the_geom_gist ON tiger_data.$(sa)_edges USING gist(the_geom);" 84 | $(psql) -c "CREATE INDEX idx_tiger_data_$(sa)_edges_zipl ON tiger_data.$(sa)_edges USING btree (zipl);" 85 | $(psql) -c "CREATE TABLE tiger_data.$(sa)_zip_state_loc(CONSTRAINT pk_$(sa)_zip_state_loc PRIMARY KEY(zip,stusps,place)) INHERITS(tiger.zip_state_loc);" 86 | $(psql) -c "INSERT INTO tiger_data.$(sa)_zip_state_loc(zip,stusps,statefp,place) SELECT DISTINCT e.zipl, '$(sa)', '$(STATEFIPS)', p.name FROM tiger_data.$(sa)_edges AS e INNER JOIN tiger_data.$(sa)_faces AS f ON (e.tfidl = f.tfid OR e.tfidr = f.tfid) INNER JOIN tiger_data.$(sa)_place As p ON(f.statefp = p.statefp AND f.placefp = p.placefp ) WHERE e.zipl IS NOT NULL;" 87 | $(psql) -c "CREATE INDEX idx_tiger_data_$(sa)_zip_state_loc_place ON tiger_data.$(sa)_zip_state_loc USING btree(soundex(place));" 88 | $(psql) -c "ALTER TABLE tiger_data.$(sa)_zip_state_loc ADD CONSTRAINT chk_statefp CHECK (statefp = '$(STATEFIPS)');" 89 | $(psql) -c "vacuum analyze tiger_data.$(sa)_edges;" 90 | $(psql) -c "vacuum analyze tiger_data.$(sa)_zip_state_loc;" 91 | $(psql) -c "CREATE TABLE tiger_data.$(sa)_zip_lookup_base(CONSTRAINT pk_$(sa)_zip_state_loc_city PRIMARY KEY(zip,state, county, city, statefp)) INHERITS(tiger.zip_lookup_base);" 92 | $(psql) -c "INSERT INTO tiger_data.$(sa)_zip_lookup_base(zip,state,county,city, statefp) SELECT DISTINCT e.zipl, '$(sa)', c.name,p.name,'$(STATEFIPS)' FROM tiger_data.$(sa)_edges AS e INNER JOIN tiger.county As c ON (e.countyfp = c.countyfp AND e.statefp = c.statefp AND e.statefp = '$(STATEFIPS)') INNER JOIN tiger_data.$(sa)_faces AS f ON (e.tfidl = f.tfid OR e.tfidr = f.tfid) INNER JOIN tiger_data.$(sa)_place As p ON(f.statefp = p.statefp AND f.placefp = p.placefp ) WHERE e.zipl IS NOT NULL;" 93 | $(psql) -c "ALTER TABLE tiger_data.$(sa)_zip_lookup_base ADD CONSTRAINT chk_statefp CHECK (statefp = '$(STATEFIPS)');" 94 | $(psql) -c "CREATE INDEX idx_tiger_data_$(sa)_zip_lookup_base_citysnd ON tiger_data.$(sa)_zip_lookup_base USING btree(soundex(city));" 95 | $(psql) -c "VACUUM ANALYZE tiger_data.$(sa)_zip_lookup_base" 96 | 97 | post-addr: load-addr 98 | $(psql) -c "ALTER TABLE tiger_data.$(sa)_addr ADD CONSTRAINT chk_statefp CHECK (statefp = '$(STATEFIPS)');" 99 | $(psql) -c "CREATE INDEX idx_tiger_data_$(sa)_addr_least_address ON tiger_data.$(sa)_addr USING btree (least_hn(fromhn,tohn) );" 100 | $(psql) -c "CREATE INDEX idx_tiger_data_$(sa)_addr_tlid_statefp ON tiger_data.$(sa)_addr USING btree (tlid, statefp);" 101 | $(psql) -c "CREATE INDEX idx_tiger_data_$(sa)_addr_zip ON tiger_data.$(sa)_addr USING btree (zip);" 102 | $(psql) -c "CREATE TABLE tiger_data.$(sa)_zip_state(CONSTRAINT pk_$(sa)_zip_state PRIMARY KEY(zip,stusps)) INHERITS(tiger.zip_state); " 103 | $(psql) -c "INSERT INTO tiger_data.$(sa)_zip_state(zip,stusps,statefp) SELECT DISTINCT zip, '$(sa)', '$(STATEFIPS)' FROM tiger_data.$(sa)_addr WHERE zip is not null;" 104 | $(psql) -c "ALTER TABLE tiger_data.$(sa)_zip_state ADD CONSTRAINT chk_statefp CHECK (statefp = '$(STATEFIPS)');" 105 | $(psql) -c "vacuum analyze tiger_data.$(sa)_addr;" 106 | 107 | post-tract: load-tract 108 | $(psql) -c "CREATE INDEX tiger_data_$(sa)_tract_the_geom_gist ON tiger_data.$(sa)_tract USING gist(the_geom);" 109 | $(psql) -c "ALTER TABLE tiger_data.$(sa)_tract ADD CONSTRAINT chk_statefp CHECK (statefp = '$(STATEFIPS)');" 110 | $(psql) -c "VACUUM ANALYZE tiger_data.$(sa)_tract;" 111 | 112 | post-bg: load-bg 113 | $(psql) -c "ALTER TABLE tiger_data.$(sa)_bg ADD CONSTRAINT chk_statefp CHECK (statefp = '$(STATEFIPS)');" 114 | $(psql) -c "CREATE INDEX tiger_data_$(sa)_bg_the_geom_gist ON tiger_data.$(sa)_bg USING gist(the_geom);" 115 | $(psql) -c "VACUUM ANALYZE tiger_data.$(sa)_bg;" 116 | 117 | post-tabblock: load-tabblock 118 | $(psql) -c "ALTER TABLE tiger_data.$(sa)_tabblock ADD CONSTRAINT chk_statefp CHECK (statefp = '$(STATEFIPS)')" 119 | $(psql) -c "CREATE INDEX tiger_data_$(sa)_tabblock_the_geom_gist ON tiger_data.$(sa)_tabblock USING gist(the_geom)" 120 | $(psql) -c "VACUUM ANALYZE tiger_data.$(sa)_tabblock" 121 | 122 | load-place: $(temp)/$(place).shp | stage 123 | $(psql) -c "CREATE TABLE tiger_data.$(sa)_place ( CONSTRAINT pk_$(sa)_place PRIMARY KEY (plcidfp) ) INHERITS (tiger.place);" 124 | $(s2pg) -c $< tiger_staging.$(sa)_place | $(psql) 125 | $(psql) -c "ALTER TABLE tiger_staging.$(sa)_place RENAME geoid TO plcidfp; SELECT loader_load_staged_data(lower('$(sa)_place'), lower('$(sa)_place')); ALTER TABLE tiger_data.$(sa)_place ADD CONSTRAINT uidx_$(sa)_place_gid UNIQUE (gid);" 126 | 127 | load-cousub: $(temp)/$(cousub).shp | stage 128 | $(psql) -c "CREATE TABLE tiger_data.$(sa)_cousub (CONSTRAINT pk_$(sa)_cousub PRIMARY KEY (cosbidfp), CONSTRAINT uidx_$(sa)_cousub_gid UNIQUE (gid)) INHERITS(tiger.cousub);" 129 | $(s2pg) $< tiger_staging.$(sa)_cousub | $(psql) 130 | $(psql) -c "ALTER TABLE tiger_staging.$(sa)_cousub RENAME geoid TO cosbidfp" 131 | $(psql) -c "SELECT loader_load_staged_data(lower('$(sa)_cousub'), lower('$(sa)_cousub'))" 132 | 133 | load-tract: $(temp)/$(tract).shp | stage 134 | $(psql) -c "CREATE TABLE tiger_data.$(sa)_tract \ 135 | (CONSTRAINT pk_$(sa)_tract PRIMARY KEY (tract_id)) INHERITS (tiger.tract)" 136 | $(s2pg) $< tiger_staging.$(sa)_tract | $(psql) 137 | $(psql) -c "ALTER TABLE tiger_staging.$(sa)_tract RENAME geoid TO tract_id" 138 | $(psql) -c "SELECT loader_load_staged_data(lower('$(sa)_tract'), lower('$(sa)_tract')); " 139 | 140 | load-bg: $(temp)/$(bg).shp | stage 141 | $(psql) -c "CREATE TABLE tiger_data.$(sa)_bg \ 142 | (CONSTRAINT pk_$(sa)_bg PRIMARY KEY (bg_id)) INHERITS (tiger.bg)" 143 | $(s2pg) $< tiger_staging.$(sa)_bg | $(psql) 144 | $(psql) -c "ALTER TABLE tiger_staging.$(sa)_bg RENAME geoid TO bg_id" 145 | $(psql) -c "SELECT loader_load_staged_data(lower('$(sa)_bg'), lower('$(sa)_bg')); " 146 | 147 | load-tabblock: $(temp)/$(tabblock).shp | stage 148 | $(psql) -c "CREATE TABLE tiger_data.$(sa)_tabblock \ 149 | (CONSTRAINT pk_$(sa)_tabblock PRIMARY KEY (tabblock_id)) INHERITS (tiger.tabblock)" 150 | $(s2pg) $< tiger_staging.$(sa)_tabblock10 | $(psql) 151 | $(psql) -c "ALTER TABLE tiger_staging.$(sa)_tabblock10 RENAME geoid10 TO tabblock_id" 152 | $(psql) -c "SELECT loader_load_staged_data(lower('$(sa)_tabblock10'), lower('$(sa)_tabblock'))" 153 | 154 | load-addr: $(addprefix load-,$(addr)) 155 | 156 | load-edges: $(addprefix load-,$(edges)) 157 | 158 | load-faces: $(addprefix load-,$(faces)) 159 | 160 | load-featnames: $(addprefix load-,$(featnames)) 161 | 162 | $(addprefix load-,$(faces)): load-%: $(temp)/%.shp | preload-faces stage 163 | $(s2pg) $< tiger_staging.$(sa)_faces | $(psql) 164 | $(psql) -c "SELECT loader_load_staged_data(lower('$(sa)_faces'), lower('$(sa)_faces'));" 165 | 166 | $(addprefix load-,$(edges)): load-%: $(temp)/%.shp | preload-edges stage 167 | $(s2pg) $< tiger_staging.$(sa)_edges | $(psql) 168 | $(psql) -c "SELECT loader_load_staged_data(lower('$(sa)_edges'), lower('$(sa)_edges'));" 169 | 170 | $(addprefix load-,$(featnames)): load-%: $(temp)/%.dbf | preload-featnames stage 171 | $(s2pg) -n $< tiger_staging.$(sa)_featnames | $(psql) 172 | $(psql) -c "SELECT loader_load_staged_data(lower('$(sa)_featnames'), lower('$(sa)_featnames'));" 173 | 174 | $(addprefix load-,$(addr)): load-%: $(temp)/%.shp | preload-addr stage 175 | $(s2pg) -n $< tiger_staging.$(sa)_addr | $(psql) 176 | $(psql) -c "SELECT loader_load_staged_data(lower('$(sa)_addr'), lower('$(sa)_addr'));" 177 | 178 | preload-faces: | stage 179 | $(psql) -c "CREATE TABLE tiger_data.$(sa)_faces ( \ 180 | CONSTRAINT pk_$(sa)_faces PRIMARY KEY (gid)) INHERITS (tiger.faces);" 181 | 182 | preload-featnames: | stage 183 | $(psql) -c "CREATE TABLE tiger_data.$(sa)_featnames ( \ 184 | CONSTRAINT pk_$(sa)_featnames PRIMARY KEY (gid)) INHERITS (tiger.featnames); \ 185 | ALTER TABLE tiger_data.$(sa)_featnames ALTER COLUMN statefp SET DEFAULT '$(STATEFIPS)';" 186 | 187 | preload-addr: | stage 188 | $(psql) -c "CREATE TABLE tiger_data.$(sa)_addr \ 189 | ( CONSTRAINT pk_$(sa)_addr PRIMARY KEY (gid)) INHERITS (tiger.addr); \ 190 | ALTER TABLE tiger_data.$(sa)_addr ALTER COLUMN statefp SET DEFAULT '$(STATEFIPS)';" 191 | 192 | preload-edges: | stage 193 | $(psql) -c "CREATE TABLE tiger_data.$(sa)_edges( \ 194 | CONSTRAINT pk_$(sa)_edges PRIMARY KEY (gid)) INHERITS (tiger.edges);" 195 | 196 | stage: 197 | $(psql) -c "DROP SCHEMA IF EXISTS tiger_staging CASCADE;" 198 | $(psql) -c "CREATE SCHEMA tiger_staging;" 199 | 200 | # National tables 201 | 202 | post-state: load-state 203 | $(psql) -c "CREATE INDEX tiger_data_state_all_the_geom_gist ON tiger_data.state_all USING gist (the_geom)" 204 | $(psql) -c "VACUUM ANALYZE tiger_data.state_all" 205 | 206 | load-state: $(temp)/$(state).shp | stage 207 | $(psql) -c "CREATE TABLE tiger_data.state_all ( \ 208 | CONSTRAINT pk_state_all PRIMARY KEY (statefp), \ 209 | CONSTRAINT uidx_state_all_stusps UNIQUE (stusps), \ 210 | CONSTRAINT uidx_state_all_gid UNIQUE (gid) ) INHERITS (tiger.state)" 211 | $(s2pg) $< tiger_staging.state | $(psql) 212 | $(psql) -c "SELECT loader_load_staged_data(lower('state'), lower('state_all'))" 213 | 214 | post-zcta: load-zcta 215 | $(psql) -c "CREATE TABLE tiger_data.zcta5_all ( \ 216 | CONSTRAINT pk_zcta5_all PRIMARY KEY (zcta5ce,statefp), \ 217 | CONSTRAINT uidx_zcta5_raw_all_gid UNIQUE (gid) ) INHERITS (tiger.zcta5);" 218 | $(psql) -c "INSERT INTO tiger_data.zcta5_all (statefp, zcta5ce, classfp, mtfcc, funcstat, aland, awater, intptlat, intptlon, partflg, the_geom) \ 219 | SELECT s.statefp, z.zcta5, z.classfp, z.mtfcc, z.funcstat, z.aland, z.awater, z.intptlat, z.intptlon, \ 220 | CASE WHEN ST_Covers(s.the_geom, z.the_geom) THEN 'N' ELSE 'Y' END, \ 221 | ST_Multi(ST_SnapToGrid( \ 222 | CASE WHEN ST_Covers(s.the_geom, z.the_geom) THEN z.the_geom \ 223 | ELSE ST_CollectionExtract(ST_Intersection(s.the_geom, z.the_geom), 3) END, \ 224 | 0.000001)) AS geom \ 225 | FROM tiger_data.zcta5_raw AS z \ 226 | INNER JOIN tiger.state AS s ON (ST_Covers(s.the_geom, z.the_geom) OR ST_Overlaps(s.the_geom, z.the_geom))" 227 | $(psql) -c "DROP TABLE tiger_data.zcta5_raw" 228 | $(psql) -c "CREATE INDEX idx_tiger_data_zcta5_all_the_geom_gist ON tiger_data.zcta5_all USING gist (the_geom)" 229 | 230 | load-zcta: $(temp)/$(zcta).shp | stage 231 | $(psql) -c "DROP TABLE IF EXISTS tiger_data.zcta5_raw;" 232 | $(psql) -c "CREATE TABLE tiger_data.zcta5_raw ( \ 233 | zcta5 character varying(5), \ 234 | classfp character varying(2), \ 235 | mtfcc character varying(5), \ 236 | funcstat character varying(1), \ 237 | aland double precision, \ 238 | awater double precision, \ 239 | intptlat character varying(11), \ 240 | intptlon character varying(12), \ 241 | the_geom geometry(MultiPolygon,4269) )" 242 | $(s2pg) $< tiger_staging.zcta510 | $(psql) 243 | $(psql) -c "SELECT loader_load_staged_data(lower('zcta510'), lower('zcta5_raw'))" 244 | 245 | post-county: load-county 246 | $(psql) -c "CREATE INDEX tiger_data_county_the_geom_gist ON tiger_data.county_all USING gist (the_geom)" 247 | $(psql) -c "CREATE UNIQUE INDEX uidx_tiger_data_county_all_statefp_countyfp ON tiger_data.county_all USING btree(statefp, countyfp)" 248 | $(psql) -c "CREATE TABLE tiger_data.county_all_lookup (CONSTRAINT pk_county_all_lookup PRIMARY KEY (st_code, co_code)) INHERITS (tiger.county_lookup)" 249 | $(psql) -c "VACUUM ANALYZE tiger_data.county_all" 250 | $(psql) -c "INSERT INTO tiger_data.county_all_lookup(st_code, state, co_code, name) \ 251 | SELECT statefp::integer, s.abbrev, c.countyfp::integer, c.name FROM tiger_data.county_all as c INNER JOIN state_lookup as s USING (statefp)" 252 | $(psql) -c "VACUUM ANALYZE tiger_data.county_all_lookup" 253 | 254 | load-county: $(temp)/$(county).shp | stage 255 | $(psql) -c "CREATE TABLE tiger_data.county_all( \ 256 | CONSTRAINT pk_tiger_data_county_all PRIMARY KEY (cntyidfp), \ 257 | CONSTRAINT uidx_tiger_data_county_all_gid UNIQUE (gid)) INHERITS(tiger.county)" 258 | $(s2pg) $< tiger_staging.county | $(psql) 259 | $(psql) -c "ALTER TABLE tiger_staging.county RENAME geoid TO cntyidfp; SELECT loader_load_staged_data(lower('county'), lower('county_all'))" 260 | 261 | download: $(foreach z,$(files),$(base)/$z.zip) \ 262 | $(foreach z,$(shps),$(temp)/$z.shp) \ 263 | $(foreach z,$(dbfs),$(temp)/$z.dbf) 264 | 265 | $(foreach z,$(files),$(temp)/$z.dbf): $(temp)/%.dbf: $(base)/%.zip | $(temp) 266 | @mkdir -p $(@D) 267 | $(unzip) -q -o -d $(@D) $< 268 | @touch $@ 269 | 270 | $(foreach z,$(files),$(temp)/$z.shp): $(temp)/%.shp: $(base)/%.zip | $(temp) 271 | @mkdir -p $(@D) 272 | $(unzip) -q -o -d $(@D) $< 273 | @touch $@ 274 | 275 | $(foreach z,$(files),$(base)/$z.zip): $(base)/%.zip: 276 | $(wget) -q -t 5 --mirror --reject=html https://$@ 277 | 278 | $(temp): ; mkdir -p $(temp) 279 | 280 | # Estimate rows and size for each table, 281 | # show blank rows for missing tables. 282 | count: 283 | @$(psql) -qc "WITH t as (SELECT '$(sa)_' || unnest(string_to_array('$(tables)', ' ')) relname) \ 284 | SELECT relname AS table, \ 285 | c.reltuples::bigint AS row_estimate, \ 286 | pg_size_pretty(pg_total_relation_size(c.oid::regclass)) AS total, \ 287 | pg_size_pretty(pg_indexes_size(c.oid::regclass)) AS index \ 288 | FROM t \ 289 | LEFT JOIN pg_class c USING (relname) \ 290 | LEFT JOIN pg_namespace n ON n.oid = c.relnamespace \ 291 | WHERE COALESCE(nspname, 'tiger_data') = 'tiger_data' \ 292 | ORDER BY relname ASC" 293 | 294 | clean: $(addprefix clean-,$(tables)) 295 | 296 | clean-%: ; $(psql) -c "drop table if exists tiger_data.$(sa)_$*" 297 | --------------------------------------------------------------------------------