Tous les produits
Search
Centre de documentation

Hologres:Querying data using spatial functions

Dernière mise à jour :Aug 25, 2026

Dans Hologres, les fonctions spatiales PostGIS permettent d'interroger des données spatiales stockées dans des tables. Cette rubrique explique comment importer des données depuis une machine locale vers Hologres, puis utiliser ces fonctions pour exécuter des requêtes.

Prérequis

Informations générales

PostGIS est une extension spatiale de PostgreSQL qui fournit des fonctionnalités spatiales, notamment des objets, des index, des fonctions et des opérateurs.

Cette rubrique s'appuie sur des exemples de tables contenant divers types d'informations spatiales telles que la longitude, la latitude, les coordonnées et la distance. Vous utiliserez HoloWeb pour créer des tables, importer des données locales dans les tables accommodations et zipcode, puis interroger ces données via les fonctions spatiales PostGIS.

Procédure

Étape

Description

Étape 1 : Créer des tables Hologres

Créez la table accommodations dans une base de données de votre instance Hologres afin de stocker des données d'hébergement telles que les emplacements géographiques (longitude et latitude) et les noms des annonces. Créez également la table zipcode pour conserver les codes postaux de Berlin.

Étape 2 : Importer les exemples de données spatiales

Importez les fichiers de données locaux dans les tables accommodations et zipcode à l'aide de HoloWeb.

Étape 3 : Utiliser les fonctions spatiales pour interroger les données

Exploitez les fonctions spatiales PostGIS pour interroger les données contenues dans les deux tables Hologres.

Étape 1 : Créer des tables Hologres

Créez les tables accommodations et zipcode dans votre base de données.

  1. Connectez-vous à l'Éditeur SQL HoloWeb.

  2. Cliquez sur l'icône image située sous l'onglet SQL Editor pour ouvrir la fenêtre Ad-hoc Query. Dans la barre d'outils de cette fenêtre, sélectionnez votre Instance Name Hologres ainsi que la Database correspondante.

  3. Activez l'extension PostGIS.

    Saisissez l'instruction suivante dans l'éditeur SQL, puis cliquez sur Run.

    CREATE extension IF NOT EXISTS postgis; -- Enable the PostGIS extension.
  4. Créez la table accommodations.

    Exécutez l'instruction SQL ci-dessous pour créer la table accommodations. Celle-ci contiendra les données relatives aux hébergements, notamment leur emplacement géographique (longitude et latitude), le nom de l'annonce et d'autres détails.

    Remarque

    Une fois la table créée, vérifiez le résultat. Dans le volet Table Directory situé à gauche, cliquez sur l'icône d'actualisation image, puis accédez à public > Table. Vous pouvez également consulter les Operational Logs pour confirmer la création réussie de la table.

    CREATE TABLE public.accommodations (
      id INTEGER PRIMARY KEY,
      shape GEOMETRY,
      name VARCHAR(100),
      host_name VARCHAR(100),
      neighbourhood_group VARCHAR(100),
      neighbourhood VARCHAR(100),
      room_type VARCHAR(100),
      price SMALLINT,
      minimum_nights SMALLINT,
      number_of_reviews SMALLINT,
      last_review DATE,
      reviews_per_month NUMERIC(8,2),
      calculated_host_listings_count SMALLINT, 
      availability_365 SMALLINT
    );
  5. Créez la table zipcode.

    Exécutez l'instruction SQL suivante afin de créer la table zipcode, destinée au stockage des codes postaux de Berlin.

    Remarque

    Après la création de la table, validez l'opération. Dans le volet Table Directory de gauche, cliquez sur l'icône d'actualisation image, puis accédez à public > Table. Vous pouvez également vérifier les Operational Logs pour vous assurer du succès de l'opération.

    CREATE TABLE public.zipcode (
      ogc_field INTEGER PRIMARY KEY NOT NULL,
      wkb_geometry GEOMETRY,
      gml_id VARCHAR(256),
      spatial_name VARCHAR(256),
      spatial_alias VARCHAR(256),
      spatial_type VARCHAR(256)
     );

