2017-09-24 20 views
1

J'utilise des pandas, et un ensemble de données que j'ai obtenu possède une colonne de localisation dans un format WKT. Par exemple:Obtention du centre d'un polygone WKT

hospital.get_value(1,'WKT')

POLYGON ((-58.4932 -34.5810,-58.4925 -34.5815,-58.4924 -34.5817)) 

Il y a beaucoup plus de points et avec plus de précision dans cet exemple, mais je raccourcies pour des fins d'illustration. En outre, je ne sais pas si c'est un WKT ou juste une chaîne. Comment puis-je obtenir le centre de ce polygone pour pouvoir l'utiliser comme coordonnée? Merci d'avance.

+0

Il ne sera pas le centre exact, mais il sera probablement dans le polygone si vous en moyenne seulement les longitudes ensemble et la moyenne des latitudes ensemble. Sinon, vous voudrez appliquer la formule centroïde, et tandis que les bâtiments sont relativité petite par rapport à la courbure de la terre naïvement appliquer une telle formule en longitude et latitude pourrait introduire une erreur, pour éviter cela, vous voudriez probablement convertir en cartésien coordonnées, appliquez la formule centroïde, puis revenez à la longitude et à la latitude (en ignorant la composante radiale). – kpie

Répondre

0

Vous avez presque WKT, sauf que l'anneau linéaire d'un polygone doit être fermé.

Shapely a une propriété .centroid pour obtenir le point central:

from shapely import wkt 
g = wkt.loads(
    'POLYGON ((-58.4932 -34.5810,-58.4925 -34.5815,-58.4924 -34.5817,-58.4932 -34.5810))') 
print(g.centroid) # POINT (-58.49270000000001 -34.5814) 
print(g.centroid.coords[0]) # (-58.492700000000006, -34.581399999999995)