该代码可以读取(x,y)或者(X,Y,Z)格式,自己可以根据自己的需要进一步修改结构体,话不多说,直接上代码:
//读取json文件获取坐标
const char* file_name = "E:\digrid_application\proj_file\neighbor\cells.geojson";
geojson_t geojson;
geojson.convert(file_name);
std::cout << std::endl;
//需要对轨迹点进行重新排序
sort(tracList, tracList + model_out->rowCount(), MyCompare_seqnum());;
//render geojson
size_t size_features = geojson.m_feature.size();
for (size_t idx_fet = 0; idx_fet < size_features; idx_fet++)
{
feature_t feature = geojson.m_feature.at(idx_fet);
size_t size_geometry = feature.m_geometry.size();
for (size_t idx_geo = 0; idx_geo < size_geometry; idx_geo++)
{
geometry_t geometry = feature.m_geometry.at(idx_geo);
size_t size_pol = geometry.m_polygons.size();
for (size_t idx_pol = 0; idx_pol < size_pol; idx_pol++)
{
polygon_t polygon = geometry.m_polygons[idx_pol];
size_t size_crd = polygon.m_coord.size();
tracList[idx_fet].boundaryPoint = new GeodeticPoint[polygon.m_coord.size() - 1];
tracList[idx_fet].boundaryPointNums = polygon.m_coord.size() - 1;
if (size_crd == 0)
{
continue;
}
for (size_t idx_crd = 0; idx_crd < size_crd-1; idx_crd++)
{
tracList[idx_fet].boundaryPoint[idx_crd].m_longitude = polygon.m_coord[idx_crd].x;
tracList[idx_fet].boundaryPoint[idx_crd].m_latitude = polygon.m_coord[idx_crd].y;
}
} //idx_pol
} //idx_geo
} //idx_fet
其中需要的相关头文件我放在这里:
gson相关头文件下载



