2016-11-25 18 views
-1

私は初心者のpythonプログラマーです。もし誰かが私を助けてくれたら大好きです。 私はPythonで作業しています。私は建物に関するデータのヒープを含む.shpファイルをインポートしました。私は建物の高さの最大値であるデータ 'RELHMAX'を抽出したいのですが、どうすればいいですか?.shpファイルから特定のデータを抽出する - python

これはデータファイルです。 https://drive.google.com/file/d/0BySL_YFrwgAuTTAzeVlacFdFXzA/view?usp=sharing

これまでのところ、私は

buildingHeight = file[RELHMAX] 
print buildingHeight 

によって設定された特定のRELHMAXデータを使用することができるはずと考えていますが、事前にありがとうございました!!

+0

何を試しましたか?私はほとんどあなたが現在試みているものを呼び出すことはありません – smac89

答えて

1

プログラミングに慣れていないことを考慮して、次のことをお勧めします。 google.drive.comにアクセスし、south_camden_topo_v2.xlsxをGoogleシートとして保存してください。 ファイルタブの下に、これをcsvというファイルに保存します。これは、Pythonがオリジナルのxlsxという形式よりはるかに簡単に処理する形式です。

私はファイル内のフィールドの名前を見てきました。 buildingHeightと呼ばれるものはありません。ただし、次のコードでは、必要な列をどのように探し出すかを示しています。ほとんどのレコードはほとんどの列でデータが不足しているようです。

import csv 

fieldWanted = 'RELH2' 
with open('south_camden_topo_v2.xlsx - south_camden_topo_v2.csv') as csvFile: 
    reader = csv.reader(csvFile) 
    headings = next(reader) 
    fieldIndex = headings.index(fieldWanted) 
    print (headings) 
    count = 0 
    for row in reader: 
     print (row) 
     print (fieldWanted, ':', row[fieldIndex]) 
     count += 1 
     if count > 5 : 
      break 

このコードは、最初のいくつかのレコードと、これらのレコードからのRELH2の値のみを出力します。どうぞ。私はこのように感じるが、私は、動作しているようです別の方法を見つけた

['FID', 'SCU_ID', 'SCU_CLASSI', 'POLY_SCU', 'THEMES', 'DHM_VOL', 'DHM_MEANH', 'DHM_STDDEV', 'DHM_MINH', 'DHM_MAXH', 'RELH2', 'RELHMAX'] 
['osgb1000005579280', '52101031610006', '1', 'TRUE', 'Buildings', '547.3700000000', '7.1087012987', '1.2253834286', '0.4000000000', '8.2600000000', '8.6000000000', '11.3000000000'] 
RELH2 : 8.6000000000 
['osgb1000001802821881', '52101037490003', '9', '', 'Buildings', '', '', '', '', '', '', ''] 
RELH2 : 
['osgb1000001802821884', '52101037490002', '9', '', 'Buildings', '', '', '', '', '', '', ''] 
RELH2 : 
['osgb1000005575118', '52101032530003', '3', 'TRUE', 'Buildings', '', '', '', '', '', '', ''] 
RELH2 : 
['osgb1000005574922', '52101052910008', '1', '', 'Buildings', '2449.5140000000', '10.7908105727', '3.3956447143', '0.0000000000', '17.5460000000', '11.6000000000', '19.4000000000'] 
RELH2 : 11.6000000000 
['osgb1000005575392', '52101041010004', '1', '', 'Buildings', '', '', '', '', '', '', ''] 
RELH2 : 
+0

あなたに多くの時間と助けてくれてありがとう!これは非常に便利です! – CvV

+0

あなたは大歓迎です!運が良かった。 –

0

all = fileSource 

b = copy.copy(fileSource) 
b.remove('FID') 
b.remove('SCU_CLASSI') 
b.remove('POLY_SCU') 
b.remove('THEMES') 
b.remove('DHM_VOL') 
b.remove('DHM_MEANH') 
b.remove('DHM_STDDEV') 
b.remove('DHM_MINH') 
b.remove('DHM_MAXH') 
b.remove('RELH2') 
b.remove('SCU_ID') 
RELHMAX = b 

c = copy.copy(fileSource) 
c.remove('FID') 
c.remove('SCU_CLASSI') 
c.remove('POLY_SCU') 
c.remove('THEMES') 
c.remove('DHM_VOL') 
c.remove('DHM_MEANH') 
c.remove('DHM_STDDEV') 
c.remove('DHM_MINH') 
c.remove('DHM_MAXH') 
c.remove('RELH2') 
c.remove('RELHMAX') 
SCU_ID = c 

最もefficent方法ではありませんが、私は今 「ランタイムエラー(UnboundNameExceptionを言って、エラーを取得しています):名前 'コピー'が定義されていません " これは実行されていません...

関連する問題