Przestrzenne bazy danych PostGIS

Podobne dokumenty
Przestrzenne bazy danych. Typy obiektów przestrzennych

Przestrzenne bazy danych. Wstęp do przestrzennych baz danych

Przestrzenne bazy danych. Funkcje geometryczne

Przestrzenne bazy danych. Definicja i cechy przestrzennych baz danych

Multimedialne bazy danych. Andrzej Łachwa, WFAiIS UJ 2011

Przestrzenne bazy danych. Funkcje relacji przestrzennych

MULTILINESTRING MULTILINESTRING((11 5, 7 4, 3 9), (5 3, 2 7, 6 5)) MULTIPOLYGON MULTIPOLYGON(((0 0, 5 5, 10 0, 0 0)), ((3 2, 5 1, 7 2, 3 2)))

Innowacyjne rozwiązania typu open source w aplikacjach typu gis-web. Dominik Tałanda

Charakterystyka przestrzennych typów danych. do tworzenia raportów. Using spatial data types in reports.

DANE PRZESTRZENNE W BAZACH DANYCH SYSTEMU MICROSOFT SQL SERVER 2008 R2 WPROWADZENIE

Funkcjonalność systemów zarządzania bazami danych przestrzennych w kartografii internetowej (PosrtgreSQL/PostGIS) Krzysztof Kuśnierek

GIS i dane geograficzne w bazach relacyjnych

GIS i dane geograficzne w bazach relacyjnych

3. Standaryzacja modeli danych przestrzennych

Shapefile, GeoPackage czy PostGIS. Marta Woławczyk (QGIS Polska)

Przestrzenne bazy danych. Analizy przestrzenne

Koncepcja węzła IIP na przykładzie planów zagospodarowania przestrzennego

GIS. Grzegorz Chilkiewicz

Jak stworzyć Geoportal

ZAPIS PLIKÓW GRAFIKI WEKTOROWEJ DO BAZY DANYCH MS SQL

Zasady transformacji modelu DOZ do projektu tabel bazy danych

MOŻLIWOŚCI SKŁADOWANIA DANYCH 3D W BAZACH DANYCH PRZESTRZENNYCH 1

Język SQL, zajęcia nr 1

Dane przestrzenne w relacyjnych bazach danych

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

poniżej przykład modyfikacji UTM34N (oczywiście bez tego co w nawiasach) (elipsoida zostaje taka sama, jak zresztą we wszystkich podobnych UTMach),

3 Źródła 13. Mogą to być dane geoprzestrzenne, przestrzenne, dane o terenie, katastralne, itp..

TWORZENIE RAPORTÓW ZAWIERAJĄCYCH DANE PRZESTRZENNE

Zarządzanie danymi przestrzennymi. Analizy przestrzenne

Wprowadzenie do systemów GIS w środowisku ArcView ESRI (Zadania i materiały pomocnicze do ćwiczeń laboratoryjnych) Część II

ROZSZERZENIE MOŻLIWOSCI SYSTEMU POSTGIS O METODĘ TRIANGULACJI DELAUNAY, PRZY WYKORZYSTANIU BIBLIOTEKI CGAL 1

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Uruchamianie bazy PostgreSQL

Styczeń Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska. Systemy baz danych - wykład VIII. dr inż.

GIS STRUKTURY DANYCH RELACJE PRZESTRZENNE.

Ref. 7 - Język SQL - polecenia DDL i DML

Geografická data a databázové systémy, OGC Simple Features pro SQL, PostgreSQL, MySQL, SQLite

Oracle PL/SQL. Paweł Rajba.

DMX DMX DMX DMX: CREATE MINING STRUCTURE. Tadeusz Pankowski

ZAPOZNANIE SIĘ Z PODSTAWOWYMI SPOSOBAMI

Oracle PL/SQL. Paweł Rajba.

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Baza danych. Modele danych

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

Systemy GIS Tworzenie zapytań w bazach danych

