Sur cette page

GeoJsonData QML Type

Un modèle pour représenter, charger et sauvegarder des documents GeoJSON. Plus d'informations...

Import Statement: import QtLocation 6.11
Since: QtLocation 6.7

Propriétés

Méthodes

Description détaillée

Le type GeoJsonData permet de lire et d'écrire des documents au format GeoJson. GeoJsonData possède des fonctions permettant d'ouvrir et d'enregistrer le modèle à l'URL définie dans la propriété sourceUrl. Le modèle chargé est représenté en interne par QVariant et se lie à la propriété model. Utilisez les délégués pour visualiser les éléments dans une vue.

Pour plus d'informations sur GeoJSON, visitez le site Web de GeoJSON.

Objet GeoJSON

L'objet GeoJSON est un objet JSON valide qui représente une géométrie, une caractéristique ou une collection de géométries ou de caractéristiques.

Un objet GeoJSON doit être de l'un de ces types :

  • Point
  • MultiPoint
  • LineString
  • MultiLineString
  • Polygon
  • MultiPolygon
  • GeometryCollection
  • Feature
  • FeatureCollection

Pour définir le type, liez le membre type à un type GeoJSON. Le membre coordinates peut être un type de QGeoShape ou une liste, selon le type GeoJSON. Le type Feature a un membre supplémentaire geometry et properties.

Une liste des types géométriques et de leurs représentations équivalentes sur QVariant:

  • Pour un objet Point, coordinates est associé à QGeoCircle. Par exemple, pour un objet , est associé à :
    {
        "type": "Point",
        "coordinates": [11, 60]
    }

    Cet objet GeoJSON a une représentation QVariantMap correspondante :

    {
        type: "Point"
        coordinates: QGeoCircle({11.000, 60.000}, -1)
    }
  • Pour un objet LineString, coordinates est associé à QGeoPath. Par exemple :
    {
        "type" : "LineString",
        "coordinates" : [
        [13.5, 43],
        [10.73, 59.92]
        ]
    }

    Cet objet GeoJSON a une représentation QVariantMap correspondante :

    {
        type : "LineString"
        data : QGeoPath([{43.000, 13.500}, {59.920, 10.730}])
    }
  • Pour un objet Polygon, le membre coordinates est associé à QGeoPolygon (des trous sont possibles). Le polygone est un anneau linéaire dont la dernière coordonnée est la même que la première, ce qui permet d'ouvrir et de fermer l'anneau. Le membre bbox est un membre facultatif qui permet de définir l'étendue de la zone, ce qui est utile pour les limites concaves. Pour plus d'informations sur les coordonnées acceptées pour les polygones, lisez les informations sur le type Polygon dans la spécification GeoJson. Par exemple :
    {
        "type": "Polygon",
        "coordinates": [
            [
                [17.13, 51.11],
                [30.54, 50.42],
                [26.70, 58.36],
                [17.13, 51.11]
            ]
        ],
        "bbox": [50, -50, 10, -10]
    }

    Cet objet GeoJSON a une représentation QVariantMap correspondante :

    {
        type : "Polygon"
        coordinates : QGeoPolygon([{51.110, 17.130}, {50.420,30.540}, {58.360, 26.700}, {51.110, 17.130}])
    }

