qgis / QGIS

QGIS is a free, open source, cross platform (lin/win/mac) geographical information system (GIS)
https://qgis.org
GNU General Public License v2.0
10.62k stars 3.01k forks source link

Projectin transformations on fly still crash QGIS #10321

Closed qgib closed 5 years ago

qgib commented 18 years ago

Author Name: anonymous - (anonymous -) Original Redmine Issue: 262

Redmine category:projection_support Assignee: Gary Sherman


I loaded simple shapefile with coordinate system r1 and started to play with projection changing. At third projection it crashed :) Unfortunately crashes on projection changes are very often. I can add more fault examples, if you need such :)

r1:+proj=tmerc +lat_0=0 +lon_0=24 +k=0.999600 +x_0=500000 +y_0=0 +ellps=WGS84 +units=m +no_defs

Crash:

Selection sql : select parameters from tbl_srs where srs_id = 2473
Item selected : Lisbon
Item selected full string : +proj=longlat +ellps=intl +no_defs
[[SpatialRefSys]]/ProjectSRSProj4String: +proj=longlat +ellps=intl +no_defs
 [[QgsProjectionSelector]]::getCurrentProj4String :  mySrsId = 2473
 [[QgsProjectionSelector]]::getCurrentProj4String :  USER_PROJECTION_START_ID = 100000
[[QgsProjectionSelector]]::getCurrentProj4String db = /usr/local/share/qgis/resources/srs.db
Selection sql : select parameters from tbl_srs where srs_id = 2473
Item selected : Lisbon
Item selected full string : +proj=longlat +ellps=intl +no_defs
Debug: qgsspatialrefsys.cpp: 408: (createFromSrsId) [[QgsSpatialRefSys]]::createFromSrsId
Debug: qgsspatialrefsys.cpp: 1285: (openDb) [[QgsSpatialRefSys]]::openDb path = /usr/local/share/
qgis/resources/srs.db
Debug: qgsspatialrefsys.cpp: 906: (setMapUnits) Projection has angular units of degree
Setting map units to 2
Debug: qgsscalecalculator.cpp: 114: (calculateGeographicDistance) Distance across map extent
(m): 1.16284e+10
Debug: qgsscalecalculator.cpp: 70: (calculate) Using conversionFactor of 39.3701
[[QgsMapCanvas]]::render
Debug: qgsmaprender.cpp: 184: (render) ========== Rendering ==========
Debug: qgsmaprender.cpp: 200: (render) Starting to render layer stack.
Debug: qgsmaprender.cpp: 210: (render) At layer item 'krasta_linija_poly20060908234320269'
Debug: qgsmaprender.cpp: 218: (render) If there is a QPaintEngine error here, it is caused by
 an emit call
Debug: qgsmaplayer.cpp: 127: (name) [[QgsMapLayer]]::name: returning name 'krasta_linija_poly
Debug: qgsmaprender.cpp: 231: (render) Rendering layer krasta_linija_poly
Debug: qgsmaprender.cpp: 232: (render),   Layer minscale : 0
Debug: qgsmaprender.cpp: 233: (render),   Layer maxscale : 0
Debug: qgsmaprender.cpp: 235: (render),   Scale dep. visibility enabled? : 0
Debug: qgsmaprender.cpp: 236: (render)   Input extent: 588123.5256602407898754,6360201.563419
8477491736 : 654035.8441072874702513,6418725.7058217935264111
Debug: qgsmaplayer.cpp: 561: (coordinateTransform) Maplayer asked for coordinateTransform whi
ch is....
Debug: qgsmaplayer.cpp: 568: (coordinateTransform) valid
Debug: qgscoordinatetransform.cpp: 336: (transformBoundingBox) Entering transformBoundingBox.
..
Debug: qgscoordinatetransform.cpp: 383: (transformBoundingBox) Projected extent: 25.465525428
0335228,57.3593244591122442 : 26.5979268904583002,57.9023568248321681
Debug: qgsmaprender.cpp: 239: (render)   Transformed extent: 25.4655254280335228,57.359324459
1122442 : 26.5979268904583002,57.9023568248321681
Debug: qgsmaplayer.cpp: 520: (connectNotify) [[QgsMapLayer]] connected to 2drawingProgress(int,in
t)
Debug: qgsmaplayer.cpp: 598: (projectExtent) Getting extent of canvas in layers CS. Canvas is
  = 1632007.9092671519611031,1161399.9868973668199033 : 1739450.5885653679724783,1238356.1759