Instrukcja CREATE TABLE

Projekt inżynierski Przestrzenna baza danych

Wdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x

ArcGIS. Jakub Nowosad

3 Źródła 14. Mogą to być dane geoprzestrzenne, przestrzenne, dane o terenie, katastralne, itp..

Tabela wewnętrzna - definicja

Komunikacja z bazą danych psql

2 Przygotował: mgr inż. Maciej Lasota

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Wykorzystanie serwisów WMS w oprogramowaniu GEO-MAP

ZASTOSOWANIE BAZ DANYCH W STEROWANIU RUCHEM ULICZNYM

Wybrane zagadnienia w pracy z danymi rastrowymi w ArcGIS Marcin Paź Esri Polska

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Wykład 6. SQL praca z tabelami 3

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

Database Connectivity

Przykłady zastosowao rozwiązao typu mapserver w Jednostkach Samorządu Terytorialnego

Bloki anonimowe w PL/SQL

Przykładowy dokument XML

Bazy danych 7. SQL podstawy

Ćwiczenie 2. Opcja przestrzenna bazy danych

serwisy W*S ERDAS APOLLO 2009

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Podstawowe wykorzystanie Hibernate

Warszawa, dnia 28 września 2012 r. Poz ROZPORZĄDZENIE MINISTRA ŚRODOWISKA 1) z dnia 11 września 2012 r.

Programowanie w Ruby

Oracle PL/SQL. Paweł Rajba.

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

Tworzenie baz danych i tabel

Instrukcje DML INSERT, UPDATE, DELETE. COPY

WTYCZKA FARA-TCM Dane techniczne dla twórców zewnętrznych aplikacji do obsługi map cmentarza

Wykład 05 Bazy danych

Struktura bazy danych GIS podniesienie jakości zarządzania dokumentacją projektową

Modelowanie wymiarów

TRANSCOMP XV INTERNATIONAL CONFERENCE COMPUTER SYSTEMS AIDED SCIENCE, INDUSTRY AND TRANSPORT

Standard SQL/MM: SQL Multimedia and Application Packages

Automatyka i Robotyka ROK III TEMAT: TWORZENIE I ZARZĄDZANIE INTERNETOWĄ BAZĄ DANYCH

Baza danych. Baza danych to:

Podstawowe pakiety komputerowe wykorzystywane w zarządzaniu przedsiębiorstwem. dr Jakub Boratyński. pok. A38

Hurtownia Świętego Mikołaja projekt bazy danych

Wykład 5. SQL praca z tabelami 2

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Oracle Spatial Option

Podstawy Programowania C++

Autor: Joanna Karwowska

Systemy baz danych Prowadzący: Adam Czyszczoń. Systemy baz danych. 1. Import bazy z MS Access do MS SQL Server 2012:

GML w praktyce geodezyjnej

Projektowanie systemów baz danych

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

Transkrypt:

Przestrzenne bazy danych PostGIS

OGC (ang. Open Geospatial Consortium) OGC międzynarodowa organizacja standaryzacyjna w dziedzinie GIS. Powstała w roku 1994 roku. W jej skład wchodzą organizacje komercyjne, rządowe, uniwersytety oraz jednostki badawcze. Celem organizacji jest rozwój i wdrażania standardów dotyczących systemów GIS (przetwarzania i zapisu danych, udostępniania danych itp.) Standardy proponowane i ustalane przez OGC, są uwzględniane przez najbardziej liczące się na rynku GIS firmy i instytucje. Specyfikacje OGC są otwarte i darmowe.

PostGIS PostGIS to rozszerzenie PostgreSQL, dodające możliwość zapisywania danych geograficznych wprost do bazy danych zgodnie z specyfikacją OpenGIS Simple Features dla profilu SQL. PostGIS m.in.: Powstał w ramach projektu organizacji Refraction Research Inc Umożliwia tworzenie prostej topologii. Sprawdza poprawność danych przestrzennych. Pozwala na transformacje układów współrzędnych. Wyposażony jest w funkcje do analizy danych przestrzennych. Umożliwia przechowywanie i analizę danych rastrowych (PostGIS 2.0) Program wydany jest na licencji GNU GPL. Projekt nadal rozwijany przez Project Steering Committee.