Pour les types MultiPoint, MultiLineString et MultiPolygon, coordinates est associé à QVariantList. L'élément de liste est un QVariantMap contenant la géométrie.

  • Pour un objet MultiPoint, coordinates est associé à une liste de coordonnées de points. Par exemple :
    {
        "type": "MultiPoint",
        "coordinates": [
            [11, 60],
            [5.5, 60.3],
            [5.7, 58.90]
        ]
    }

    Cet objet GeoJSON a une représentation QVariantMap correspondante :

    {
        type : "MultiPoint"
        coordinates : [
            {
                type : "Point"
                coordinates : QGeoCircle({60.000, 11.000}, -1)
            },
            {
                type : "Point"
                coordinates : QGeoCircle({60.300, 5.500}, -1)
            },
            {
                type : "Point"
                coordinates : QGeoCircle({58.900, 5.700}, -1)
            }
            ]
    }
  • Pour un objet MultiLineString, coordinates est associé à une liste de coordonnées LineString. L'objet GeoJSON suivant construit deux lignes non parallèles :
    {
        "type" : "MultiLineString",
        "coordinates" : [
        [[13.5, 43], [10.73, 59.92]],
        [[9.15, 45], [-3.15, 58.90]]
        ]
    }

    Cet objet GeoJSON a une représentation correspondante sur QVariantMap:

    {
        type : "MultiLineString"
        coordinates : [
            {
                type : "LineString"
                coordinates : QGeoPath([{45.000, 9.150}, {58.900, -3.150}])
            },
            {
                type : "LineString"
                coordinates : QGeoPath([{43.000, 13.500}, {59.920, 10.730}])
            }
        ]
    }
  • Pour un type MultiPolygon, coordinates est associé à une liste de coordonnées de polygone. Le polygone est un anneau linéaire et le type Polygon contient plus d'informations sur les formats acceptés. L'objet GeoJSON suivant contient une liste de deux triangles :
    {
        "type" : "MultiPolygon",
        "coordinates" : [
        [
            [[17.13, 51.11],
            [30.54, 50.42],
            [26.74, 58.36],
            [17.13, 51.11]
            ]],
        [
            [[19.84, 41.33],
            [30.45, 49.26],
            [17.07, 50.10],
            [19.84, 41.33]
            ]]
        ]
    }

    Cet objet GeoJSON a une représentation QVariantMap correspondante :

    {
        type : "MultiPolygon"
        coordinates : [
            {
                type : "Polygon"
                coordinates : QGeoPolygon([{51.110, 17.130}, {50.420,30.540}, {58.360, 26.740}])
            },
            {
                type : "Polygon"
                coordinates : QGeoPolygon([{41.330, 19.840}, {49.260,30.450}, {50.100, 17.070}])
            }
            ]
    }

Le type GeometryCollection est une composition d'autres types géométriques. La valeur du membre geometries est un QVariantList contenant des QVariantMaps de différents types, y compris d'autres types GeometryCollection.

Par exemple, le type GeometryCollection suivant contient plusieurs autres géométries :

{
    "type" : "GeometryCollection",
    "geometries" : [
        {
            "type" : "MultiPoint",
            "coordinates" : [
                [11,60], [5.5,60.3], [5.7,58.90]
            ]
        },
        {
            "type" : "MultiLineString",
            "coordinates": [
                [[13.5, 43], [10.73, 59.92]],
                [[9.15, 45], [-3.15, 58.90]]
            ]
        },
        {
            "type" : "MultiPolygon",
            "coordinates" : [
                [
                    [
                        [17.13, 51.11],
                        [30.54, 50.42],
                        [26.74, 58.36],
                        [17.13, 51.11]
                    ]
                ],
                [
                    [
                        [19.84, 41.33],
                        [30.45, 49.26],
                        [17.07, 50.10],
                        [19.84, 41.33]
                    ]
                ]
            ]
        }
    ]
}

Cet objet GeoJSON a une représentation QVariantMap correspondante :

{
  type : "GeometryCollection"
  coordinates : [
    {
      type : "MultiPolygon"
      coordinates : [
        {
          type : "Polygon"
          coordinates : QGeoPolygon([{41.330, 19.840}, {49.260, 30.450}, {50.100, 17.070}])
        },
        {
          type : "Polygon"
          coordinates : QGeoPolygon([{51.110, 17.130}, {50.420, 30.540}, {58.360, 26.740}])
        }
      ]
    }
    {
      type : "MultiLineString"
      coordinates : [
        {
          type : "LineString"
          coordinates : QGeoPath([{45.000, 9.150}, {58.900, -3.150}])
        },
        {
          type : "LineString"
          coordinates : QGeoPath([{43.000, 13.500}, {59.920, 10.730}])
        }
      ]
    }
    {
      type : "MultiPoint"
      coordinates : [
        {
          type : Point
          coordinates : QGeoCircle({58.900, 5.700}, -1)
        },
        {
          type : Point
          coordinates : QGeoCircle({60.300, 5.500}, -1)
        },
        {
          type : Point
          coordinates : QGeoCircle({60.000, 11.000}, -1)
        }
      ]
    }
  ]
}

Le type Feature contient un membre supplémentaire geometry et properties. Le seul moyen de distinguer un objet Feature d'autres objets géométriques est de vérifier l'existence d'un nœud properties dans l'objet QVariantMap.

Par exemple, l'objet Feature suivant possède une géométrie et des propriétés :

{
    "type": "Feature",
    "id": "Poly",
    "properties": {
        "name": "Poly",
        "text": "This is a Feature with a Polygon",
        "color": "limegreen"
    },
    "geometry": {
        "type": "Polygon",
        "coordinates": [
            [
                [17.13, 51.11],
                [30.54, 50.42],
                [26.70, 58.36],
                [17.13, 51.11]
            ],
            [
                [23.46, 54.36],
                [20.52, 51.91],
                [28.25, 51.50],
                [26.80, 54.36],
                [23.46, 54.36]
            ]
        ]
    }
}

