Difference between revisions of "Datové typy SDO Geometry"

From Wikivyuka
Jump to: navigation, search
m (SDO_Geometry)
m (SDO_ORDINATES)
Line 111: Line 111:
  
 
Například:
 
Například:
  Polygon, jehož hranice je tvořena čtyřmi dvoudimensionálními body je uložen takto: {X1, Y1, X2, Y2, X3, Y3, X4, Y4, X1, Y1}.  
+
  Polygon, jehož hranice je tvořena čtyřmi dvoudimensionálními body je uložen takto:  
  Polygon, jehož hranice je tvořena čtyřmi třídimensionálními body je uložen takto: {X1, Y1, Z1, X2, Y2, Z2, X3, Y3, Z3, X4, Y4, Z4, X1, Y1, Z1}.
+
{X1, Y1, X2, Y2, X3, Y3, X4, Y4, X1, Y1}.  
 +
  Polygon, jehož hranice je tvořena čtyřmi třídimensionálními body je uložen takto:  
 +
{X1, Y1, Z1, X2, Y2, Z2, X3, Y3, Z3, X4, Y4, Z4, X1, Y1, Z1}.
  
 
== Seznam geometrických tvarů ==
 
== Seznam geometrických tvarů ==

Revision as of 15:27, 7 April 2014

SDO_Geometry

Prefix SDO pochází z doby, kdy Oracle spolupracoval s Canadian Hydrographic Service a tehdejší změny v jádru Oracle vedly k označení "Spatial Data Option" (SDO).

SDO_Geometry je objekt, který má následující atributy:

SDO_GTYPE: NUMBER,
SDO_SRID: NUMBER,
SDO_POINT: SDO_POINT_TYPE,
SDO_ELEM_INFO: SDO_ELEM_INFO_ARRAY,
SDO_ORDINATES: SDO_ORDINATE_ARRAY

Struktura SDO_Geometry SDOGeom.png

Je nutné vnímat "skladbu" tohoto objektu. Při zadávání dat potřebujeme znát kódy, které mají význam pro správné určení geometrie či koordinačního (souřadnicového) systému, ap.

SDO_GTYPE: NUMBER

typ geometrie, koresponduje se specifikací modelu "Geometry Object Model" definovanou organizací OGC jako OGIS - Simple Features for SQL specification, blíže [1]. 