PostGIS W PostGIS mamy dane typu: geometry(układ odniesienia to płaszczyzna) geographic (układ odniesienia to elipsoida, współrzędne podajemy w stopniach, minutach i sekundach kątowych) (WGS84) raster (w wersji PostGIS 2.0) Obiekty przestrzenne obsługiwane przez PostGIS: A. zbiór obiektów prostych 2D ( Simple Features ) zdefiniowanych przez OGC; B. zbiór obiektów zdefiniowanych w układach 3DZ, 3DM i 4D;

PostGIS Specyfikacja OGC pozwala na definicjęobiektów przestrzennych z wykorzystaniem: formy tekstowej WKT(ang. Well-Known Text), formy binarnej WKB(ang. Well-Known Binary). WKT oraz WKB zawierają informacje na temat: typu obiektu (np. punkt, poligon itp.) współrzędnych obiektu. W WKT i WKB brak informacji o układzie współrzędnych! Jeżeli obiekt przestrzenny chcemy umieścić w bazie danych to musimy dodatkowo podać numer SRID (ang. Spatial Referencing System Identifier), który jednoznacznie identyfikuje układ współrzędnych (SRS, ang. Spatial Referencing System). Dla układu WGS84 SRID = 4326. SDRID= -1 oznacza, że układ współrzędnych nie jest zdefiniowany. EWKT/EWKB zawiera informacje o układzie współrzędnym.

PostGIS Przykłady definicji elementów przestrzennych przy pomocy WKT: POINT (00) LINESTRING(0 0, 11, 12) POLYGON((0 0, 40, 44, 04, 00)) MULTIPOINT(0 0, 11) MULTILINESTRING((0 0,11, 12)(23,32,54)) MULTIPOLYGON((0 0, 40, 44,04, 00)(55, 56, 66, 65, 55)) GEOMETRYCOLLECTION(POINT(1 2), LINESTRING(0 0,11, 12)) Typ geometrii Współrzędne BRAK informacji o SRID!

PostGIS Prefiks ST (standard spatial type) zapis funkcji zgodnie ze standardem SQL/MM (SQL Multimedia Application Packages). bytea ST_AsBinary(geometry); text ST_AsText(geometry); geometry ST_GeomFromWKB(WKB, SRID); geometry ST_GeomFromText(WKT, SRID); np. ST_GeomFromText( POINT(1 3), -1) integer ST_SRID(geometry); Nie zwracają informacji o SRID

PostGIS INSERT INTO geotable( the_geom, the_name ) VALUES ( ST_GeomFromText( POINT(1 3), 312), Building ); SRID

PostGIS Obiekty przestrzenne obsługiwane przez PostGIS: A. zbiór obiektów prostych 2D ( Simple Features ) zdefiniowanych przez OGC; B. zbiór obiektów zdefiniowanych w układach 3DZ, 3DM i 4D; Definiowane za pomocą EWKT(Extended WKT) lub EWKB(Extended WKB). Połączony zapis z informacjąo SRID. Możliwość wystąpienia błędów. 3DZ : (X Y Z-Wysokośćn.p.m.) 3DM : (X Y M-Pomierzony parametr) 4D : (X Y Z M) bytea ST_AsEWKB(geometry); Zwracają informację o SRID text ST_AsEWKT(geometry); geometry ST_GeomFromEWKB(EWKB); geometry ST_GeomFromEWKT(EWKT);

PostGIS 3DZ POINT(000) LINESTRING(000,1 10,121) POLYGON(000, 400, 440,040,000)... 3DM POINTM(001) LINESTRINGM(000,1 10,121)... 4D POINT(0001) LINESTRING(0003,1 106,1217)... INSERT INTO geotable(the_geom, the_name) VALUES (ST_GeomFromEWKT( SRID=312;POINTM(1 3 4) ), Building );

