Примеры использования инструментов PostGIS: различия между версиями
Строка 53: | Строка 53: | ||
Аналогично созданию, только dropdb, вместо createdb | Аналогично созданию, только dropdb, вместо createdb | ||
<pre>dropdb -U postgres testdb</pre> | <pre>dropdb -U postgres testdb</pre> | ||
Если к базе есть подключения, но ее всё равно нужно удалить, нужно сначала удалить подключения: | |||
Если версия PostgreSQL 9.1 и ниже: | |||
<pre>SELECT pg_terminate_backend(pg_stat_activity.procpid) | |||
FROM pg_stat_activity | |||
WHERE pg_stat_activity.datname = 'testdb';</pre> | |||
Если версия PostgreSQL 9.2 и выше: | |||
<pre>SELECT pg_terminate_backend(pg_stat_activity.pid) | |||
FROM pg_stat_activity | |||
WHERE pg_stat_activity.datname = 'testdb';</pre> |
Версия от 07:50, 3 мая 2013
Еще заготовка шпаргалки
Установка
sudo apt-get install postgis
В Ubuntu 12.04 по-умолчанию все ставится в /usr/share/postgresql/9.1/contrib/postgis-2.0
Создание базы
В шелл (база создатся на пользователя pgsql):
createdb -U postgres testdb
или
sudo -u postgres createdb testdb
Начало работы
Создание пользователя
CREATE USER admin PASSWORD 'admin';
Назначение его администратором:
ALTER DATABASE testdb OWNER TO admin;
Добавление функций PostGIS и систем координат (нужно знать, куда установился postgis):
psql -U pgsql -d testdb -f /usr/local/share/postgis/postgis.sql psql -U pgsql -d testdb -f /usr/local/share/postgis/spatial_ref_sys.sql
или
sudo -u postgres psql -d testdb -f /usr/share/postgresql/9.1/contrib/postgis-2.0/postgis.sql sudo -u postgres psql -d testdb -f /usr/share/postgresql/9.1/contrib/postgis-2.0/spatial_ref_sys.sql
Загрузка данных
shp2pgsql
Загрузка данных в базу проводится в 2 этапа, сначала слой выгружается в sql, а затем он грузится в базу
shp2pgsql -i -D -s 4326 -W cp1251 topo250m-rus.shp > topo250-rus.sql psql -U pgsql -f topo250-rus.sql -d testdb
ogr2ogr
Права
Разрешение подключаться к определенной таблице базы пользователю с определенным именем (пользователь уже заведен в базе):
psql -U pgsql -d gen -c 'GRANT SELECT ON TABLE "topo250m-rus" TO guest;'
Удаление базы
Аналогично созданию, только dropdb, вместо createdb
dropdb -U postgres testdb
Если к базе есть подключения, но ее всё равно нужно удалить, нужно сначала удалить подключения:
Если версия PostgreSQL 9.1 и ниже:
SELECT pg_terminate_backend(pg_stat_activity.procpid) FROM pg_stat_activity WHERE pg_stat_activity.datname = 'testdb';
Если версия PostgreSQL 9.2 и выше:
SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = 'testdb';