当前位置:   article > 正文

QGIS 点位标注_qgis怎么在地图上标点

qgis怎么在地图上标点

已知点的经纬度信息,将点添加到地图中,并用指定的图标标注显示出来。思路很简单:首先创建一个图层,然后图层添加点位信息,最后设置该图层点位信息所关联的图标(注意这里图层所有的点位图标都是一样的)

  1. #include <qgis/core.h>
  2. #include <qgis/gui.h>
  3. #include <QApplication>
  4. #include <QIcon>
  5. int main(int argc, char* argv[])
  6. {
  7. // 初始化QGIS应用程序
  8. QgsApplication app(argc, argv, true);
  9. // 加载QGIS提供的GUI工具
  10. QgsGui::initResources();
  11. // 创建地图Canvas(地图画布)
  12. QgsMapCanvas canvas;
  13. canvas.setCanvasColor(Qt::white);
  14. canvas.enableAntiAliasing(true);
  15. canvas.setMinimumSize(800, 600);
  16. // 创建地图Layer(图层)
  17. QgsVectorLayer* layer = new QgsVectorLayer("Point?crs=EPSG:4326", "Points", "memory");
  18. if (!layer)
  19. {
  20. qDebug() << "Failed to create layer!";
  21. return -1;
  22. }
  23. // 创建Feature(要素)
  24. QgsFeature feature;
  25. QgsGeometry* geometry = new QgsGeometry();
  26. // 设置经纬度坐标,这里假设经度为x,纬度为y
  27. double x = 123.456;
  28. double y = 78.9;
  29. geometry->addPointXY(x, y);
  30. feature.setGeometry(geometry);
  31. // 将Feature添加到图层中
  32. QgsVectorLayerEditBuffer editBuffer(layer);
  33. editBuffer.addFeature(feature);
  34. // 获取点位图标
  35. QString iconPath = ":/icons/marker.png"; // 假设marker.png是资源文件中的图标
  36. QIcon icon(iconPath);
  37. QgsMarkerSymbolV2* markerSymbol = new QgsMarkerSymbolV2();
  38. markerSymbol->setIcon(icon);
  39. QgsSingleSymbolRendererV2* renderer = new QgsSingleSymbolRendererV2(markerSymbol);
  40. layer->setRendererV2(renderer);
  41. // 将图层添加到地图Canvas中
  42. QgsMapLayerRegistry::instance()->addMapLayer(layer);
  43. canvas.setExtent(layer->extent());
  44. canvas.setLayers(QgsMapLayerRegistry::instance()->mapLayers().values());
  45. // 显示地图Canvas
  46. canvas.show();
  47. // 运行QGIS应用程序
  48. return app.exec();
  49. }

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号