从.shp文件中提取特定数据 - python

时间:2016-11-25 21:55:55

标签: python list

我是一名新手python程序员,如果有人能帮助我,我会很高兴。 我在python工作。我导入了一个.shp文件,其中包含一堆有关建筑物的数据。我想提取数据'RELHMAX',即建筑物高度最大值 - 我该怎么做?

这是数据文件。 https://drive.google.com/file/d/0BySL_YFrwgAuTTAzeVlacFdFXzA/view?usp=sharing

到目前为止,我认为我应该可以使用

设置的特定RELHMAX数据
buildingHeight = file[RELHMAX]
print buildingHeight

提前非常感谢!!

2 个答案:

答案 0 :(得分:1)

考虑到您是编程新手,我建议如下。转到google.drive.com并将 south_camden_topo_v2.xlsx 保存为Google工作表。现在,在文件标签下,将其另存为 csv 文件,这是一种Python处理原始 xlsx 格式的格式更加容易的格式

我已经查看了文件中字段的名称。没有一个叫做buildingHeight。但是,以下代码显示了如何挖掘出您可能想要的任何列。请注意,大多数记录似乎缺少大多数列的数据。

['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 : 

请注意,此代码仅输出前几条记录,以及这些记录中的RELH2值。他们在这里。

<application>

答案 1 :(得分: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

但我现在收到一个错误说法 “运行时错误(UnboundNameException):未定义名称'copy'” 它不再运行......