【问题标题】:How to extract lat/long from a shape file programmatically?如何以编程方式从形状文件中提取纬度/经度?
【发布时间】:2014-09-07 15:40:02
【问题描述】:

我使用 Qtshapelib 库成功创建了一个应用程序来打开和显示 shape files

但现在我想获取鼠标光标下每个点的纬度经度

我不知道如何将像(x, y) 这样的像素点转换为纬度/对数坐标。

我应该使用 .dbf 文件吗?

任何参考将不胜感激。谢谢。

【问题讨论】:

  • 通过阅读您提供的参考资料,我不能肯定地说地理纬度和经度存储在这些文件中。在我看来他们不是。
  • @Jongware 也许吧!但是当我用 QGis 之类的东西打开一个 .shp 文件时,它确实有 lat/long !我完全糊涂了。
  • dbf 文件仅用于存储。您需要弄清楚如何将鼠标坐标转换为对应的shapefile 坐标。

标签: c++ qt latitude-longitude shapefile


【解决方案1】:

我推荐使用 QGIS。如果您使用 QGIS,您可以拥有一个 QGsMapCanvas,它有一个名为 xyCoordinates(QgsPoint) 的信号,并在鼠标在地图上移动时发出。 QgsPoint 可以使用名为toString 的函数转换为纬度/经度,或使用toDegreesMinutesSeconds 转换为度/分/秒等其他单位:

connect(map,SIGNAL(xyCoordinates(QgsPoint)),this,SLOT(showMouseCoordinate(QgsPoint)));

void GIS::showMouseCoordinate(const QgsPoint &p)
{

    if ( map->mapUnits() == QGis::DegreesMinutesSeconds )
    {
        ui->coordinateLbl->setText( p.toDegreesMinutesSeconds( 3 ) );
    }
    else
    {
        ui->coordinateLbl->setText( p.toString( 3 ) );
    }
}

【讨论】:

    猜你喜欢
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多