我使用 Qt 和shapelib库成功创建了一个应用程序,以打开并显示 shape files 。
但现在我想得到鼠标光标下每个点的纬度和经度。
我不知道如何将像(x, y)
这样的像素点转换为lat / log坐标。
我应该使用 .dbf 文件吗?
任何参考将不胜感激。感谢。
答案 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 ) );
}
}