Skládá se ze 4 numerických hodnot ve formátu DLTT, kde

  • D identifies the number of dimensions (2, 3, or 4)
  • L identifies the linear referencing measure dimension for a three-dimensional linear referencing system (LRS) geometry, that is, which dimension (3 or 4) contains the measure value. For a non-LRS geometry, or to accept the Spatial default of the last dimension as the measure for an LRS geometry, specify 0. For information about the linear referencing system (LRS).
  • TT - vlastní geometrický typ (point, line, curve, polygon, collection, multipoint...)(identifies the geometry type (00 through 09, with 10 through 99 reserved for future use).

Seznam útvarů je vypsán v tabulce Geometrické typy.

Podrobně viz [2].

Například:

2001 dvoudimenzionální bod
3001 třídimenzionální bod
2002 dvoudimenzionální linie nebo křivka
2003 dvoudimenzionální polygon nebo povrch
2004 kolekce (Geometry is a heterogeneous collection of elements. COLLECTION is a superset that includes all other types.)
2005 multipoint (Geometry has one or more points. (MULTIPOINT is a superset of POINT.)) 

Pro zjištění obsažených informací je možné použít metody pro navrácení těchto hodnot: Get_Dims, Get_LRS_Dim, Get_Gtype

SDO_SRID: NUMBER

identifikace prostorového referenčního systému, se kterým je asociována geometrie. Pokud je uvedena null hodnota, není asociace provedena. Jinak musí být uveden kód dle typu prostorového referenčního systému.

Například:

SDO_SRID(WGS 84) = 8307

Pokud budeme chtít vytvořit prostorový index, všechny prvky geometrií musí stejný SDO_SRID.

SDO_POINT: SDO_POINT_TYPE

definuje (geo)objekt typu bod, přesněji SDO_POINT_TYPE (dle dříve uvedených dimenzí). Dle dimenze je pak uveden počet souřadnic. Každá koordináta je zadána datovým typem NUMBER.

CREATE TYPE sdo_point_type AS OBJECT (
  X NUMBER,
  Y NUMBER,
  Z NUMBER);

Při zadávání bodu musí být SDO_ELEM_INFO a SDO_ORDINATES obě definovány hodnotou null, jinak Spatial funkce nefungují správně.

Například zadání bodu

SDO_GEOMETRY(
     2001,
     NULL,
     SDO_POINT_TYPE(10, 20, NULL),
     NULL,
     NULL);

SDO_ELEM_INFO: SDO_ELEM_INFO_ARRAY

definuje použití různé délky pole čísel. Ukazuje, jak interpretovat souřadnice z atributu SDO_ORDINATES.

Je sestaven trojicí (SDO_STARTING_OFFSET, SDO_ETYPE, SDO_INTERPRETATION).

SDO_STARTING_OFFSET - indikuje počáteční pozici v poli SDO_ORDINATES hodnot daného elementu. První element má vždy hodnotu 1 (nikdy 0).

Například:

SDO_ORDINATES = (2,4, 4,3, 10,3, 13,5, 13,9, 11,13, 5,13, 2,11, 2,4, 7,5, 7,10, 10,10, 10,5, 7,5).
Element, který by byls sestaven ze dvou částí, bude mít začátek pole koordinát na pozici 1 a druhá část složeného prvku může mít definovánu hodnotu jako 19. Hodnota první souřadnice tohoto elementu má pak první souřadnici 7.

SDO_ETYPE - indikuje typ elementu, viz [3].

SDO_ETYPE indikuje dvě základní skupiny prvků - jednoduché a složené. U hodnot 1, 2, 1003, a 2003 jsou předpokládány jednoduché elementy, Jsou definovány pomocí jedné trojice hodnot, uvedené v SDO_ELEM_INFO array.

Jednoduché elementy: Pro SDO_ETYPE hodnoty 1003 a 2003, první číslice indikuje exterior (1) nebo interior (2) - viz příklad:

1003: exterior polygon ring (must be specified in counterclockwise order)

2003: interior polygon ring (must be specified in clockwise order)

Složené elementy: SDO_ETYPE s hodnotami 4, 1005, 2005, 1006, a 2006 představují složené elementy. Jsou obsaženy v alespoň jednom záhlaví trojice, s řadou trojic, které patří k složenému prvku. Pro 4-místný typ SDO_ETYPE hodnotu, první číslice označuje exterrior (1) nebo interior (2):

1005: polygon vymezující "vnějšek" (hodnoty jeho koordinát musí být uvedeny v pořadí proti směru hodinových ručiček

2005: polygon s vnitřním obsahem (specifikace hodnot jde po směru hodin)

1006: vnějsí povrch, který se skládá z jednoho nebo více polygonálních "kruhů"

2006: vnitřní jednolitý povrch

1007: jednolitý element

Prvky složeného prvku jsou souvislé. Poslední bod jedné části složeného prvku je prvním bod další části. Bod se neopakuje.

SDO_INTERPRETATION - význam je závislý na tom, zda je v SDO_ETYPE zadán jednoduchý nebo složený element.

Například:

Máme SDO_ETYPE jako složený element (4, 1005, or 2005), pak SDO_INTERPRETATION specifikuje z kolika trojic hodnot jsou složeny jednotlivé elementy.

SDO_ORDINATES

definuje použití pole proměnlivé délky (až 1048576) typu NUMBER, kde jsou uloženy souřadnice, tvořící hranice prostorového objektu. Použití je spojeno s SDO_ELEM_INFO. Hodnoty v poli jsou uspořádány dle dimenze.

Například:

Polygon, jehož hranice je tvořena čtyřmi dvoudimensionálními body je uložen takto: 
{X1, Y1, X2, Y2, X3, Y3, X4, Y4, X1, Y1}. 
Polygon, jehož hranice je tvořena čtyřmi třídimensionálními body je uložen takto: 
{X1, Y1, Z1, X2, Y2, Z2, X3, Y3, Z3, X4, Y4, Z4, X1, Y1, Z1}.

Seznam geometrických tvarů

(1,1003,4) circle  definován třemi body
(1,1003,3) one rectangle 1003 - exterior exterior polygon ring, 3 rectangle
(1,1003,1) one polygon 1003 - exterior polygon ring - vnější polygon, s body definovanými proti směru hodinových ručiček

Hlavní stránka předmětu