Étape 2 : Importer les exemples de données spatiales

Utilisez la fonctionnalité Import On-premises File de HoloWeb pour charger les données dans les tables accommodations et zipcode.

  1. Dans la console HoloWeb, cliquez sur Data Solutions dans la barre de navigation supérieure.

  2. Sur la page Data Solutions, cliquez sur Import On-premises File dans le volet de navigation de gauche, puis sur New Data Import à droite.

  3. Spécifiez la table Hologres cible pour l'importation.

    Dans la boîte de dialogue Import On-premises File, saisissez un nom de tâche et sélectionnez votre instance, votre base de données ainsi que la table concernée (accommodations ou zipcode). Cliquez ensuite sur Next.

  4. Définissez les données à importer et le format d'encodage.

    Sous l'onglet Upload File, configurez les paramètres suivants et cliquez sur Next.

    Paramètre

    Description

    Select File

    Cliquez sur Browse pour charger le fichier de données à importer. Seuls les fichiers portant l'extension .txt, .csv ou .log sont pris en charge. Sélectionnez le fichier de données accommodations ou zipcode précédemment téléchargé.

    Delimiter

    Caractère utilisé pour séparer les entrées de données. Pour cet exemple, sélectionnez SEMICOLON.

    Remarque

    Vous pouvez également choisir l'option située à droite de la liste déroulante afin de définir un délimiteur personnalisé selon vos besoins métier.

    Original Encoding

    Pour cet exemple, sélectionnez UTF-8.

    First Line as Header

    Par défaut, cette option n'est pas sélectionnée. Activez-la si la première ligne de vos données doit servir d'en-tête pour la table Hologres.

  5. Confirmez la configuration.

    Sous l'onglet Import Overview, examinez les informations d'importation affichées sur la page Upload. Celle-ci présente un résumé incluant le nom de la tâche, la base de données cible, le schéma et la table. Après vérification, cliquez sur Execute pour lancer l'importation.

  6. Vérifiez le résultat de l'exécution.

    Une fois la tâche terminée, le système indique si l'exécution a réussi dans l'étape Import Overview. En cas d'échec, consultez la cause de l'erreur pour résoudre le problème, puis tentez à nouveau l'importation.

    Vous pouvez aussi exécuter des instructions SQL dans l'éditeur pour connaître le nombre d'entrées ou afficher le détail des données dans la table Hologres cible :

    • Vérification du nombre d'entrées

      La table accommodations contient 22 248 lignes, tandis que la table zipcode en compte 190.

      SELECT COUNT(*) FROM accommodations; -- Query the number of rows in the accommodations table.
      SELECT COUNT(*) FROM zipcode; -- Query the number of rows in the zipcode table.
    • Interrogation détaillée des données

      SELECT * FROM accommodations; -- Query the rows in the accommodations table.
      SELECT * FROM zipcode; -- Query the rows in the zipcode table.

Étape 3 : Utiliser les fonctions spatiales pour interroger les données

