// slot void GeoreferencingDialog::projectionChanged() { ScopedMultiSignalsBlocker block( crs_selector, lat_edit, lon_edit ); if (georef->getState() == Georeferencing::Normal) { const std::vector< QString >& parameters = georef->getProjectedCRSParameters(); auto temp = CRSTemplateRegistry().find(georef->getProjectedCRSId()); if (!temp || temp->parameters().size() != parameters.size()) { // The CRS id is not there anymore or the number of parameters has changed. // Enter as custom spec. crs_selector->setCurrentCRS(CRSTemplateRegistry().find("PROJ.4"), { georef->getProjectedCRSSpec() }); } else { crs_selector->setCurrentCRS(temp, parameters); } } LatLon latlon = georef->getGeographicRefPoint(); double latitude = latlon.latitude(); double longitude = latlon.longitude(); lat_edit->setValue(latitude); lon_edit->setValue(longitude); QString osm_link = QString("http://www.openstreetmap.org/?lat=%1&lon=%2&zoom=18&layers=M"). arg(latitude).arg(longitude); QString worldofo_link = QString("http://maps.worldofo.com/?zoom=15&lat=%1&lng=%2"). arg(latitude).arg(longitude); link_label->setText( tr("<a href=\"%1\">OpenStreetMap</a> | <a href=\"%2\">World of O Maps</a>"). arg(osm_link). arg(worldofo_link) ); QString error = georef->getErrorText(); if (error.length() == 0) status_field->setText(tr("valid")); else status_field->setText(QString("<b style=\"color:red\">") % error % "</b>"); }
void GeoreferencingTest::testCRSTemplates() { auto epsg_template = CRSTemplateRegistry().find("EPSG"); QCOMPARE(epsg_template->parameters().size(), (std::size_t)1); QCOMPARE(epsg_template->coordinatesName(), QString{"EPSG @code@ coordinates"}); QCOMPARE(epsg_template->coordinatesName({ "4326" }), QString{"EPSG 4326 coordinates"}); georef.setProjectedCRS("EPSG", epsg_template->specificationTemplate().arg("5514"), { "5514" }); QVERIFY(georef.isValid()); QCOMPARE(georef.getProjectedCoordinatesName(), QString{"EPSG 5514 coordinates"}); }