rgleason / AISradar_pi

Plugin for openCPN that displays AIS targets in a radar view style
GNU General Public License v3.0
2 stars 3 forks source link

AIS Targets do not display in the correct location #14

Closed rgleason closed 1 year ago

rgleason commented 1 year ago

They are all bunched up at one range. Also zooming in to .5 nm does not display the respective ships properly in the right location. Something isn't calculating the locations correctly.

Screenshot (266) Screenshot (265)

rgleason commented 1 year ago

Using this file and VDR to test [Uploading Hakefjord-Sweden-1m.txt…]()

rgleason commented 1 year ago

Some more screen shots. Screenshot (292) Screenshot (293) Screenshot (294)

rgleason commented 1 year ago

Why is the range always calculated to be 4nm for all AIStargets?

Something has changed in wxWidgets 3.2.1 here. Some wxWidgets function is not working or has been dropped in this new version!!!

Range is not calculating properly.

rgleason commented 1 year ago

Search on "range"

 C:\Users\fcgle\source\aisradar_pi\src\aisradar_pi.cpp (10 hits)
    Line  80:     m_ais_range(0),
    Line 379: //                { "Brg" : 180, Range : 1.2 },
    Line 380: //                { "Brg" : 359, Range : 8.3 },
    Line 381: //                { "Brg" : 34, Range : 0.9 },
    Line 382: //                { "Brg" : 13, Range : 0.4 },
    Line 383: //                { "Brg" : 57, Range : 0.7 }
    Line 459:         m_ais_range     = pConf->Read ( _T ( "RADARRange" ),           4L );
    Line 478:         pConf->Write   ( _T ( "RADARRange" ),         m_ais_range      );
  C:\Users\fcgle\source\aisradar_pi\src\aisradar_pi.h (5 hits)
    Line  86:     void             SetAisRange       (int x)  { m_ais_range    = x;   }
    Line  88:     int              GetAisRange       (void)   { return m_ais_range;   }
    Line 113:     int               m_ais_range;
  C:\Users\fcgle\source\aisradar_pi\src\aisview.cpp (40 hits)
    Line  36: static const double    RangeData[9] = {
    Line  40: enum    Ids { cbRangeId = 10001,
    Line  59:     EVT_COMBOBOX ( cbRangeId, AisFrame::OnRange)
    Line  72:     m_pRange(0),
    Line  76:     m_Range(0),
    Line 131:     wxStaticText *st1 = new wxStaticText(panel,wxID_ANY,_("Range"));
    Line 133:     m_pRange = new wxComboBox(panel, cbRangeId, wxT(""));
    Line 134:     m_pRange->Append(wxT("0.25"));
    Line 135:     m_pRange->Append(wxT("0.5") );
    Line 136:     m_pRange->Append(wxT("1")   );
    Line 137:     m_pRange->Append(wxT("2")   );
    Line 138:     m_pRange->Append(wxT("4")   );
    Line 139:     m_pRange->Append(wxT("8")   );
    Line 140:     m_pRange->Append(wxT("12")  );
    Line 141:     m_pRange->Append(wxT("16")  );
    Line 142:     m_pRange->Append(wxT("32")  );
    Line 143:     m_pRange->SetSelection(pPlugIn->GetAisRange());
    Line 144:     controls->Add(m_pRange);
    Line 193: void AisFrame::OnRange ( wxCommandEvent& event ) {
    Line 194:     pPlugIn->SetAisRange(m_pRange->GetSelection());
    Line 251:     int cur = m_pRange->GetSelection();
    Line 253:         m_pRange->SetSelection(--cur);
    Line 255:     if ( rotation < 0 && cur < int(m_pRange->GetCount()) - 1 ) {
    Line 256:         m_pRange->SetSelection(++cur);
    Line 293:     renderRange(dc, center, size, radius);
    Line 330:     dt.SetNavDetails(RangeData[m_pRange->GetSelection()], offset, m_ShowCogArrows, m_CogArrowMinutes);
    Line 335:         if (t->Range_NM>0.0 && t->Brg>0.0) {
    Line 342:                 dt.SetState(t->MMSI, Name, t->Range_NM, t->Brg, t->COG, t->SOG, t->HDG,
    Line 351: void AisFrame::renderRange(wxDC& dc, wxPoint &center, wxSize &size, int radius) {
    Line 370:     // Draw the range description
    Line 375:     float Range=RangeData[m_pRange->GetSelection()];
    Line 376:     dc.DrawText(wxString::Format(wxT("%s %2.2f"), _("Range"),Range  ), 0, 0);
  C:\Users\fcgle\source\aisradar_pi\src\aisview.h (4 hits)
    Line 112:     void OnRange( wxCommandEvent& event );
    Line 119:     void renderRange( wxDC& dc, wxPoint &center, wxSize &size, int radius );
    Line 129:     wxComboBox             *m_pRange;
    Line 133:     int                     m_Range;
  C:\Users\fcgle\source\aisradar_pi\src\Target.cpp (8 hits)
    Line 104:     Range( 0. ),
    Line 133: void Target::SetNavDetails(double range, double mycog, bool showarrow, int arrowminutes) {
    Line 134:     Range=range;
    Line 166:         int vsize  = ((double)ArrowMinutes/60)* Sog / Range * (double)Radius ;
    Line 325:     // Check if the target is less than sqrt 2 times the range away
    Line 328:     if (Dist < Range * 1.4) {
    Line 334:             double delta= Dist/Range*(double)Radius;
  C:\Users\fcgle\source\aisradar_pi\src\Target.h (2 hits)
    Line  99:     void SetNavDetails(double range, double mycog,                // details of navigation view
    Line 119:     double                    Range;
rgleason commented 1 year ago

Search on Bearing

  C:\Users\fcgle\source\aisradar_pi\src\aisview.cpp (12 hits)
    Line  42:                 cbBearingLineId,
    Line  61:     EVT_CHECKBOX ( cbBearingLineId, AisFrame::OnBearingLine )
    Line  73:     m_pBearingLine(0),
    Line 153:     m_pBearingLine = new wxCheckBox(panel, cbBearingLineId, _("EBL"));
    Line 154:     m_pBearingLine->SetValue(false);
    Line 155:     controls->Add(m_pBearingLine, 0, wxLEFT, 10);
    Line 216: void AisFrame::OnBearingLine( wxCommandEvent& event ) {
    Line 222:     if (m_pBearingLine->GetValue()) {
    Line 398:     if (m_pBearingLine->GetValue()) {
    Line 399:         // Display and estimated bearing line
  C:\Users\fcgle\source\aisradar_pi\src\aisview.h (2 hits)
    Line 114:     void OnBearingLine( wxCommandEvent& event );
    Line 130:     wxCheckBox             *m_pBearingLine;
rgleason commented 1 year ago

Removed from PIM until these problems are fixed.

rgleason commented 1 year ago

Bdbcat advised that this was caused by an OpenCPN optimization that reduced the AIS target stream via the API. This has been fixed in O5.8.2