2017-04-14 6 views
0

j'ai un polygone isochrone généré avec OpenTripPlanner:Un polygone vide généré avec OpenTripPlanner génère l'erreur avec .is_empty instruction galbé

{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[]},"properties":{"time":-47},"id":"fid--576b228b_15b66d32d71_-7cbd"}]} 

Ce polygone est traduit comme un objet galbé avec l'instruction suivante:

isochrone = shapely.geometry.asShape(isochroneJSON['features'][0]['geometry']) 

Voici comment il ressemble à Spyder:

{u'type': u'FeatureCollection', u'features': [{u'geometry': {u'type': u'MultiPolygon', u'coordinates': []}, u'type': u'Feature', u'properties': {u'time': -47}, u'id': u'fid--576b228b_15b66d32d71_-7a54'}]} 

I Je ressemble vraiment à un polygone vide. Mon problème est que je veux l'exclure du reste de mon traitement et vérifier si elle est valide et/ou vide. Et l'instruction suivante:

if not isochrone.is_empty: 

génère une erreur avec .is_empty instruction bien faite:

return (self._geom is None) or bool(self.impl['is_empty'](self)) 
self.__geom__, n = self.factory(self.context) 

Et je suis complètement perdu parce que the only similar question semble ne pas avoir mon propre problème.

Répondre

1

géométries vides sont un peu délicat, dans votre cas particulier (de Multipolygones), vous pouvez partiellement le fixer à l'aide shape au lieu de asShape:

import json 
from shapely.geometry import MultiPolygon, shape, mapping, asShape 

Q = shape({'type': 'MultiPolygon', 'coordinates': []}) 
print(Q.is_empty) 
print(Q.geom_type) 
print(json.dumps(mapping(Q))) 

cette sortie (le geom_type est dans le cas de multipolygone vide en effet pas égal à MultiPolygon):

True 
GeometryCollection 
{"type": "MultiPolygon", "coordinates": []} 
+0

Dans mon cas, l'utilisation de 'shape' au lieu de 'asShape' a supprimé l'erreur. Mais ne me demande pas pourquoi !! –