OSM-es / CatAtom2Osm

Tool to convert INSPIRE data sets from the Spanish Cadastre ATOM Services to OSM files.
BSD 2-Clause "Simplified" License
13 stars 6 forks source link

Core con opción -o #89

Closed javiersanp closed 2 years ago

javiersanp commented 2 years ago

Desde 2.0.0 QGIS tira Violación de segmento (`core' generado) con la opción -o al ejecutar la primera vez.

javiersanp commented 2 years ago

No ocurre en todos los ordenadores.

javiersanp commented 2 years ago

No ocurre en todos los ordenadores.

Es medio aleatorio.

javiersanp commented 2 years ago

catastro@e43bc24ad4aa:~/test$ catatom2osm -s 05015sur.geojson 05015 2022-01-23 10:35:09,791 - INFO - Generado '05015/highway_names.csv'. Por favor, compruébelo y ejecute de nuevo /usr/local/bin/catatom2osm: línea 2: 90 Violación de segmento (`core' generado) python3 /opt/CatAtom2Osm/catatom2osm $*

javiersanp commented 2 years ago

El problema aparece mucho menos desde que se cambia a capas en memoria v2.5.0

Sospecha sobre capa no eliminada https://gis.stackexchange.com/questions/387421/why-segmentation-fault-when-qgsvectorlayer-not-deleted

javiersanp commented 2 years ago

Posible relación con lxml.etree.iterparse usado en CatAtom.is_empty. Este código no falla:

   import xml.etree.ElementTree as ET

    def is_empty(self, gml_path, zip_path):
        if os.path.exists(zip_path):
            zf = zipfile.ZipFile(zip_path)
            gml_fp = self.get_path_from_zip(zf, gml_path)
            fo = zf.open(gml_fp, 'r')
        else:
            fo = open(gml_path, 'rb')
        text = fo.read(2000)
        fo.close()
        parser = ET.XMLPullParser(['start', 'end'])
        parser.feed(text)
        events = list(parser.read_events())
        return len([event for event, elem in events if event == 'start']) < 3