En esta página

GeoJsonData QML Type

Un modelo para representar, cargar y guardar documentos GeoJSON. Más...

Import Statement: import QtLocation 6.11
Since: QtLocation 6.7

Propiedades

Métodos

Descripción detallada

El tipo GeoJsonData lee y escribe documentos con formato GeoJson. GeoJsonData tiene funciones para abrir y guardar el modelo en la URL establecida en la propiedad sourceUrl. El modelo cargado se representa internamente mediante QVariant y se vincula a la propiedad model. Utilice delegados para visualizar los elementos en una vista.

Para obtener información sobre GeoJSON, visite el sitio web de GeoJSON.

Objeto GeoJSON

El objeto GeoJSON es un objeto JSON válido que representa una geometría, una característica o una colección de geometrías o características.

Un objeto GeoJSON debe ser uno de estos tipos:

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

Para establecer el tipo, vincule el miembro type a un tipo GeoJSON. El miembro coordinates puede ser un tipo de QGeoShape o una lista, dependiendo del tipo GeoJSON. El tipo Feature tiene un miembro adicional geometry y properties.

Una lista de los tipos geométricos y sus representaciones equivalentes QVariant:

  • Para un objeto Point, coordinates se empareja con QGeoCircle. Por ejemplo:
    {
        "type": "Point",
        "coordinates": [11, 60]
    }

    Este objeto GeoJSON tiene una representación QVariantMap correspondiente:

    {
        type: "Point"
        coordinates: QGeoCircle({11.000, 60.000}, -1)
    }
  • Para un objeto LineString, coordinates se empareja con QGeoPath. Por ejemplo:
    {
        "type" : "LineString",
        "coordinates" : [
        [13.5, 43],
        [10.73, 59.92]
        ]
    }

    Este objeto GeoJSON tiene su correspondiente representación QVariantMap:

    {
        type : "LineString"
        data : QGeoPath([{43.000, 13.500}, {59.920, 10.730}])
    }
  • Para un objeto Polygon, el miembro coordinates se empareja con QGeoPolygon (son posibles los agujeros). El polígono es un anillo lineal, cuya coordenada final es la misma que la primera coordenada, abriendo y cerrando así el anillo. El miembro bbox es un miembro opcional y sirve para establecer el rango del área, útil para límites cóncavos. Para más información sobre las coordenadas de polígono aceptadas, lea sobre el tipo Polígono en la especificación GeoJson. Por ejemplo:
    {
        "type": "Polygon",
        "coordinates": [
            [
                [17.13, 51.11],
                [30.54, 50.42],
                [26.70, 58.36],
                [17.13, 51.11]
            ]
        ],
        "bbox": [50, -50, 10, -10]
    }

    Este objeto GeoJSON tiene su correspondiente representación en QVariantMap:

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

Para los tipos MultiPoint, MultiLineString y MultiPolygon, coordinates se empareja con un QVariantList. El elemento de lista es un QVariantMap que contiene geometría.

  • Para un objeto MultiPoint, coordinates se empareja con una lista de coordenadas Point. Por ejemplo:
    {
        "type": "MultiPoint",
        "coordinates": [
            [11, 60],
            [5.5, 60.3],
            [5.7, 58.90]
        ]
    }

    Este objeto GeoJSON tiene una representación QVariantMap correspondiente:

    {
        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)
            }
            ]
    }
  • Para un objeto MultiLineString, coordinates se empareja con una lista de coordenadas LineString. El siguiente objeto GeoJSON construye dos líneas no paralelas:
    {
        "type" : "MultiLineString",
        "coordinates" : [
        [[13.5, 43], [10.73, 59.92]],
        [[9.15, 45], [-3.15, 58.90]]
        ]
    }

    Este objeto GeoJSON tiene su correspondiente representación 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}])
            }
        ]
    }
  • Para un tipo MultiPolygon, coordinates se empareja con una lista de coordenadas de polígono. El polígono es un anillo lineal y el tipo Polygon tiene más información sobre los formatos aceptados. El siguiente objeto GeoJSON contiene una lista de dos triángulos:
    {
        "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]
            ]]
        ]
    }

    Este objeto GeoJSON tiene su correspondiente representación en QVariantMap:

    {
        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}])
            }
            ]
    }

El tipo GeometryCollection es una composición de otros tipos de geometría. El valor del miembro geometries es un QVariantList que contiene QVariantMaps de varios tipos, incluidos otros tipos GeometryCollection.

Por ejemplo, el siguiente tipo GeometryCollection contiene otras geometrías:

{
    "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]
                    ]
                ]
            ]
        }
    ]
}

Este objeto GeoJSON tiene su correspondiente representación QVariantMap:

{
  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)
        }
      ]
    }
  ]
}

El tipo Feature contiene un miembro adicional geometry y properties. La única forma de distinguir un objeto Feature de otros objetos geométricos es comprobar la existencia de un nodo properties en el objeto QVariantMap.

Por ejemplo, el siguiente Feature tiene una geometría y miembros de propiedades:

{
    "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]
            ]
        ]
    }
}

Este objeto GeoJSON tiene una representación QVariantMap correspondiente:

{
  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"}
}

FeatureCollection es una composición de objetos Feature. El miembro features se vincula a un objeto QVariantList que contiene otros objetos Feature.

Por ejemplo, el siguiente FeatureCollection tiene varias características y geometrías:

{
    "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]]
            ]
        }
    }
    ]
}

Este objeto GeoJSON tiene su correspondiente representación en 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" }
        }
    ]
}

Ejemplo GeoJson

El ejemplo GeoJson Viewer demuestra el uso del tipo GeoJsonData QML para cargar y visualizar coordenadas en un mapa.

Documentación de propiedades

model : QVariant [since 6.7]

Una representación QVariant del documento GeoJSON. Los delegados QML pueden mostrar el contenido en vistas.

Esta propiedad se introdujo en Qt 6.7.

sourceUrl : url [since 6.7]

La URL de un documento GeoJSON. Al establecer esta propiedad se carga el documento y se vincula el objeto al miembro model.

Esta propiedad se introdujo en Qt 6.7.

Documentación del método

bool addItem(Item item)

Añade item al objeto model.

Devuelve true si la adición se realiza correctamente, false en caso contrario.

void clear()

Elimina todos los elementos vinculados a model.

bool open()

Carga el contenido del archivo en sourceUrl.

Devuelve true si la apertura se realiza correctamente, false en caso contrario.

bool openUrl(Url url)

Carga el documento GeoJson en url y lo vincula a model. La propiedad sourceUrl se establece en url si la apertura del archivo se realiza correctamente.

Devuelve true si la apertura se realiza correctamente, false en caso contrario.

bool save()

Guarda el modelo en sourceUrl.

Devuelve true si se ha guardado correctamente, false en caso contrario.

bool saveAs(Url url)

Guarda el model en url. La propiedad sourceUrl se establece en url si se ha guardado correctamente.

Devuelve true si se guarda correctamente, false en caso contrario.

void setModelToMapContents(MapView mapItemView)

Añade todos los elementos de mapa de mapItemView al model del objeto GeoJsonData. Elimina los elementos de mapa previamente almacenados en model.

Devuelve true si la configuración se realiza correctamente, false en caso contrario.

Véase también 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.