Kleshnin A. PostGIS-open solution for spatial data-database

1,952 views

Published on

PostGIS - open solution for storing and processing of spatial data in the databaseAlexander Kleshnin, Kharkiv, Intetics Co
Презентация с семинара "ГИС и заповедные территории - 2013" http://pzf.gis.kh.ua

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,952
On SlideShare
0
From Embeds
0
Number of Embeds
1,280
Actions
Shares
0
Downloads
10
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Kleshnin A. PostGIS-open solution for spatial data-database

  1. 1. PostGIS - открытое решение для хранения и обработки пространственных данных в базе данных Александр Клешнин Харьков, Intetics Co
  2. 2. Содержание Теоретический обзор Что такое PostGIS? Стоимость/функциональность пространственных баз данных Функции/возможности PostGIS Практическая демонстрация Установка PostgreSQL/PostGIS Импорт данных в пространственную базу данных Выполнение запросов расчета длины/площади Пространственные индексы Создание функции PostGIS Выполнение запросов обновления атрибутивных данных в слое Создание объектов через SQL запрос Экспорт данных из пространственной базы данных
  3. 3. Open Geospatial Consortium (OGC) http://www.opengeospatial.org/
  4. 4. СУБД для пространственных данных Проприетарные решения: Oracle Spatial MS SQL Server 2008 Informix Spatial Blade DB2 Spatial Extender ArcSDE (SDE – Spatial Database Engine) Свободные решения: PostgreSQL/PostGIS SQLite/SpatiaLite MySQL/Spatial
  5. 5. Стоимость & функциональностьСтоимость Функциональность
  6. 6. Что такое PostGIS? PostGIS – расширение СУБД PostgreSQL для хранения в базе данных географических данных экономически эффективная альтернатива Oracle Spatial & Locator, IBM DB2 Spatial, Informix Spatial DataBlade, Microsoft SQL Server PostGIS – GPL Open Source Project
  7. 7. PostGIS объекты OpenGIS Simple Features for SQL Objects POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION OpenGIS Simple Features for SQL Representations  AsText( )  Well-Known Text • POINT(2 4) • MULTILINESTRING((-128 45,-128 46),(-130 50,-131 55))  AsBinary( )  Well-Known Binary • 000000000140000000000000004010000000000000
  8. 8. Геопроцессинг с PostGIS Функции управления Функции геометрической связи Функции обработки геометрии Функции измерения • ST_Distance • ST_DWithin • ST_Intersects • ST_Area • ST_Length • ST_Distance_Spheroid • ST_Buffer • ST_Intersection • ST_Union • ST_Touches • ST_Crosses • ST_Within • AddGeometryColumn • DropGeometryColumn • ST_SetSRID PostGIS функции (~800) доступны посредством SQL • ST_Centroid • ST_ConvexHull • ST_Difference
  9. 9. PostgreSQL/PostGIS и другое ПО
  10. 10. Практическая работа: структура системы/ПО Сервер БД Пользователи
  11. 11. Установка PostgreSQL / PostGIS http://www.postgresql.org/ http://postgis.refractions.net/ PostgreSQL PostGIS
  12. 12. Установка PostgreSQL
  13. 13. Установка PostgreSQL
  14. 14. Установка PostgreSQL
  15. 15. Установка PostgreSQL
  16. 16. Установка PostgreSQL
  17. 17. Установка PostGIS
  18. 18. Установка PostGIS
  19. 19. Установка PostGIS
  20. 20. Установка PostGIS
  21. 21. Установка PostGIS
  22. 22. Установка PostGIS
  23. 23. Установка PostGIS
  24. 24. Установка PostGIS
  25. 25. Установка PostGIS
  26. 26. pgAdmin – инструмент управления БД PostgreSQL/PostGIS SELECT version() || ' ' || postgis_full_version();
  27. 27. Создание пользователей -- Role: admin -- DROP ROLE admin; CREATE ROLE admin LOGIN ENCRYPTED PASSWORD 'md5f6fdffe48c908deb0f4c3bd36c032e72' SUPERUSER INHERIT CREATEDB CREATEROLE REPLICATION CONNECTION LIMIT 5; -- Role: gis -- DROP ROLE gis; CREATE ROLE gis LOGIN ENCRYPTED PASSWORD 'md5d1eac6a9b9835a37d71bac718a80a7ac' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION CONNECTION LIMIT 100; Administrator - admin User - gis
  28. 28. Создание пространственной базы данных -- Database: template_postgis_20 -- DROP DATABASE template_postgis_20; CREATE DATABASE template_postgis_20 WITH OWNER = postgres ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = 'Russian_Russia.1251' LC_CTYPE = 'Russian_Russia.1251' CONNECTION LIMIT = -1; ALTER DATABASE template_postgis_20 SET search_path = "$user", public, topology; База данных - database
  29. 29. Структура пространственной базы данных
  30. 30. Импорт shp-файлов в базу данных PostGIS  SQL команды  shp2pgsql // PostGIS 2.0 Shapefile and DBF Loader Exporter (GUI)  ogr2ogr (OGR – свободная библиотека для работы с векторными данными)  SPIT (Quantum GIS Tool)  ESRI’s Data Interoperability extension ($) ogr2ogr -f PostgreSQL PG:"host=localhost user=admin dbname=database password=admin" streets.shp; shp2pgsql -s 2964 lakes.shp lakes_new | psql gis_data
  31. 31. Исходные данные http://gis-lab.info/qa/geosample.html
  32. 32. Исходные данные  admin  oopt  poi-osm  road-l-osm  settlements
  33. 33. Импорт shape-файлов в базу данных - SPIT
  34. 34. pgAdmin – выделение прав
  35. 35. pgAdmin – выделение прав  admin
  36. 36. SQL-window для пользовательских запросов
  37. 37. Вычисление длины линейных объектов --length in kilometers SELECT "NAME" AS name, ST_Length_Spheroid("road-l-osm".the_geom,'SPHEROID["WGS 84",6378137,298.257223563]')/1000 AS length FROM "road-l-osm"; --sum length in kilometers SELECT Sum(ST_Length_Spheroid("road-l-osm".the_geom,'SPHEROID["WGS 84",6378137,298.257223563]')/1000) AS sum_length FROM "road-l-osm";
  38. 38. Вычисление длины линейных объектов по АТД SELECT m."NAME", sum(ST_Length_Spheroid(r.the_geom,'SPHEROID["WGS 84",6378137,298.257223563]'))/1000 AS roads_km FROM "road-l-osm" AS r, "admin" AS m WHERE ST_Intersects(m.the_geom, r.the_geom) GROUP BY m."NAME" ORDER BY m."NAME"
  39. 39. Пространственные индексы • B-Tree • R-Tree • GiST CREATE INDEX [indexname] ON [tablename] USING GIST ( [geometryfield] );
  40. 40. Вычисление длины линейных объектов по АТД + GiST -- Index: "sidx_road-l-osm_the_geom« -- DROP INDEX "sidx_road-l-osm_the_geom"; CREATE INDEX "sidx_road-l-osm_the_geom" ON "road-l-osm" USING gist (the_geom);
  41. 41. Вычисление площади
  42. 42. Перепроецирование данных
  43. 43. Перепроецирование данных
  44. 44. Создание функции выбора зоны СК
  45. 45. Создание колонки и запись значений площади
  46. 46. Таблица атрибутов слоя с площадями для объектов
  47. 47. Создание пространственной таблицы “poi” -- Table: poi CREATE TABLE "poi" ( gid serial NOT NULL, "NAME" character varying(64), the_geom geometry(Point,4326), CONSTRAINT "poi_pkey" PRIMARY KEY (gid) ) WITH ( OIDS=FALSE ); ALTER TABLE "poi" OWNER TO admin; GRANT ALL ON TABLE "poi" TO admin; GRANT ALL ON TABLE "poi" TO public; -- Sequence: poi_gid_seq ALTER TABLE "poi_gid_seq" OWNER TO admin; GRANT ALL ON TABLE "poi_gid_seq" TO admin; GRANT ALL ON TABLE "poi_gid_seq" TO public;
  48. 48. Загрузка пространственной таблицы “poi” в QGIS
  49. 49. Создание объектов в слое “poi”, которые находятся в “oopt”
  50. 50. Обновление количества объектов “poi” в слое “oopt” --ALTER TABLE "oopt" ADD COLUMN count INTEGER; UPDATE "oopt" t SET count = calc.objectscount FROM ( SELECT m."NAME_PRT_R", count(*) AS objectscount FROM "poi" AS r, "oopt" AS m WHERE ST_Intersects(m.the_geom, r.the_geom) GROUP BY m."NAME_PRT_R" ) calc WHERE t."NAME_PRT_R" = calc."NAME_PRT_R";
  51. 51. Количество объектов “poi” в слое “oopt”
  52. 52. Запуск SQL запроса через консоль
  53. 53. Экспорт данных из базы данных в шейп-файл
  54. 54. Спасибо! Вопросы?

×