PostGIS Simple Features Specification for SQL definiuje: typy danych przestrzennych, funkcje niezbędne do zarządzania danymi, metadane. Mamy dwie tabele metadanych: SPATIAL_REF_SYS GEOMETRY_COLUMNS SPATIAL_REF_SYS SRID (np. 4326-WGS84) AUTH_NAME AUTH_SRID SRTEXT PROJ4TEXT EPSG (European Petroleum Survey Group) organizacja ta opracowała szeroko stosowane kody identyfikujące poszczególne układy współrzędnych GEOMETRY_COLUMNS F_TABLE_CATALOG F_TABLE_SCHEMA F_TABLE_NAME F_GEOMETRY_COLUMN COORD_DIMENSION SRID TYPE

PostGIS SPATIAL_REF_SYS Tabela SPATIAL_REF_SYS zawiera informacje o ponad 3000 najczęściej wykorzystywanych układach współrzędnych. Zawiera również szczegóły umożliwiające transformację jednego układu współrzędnych w inny. Często wykorzystywane układy to: WGS84 Long Lat (SRID=4326) WGS84 World Mercator(SRID=3395) Informacje o układach współrzędnych można znaleźć: http://spatialreference.org

PostGIS GEOMETRY_COLUMNS CREATE TABLE geometry_columns( ) f_table_catalog VARCHAR (256) NOT NULL, f_table_schema VARCHAR (256) NOT NULL, f_table_nam VARCHAR (256) NOT NULL, f_geometry_column VARCHAR (256) NOT NULL, coord_dimension INTEGER NOT NULL, srid INTEGER NOT NULL, type VARCHAR (256) NOT NULL f_geometry_column nazwa kolumny zawierającej geometrię; coord_dimension wymiar przestrzenny (2, 3 lub 4); type typ geometrii (POINT, LINESTRING, POLYGON,..., GEOMETRY);

PostGIS Tworzenie bazy danych przestrzennych CREATE DATABASE my_spatial_db TEMPLATE=template_postgis;

PostGIS Wczytywanie danych Dane do bazy PostGIS/PostgeSQL możne wprowadzać: A. w formacie SQL; B. Shape file loader A. INSERT INTO house(id, geom, name) VALUES ( 1, ST_GeomFromText( POINT(12 34), -1), GreenH ); psql-d [database] -fhouse.sql

PostGIS Wczytywanie danych B. shp2pgsql Parametry: -d : usuń tabelę bazy danych przed utworzeniem tabeli z danymi zawartymi w shapefile; -a : dołącz dane z shapefile do istniejącej tabeli; -c : utwórz nową tabelę z danymi z Shapefile; (opcja domyślna); -i : tworzenie indeksu geometrii; shp2pgsql shaperoads myschema.roadstable > roads.sql psql-droadsdb-froads.sql

PostGIS Pobieranie danych Dane można pobrać korzystając: A. Z formatu SQL; B. Shape file dumper A. SELECTroad_id, ST_AsText(road_geom) ASgeom,road_nameFROMroads;

PostGIS Pobieranie danych B. pgsql2shape pgsql2shp [<options>] <database> [<schema>.]<table> pgsql2shp [<options>] <database> <query> Parametry: -f <filename> -h <host> -p <port> -P <password> pgsql2shp -f myfile p 5555 new_baza table_1 pgsql2shp -f "/path/to/streets" -h myserver -u apguser -P apgpassword mygisdb ma.streets

PostGIS ST_Box2D- zwraca BOX2D reprezentujący maksymalny zasięg obiektu przestrzennego. ST_Box3D- zwraca BOX3D reprezentujący maksymalny zasięg obiektu przestrzennego. ST_XMIN, ST_XMAX, ST_YMIN, ST_YMAX, ST_ZMIN, ST_ZMAX