263921994716
Debug: qgscoordinatetransform.cpp: 461: (transformCoords) Projection failed emitting invalid
transform signal: Neveiksmīgs inverse trasnform from
(1.63201e+06, 1.1614e+06)
with error: geocentric transformation missing z or ellps

Warning: [[QgsMapLayer]]::invalidTransformInput() called
Warning: Throwing exception qgscoordinatetransform.cppǐ
Warning: Throwing exception qgscoordinatetransform.cppË
Warning: Throwing exception qgscoordinatetransform.cppß
Warning: Transform error caught in qgsmaplayer.cpp, line 633
Debug: qgsogrprovider.cpp: 607: (select) Selection rectangle is:  = -179769313486231570814527                    423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382                    464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133                    942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124                    858368.0000000000000000,-17976931348623157081452742373170435679807056752584499659891747680315                    726078002853876058955863276687817154045895351438246423432132688946418276846754670353751698604                    991057655128207624549009038932894407586850845513394230458323690322294816580855933212334827479                    7826204144723168738177180919299881250404026184124858368.0000000000000000 : 179769313486231570                    814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953                    514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508                    455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026                    184124858368.0000000000000000,179769313486231570814527423731704356798070567525844996598917476                    803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516                    986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348                    274797826204144723168738177180919299881250404026184124858368.0000000000000000
Warning: Setting spatial filter failed!
qgis: qgsogrprovider.cpp:638: virtual void [[QgsOgrProvider]]::select(QgsRect*, bool): Assertion                     @result==0' failed.
Aborted

qgib commented 18 years ago

Author Name: magnus-homann-se - (magnus-homann-se -)


This is probably due to the fact that the selection rectangle is very big, and that it somehow fails to set it and that 'filter' is set to NULL in

void [[QgsOgrProvider]]::select(QgsRect *rect, bool useIntersect)

Is there a way to reproduce this issue?

qgib commented 18 years ago

Author Name: anonymous - (anonymous -)


I created new shapefile and started top play with proj transformations (clicking on random projections till QGIS segfaults). No mater how insane those projection transformations could be, QGIS should NOT segfault. Error message, refusal to perform transformation etc. is OK, but not segfault.

To reproduce crash, load attached shapefile, enable projection changing on fly and choose one of these projections: [[br]] QGIS SRSID: 66 [[br]] QGIS SRSID: 175 [[br]] QGIS SRSID: 937 [[br]] QGIS SRSID: 1696

qgib commented 18 years ago

Author Name: Gavin Macaulay - (Gavin Macaulay -)


Fix in 68871e4b (SVN r6077) to prevent qgis crashing in this situation. The real problem is why are those projections listed above considered invalid by geos?

qgib commented 18 years ago

Author Name: Martin Dobias (@wonder-sk)


Probably another roboustness problem with GEOS. I guess this happens due the BIG coordinate values that may cause problems when calculating with floating point numbers.

However the main problem with QGIS crashing is solved. Can we close this?

qgib commented 18 years ago

Author Name: Gavin Macaulay - (Gavin Macaulay -)


Yes, we can close it. The original crash problem no longer happens.

Geos, when given the prokections listed above, considers them to be invalid, even be it's asked to do any transformations.


qgib commented 15 years ago

Author Name: Anónimo (Anónimo)


Milestone Version 0.8 deleted