Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将GeoJson文件中的数据提取到Qt类对象中?_Json_Qt_Geojson - Fatal编程技术网

如何将GeoJson文件中的数据提取到Qt类对象中?

如何将GeoJson文件中的数据提取到Qt类对象中?,json,qt,geojson,Json,Qt,Geojson,如何将GeoJson文件的所有字符串转换为类对象 GeoJson文件示例: {"type":"FeatureCollection","features" :[ {"type":"feature","properties":{"type":"126"},"geometry": {"type":"POINT","coordinates":[197,98]}} {"type":"feature","properties":{"type":"126"},"geometry": {"type":"POI

如何将GeoJson文件的所有字符串转换为类对象

GeoJson文件示例:

{"type":"FeatureCollection","features" :[ 
{"type":"feature","properties":{"type":"126"},"geometry":
{"type":"POINT","coordinates":[197,98]}}
{"type":"feature","properties":{"type":"126"},"geometry":
{"type":"POINT","coordinates":[142,24]}}
{"type":"feature","properties":{"type":"126"},"geometry":
{"type":"POINT","coordinates":[185,53]}}]}
我需要为每个字符串创建一个类对象并填写其字段:

class Json
{
public:
    Json();
    QString type;
    QString propeties_type;
    QString geometry_type;
    int x_coord,y_coord;
};
我尝试使用QVariant,但我不知道如何提取信息:

QByteArray data = file.readAll();
QJsonDocument jsdoc = QJsonDocument::fromJson(data);
QVariant variant = jsdoc.object()["features"].toVariant();

我会用以下方法来做:

std::vector<Json> result;

QByteArray data = file.readAll();
QJsonDocument jsdoc = QJsonDocument::fromJson(data);

QJsonArray features = jsdoc.object()["features"].toArray();

QJsonArray::const_iterator it = features.constBegin();
while (it != features.constEnd())
{
  Json json;

  QJsonObject feature = it->toObject();

  json.type = "feature";
  json.propeties_type = feature["properties"].toObject()["type"].toString();

  QJsonObject geometry = feature["geometry"].toObject();
  json.geometry_type = geometry["type"].toString();

  QJsonArray coordinates = geometry["coordinates"].toArray();
  assert(coordinates.size() == 2);
  json.x_coord = coordinates.at(0).toInt();
  json.x_coord = coordinates.at(1).toInt();

  result.push_back(json);

  ++it;
}
std::向量结果;
QByteArray data=file.readAll();
QJsonDocument jsdoc=QJsonDocument::fromJson(数据);
QJsonArray features=jsdoc.object()[“features”].toArray();
QJsonArray::const_迭代器it=features.constBegin();
while(it!=features.constEnd())
{
Json;
QJsonObject feature=it->toObject();
json.type=“feature”;
json.properties_type=feature[“properties”].toObject()[“type”].toString();
QJsonObject geometry=特征[“几何体”]。toObject();
json.geometry_type=geometry[“type”].toString();
QJsonArray坐标=几何体[“坐标”]。toArray();
断言(坐标.size()=2);
json.x_coord=coordinates.at(0).toInt();
json.x_coord=coordinates.at(1).toInt();
结果。推回(json);
++它;
}
代码生成一个
Json
对象向量,每个对象都包含有关“功能”的信息