GEOMETRY

Stai visualizzando una vecchia versione di questo article. Visualizza la versione più recente.

Spiegazione

MariaDB fornisce un modo standard per creare colonne spaziali per i tipi geometrici, per esempio, con CREATE TABLE o ALTER TABLE. Attualmente, le colonne spaziali sono supportate dalle tabelle MyISAM, InnoDB, NDB e ARCHIVE. Si vedano anche le note sugli indici spaziali, alla pagina SPATIAL.

Il tipo di base per tutte le geometrie è GEOMETRY, ma può essere più specifico. I seguenti tipi sono supportati:

Tipi geometrici
POINT
LINESTRING
POLYGON
MULTIPOINT
MULTILINESTRING
MULTIPOLYGON
GEOMETRYCOLLECTION
GEOMETRY

Esempi

Nota: Per chiarezza, negli esempi seguenti, viene utilizzato un solo tipo geometrico per ogni tabella. Ma una riga può contenere diversi tipi. Ad esempio:

CREATE TABLE oggetto (formaA POLYGON, formaB LINESTRING);

POINT

CREATE TABLE punto_gis  (g POINT);
SHOW FIELDS FROM punto_gis;
INSERT INTO gis_point VALUES
    (PointFromText('POINT(10 10)')),
    (PointFromText('POINT(20 10)')),
    (PointFromText('POINT(20 20)')),
    (PointFromWKB(AsWKB(PointFromText('POINT(10 20)'))));

LINESTRING

CREATE TABLE riga_gis  (g LINESTRING);
INSERT INTO riga_gis VALUES
SHOW FIELDS FROM gis_line;
    (LineFromText('LINESTRING(0 0,0 10,10 0)')),
    (LineStringFromText('LINESTRING(10 10,20 10,20 20,10 20,10 10)')),
    (LineStringFromWKB(AsWKB(LineString(Point(10, 10), Point(40, 10)))));

POLYGON

CREATE TABLE poligono_gis   (g POLYGON);
SHOW FIELDS FROM poligono_gis;
INSERT INTO gis_polygon VALUES
    (PolygonFromText('POLYGON((10 10,20 10,20 20,10 20,10 10))')),
    (PolyFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')),
    (PolyFromWKB(AsWKB(Polygon(LineString(Point(0, 0), Point(30, 0), Point(30, 30), Point(0, 0))))));

MULTIPOINT

CREATE TABLE multi_point_gis (g MULTIPOINT);
SHOW FIELDS FROM multi_point_gis;
INSERT INTO gis_multi_point VALUES
    (MultiPointFromText('MULTIPOINT(0 0,10 10,10 20,20 20)')),
    (MPointFromText('MULTIPOINT(1 1,11 11,11 21,21 21)')),
    (MPointFromWKB(AsWKB(MultiPoint(Point(3, 6), Point(4, 10)))));

MULTILINESTRING

CREATE TABLE multiriga_gis (g MULTILINESTRING);
SHOW FIELDS FROM multiriga_gis;
INSERT INTO gis_multi_line VALUES
    (MultiLineStringFromText('MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))')),
    (MLineFromText('MULTILINESTRING((10 48,10 21,10 0))')),
    (MLineFromWKB(AsWKB(MultiLineString(LineString(Point(1, 2), Point(3, 5)), LineString(Point(2, 5), Point(5, 8), Point(21, 7))))));

MULTIPOLYGON

CREATE TABLE gis_multi_polygon  (g MULTIPOLYGON);
SHOW FIELDS FROM multipoligono_gis;
INSERT INTO multipoligono_gis VALUES
    (MultiPolygonFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))')),
    (MPolyFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))')),
    (MPolyFromWKB(AsWKB(MultiPolygon(Polygon(LineString(Point(0, 3), Point(3, 3), Point(3, 0), Point(0, 3)))))));

GEOMETRYCOLLECTION

CREATE TABLE collezione_geometrica_gis  (g GEOMETRYCOLLECTION);
SHOW FIELDS FROM collezione_geometrica_gis;
INSERT INTO gis_geometrycollection VALUES
    (GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))')),
    (GeometryFromWKB(AsWKB(GeometryCollection(Point(44, 6), LineString(Point(3, 6), Point(7, 9)))))),
    (GeomFromText('GeometryCollection()')),
    (GeomFromText('GeometryCollection EMPTY'));

GEOMETRY

CREATE TABLE gis_geometry (g GEOMETRY);
SHOW FIELDS FROM geometria;
INSERT into geometria SELECT * FROM punto_gis;
INSERT into geometria SELECT * FROM riga_gis;
INSERT into geometria SELECT * FROM poligono_gis;
INSERT into geometria SELECT * FROM multi_point_gis;
INSERT into geometria SELECT * FROM multiriga_gis;
INSERT into geometria SELECT * FROM multipoligono_gis;
INSERT into geometria SELECT * FROM collezione_geometrica_gis;

Commenti

Sto caricando i commenti......
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.