Shapely: Échec de l'assertion : (0), requête de fonction

Créé le 29 mars 2015  ·  10Commentaires  ·  Source: Toblerity/Shapely

Bonjour,

Lorsque j'utilise shapely.ops.cascaded_union , je rencontre cette erreur :

Assertion failed: (0), function query, file AbstractSTRtree.cpp, line 285.
Abort trap: 6

Il semble que cela puisse être un problème de compatibilité avec GDAL (qui, je crois, utilise une version de GEOS). Voici un script qui échoue :

from osgeo import ogr
from shapely.geometry import Point
import shapely.ops

def synth_geom():
    polygons = [
        Point(1, 1).buffer(1),
        Point(1, 2).buffer(1),
    ]
    biggest_feature = shapely.ops.cascaded_union(polygons)
    print biggest_feature

if __name__ == '__main__':
    synth_geom()

J'ai remarqué que si je modifie l'ordre des instructions d'importation, cascaded_union fonctionne comme prévu.

from shapely.geometry import Point
import shapely.ops
from osgeo import ogr

Est-ce quelque chose qui peut ou devrait être abordé par Shapely ?

Commentaire le plus utile

@phargogh as -tu pip install shapely ? Depuis décembre, sur OS X, vous obtiendrez une roue Shapely binaire si vous le faites et la roue comprend une bibliothèque partagée GEOS. Il est possible que ces roues Shapely ne soient pas compatibles avec la lib Homebrew GEOS et que des erreurs se produisent si la lib GEOS a déjà été chargée par osgeo.ogr.

J'ai une solution de contournement potentielle pour vous : faites un pip uninstall shapely && pip install --no-use-wheel shapely . Cela récupérera la distribution source Shapely au lieu d'une roue binaire et cela ne devrait poser aucun problème avec GEOS de Homebrew.

Pouvez-vous me dire si cela vous sort de ce pétrin ?

Tous les 10 commentaires

@phargogh as -tu pip install shapely ? Depuis décembre, sur OS X, vous obtiendrez une roue Shapely binaire si vous le faites et la roue comprend une bibliothèque partagée GEOS. Il est possible que ces roues Shapely ne soient pas compatibles avec la lib Homebrew GEOS et que des erreurs se produisent si la lib GEOS a déjà été chargée par osgeo.ogr.

J'ai une solution de contournement potentielle pour vous : faites un pip uninstall shapely && pip install --no-use-wheel shapely . Cela récupérera la distribution source Shapely au lieu d'une roue binaire et cela ne devrait poser aucun problème avec GEOS de Homebrew.

Pouvez-vous me dire si cela vous sort de ce pétrin ?

Quelque chose à signaler sur une nouvelle installation à partir de la source @phargogh ?

Ouais! La nouvelle installation à partir de la source de la forme fonctionne comme prévu. Je suppose que cela devrait m'apprendre à être plus conscient des dépendances que j'ai installées et contre lesquelles je construis :)

J'avais le même problème et je l'ai résolu en important avant d'importer osgeo. Je n'ai pas eu besoin de faire le "pip install --no-use-wheel shapely". Juste pour référence future, quelqu'un pourrait-il expliquer ce qui se passe lorsque shapely est importé avant osgeo et pourquoi cela provoque l'erreur?

@dfelikson, veuillez consulter https://github.com/Toblerity/Shapely/issues/262. Je ne comprends pas encore exactement ce qui se passe. Des détails spécifiques (système d'exploitation, sources de logiciels -- Homebrew ? PyPI ? -- versions) seront nécessaires pour le traquer.

@sgillies, il y a certainement un problème avec Homebrew et la version à roues de Shapely. Je n'ai pas signalé le problème ici (bien que je n'aie pas importé Shapely avant osgeo) mais un problème complètement différent #273 qui a été résolu en utilisant pip uninstall shapely && pip install --no-use-wheel shapely .

J'avais aussi ce problème, merci !

@sgillies que j'utilisais dans un truc pip install --no-use-wheel shapely sans succès. J'ai ajouté cette ligne avant d'importer pyproj juste pour vérifier que j'importais depuis le bon emplacement :

import shapely
shapely.__file__

Maintenant, cela fonctionne comme par magie... contrairement à @phargogh , je osgeo alors peut-être que cela éclaire un peu plus le sujet ?

@sgillies J'ai fait quelques recherches et j'ai

Voici mon cahier :

La description

Lors de l'exécution de la ligne :

combined = g2.intersection(g3)

le noyau va planter et Jupyter renvoie l'erreur :

Assertion failed: (0), function query, file AbstractSTRtree.cpp, line 285.
Abort trap: 6

Une solution possible était de réinstaller Shapely à partir de la source :

pip uninstall shapely && pip install --no-binary :all: shapely

mais la suggestion de @guziy sur https://github.com/geoplex/elasticsearch-spatial/issues/1 m'a amené à me demander, alors j'ai essayé de remplacer la ligne d'importation fiona.

%load_ext watermark
%watermark
2017-01-05T11:44:44

CPython 2.7.11
IPython 5.1.0

compiler   : GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)
system     : Darwin
release    : 15.6.0
machine    : x86_64
processor  : i386
CPU cores  : 8
interpreter: 64bit
%%sh
pip uninstall -y shapely  # remove the shapely from the virtualenv and use the global package
import shapely
shapely.__file__  # returns '/Library/Frameworks/GEOS.framework/Versions/3/Python/2.7/site-packages/shapely/__init__.pyc'

import fiona  # <--- doesn't crash when commented out
from shapely.geometry import shape
scene_metadata = {u'geometry': {u'coordinates': [[[5.4438, 30.7100517],
                                                  [6.2335518, 30.6927744],
                                                  [6.2013482, 29.7034878],
                                                  [5.1922031, 29.7240552],
                                                  [5.2265358, 29.8585064],
                                                  [5.2640662, 30.0064961],
                                                  [5.3019095, 30.1543621],
                                                  [5.4438, 30.7100517]]],
                                u'type': u'Polygon'}}

g1 = shape(scene_metadata['geometry'])

from shapely import affinity
g2 = affinity.rotate(g1, 30)

combined = g2.intersection(g1)  # <----- ***CRASH***

J'avais aussi ce problème, merci !

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

LostFan123 picture LostFan123  ·  5Commentaires

LostFan123 picture LostFan123  ·  3Commentaires

mromanie picture mromanie  ·  3Commentaires

sgillies picture sgillies  ·  5Commentaires

LostFan123 picture LostFan123  ·  3Commentaires