Установите PostGIS и TIGER Data в Ubuntu 12.04

9

Может ли кто-нибудь написать краткое, хотя и тупое руководство для идиота по установке postgis и загрузке национальных данных Tiger в Ubuntu? Я попробовал несколько руководств, а именно, http://wiki.bitnami.com/@api/deki/pages/302/pdf , но мне не очень повезло. Я прошу прощения за открытый характер этого вопроса.

stat_novice
источник
Какую версию PostGIS вы используете? Это версия с 12.04, или вы обновили? Если вы можете запустить последнюю версию PostGIS, 2.1.1. Геокодер TIGER, который поставляется с этой версией, намного лучше, чем версия, которая работает с PostGIS 1.5.
HeyOverThere
Я действительно использую 2.1.1. У меня включены все необходимые расширения (fuzzystrmatch, postgis, postgi_tiger_geocoder, postgis_topology) и схема тигра. Теперь мне просто нужно загрузить данные национальной переписи.
stat_novice

Ответы:

12

Поскольку у вас есть PostGIS 2.1.1, вы впереди игры. Убедитесь, что у вас установлен wget, именно он будет загружать данные с FTP-сайта Census.

Создайте каталог gisdata с:

sudo mkdir /gisdata

Используйте команды chown и chgrp, чтобы изменить владельца и группу / gisdata, чтобы ваш обычный пользователь мог читать и записывать в / gisdata.

Запустите psql и подключитесь к вашей базе данных. Однажды в PSQL использовать

\a

а также

\t

чтобы результаты запроса были правильно отформатированы.

Я забыл эту часть изначально! Прежде чем вы сможете использовать скрипт загрузчика, вам нужно сделать уборку дома. Прежде всего, убедитесь, что схема тигра находится в вашем пути поиска . Затем проверьте значения в tiger.loader_platform и tiger.loader_variables. Эти две таблицы управляют переменными для скрипта загрузчика, такими как имя пользователя и пароль. Я обычно просто редактирую их в PGAdmin. Затем вам нужно будет запустить скрипт, который заполняет таблицы поиска и другие фоновые данные, которые понадобятся геокодеру. Сначала установите выходной файл:

\o nation_generator.sh

затем запустите:

SELECT loader_generate_nation_script('sh'); 

Затем выйдите из psql и запустите файл:

sh ./nation_generator.sh

Затем вернитесь в psql и введите:

\o loader_script.sh

выводить результаты запроса в текстовый файл с именем loader_script.sql. Затем выполните функцию, которая генерирует скрипт загрузчика:

SELECT loader_generate_script(ARRAY['DC','RI'], 'sh');

Это запрос, чей вывод будет перенаправлен на loader_script.sql. Замените «DC» и «RI» двухбуквенными сокращениями состояний, которые вы хотите загрузить.

Выйдите из psql и запустите скрипт с этой командой:

sh ./loader_script.sh

Это позволит загрузить файлы для выбранного вами состояния, распаковать их и импортировать данные в базу данных PostGIS.

HeyOverThere
источник
HeyOverThere: Спасибо за подробный ответ. В то время как в psql ввод "\ o loader_script.sql" приводит к отказу в разрешении. Есть идеи, почему? Я вошел как пользователь postgres.
stat_novice
Сожалею! Я забыл, что большинство людей не используют свои обычные учетные записи для запуска psql. Вам нужно будет сохранить скрипт где-нибудь, чтобы у вашего пользователя postgres было разрешение на запись. Проще всего использовать \ o /tmp/loader_script.sql, который сохранит файл в / tmp. Затем для запуска файла это будет sh ./tmp/loader_script.sql.
HeyOverThere
Это сработало! Тем не менее, теперь я получаю это сообщение об ошибке: «Ни одна функция не соответствует заданному имени и типу аргумента. Возможно, вам придется добавить явное приведение типов». при выполнении запроса для скрипта загрузчика. Кроме того, если я правильно помню, мне придется редактировать этот файл, правильно добавить мое имя пользователя и БД?
stat_novice
Двойной извините! Я тоже забыл об этом! Первым делом проверьте путь поиска в вашей базе данных, убедитесь, что там есть схема тигра. Второе, что нужно проверить, это то, что в схеме тигра есть таблицы, tiger.loader_platform и tiger.loader_variables, которые сообщают вашим сценариям ваш пароль и другую информацию. Используйте PGAdmin для их редактирования. Наконец, перед запуском скрипта загрузчика запустите функцию loader_generate_nation, чтобы настроить все таблицы, которые нужны геокодеру. Я отредактирую свой ответ, чтобы заполнить эти пробелы.
HeyOverThere
HeyOverThere: Вы бог среди мужчин / женщин. Это почти работает. Сценарии нации и штата выполняются, и они отправляют по FTP веб-сайт переписи и, похоже, извлекают файлы, но после их завершения они выдают некоторые из следующих сообщений об ошибке: "loader_script.sql: 408: loader_script.sql: / usr / pgsql- 9.0 / bin / psql: не найдено ". Более того, в схеме tiger_data нет данных. Нужно ли редактировать файлы, а именно эту строку: "export PGBIN = / usr / pgsql-9.0 / bin"?
stat_novice
0

