Введення в postgis - osgeo-live 9

PostGIS додає додаткову функціональність до СУБД PostgreSQL. PostGIS розширює можливості PostgreSQL з точки зору зберігання просторових даних, запитів до них і управління ними. В даному "введення" будуть описані основні функції PostgreSQL і PostGIS.

Дане «введення» описує:

  • Як створити просторову базу даних і робити запити до неї з командного рядка і з Quantum GIS.
  • Керувати даними з клієнта pgAdmin.

PostgreSQL, як і інші СУБД, працює в якості сервера в системі клієнт-сервер. Клієнт відправляє серверу запит і отримує відгук. За таким же принципом працює мережа Інтернет: ваш браузер є клієнтом, посилає запит, а веб-сервер повертає назад веб-сторінку. Запити PostgreSQL виробляються за допомогою мови SQL, відгуками зазвичай є таблиці даних з бази даних.

Нічого не заважає сервера PostgreSQL знаходиться на одному комп'ютері з клієнтом. Ваш клієнт підключається до сервера по внутрішньому IP-інтерфейсу зворотного зв'язку, який не видно для інших комп'ютерів (якщо ви не налаштуєте інакше).

Тут будуть показані три клієнта: клієнт командного рядка, Quantum GIS і графічний клієнт бази даних - pgAdmin.

Клієнти командного рядка запускаються з вікна емулятора термінала. Запустіть емулятор терміналу з меню Програми в розділі Додаткове. Це дасть вам доступ до оболонки командного рядка. Надрукуйте:

натисніть Введення, щоб побачити версію PostgreSQL.

Один сервер PostgreSQL дозволяє організувати роботу, розподіливши її по окремих баз даних. Кожна з баз даних буде працювати в своєму режимі, зі своїми власними таблицями, видами, користувачами, і т.п. При встановленні з'єднання до сервера PostgreSQL ви повинні вказати потрібну базу даних.

Щоб отримати список баз даних, що зберігаються на сервері, надрукуйте команду:

Ви побачите кілька баз даних, що використовуються декількома проектами системи. У цьому введенні буде створена нова база даних.

Список використовує стандартний Unix-pager: натисніть пробіл, щоб перейти на наступну сторінку, b. щоб повернутися, q для виходу і b для виклику довідки.

PostgreSQL надає службову програму для створення бази даних createdb. Ми створимо базу даних за допомогою розширення PostGIS, вказавши використовуваний шаблон. Назвіть базу даних demo. У цьому випадку команда буде виглядати наступним чином:

Ви можете отримати довідку в командою рядку, використовую опцію --help.

Якщо ви запустите команду psql -l. то повинні побачити базу demo в списку баз даних.

Ви можете створити базу даних PostGIS за допомогою мови SQL. Спочатку ми видалимо тільки що створену базу даних за допомогою команди dropdb. потім використовуємо команду psql. щоб отримати інтерпретатор команд SQL:

Ці команди підключать до системної базі даних postgres. яку повинні мати всі сервера. Введіть запит SQL, щоб створити нову базу даних:

Переведіть ваше з'єднання з бази даних postgres на нову базу даних demo. Надалі ви зможете підключатися безпосередньо до бази даних, використовуючи команду psql -d demo. Тут показаний спосіб перемикання за допомогою psql в командному рядку:

Натисніть CTRL + C. якщо підказка psql з'являється після натискання кнопки повернення. Це призведе до очищення введеної інформації. Можливо, вам знадобиться закрити лапки, двокрапка і тп.

Ви повинні побачити інформаційне повідомлення, в якому буде вказано, що ви підключені до бази даних demo.

Далі, додамо PostGIS 2.0:

Щоб перевірити, що все працює, надрукуйте \ dt. ця команда відобразить список таблиць в базі даних. Ви повинні побачити подібний цьому список:

Виведені таблиці підтверджують, що наша база просторова. Таблиця geometry_columns служить для передачі інформації про те, яка з таблиць містить пространсвенности інформацію.

