35

ここで利用可能な形状ファイルを考えると、マップ内の各ポリゴン (郡) にラベルを付けたいと思います。これは GeoPandas で可能ですか?

import geopandas as gpd
import matplotlib.pyplot as plt
%matplotlib inline

shpfile=<Path to unzipped .shp file referenced and linked above>
c=gpd.read_file(shpfile)
c=c.loc[c['GEOID'].isin(['26161','26093','26049','26091','26075','26125','26163','26099','26115','26065'])]
c.plot()

前もって感謝します!

4

2 に答える 2

68

c['geometry']shapely.geometry.polygon.Polygonオブジェクトで構成されるシリーズです。これをチェックすることで確認できます

In [23]: type(c.ix[23, 'geometry'])
Out[23]: shapely.geometry.polygon.Polygon

Shapely docsから、次の方法representative_point()があります

幾何学的オブジェクト内にあることが保証されている、安価に計算されたポイントを返します。

ポリゴン オブジェクトにラベルを付ける必要がある状況に最適です。geopandas dataframe次に、の'coords'ように新しい列を作成できます

c['coords'] = c['geometry'].apply(lambda x: x.representative_point().coords[:])
c['coords'] = [coords[0] for coords in c['coords']]

各ポリゴン オブジェクト (各郡) に関連する一連の座標を取得したので、データ フレームを反復処理してプロットに注釈を付けることができます。

c.plot()
for idx, row in c.iterrows():
    plt.annotate(s=row['NAME'], xy=row['coords'],
                 horizontalalignment='center')

ここに画像の説明を入力

于 2016-08-11T17:17:43.547 に答える