Une fois les tables Hologres nécessaires créées et les exemples de données spatiales importés, vous pouvez exploiter les fonctions spatiales pour interroger ces données. Les exemples suivants sont fournis à titre indicatif. Pour plus de détails sur la syntaxe des fonctions spatiales, reportez-vous à PostGIS pour l'analyse d'informations géographiques.

  • Comptage des lignes de la table accommodations dont l'identifiant du système de référence spatiale (SRID) vaut 4326.

    • Exemple de code :

      SELECT COUNT(*) FROM public.accommodations WHERE ST_SRID(shape) = 4326;
    • Résultat retourné :

       count 
      -------
       22248
      (1 row)
  • Utilisation du format WKT (Well-Known Text) pour rechercher des objets géométriques répondant à des critères précis. Cet exemple permet de vérifier si les codes postaux de la table Hologres zipcodes sont stockés selon le système géodésique mondial WGS84, identifié par le SRID 4326.

    Remarque

    Seules les données spatiales appartenant au même système de référence peuvent être mises en relation.

    • Exemple de code :

      SELECT  ogc_field
              ,spatial_name
              ,spatial_type
              ,ST_SRID(wkb_geometry)
              ,ST_AsText(wkb_geometry)
      FROM    public.zipcode
      ORDER BY spatial_name
      ;
    • Résultat retourné :

      ogc_field  spatial_name  spatial_type  st_srid  st_astext
      ---------------------------------------------------------------
      0           10115        Polygon        4326     POLYGON((...))
      4           10117        Polygon        4326     POLYGON((...))
      8           10119        Polygon        4326     POLYGON((...))
      ...
      (190 rows returned)
  • Recours au format GeoJSON pour obtenir la surface, sa taille et le nombre de points la composant pour le quartier Mitte à Berlin, avec un SRID fixé à 10117.

    • Exemple de code :

      SELECT  ogc_field
              ,spatial_name
              ,spatial_type
              ,ST_AsGeoJSON(wkb_geometry)
              ,ST_Dimension(wkb_geometry)
              ,ST_NPoints(wkb_geometry)
      FROM    public.zipcode
      WHERE   spatial_name = '10117'
      ;
    • Résultat retourné :

      ogc_field  spatial_name  spatial_type                                   st_dimension  st_npoint
      -----------------------------------------------------------------------------------------------
      4           10117         {"type":"Polygon", "coordinates":[[[...]]]}    2             331
  • Dénombrement des hébergements situés à moins de 500 mètres de la porte de Brandebourg, avec un SRID de 4326.

    • Exemple de code :

      SELECT  COUNT(*)
      FROM    public.accommodations
      WHERE   ST_DistanceSphere(shape, ST_GeomFromText('POINT(13.377704 52.516431)', 4326)) < 500
      ;
    • Résultat retourné :

       count 
      -------
          29
      (1 row)
  • Estimation approximative de l'emplacement de la porte de Brandebourg à partir des hébergements situés à proximité.

    • Exemple de code :

      WITH
          poi(loc) AS ( 
              SELECT st_astext(shape) 
              FROM accommodations 
              WHERE name LIKE '%brandenburg gate%' )
      SELECT  COUNT(*)
      FROM    accommodations a
              ,poi p
      WHERE   ST_DistanceSphere(a.shape, ST_GeomFromText(p.loc, 4326)) < 500
      ;
    • Résultat retourné :

       count 
      -------
          60
      (1 row)
  • Récupération des informations détaillées sur tous les hébergements autour de la porte de Brandebourg, classés par prix décroissant.

    • Exemple de code :

      SELECT  name
              ,price
              ,ST_AsText(shape)
      FROM    public.accommodations
      WHERE   ST_DistanceSphere(shape, ST_GeomFromText('POINT(13.377704 52.516431)', 4326)) < 500
      ORDER BY price DESC
      ;
    • Résultat retourné :

                              name                        | price |                st_astext                 
      ----------------------------------------------------+-------+------------------------------------------
       DUPLEX APARTMENT/PENTHOUSE in 5* LOCATION! 7583    |   300 | POINT(13.3826510209548 52.5159819722552)
       DUPLEX-PENTHOUSE IN FIRST LOCATION! 7582           |   300 | POINT(13.3799997083855 52.5135918444834)
       Luxury Apartment in Berlin Mitte with View         |   259 | POINT(13.3835653528534 52.516360156825)
       BIG APT 4 BLNCTY-CNTR 43-H6                        |   240 | POINT(13.3800222998777 52.5134224506894)
       BIG APARTMENT-PRIME LOCATION-BEST PRICE! B0303     |   240 | POINT(13.379745196599 52.5162648947249)
       BIG APARTMENT IN BRILLIANT LOCATION-CTY CENTRE B53 |   240 | POINT(13.381383105167 52.5157082721072)
       SONYCENTER: lux apartment - 3room/2bath. WIFI      |   235 | POINT(13.3743158954191 52.5125308432819)
       CENTRE APARTMENT FOR 6 | 8853                      |   220 | POINT(13.3819039478615 52.5134866767369)
       BIG APARTMENT FOR 6 - BEST LOCATION 8863           |   209 | POINT(13.3830430841658 52.5147824286783)
       3 ROOMS ONE AMAZING EXPERIENCE! 8762               |   190 | POINT(13.3819898503053 52.5144190764637)
       AAA LOCATION IN THE CENTRE H681                    |   170 | POINT(13.3821787206534 52.5129769242004)
       H672 Nice Apartment in CENTRAL LOCATION!           |   170 | POINT(13.3803137710339 52.5132386929089)
       "Best View -best location!"                        |   170 | POINT(13.3799551247135 52.5147888483851)
       H652 Best Location for 4!                          |   170 | POINT(13.3805705422409 52.5143845784482)
       H651 FIT´s for Four in a 5* Location!              |   150 | POINT(13.3822063502184 52.5134994650996)
       NEXT TO ATTRACTIONS! H252                          |   110 | POINT(13.3823616629115 52.5136258446666)
       CTY Centre Students Home| G4                       |   101 | POINT(13.3808081476226 52.5130957830586)
       Room for two with private shower / WC              |    99 | POINT(13.3786877948382 52.5208018292043)
       StudentsHome CityCentre Mitte 91-0703              |    95 | POINT(13.3810390515141 52.5142363781923)
       FIRST LOCATION - FAIR PRICE K621                   |    80 | POINT(13.3823909855061 52.5131554670458)
       LONG STAY FOR EXPATS/STUDENTS- CITY CENTRE | K921  |    75 | POINT(13.380320945399 52.512364557598)
       Nice4Students! City Centre 8732                    |    68 | POINT(13.3810147526683 52.5136623602892)
       Comfy Room in the heart of Berlin                  |    59 | POINT(13.3813167311819 52.5127345388756)
       FO(U)R STUDENTS HOME-Best centre Location!         |    57 | POINT(13.380850032042 52.5131726958513)
       Berlin Center Brandenburg Gate !!!                 |    55 | POINT(13.3849641540689 52.5163902851474)
       !!! BERLIN CENTER BRANDENBURG GATE                 |    55 | POINT(13.379997730927 52.5127577639174)
       Superb Double Bedroom in Central Berlin            |    52 | POINT(13.3792991992688 52.5156572293422)
       OMG! That’s so Berlin!                            |    49 | POINT(13.3754883007165 52.5153487677272)
       Apartment in Berlin's old city center              |    49 | POINT(13.3821761577766 52.514037240604)
      (29 rows)
  • Obtention des détails concernant l'hébergement le plus cher et son code postal associé.

    • Exemple de code :

      SELECT  a.price
              ,a.name
              ,ST_AsText(a.shape)
              ,z.spatial_name
              ,ST_AsText(z.wkb_geometry)
      FROM    accommodations a
              ,zipcode z
      WHERE   price = 9000
      AND     ST_Within(a.shape, z.wkb_geometry)
      ;
    • Résultat retourné :

      price   name                                 st_astext                                  spatial_name      st_astext
      -------------------------------------------------------------------------------------------------------------------------------------------------
      9000    Ueber den Dächern Berlins Zentrum    POINT(13.334436985013 52.4979779501538)    10777             POLYGON((13.3318284987227 52.4956021172799,...
  • Identification des hébergements populaires à Berlin, regroupés par code postal et triés selon le volume de réservations.

    • Exemple de code :

      SELECT  z.spatial_name AS zip
              ,COUNT(*) AS numAccommodations
      FROM    public.accommodations a
              ,public.zipcode z
      WHERE   ST_Within(a.shape, z.wkb_geometry)
      GROUP BY zip
      ORDER BY numAccommodations DESC
      ;
    • Résultat retourné :

      zip      numaccommodations
      ----------------------------
      10245    872
      10247    832
      10437    733
      10115    664
      ...
      (187 rows returned)