S'initier à l'analyse spatiale
Pour commencer à analyser vos données spatiales, vous devez d'abord les charger dans une base de données.
Chargement des données spatiales
CREATE TABLE PointData (PointID integer, the_geom varchar(200));INSERT INTO PointData VALUES (1, inza..ST_Point(3423, 4356));
INSERT INTO PointData VALUES (1, inza..ST_WKTToSQL('Point (3423 4356)'));Notez qu'une seule de ces commandes INSERT est nécessaire pour insérer le point dans la table PointData L'exécution des deux commandes INSERT donne deux points avec le même PointID. La colonne the_geom peut être utilisée partout où le type de données ST_Geometry (ou la sous-classe ST_Point) apparaît dans les fonctions de l'API spatiale.
SELECT inza..ST_GeometryType(the_geom) FROM PointData;
ST_GEOMETRYTYPE
---------------------
ST_Point
ST_PointCREATE TABLE Polys (PolyID integer, the_geom varchar(200));INSERT INTO Polys VALUES (1, inza..ST_WKTToSQL('Polygon ((1000 1000, 1000 5000, 4000 5000, 4000 1000, 1000 1000))'));
INSERT INTO Polys VALUES (2, inza..ST_WKTToSQL('Polygon ((100 100, 100 500, 400 500, 400 100, 100 100))'));SELECT PointID, PolyID FROM PointData AS a, Polys AS b WHERE inza..ST_Intersects(a.the_geom, b.the_geom);
POINTID | POLYID
---------+--------
1 | 1
1 | 1Représentation des données spatiales
Lorsque vous créez un objet géométrique ou que vous chargez des données spatiales existantes dans la base de données, les données sont stockées dans un format interne. Par conséquent, si vous utilisez une requête standard " SELECT * FROM
<table> pour visualiser des données spatiales, les données renvoyées sont illisibles. Pour afficher les données sous une forme lisible, utilisez les fonctions de conversion spatiale.
geoms et y ajoutent un polygone et un objet "linestring" :CREATE TABLE geoms (PolyID INTEGER, the_geom VARCHAR(64000));
INSERT INTO geoms VALUES (1, inza..ST_WKTtoSQL('Polygon ((1 1, 1 4, 3.5 2.5, 6 4, 6 1, 1 1))'));
INSERT INTO geoms VALUES (2, inza..ST_WKTtoSQL('Linestring (1 1, 1 4, 6 4, 6 1)'));Pour afficher les données du " geoms sous une forme lisible, utilisez l'une des fonctions de conversion spatiale :- Pour restituer les données spatiales sous forme de texte, utilisez ST_AsText::
SELECT inza..ST_AsText(the_geom) FROM geoms; ST_ASTEXT --------------------------------------------------------------------- POLYGON ((1 1, 1 4, 3.5 2.5, 6 4, 6 1, 1 1)) LINESTRING (1 1, 1 4, 6 4, 6 1) - Pour restituer les données spatiales en Keyhole Markup Language (KML), utilisez ST_AsKML::
SELECT inza..ST_AsKML(the_geom) FROM geoms; ST_ASKML --------------------------------------------------------------------- <LineString><coordinates>1,1 1,4 6,4 6,1</coordinates></LineString> <Polygon><outerBoundaryIs><LinearRing><coordinates>1,1 1,4 3.5,2.5 6,4 6,1 1,1</coordinates></LinearRing></outerBoundaryIs></Polygon>
Comment les données spatiales sont-elles stockées ?
- Spatiale
- Les données spatiales sont enregistrées dans une colonne VARCHAR.
- Spatial ESRI
- Les données spatiales sont enregistrées dans une colonne ST_GEOMETRY.
Chaque colonne a une taille maximale de 64 000 octets et une ligne de la base de données a une taille maximale de 65 535 octets. Bien que la plupart des objets géométriques puissent être définis entièrement dans un seul champ de 64 000 octets, certains, tels qu'un polygone avec de nombreux sommets, une ligne ou un multipoint avec de nombreux points, peuvent être définis dans un seul champ de 64 000 octets. peut nécessiter plus d'espace.
Typiquement, un polygone qui a un seul anneau (son anneau extérieur) et qui utilise des coordonnées XY pour les sommets peut avoir jusqu'à 3990 sommets avant d'atteindre la limite de taille de la colonne. Le nombre maximal de sommets pouvant se trouver dans une colonne diminue si un polygone possède des anneaux intérieurs (c'est-à-dire des trous) ou si ses sommets utilisent des coordonnées XYZ, XYM ou XYZM.
Chargement de données spatiales à partir d'autres bases de données
Lors du chargement de données spatiales à partir d'autres bases de données, il est possible que certaines géométries soient trop grandes pour être stockées dans une seule colonne. Il est également possible que les données contiennent des types géométriques non simples, ou qu'elles utilisent des caractères ou d'autres valeurs qui ne sont pas pris en charge par les fonctions de chargement.
- Il peut détecter les polygones ayant plus de 3990 sommets et prendre une mesure spécifiée par l'utilisateur, comme découper la géométrie en géométries plus petites, sauter et ignorer la géométrie, interrompre le processus de chargement ou généraliser (ou lisser) la géométrie pour la rendre suffisamment petite pour qu'elle tienne dans le champ cible.
- Il peut détecter des géométries non simples, qui sont prises en charge par la cartouche ESRI Spatial, mais pas par la cartouche Spatial. Il peut soit les filtrer, soit les mettre en mémoire tampon afin de les transformer ultérieurement en géométries simples.
- Il peut charger des données spatiales binaires tout en détectant et en échappant les valeurs binaires connues qui ne sont pas prises en charge par les fonctions de chargement.
Utilisation des fonctions spatiales dans les bases de données utilisateur
Lorsque la cartouche ESRI Spatial ou Spatial est installée, toutes les fonctions spatiales et les procédures stockées sont enregistrées par défaut dans la base de données INZA. Toutefois, vous pouvez également enregistrer les fonctions spatiales et les procédures stockées dans les bases de données utilisateur. Cela vous permet de disposer de plusieurs versions des fonctions spatiales dans un système de célibataires, par exemple à des fins de test.
- Créez la nouvelle base de données d'utilisateurs en entrant la commande suivante, où "
newdbreprésente le nom de la base de données d'utilisateurs que vous souhaitez créer.% nzsql -c "create database newdb;" CREATE DATABASE - Enregistrez nzspatial en entrant la commande suivante :
% nzcm -d newdb -r nzspatial - Exécutez le script create_inza_db.sh en entrant la commande suivante :
% /nz/export/ae/utilities/bin/create_inza_db.sh newdb
- Dans le schéma INZA, lorsque la fonction de prise en charge complète du schéma Netezza Performance Server est activée
- Dans le schéma par défaut, lorsque la fonction Netezza Performance Server de prise en charge du schéma complet est désactivée
Mise à jour de la cartouche Spatial vers la cartouche Spatial ESRI
Vous pouvez utiliser le script 'convert.sh pour vous aider à migrer les données du format binaire bien connu (WKB) utilisé par la cartouche Spatial (nzspatial) vers le format binaire ESRI utilisé par la cartouche ESRI Spatial (nzspatial_esri).
Le script utilise la fonction ST_CONVERT, il n'est donc pas nécessaire d'appeler cette fonction séparément. Le script se trouve dans '/nz/export/ae/products/netezza/nzspatial_esri/<version>/scripts/convert.sh.
- Le SRID 1111 est converti en SRID que vous spécifiez (4269 est la valeur par défaut).
- L'ISRD 1234 est converti en l'ISRD que vous avez spécifié (27700 est la valeur par défaut).
- il existe des fonctions spatiales.
- les fonctions nzspatial_esri existent.
- La base de données de destination est initialisée par l'INA.
| Paramètre | Descriptif |
|---|---|
| <nzspatial db> | Nom de la base de données source contenant les données de la table nzspatial. |
| <nzspatial table> | Le nom de la table source contenant les données nzspatial. |
| <geometry column> | Le nom de la colonne géométrique. |
| <nzspatial function database> | Le nom de la base de données contenant les fonctions nzspatial. |
| <nzspatial_esri function database> | Le nom de la base de données contenant les fonctions nzspatial_esri. |
| <nzspatial_esri db> | Nom de la base de données de destination contenant les données de la table nzspatial_esri nouvellement créée. La valeur par défaut est la base de données source. |
| <nzspatial_esri table> | Le nom de la table de destination contenant les données nzspatial_esri nouvellement créées. La valeur par défaut est un nom de la forme <nzspatial_table>_tmp. |
| <new sphere srid> | Le SRID à attribuer aux données nzspatial_esri nouvellement créées et précédemment attribuées au SRID 1111 (Spherical). La valeur par défaut est 4269. |
| <new cartesian srid> | Le SRID à attribuer aux données nzspatial_esri nouvellement créées qui était précédemment attribué au SRID 1234 (cartésien). La valeur par défaut est 27700. |