Тепер, маючи просторову базу даних, можна створити кілька просторових таблиць. Спочатку ми створимо звичайну таблицю бази даних, щоб зберігати дані про місто. Ця таблиця буде содержвать два поля - одне числове поле-ідентифікатор, друге - назва міста:

Далі додайте колонку геометрії, що містить дані про місцезнаходження міст. Для зручності назвемо це поле geom (більш ранні версії PostGIS вимагають імені таблиці the_geom). Це поле вказує PostGIS, який тип геометрії має кожен з об'єктів (точки, лінії, полігони і т.п.), яка розмірність (тому що можливі і 3-4 вимірювання - POINTZ, POINTM, POINTZM) і яка система координат. Для даних по містах ми будемо використовувати систему координат EPSG: 4326.

Заглянувши в таблицю міста, ви побачите нову колонку, а також інформацію про те, що в таблиці відсутні рядки.

Щоб додати рядки в таблицю, використовуйте команди SQL. Щоб додати дані геометрії в відповідну колонку, використовуйте функцію PostGIS ST_GeomFromText. щоб конвертувати координати і ідентифікатор референсной системи з текстового формату:

Використовуйте кнопки-стрілки для скасування та редагування командного рядка.

Як ви могли помітити, це швидко набридає. На щастя, існують інші, більш легкі шляхи передачі даних в таблиці PostGIS. Зараз в нашій базі знаходяться три міста, з якими ми можемо почати працювати.

Всі самі звичайні оператори SQL можуть бути використані для вибору даних з таблиці PostGIS:

Це повертає нас безглузді значення координат в шістнадцятковій системі. Якщо ви хочете побачити вашу геометрію в текстовому форматі WKT, використовуйте функцію ST_AsText (the_geom) або ST_AsEwkt (the_geom). Ви також можете використовувати функції ST_X (the_geom), ST_Y (the_geom), щоб отримати числові значення координат.

Ми вже побачили, як отримати геометрію з текстових даних WKT за допомогою функції ST_GeomFromText. Більшість таких функцій починаються з ST ( "просторовий тип") і описані в документації PostGIS. Ми використовуємо одну з них, щоб відповісти на практичне питання: на якій відстані в метрах один від одного знаходяться три міста з назвою Лондон, враховуючи сферичність землі?

Цей запит повертає відстань в метрах між кожною парою міст. Зверніть увагу як частина 'WHERE' запобігає нас від отримання відстані від міста до самого себе (відстань завжди дорівнюватиме нулю) і відстані в зворотному порядку (відстань від Лондона, Англія до Лондона, Онтаріо буде таким же як від Лондона, Онтаріо до Лондона, Англія). Спробуйте ще раз без 'WHERE' і подивіться, що станеться.

Ми також можемо розрахувати відстані на сфері, використовуючи різні функції і вказуючи називання сфероида, параметри головних піввісь і коефіцієнта зворотного стиснення:

Для створення карти з даних PostGIS вам необхідний клієнт, за допомогою якого ви зможете інтерпретувати дані. Багато з відкритих ГІС можуть робити це, наприклад, Quantum GIS, gvSIG, uDig. Далі буде показано, як зробити карту за допомогою Quantum GIS.

Запустіть Quantum GIS і виберіть Add PostGIS layers з меню Шар. Параметри для підключення до даних Natural Earth в PostGIS вже визначені в випадаючому меню З'єднання. Там же ви можете створити нове підключення до сервера і зберігати налаштування для швидкого доступу. Натисніть Edit. якщо хочете побачити, які параметри вказані для даних Natural Earth, або натисніть Connect. щоб продовжити:

Введення в postgis - osgeo-live 9

З'явиться список просторових таблиць бази даних:

Введення в postgis - osgeo-live 9

Виберіть озера ( "Lakes") і натисніть Add внизу (НЕ Load вгорі, яка довантажити параметри підключення бази даних), після чого шар відкриється в QGIS:

