2017-07-07 11 views
1

北アメリカで降水量データを表示するためにPython 3.6を使用しています。私がこれまでに持っていたコードは、shapefileの中で自分のデータを抽出し、それをマップにプロットします。Python:シェープファイルの一部のみを使用

私の問題は、ダウンロードしたshapefileにすべての大陸の図形が含まれていることです。私は北米大陸で私のshapefileから読むことができる方法があるのだろうかと疑問に思っていましたか?

これは可能性がない場合は、北アメリカのみを持っているshapefileをダウンロードできる場所を知っていますか?ありがとうございました!

これはshapefileを読み、私のコードの一部です:

import shapefile 
sf=shapefile.Reader('continents') 

これは、シェープファイルについてlinkです。

+0

お手数をおかけしてください。これまでに何を試しましたか?そのシェイプファイルはどうやって見えますか?(リンクを共有しないで)役立つかもしれない属性がありますか? – DarkCygnus

+0

シェイプファイルの最後に大陸の名前を追加しようとしました。たとえば、sf = shapefile.Reader( 'continents'、 'North America')、sf = shapefile.Reader( 'continents/North America')などです。これを行うと何も変わりません。私はまだすべての大陸で地図を見るだけです。私は私が使用しているシェイプファイルをダウンロードし、すべての属性を表示するtxtファイルを読むことができるように、ここにコピーして貼り付けるには大きすぎるので、リンクを私の質問に含めました。 @GrayCygnus – CPG

+0

私はあなたのシェイプファイルをダウンロードしました。私は現在、アスカーに取り組んでいます。すぐに – DarkCygnus

答えて

2

あなたが言及したシェイプファイルを見てみると、属性テーブルに「CONTINENT」という1つの属性があることがわかります。したがって、我々はこのように、すべての図形を検索し、あなたが望む大陸(北米)と一致するものを選択する必要があります。

import shapefile 

#read the shapefile 
sf=shapefile.Reader('continent.shp') 

#obtain shapes and its records 
#the shapes are the actual coordinate points 
#the record contains all attributes related to each shape 
shape_records = sf.shapeRecords() 

#search for the ones with desired records 
#this shapefile has only one attribute calles CONTINENT 
desired_shapes = [] 
for s in shape_records: 
    if s.record[0] == 'North America': 
     desired_shapes.append(s.shape) 
     #or do whatever you want with that element s.shape is the actual shape 

はあなたがshapefileの使用法を説明thisページを見てみたい場合。データ(QGisなど)を使用してデータの属性を確認すると、プログラマチックに検出できるようになるので便利です。

+1

これはうまくいく、ありがとう! – CPG

+1

素晴らしいですが、シェープファイルを扱うために[OSGEO](https://pcjericks.github.io/py-gdalogr-cookbook/)をチェックすることもできます。これは 'pyshp'の代わりに私が現在使っているものです。オプションとドキュメント。 – DarkCygnus

関連する問題