Cet objet GeoJSON a une représentation QVariantMap correspondante :

{
  type : "Polygon"
  data : QGeoPolygon([{51.110, 17.130}, {50.420,30.540}, {58.360, 26.700}, {51.110, 17.130}])
  properties : {text : "This is a Feature with a Polygon"}
}

Le site FeatureCollection est une composition d'objets Feature. Le membre features est lié à un objet QVariantList contenant d'autres objets Feature.

Par exemple, l'objet FeatureCollection suivant possède plusieurs entités et géométries :

{
    "type" : "FeatureCollection",
    "properties" : {
        "color" : "crimson"
    },
    "features" : [
        {
            "type" : "Feature",
            "id" : "Poly",
            "properties" : {
                "text" : "This is a Feature with a Polygon"
            },
            "geometry" : {
            "type" : "Polygon",
            "coordinates" : [
                [
                    [17.13, 51.11],
                    [30.54, 50.42],
                    [26.70, 58.36],
                    [17.13, 51.11]
                ],
                [
                    [23.46, 54.36],
                    [20.52, 51.91],
                    [28.25, 51.50],
                    [26.80, 54.36],
                    [23.46, 54.36]
                ]
            ]
        }
    },
    {
        "type" : "Feature",
        "id" : "MultiLine",
        "properties" : {
            "text" : "This is a Feature with a MultiLineString",
            "color" : "deepskyblue"
        },
        "geometry" : {
            "type" : "MultiLineString",
            "coordinates" : [
                [[13.5, 43], [10.73, 59.92]],
                [[9.15, 45], [-3.15, 58.90]]
            ]
        }
    }
    ]
}

Cet objet GeoJSON a une représentation correspondante sur QVariantMap:

{
    type: "FeatureCollection"
    data: [{
            type: "MultiLineString"
            data: [{
                type: "LineString"
                data: QGeoPath( [{45.000, 9.150}, {58.900, -3.150}] )
            } {
                type: "LineString"
                data: QGeoPath( [{43.000, 13.500}, {59.920, 10.730}] )
            }]
            properties: { text: "This is a Feature with a MultiLineString" }
        },
        {
            type: "Polygon"
            data: QGeoPolygon(  {51.110, 17.130},
                                {50.420, 30.540},
                                {58.360, 26.700},
                                {51.110, 17.130}
                            )
            properties: { text: "This is a Feature with a Polygon" }
        }
    ]
}

Exemple GeoJson

L'exemple GeoJson Viewer démontre l'utilisation du type QML GeoJsonData pour charger et visualiser des coordonnées sur une carte.

Documentation sur les propriétés

model : QVariant [since 6.7]

Une représentation QVariant du document GeoJSON. Les délégués QML peuvent afficher le contenu dans des vues.

Cette propriété a été introduite dans Qt 6.7.

sourceUrl : url [since 6.7]

L'URL d'un document GeoJSON. La définition de cette propriété permet de charger le document et de lier l'objet au membre model.

Cette propriété a été introduite dans Qt 6.7.

Documentation de la méthode

bool addItem(Item item)

Ajoute l'objet item à l'objet model.

Retourne true si l'ajout est réussi, false sinon.

void clear()

Supprime tous les éléments liés à l'adresse model.

bool open()

Charge le contenu du fichier à l'adresse sourceUrl.

Renvoie true si l'ouverture est réussie, false dans le cas contraire.

bool openUrl(Url url)

Charge le document GeoJson à l'adresse url et le lie à l'adresse model. La propriété sourceUrl est définie à url si l'ouverture du fichier est réussie.

Retourne true si l'ouverture est réussie, false sinon.

bool save()

Enregistre le modèle à l'adresse sourceUrl.

Retourne true si la sauvegarde est réussie, false sinon.

bool saveAs(Url url)

Enregistre le site model à l'adresse url. La propriété sourceUrl est remplacée par url en cas de succès.

Renvoie true si l'enregistrement est réussi, false dans le cas contraire.

void setModelToMapContents(MapView mapItemView)

Ajoute tous les éléments de la carte mapItemView à la carte model de l'objet GeoJsonData. Supprime les éléments de carte précédemment stockés dans l'objet model.

Renvoie true si la configuration est réussie, false dans le cas contraire.

Voir aussi addItem.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.