На этом сайте есть несколько ответов, касающихся установки PostGIS. Вот один , и решение Ника Готье также превосходно. Чтобы повторить исчерпывающий совет в этом ...

Установка PostGIS стала намного проще в Ubuntu 12.04 и более поздних версиях. Как правило, есть два способа: установка из PPA и сборка из исходного кода. Ниже приведены общие сценарии оболочки, которые я использую для каждого случая.

Установка из PPA ... Я использую ubuntugis-unstablePPA.

# Add Ubuntu GIS PPA and update, upgrade
sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable -y && sudo apt-get update && sudo apt-get upgrade

# Install PostGIS
sudo apt-get install postgis

# Recommends: sudo apt-get install postgresql-9.1-postgis-2.0

# Configure template database
POSTGIS_TEMPLATE=postgis-2.0.1
POSTGRESQL_VER=9.1
sudo su -c "createdb $POSTGIS_TEMPLATE" - postgres 
sudo -u postgres psql -d postgres -c "UPDATE pg_database SET datistemplate='true' WHERE datname='$POSTGIS_TEMPLATE';" 
sudo -u postgres psql -d $POSTGIS_TEMPLATE -f /usr/share/postgresql/$POSTGRESQL_VER/contrib/postgis-2.0/postgis.sql
sudo -u postgres psql -d $POSTGIS_TEMPLATE -c "GRANT ALL ON geometry_columns TO PUBLIC;"
sudo -u postgres psql -d $POSTGIS_TEMPLATE -c "GRANT SELECT ON spatial_ref_sys TO PUBLIC;"

Сборка из исходного кода ... Это предполагает PostGIS 2.1 и PostgreSQL 9.1, но может быть любой последней версией обоих; изменить по необходимости.

cd /usr/local/ && sudo mkdir postgis && sudo chown [username] postgis && cd postgis
wget http://download.osgeo.org/postgis/source/postgis-2.1.0.tar.gz
tar -xzvf postgis-2.1.0.tar.gz && rm postgis-2.1.0.tar.gz && cd postgis-2.1.0
sudo ./configure --with-projdir=/usr/local/proj/v4.7.0/
make
sudo make install

# Configure template database
POSTGIS_TEMPLATE=postgis-2.1.0
POSTGRESQL_VER=9.1
sudo su -c "createdb $POSTGIS_TEMPLATE" - postgres 
sudo -u postgres psql -d postgres -c "UPDATE pg_database SET datistemplate='true' WHERE datname='$POSTGIS_TEMPLATE';" 
sudo -u postgres psql -d $POSTGIS_TEMPLATE -f /usr/share/postgresql/$POSTGRESQL_VER/contrib/postgis-2.0/postgis.sql
sudo -u postgres psql -d $POSTGIS_TEMPLATE -c "GRANT ALL ON geometry_columns TO PUBLIC;"
sudo -u postgres psql -d $POSTGIS_TEMPLATE -c "GRANT SELECT ON spatial_ref_sys TO PUBLIC;"

Вы заметите тему между ними; все еще необходимо создать базу данных шаблонов и заполнить spatial_ref_sysтаблицу.

Что касается настройки с TIGER , следуйте инструкциям по загрузке данных TIGER в документации PostGIS 2.x, глава 2 .

Артур
источник
Артур: У меня установлен PostGIS 2.1, и postgis.sql не существует в следующем каталоге: /usr/share/postgresql/9.3/contrib/postgis-2.1
stat_novice