PostGIS

PostGIS Metody PostGIS wymagają, aby geometrie obiektów na których operują były proste i poprawne. Geometria prosta (według specyfikacji OGC) to geometria, w której nie występują anomalne punkty (np. wewnętrzne przecięcia, wewnętrzna styczność). Najczęściej dotyczą obiektów zero- i jednowymiarowych. Poprawność geometrii odnosi się głównie do dwuwymiarowych obiektów (MULTI(POLYGON)) i definiuje zestaw twierdzeń charakteryzujących poprawny poligon. Przykład: POINT geometria prosta (zawsze). MULTIPOINT geometria prosta, jeżeli punkty nie mają identycznych współrzędnych.

PostGIS Tak Nie LINESTRING geometria prosta jeżeli linia nie przechodzi przez ten sam punkt wielokrotnie (oprócz punktu końcowego). Tak Nie MULTILINESTRING geometria prosta tylko wtedy jeżeli elementy multilinii mają geometrię prostą i punkty przecięcia występują tylko i wyłącznie na końcach (początkach) elementów. Tak Tak Nie

PostGIS POLYGON z definicji ma geometrię prostą; Tak Tak Nie Pierścienie poligonu muszą się zamykać. Pierścienie wewnętrzne definiujące okna muszą się znajdowaćwewnątrz pierścienia zewnętrznego poligonu. Pierścienie nie mogą się wewnętrznie przecinać. Pierścienie mogąsięstykaćale tylko w jednym punkcie. Granice to elementy proste. Nie Nie Nie Mogąreprezentowaćpoprawny MULTIPOLYGON

PostGIS MULTIPOLYGON jest poprawny jeżeli wszystkie jego elementy mają poprawną geometrię oraz wnętrza dwóch elementów nie przecinają się. Granice poligonów mogą się stykać ale jedynie w skończonej liczbie punktów. Nie

Sprawdzanie geometrii obiektów: ST_IsSimple(geometry) ST_IsValid(geometry)

Funkcje dla typu geometry ST_Length(); ST_Area(); ST_Perimeter(); ST_Distance(); ST_Buffer(); ST_Contains(); ST_Difference(); ST_SymDifference(); ST_Intersection(); ST_Disjoint(); ST_Intersects(); ST_Overlaps(); ST_Touches(); ST_Within(); ST_NRings(); ST_NumInteriorRings(); ST_AsText(); ST_GeomFromText(); ST_DWithin ST_Equals ST_RemoveRepeatedPoints ST_Union

float ST_Length(geometry geoma) Oblicza długość LINESTRING lub MULTILINESTRING. float ST_Area(geometry geoma) Oblicza pole powierzchni POLIGON lub MULTIPOLYGON.

float ST_Perimeter(geometry geoma) Oblicza obwód POLIGON lub MULTIPOLYGON. float ST_Distance(geometry geoma, geometry geomb) float ST_MaxDistance(geometry g1, geometry g2)

geometry ST_Buffer(geometry geoma, distance, options) Tworzy bufor o zadanej wielkości. Tylko 2D! 'quad_segs=#' 'endcap=round flat square' 'join=round mitre bevel'

boolean ST_Contains(geometry geoma, geometry geomb) Nie należy stosować tej funkcji do GEOMETRYCOLLECTION. Geometrie muszą być poprawne! TRUE FALSE

geometry ST_Difference (geometry geoma, geometry geomb) Nie należy stosować tej funkcji do GEOMETRYCOLLECTION. Przykład:

geometry ST_SymDifference (geometry geoma, geometry geomb) Nie należy stosować tej funkcji do GEOMETRYCOLLECTION.

geometry ST_Intersection(geometry geoma, geometry geomb) Nie należy stosować tej funkcji do GEOMETRYCOLLECTION. geometry ST_Union(geometry geoma, geometry geomb) Wynik: MULTI geometry SINGLE geometry GEOMETRYCOLLECTION

