Я успешно создал приложение, используя Qt а также shapelib библиотека для открытия и отображения файлы форм.
Но теперь я хочу получить широта а также долгота каждой точки под курсором мыши.
Я не знаю, как преобразовать точку в пикселе, что-то вроде (x, y)
в широта / лог координаты.
Должен ли я использовать .DBF файл?
Любая ссылка будет оценена. Благодарю.
Я рекомендую использовать 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 ) );
}
}