rendrom / rosreestr2coord

Вычисление координат участка по кадастровому номеру с сайта https://pkk.rosreestr.ru
MIT License
162 stars 80 forks source link

Периодически вылезает ошибка #58

Open rashn opened 2 years ago

rashn commented 2 years ago

С непонятной периодичностью при обработке списка кадастровых номеров вылезает именно такой набор ошибок, как результат, участков из списка в финальном geojson нет, хотя в отчете написано что всё ок, при этом повторный 2,3 или 4 запуск этого же списка может пройти без ошибок:

================= Parsing complete: success : 12 error : 0 no_coord : 0

ОШИБКА

Exception in thread Thread-6: Traceback (most recent call last): File "/usr/local/Cellar/python@3.9/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python3.9/threading.py", line 973, in _bootstrap_inner self.run() File "/usr/local/Cellar/python@3.9/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python3.9/threading.py", line 910, in run self._target(*self._args, *self._kwargs) File "/usr/local/lib/python3.9/site-packages/rosreestr2coord-4.0.19-py3.9.egg/rosreestr2coord/merge_tiles.py", line 37, in task_wrapper result.put(target(args)) File "/usr/local/lib/python3.9/site-packages/rosreestr2coord-4.0.19-py3.9.egg/rosreestr2coord/merge_tiles.py", line 331, in fetch_tile img = self.get_image(x, y) File "/usr/local/lib/python3.9/site-packages/rosreestr2coord-4.0.19-py3.9.egg/rosreestr2coord/merge_tiles.py", line 462, in get_image data = self._load_image_data(meta_url, cache_path) File "/usr/local/lib/python3.9/site-packages/rosreestr2coord-4.0.19-py3.9.egg/rosreestr2coord/merge_tiles.py", line 476, in _load_image_data data = json.loads(response.decode("utf-8")) AttributeError: 'bool' object has no attribute 'decode'

rendrom commented 2 years ago

Предоствавьте, пожалуйста, пример списка

Ziamrurth commented 2 years ago

Похожие ошибки появляются при попытке выполнить команду (Пытаюсь получить координаты квартала)

>rosreestr2coord -t 2 -c 71:04:10202
Press Ctrl+C to exit
Start downloading area info: https://pkk.rosreestr.ru/api/features/2/71:4:10202
Area info downloaded.
Get tiles:
29% 7/24Exception in thread Thread-3:
Traceback (most recent call last):
  File "c:\python\lib\threading.py", line 916, in _bootstrap_inner
    self.run()
  File "c:\python\lib\threading.py", line 864, in run
    self._target(*self._args, **self._kwargs)
  File "c:\python\lib\site-packages\rosreestr2coord\merge_tiles.py", line 37, in task_wrapper
    result.put(target(*args))
  File "c:\python\lib\site-packages\rosreestr2coord\merge_tiles.py", line 331, in fetch_tile
    img = self.get_image(x, y)
  File "c:\python\lib\site-packages\rosreestr2coord\merge_tiles.py", line 462, in get_image
    data = self._load_image_data(meta_url, cache_path)
  File "c:\python\lib\site-packages\rosreestr2coord\merge_tiles.py", line 476, in _load_image_data
    data = json.loads(response.decode("utf-8"))
AttributeError: 'bool' object has no attribute 'decode'

37% 9/24Exception in thread Thread-1:
Traceback (most recent call last):
  File "c:\python\lib\threading.py", line 916, in _bootstrap_inner
    self.run()
  File "c:\python\lib\threading.py", line 864, in run
    self._target(*self._args, **self._kwargs)
  File "c:\python\lib\site-packages\rosreestr2coord\merge_tiles.py", line 37, in task_wrapper
    result.put(target(*args))
  File "c:\python\lib\site-packages\rosreestr2coord\merge_tiles.py", line 331, in fetch_tile
    img = self.get_image(x, y)
  File "c:\python\lib\site-packages\rosreestr2coord\merge_tiles.py", line 462, in get_image
    data = self._load_image_data(meta_url, cache_path)
  File "c:\python\lib\site-packages\rosreestr2coord\merge_tiles.py", line 476, in _load_image_data
    data = json.loads(response.decode("utf-8"))
AttributeError: 'bool' object has no attribute 'decode'

66% 16/24
Completed, 16 tiles received

В итоге папка output не создается

rendrom commented 2 years ago

C -P работает

rosreestr2coord -t 2 -c 71:04:10202 -P

image

AlekseiGrigorev commented 1 year ago

Добрый день! Большое спасибо за крайне полезный инструмент! К сожалению ошибка по прежнему актуальна. Возникает, в частности, на примере из документации rosreestr2coord -c 38:06:144003:4723. Конфигурация - Win 11, Python 3.7 и 3.9, установка через пакетный менеджер.

Дополнение: Python 3.5.6 отработал без ошибок, но тайлы не скачаны, хотя объект существует. (py356) C:\Users\lelik>rosreestr2coord -c 38:06:144003:4723 Press Ctrl+C to exit Area info loaded from file: C:\Users\lelik\tmp\38_6_144003_4723\feature_info.json Get tiles: 0% 0/1 Completed, 0 tile received

AlekseiGrigorev commented 1 year ago

Уважаемые коллеги, ошибка возникает в методе: def _load_image_data(self, url, cache_path) класса PkkAreaMerger response = self.make_request(url) data = json.loads(response.decode("utf-8")) Ожидается, что метод make_request вернет json. В то же время, если скачать тайл не удалось, то он возвращает False. В следующей строке, соответственно, возникает ошибка.

Тайл не удается скачать, поскольку в очередной раз изменилась спецификация операции export. Мне удалось заставить загрузку работать только изменив массив параметров в методе def get_image(self, x, y) класса PkkAreaMerger В частности, задав минимально необходимый перечень слоев и убрав параметр timestamp (см. ниже). params = { "dpi": 96, "transparent": "false", "format": "png32",

"layers": "show:{}".format(",".join([str(l) for l in layers])),

            "layers": "show:6,7,8,9",
            "bbox": ",".join(map(str, self._get_bbox_by_xy(x, y))),
            "bboxSR": 102100,
            "imageSR": 102100,
            "size": "%s,%s" % (dx, dy),
            #"layerDefs": layerDefs,
            "layerDefs": "{\"6\":\"ID = '38:6:144003:4723'\",\"7\":\"ID = '38:6:144003:4723'\",\"8\":\"ID = '38:6:144003:4723'\",\"9\":\"ID = '38:6:144003:4723'\"}",
            "f": "json",
            #"timestamp": int(round(time.time() * 1000)),
        }
rendrom commented 1 year ago

@AlekseiGrigorev здравствуйте! Спасибо за ваше предложение. Только у меня не получается воспреизвести ошибку. Выполняю

python -m rosreestr2coord -c 38:06:144003:4723 -P -r

отрабатывает без ошибок.

rendrom commented 1 year ago

Залил версию с выводом более понятных сообщений об ошибках при выполнении запросов. Но лучше просто всегда использовать ключ -P