boolean ST_Disjoint (geometry geoma, geometry geomb) Zwraca TRUE jeżeli obiekty nie przecinają się. Nie należy stosować tej funkcji do GEOMETRYCOLLECTION.

boolean ST_Intersects (geometry geoma, geometry geomb) Zwraca TRUE jeżeli obiekty się przecinają.

boolean ST_Touches (geometry geoma, geometry geomb) Zwraca TRUE jeżeli obiekty mają chociaż jeden punkt wspólny i ich wnętrza nie przecinają się. Nie stosujemy dla par: punkt-punkt.

integer ST_NRings (geometry geoma) Jeżeli obiekt to POLYGON lub MULTIPOLYGON to zwracana jest liczba pierścieni, które te obiekty tworzą. integer ST_NumInteriorRings (geometry geoma) Zwraca liczbę wewnętrznych pierścieni dla pierwszego zdefiniowanego poligonu. Funkcję można stosować dla obiektów typu POLYGON oraz MULTIPOLYGON.

boolean ST_Within (geometry geoma, geometry geomb) Zwraca TRUE jeżeli obiekt geoma całkowicie znajduje się w obiekcie geomb. Jeżeli ST_Within(A,B) = T i ST_Within(B,A)=T t oznacza, że geometrie geoma i geomb są identyczne. geometry ST_RemoveRepeatedPoints (geometry geoma) Zwraca geometrię z pominięciem punktów powtarzających się.

boolean ST_Overlaps (geometry geoma, geometry geomb) Zwraca TRUE jeżeli obiekty dzielą wspólną przestrzeń, mają ten sam wymiar ale jedna nie zawiera się całkowicie w drugim. TRUE boolean ST_Equals (geometry geoma, geometry geomb) Zwraca TRUE jeżeli obiekty mają tą samą geometrię. Kolejność definiowania punktów charakterystycznych jest ignorowana. /ST_Within(A,B) = true and ST_Within(B,A)/

Obiekty w PostGIS POINT LINESTRING POLYGON MULTIPOLYGON MULTILINESTRING MULTIPOLYGON GEOMETRY COLLECTION WKT 3dm, 3dz, 4d EWKT + krzywe gładkie Brak wbudowanej definicji o SRID

Obiekty w PostGIS CIRCULARSTRING COMPOUNDCURVE CURVEPOLYGON MULTICURVE MULTISURFACE ------------------------- POLYHEDRALSURFACE TRIANGLE TIN

CIRCULARSTRING CIRCULARSTRING(0 0, 1 1, 1 0) punkt początkowy punkt na łuku punkt końcowy CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0) środek łuku Przy CIRCULARSTRING zawsze mamy zdefiniowaną nieparzystą(>1) liczbę punktów.

COMPOUNDCURVE COMPOUNDCURVE(CIRCULARSTRING(),()) łuk element liniowy COMPOUNDCURVE(CIRCULARSTRING(0 0, 0 1, 1 0),(1 0, 0 1)) Współrzędne muszą być identyczne!

CURVEPOLYGON CURVEPOLYGON może składać się z: CIRCULARSTRING LINESTRING COMPOUNDCURVE CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3),(4 3,4 5, 1 4, 0 0)),CIRCULARSTRING(1.7 1, 1.4 0.4, 1.6 0.4, 1.6 0.5, 1.7 1))

MULTICURVE MULTICURVE może składać się z: LINESTRING CIRCULARSTRING COMPOUNDCURVE MULTICURVE((0 0, 5 5),CIRCULARSTRING(4 0, 4 4, 8 4))

MULTSURFACE MULTISURFACE składa się ze zbioru obiektów, które mogą być typu: POLYGON CURVEPOLYGON MULTISURFACE(CURVEPOLYGON(CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 00),(1 1,3 3, 3 1, 1 1)),((10 10, 14 12, 11 10, 10 10)(11 11, 11.5 11, 11 11.5, 11 11))) ST_LineToCurve ST_CurveToLine