1 / 54

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

PostGIS - open solution for storing and processing of spatial data in the databaseAlexander Kleshnin, Kharkiv, Intetics Co

Anton_Kh
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PostGIS - открытое решение для хранения и обработки пространственных данных в базе данных Александр Клешнин Харьков, Intetics Co

  2. Содержание • Теоретический обзор • Что такое PostGIS? • Стоимость/функциональность пространственных баз данных • Функции/возможности PostGIS • Практическая демонстрация • Установка PostgreSQL/PostGIS • Импорт данных в пространственную базу данных • Выполнение запросов расчета длины/площади • Пространственные индексы • Создание функции PostGIS • Выполнение запросов обновления атрибутивных данных в слое • Создание объектов через SQL запрос • Экспорт данных из пространственной базы данных

  3. Open Geospatial Consortium (OGC) http://www.opengeospatial.org/

  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. Стоимость & функциональность Стоимость Функциональность

  6. Что такое PostGIS? • PostGIS – расширение СУБД PostgreSQL для хранения в базе данных географических данных • экономически эффективная альтернатива Oracle Spatial & Locator, IBM DB2Spatial, Informix Spatial DataBlade, Microsoft SQL Server • PostGIS – GPL Open Source Project

  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(24) • MULTILINESTRING((-128 45,-128 46),(-130 50,-131 55)) • AsBinary( )  Well-Known Binary • 000000000140000000000000004010000000000000

  8. Геопроцессинг с PostGIS PostGIS функции (~800)доступны посредством SQL • Функции управления • Функции геометрической связи • Функции обработки геометрии • Функции измерения • AddGeometryColumn • DropGeometryColumn • ST_SetSRID • ST_Distance • ST_DWithin • ST_Intersects • ST_Touches • ST_Crosses • ST_Within • ST_Buffer • ST_Intersection • ST_Union • ST_Centroid • ST_ConvexHull • ST_Difference • ST_Area • ST_Length • ST_Distance_Spheroid

  9. PostgreSQL/PostGIS и другое ПО

  10. Практическая работа: структура системы/ПО • Сервер БД • Пользователи

  11. Установка PostgreSQL / PostGIS PostgreSQL PostGIS http://www.postgresql.org/ http://postgis.refractions.net/

  12. Установка PostgreSQL

  13. Установка PostgreSQL

  14. Установка PostgreSQL

  15. Установка PostgreSQL

  16. Установка PostgreSQL

  17. Установка PostGIS

  18. Установка PostGIS

  19. Установка PostGIS

  20. Установка PostGIS

  21. Установка PostGIS

  22. Установка PostGIS

  23. Установка PostGIS

  24. Установка PostGIS

  25. Установка PostGIS

  26. pgAdmin – инструмент управления БД PostgreSQL/PostGIS SELECT version() || ' ' || postgis_full_version();

  27. Созданиепользователей Administrator - admin User - gis -- 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;

  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. Структура пространственнойбазы данных

  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 ($) shp2pgsql -s 2964 lakes.shp lakes_new | psql gis_data ogr2ogr -f PostgreSQL PG:"host=localhost user=admin dbname=database password=admin" streets.shp;

  31. Исходные данные http://gis-lab.info/qa/geosample.html

  32. Исходные данные • admin • oopt • poi-osm • road-l-osm • settlements

  33. Импорт shape-файлов в базу данных - SPIT

  34. pgAdmin – выделение прав

  35. pgAdmin – выделение прав • admin

  36. SQL-window для пользовательских запросов

  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. Вычисление длины линейных объектов по АТД 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. Пространственные индексы • B-Tree • R-Tree • GiST CREATE INDEX [indexname] ON [tablename] USING GIST ( [geometryfield] );

  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. Вычисление площади

  42. Перепроецирование данных

  43. Перепроецирование данных

  44. Создание функции выбора зоны СК

  45. Создание колонки и запись значений площади

  46. Таблица атрибутов слоя с площадями для объектов

  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. Загрузка пространственной таблицы “poi” в QGIS

  49. Создание объектов в слое “poi”, которые находятся в “oopt”

  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";

More Related