es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Latitud/Longitud en el cursor aproximadamente a una distancia de 10 a 20 metros de error?

Estoy utilizando la API de ArcGIS QT/C++ y encontré que al obtener la latitud/longitud de la posición del cursor (o simplemente de cualquier punto en general) hay una diferencia de aproximadamente 10 a 20 metros.
Creo que me falta una referencia espacial en algún lugar,… simplemente no sé dónde.
Estoy utilizando el sdk de tiempo de ejecución qt100.12.

¿Podría alguien darme una pista tal vez?

QPointF MapView::latLongAtCursor(){
    Esri::ArcGISRuntime::Point point = _mapView->screenToLocation(cursor().pos().x(), cursor().pos().y());
    QString raw_coords = Esri::ArcGISRuntime::CoordinateFormatter::toLatitudeLongitude(
        point,
        Esri::ArcGISRuntime::LatitudeLongitudeFormat::DecimalDegrees, 
        6
    );
    QStringList exploded = raw_coords.split(' ');
    QString first = exploded.first();
    QString last = exploded.last();
    double latitude = exploded.first().remove(-1, 1).toDouble();
    double longitude = exploded.last().remove(-1, 1).toDouble();
    if(first.endsWith("S")){
        latitude = -abs(latitude);
    }
    if(last.endsWith("W")){
        longitude = -abs(longitude);
    }
    return QPointF(longitude, latitude);
}

*Edit/Actualización: Parece que la llamada a cursor() devuelve una posición x/y no válida desde el principio. Estoy utilizando DockWidgets y parece que el problema radica en Qt.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Basado en el fragmento de código proporcionado, parece que el problema puede no estar en SpacialReference. Los valores de latitud/longitud se calculan utilizando el método screenToLocation proporcionado por la API de ArcGIS. Sin embargo, si la posición del cursor no se recupera con precisión, los valores resultantes de latitud/longitud también serán inexactos.

    La edición actualizada indica que el problema radica en los DockWidgets de Qt. Puede ser necesario investigar y depurar aún más la obtención de la posición del cursor desde los DockWidgets para recuperar con precisión la posición del cursor y posteriormente calcular los valores de latitud/longitud.

Comments are closed.