Введення в postgis - osgeo-live 9

Ви повинні побачити карту з озерами. QGIS не знає, що це озера, тому, можливо, вони будуть не блакитного кольору. Використовуйте документацію QGIS, щоб дізнатися, як змінити колір. Збільште огляд до групи знаменітаих озер Канади.

Більшість додатків OSGeo підтримують імпорт просторових даних з файлів у базу даних PostGIS. Для демонстрації цього буде використаний QGIS.

Імпорт шейп-файлів в PostGIS через QGIS можна зробити в за допомогою доповнення PostGIS Manager. Щоб встановити його, перейдіть в меню Модулі. далі Завантажити модулі. QGIS завантажить найновішу версію з репозиторію (для цього вам буде потрібно працююче інтернет-з'єднання). Знайдіть PostGIS Manager і натисніть кнопку Install plugin.

Введення в postgis - osgeo-live 9

В меню Модулі повинен з'явитися пункт PostGIS Manager. Для запуску плагіна також можна клікнути на кнопку з логотипом PostGIS (слон з земною кулею), розташованої на панелі.

Введення в postgis - osgeo-live 9
Далі PostGIS Manager буде використаний для імпорту шейп-файлу в базу даних. Ми використовуємо даними про синдром раптової смерті у дітей в Північній Кароліні, які входять в одне з доповнень статистичного пакета R.

З меню Data виберіть опцію Load data from shapefile. Натисніть кнопку. і завантажте шейп-файл sids.shp в пакет R maptools (знаходиться тут: / usr / local / lib / R / site-library /):

Не зраджуючи налаштувань у вікні, натисніть Load:

Введення в postgis - osgeo-live 9

Шейп-файл повинен бути імпортований в PostGIS без помилок. Закрийте менеджер PostGIS і поверніться в головне вікно QGIS.

Довантажити дані SIDS за допомогою опції "Додати шар PostGIS". Змінивши порядок шарів і заливок, ви зможете створити фонову картограму (хороплет), що відображає кількість дітей, померлих від синдрому раптової смерті в Північній Кароліні.

Введення в postgis - osgeo-live 9

Ви можете використовувати графічний клієнт бази даних pgAdmin III з системного меню "Бази даних", щоб зробити запит або змінити атрибутивную інформацію в базі даних. Це офіційний клієнт для PostgreSQL, що дозволяє використовувати SQL для управління таблицями даних.

В клієнті є опція створення нового з'єднання з сервером PostgreSQL або підключення до наявного з'єднанням. В цьому випадку необхідно підключитися до локального сервера (local).

Після того, як з'єднання встановлено, ви можете бачити список наявних баз даних.

Червоний значок "Х" на більшій частині баз даних вказує, що вони досі не підключені (крім бази даних за замовчуванням - postgres). Таким чином, можна бачити тільки бази даних, наявні в системі. Щоб підключитися, клікніть двічі на імені бази даних. Зробіть це для бази даних natural_earth2. Тепер ви можете бачити, що червоний значок "Х" зник і з'явився знак "+" зліва. Натисканням на дерево розкривається вміст бази даних.

Перейдіть до підрозділу schemas. розкрийте його. Після цього розкрийте схему public. Переміщаючись по структурі і розкриваючи пункти (Tables), ви можете бачити все таблиці, які містить ця схема.

Введення в postgis - osgeo-live 9

pgAdmin III має можливість виконання запитів до реляційних баз даних. Щоб виконати запит, натисніть кнопку SQL на головній панелі інструментів (з жовтою лупою).

Після цього натисніть на зелену кнопку зі стрілкою, що вказує вправо ( «виконати запит»).

Введення в postgis - osgeo-live 9

Кілька додаткових завдань, які потрібно виконати:

Це тільки перші кроки на шляху використання PostGIS. Існує набагато більше корисних функцій, які ви при бажанні можете спробувати.

Схожі статті