如何以编程方式从形状文件中提取lat / long?

时间:2014-09-07 15:40:02

标签: c++ qt latitude-longitude shapefile

我使用 Qt shapelib库成功创建了一个应用程序,以打开并显示 shape files

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

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

我应该使用 .dbf 文件吗?

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

1 个答案:

答案 0 :(得分: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 ) );
    }
}