nextgisweb icon indicating copy to clipboard operation
nextgisweb copied to clipboard

Падает если в слое есть неверные координаты

Open drnextgis opened this issue 11 years ago • 1 comments

ERROR:waitress:Exception when serving /resource/71/wfs
Traceback (most recent call last):
  File "/home/rykov/git/ngw2/env/local/lib/python2.7/site-packages/waitress/channel.py", line 337, in service
    task.service()
  File "/home/rykov/git/ngw2/env/local/lib/python2.7/site-packages/waitress/task.py", line 173, in service
    self.execute()
  File "/home/rykov/git/ngw2/env/local/lib/python2.7/site-packages/waitress/task.py", line 392, in execute
    app_iter = self.channel.server.application(env, start_response)
  File "/home/rykov/git/ngw2/env/local/lib/python2.7/site-packages/pyramid/router.py", line 242, in __call__
    response = self.invoke_subrequest(request, use_tweens=True)
  File "/home/rykov/git/ngw2/env/local/lib/python2.7/site-packages/pyramid/router.py", line 217, in invoke_subrequest
    response = handle_request(request)
  File "/home/rykov/git/ngw2/env/local/lib/python2.7/site-packages/pyramid/tweens.py", line 21, in excview_tween
    response = handler(request)
  File "/home/rykov/git/ngw2/env/local/lib/python2.7/site-packages/pyramid_tm/__init__.py", line 82, in tm_tween
    reraise(*exc_info)
  File "/home/rykov/git/ngw2/env/local/lib/python2.7/site-packages/pyramid_tm/__init__.py", line 63, in tm_tween
    response = handler(request)
  File "/home/rykov/git/ngw2/env/local/lib/python2.7/site-packages/pyramid/router.py", line 163, in handle_request
    response = view_callable(context, request)
  File "/home/rykov/git/ngw2/env/local/lib/python2.7/site-packages/pyramid/config/views.py", line 385, in viewresult_to_response
    result = view(context, request)
  File "/home/rykov/git/ngw2/nextgisweb/nextgisweb/wfsserver/view.py", line 51, in handler
    path_info='/'+sourcenames, params=params)
  File "/home/rykov/git/ngw2/nextgisweb/nextgisweb/wfsserver/third_party/FeatureServer/Server.py", line 92, in dispatchRequest
    result = method(action)
  File "/home/rykov/git/ngw2/nextgisweb/nextgisweb/wfsserver/nextgis_to_fs.py", line 43, in select
    for row in result:
  File "/home/rykov/git/ngw2/nextgisweb/nextgisweb/postgis/model.py", line 431, in __iter__
    for row in conn.execute(query):
  File "/home/rykov/git/ngw2/env/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 662, in execute
    params)
  File "/home/rykov/git/ngw2/env/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 761, in _execute_clauseelement
    compiled_sql, distilled_params
  File "/home/rykov/git/ngw2/env/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
    context)
  File "/home/rykov/git/ngw2/env/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
    exc_info
  File "/home/rykov/git/ngw2/env/local/lib/python2.7/site-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/home/rykov/git/ngw2/env/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
    context)
  File "/home/rykov/git/ngw2/env/local/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 324, in do_execute
    cursor.execute(statement, parameters)
InternalError: (InternalError) transform: couldn't project point (3540.3 5415.78 0): latitude or longitude exceeded limits (-14)
 'SELECT ogc_fid AS id, st_astext(st_transform(wkb_geometry, %(st_transform_1)s)) AS geom, uniq_uid AS f1, obj_type AS f2 \nFROM "thematic"."sensors_video" \nWHERE geometrytype(wkb_geometry) IN (%(geometrytype_1)s, %(geometrytype_2)s) ORDER BY ogc_fid' {'geometrytype_2': u'MULTIPOINT', 'geometrytype_1': u'POINT', 'st_transform_1': 3857}

drnextgis avatar Jul 18 '14 11:07 drnextgis

Как воспроизвести проблему:

  1. Создать в Postgis таблицу, часть геометрий которой содержит неверные координаты. На пример, вставить в таблицу системы координат EPSG:4326 точку, координаты которой превышают 360 градусов:INSERT INTO ... (geom) VALUES (St_GeomFromTEXT('POINT(3540.3 5415.78 0)', 4326));
  2. Создать в NGW слой PostGIS, ссылающийся на эту таблицу.
  3. Обратиться к геометрии таблицы через NGW, например, через ссылку "Даные GeoJSON". В результате возникнет ошибка перепроецирования
InternalError: (InternalError) transform: couldn't project point (3540.3 5415.78 0): latitude or longitude exceeded limits (-14)
 'SELECT gid AS id, st_astext(st_transform(geom, %(st_transform_1)s)) AS geom, building AS f1, a_strt AS f2, a_sbrb AS f3, a_hsnmbr AS f4, b_levels AS f5, name AS f6 \nFROM "public"."building-point" \nWHERE geometrytype(geom) IN (%(geometrytype_1)s, %(geometrytype_2)s) ORDER BY gid' {'geometrytype_2': u'MULTIPOINT', 'geometrytype_1': u'POINT', 'st_transform_1': 3857}

Таким образом, ошибку подтверждаю. Но она никак не связана с WFS, поэтому снимаю метку WFS.

KolesovDmitry avatar Jul 23 '14 11:07 KolesovDmitry